File indexing completed on 2025-02-20 10:36:59
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #include <cmath>
0013
0014 #include <TH1.h>
0015 #include <TH2.h>
0016 #include <TFile.h>
0017 #include <TMath.h>
0018 #include <TString.h>
0019 #include <TNtuple.h>
0020 #include <TVector3.h> // FIXME update to XYZvectors
0021 #include <TProfile.h>
0022
0023 #include <JANA/JEventProcessorSequentialRoot.h>
0024 #include <JANA/JEvent.h>
0025
0026 #include <edm4eic/CalorimeterHit.h>
0027 #include <edm4eic/ReconstructedParticle.h>
0028 #include <edm4eic/ProtoCluster.h>
0029 #include <edm4eic/Cluster.h>
0030
0031
0032
0033
0034
0035 class FillBHCalCalibrationTupleProcessor : public JEventProcessorSequentialRoot {
0036
0037
0038 enum CONST {
0039 NCalibVars = 51,
0040 NSciFiLayer = 12,
0041 NImageLayer = 6,
0042 NRange = 2,
0043 NComp = 3
0044 };
0045
0046 private:
0047
0048
0049 PrefetchT<edm4eic::ReconstructedParticle> genParticles = {this, "GeneratedParticles"};
0050 PrefetchT<edm4eic::CalorimeterHit> bhcalRecHits = {this, "HcalBarrelRecHits"};
0051 PrefetchT<edm4eic::Cluster> bhcalClusters = {this, "HcalBarrelClusters"};
0052 PrefetchT<edm4eic::Cluster> bhcalTruthClusters = {this, "HcalBarrelTruthClusters"};
0053 PrefetchT<edm4eic::CalorimeterHit> scifiRecHits = {this, "EcalBarrelScFiRecHits"};
0054 PrefetchT<edm4eic::CalorimeterHit> imageRecHits = {this, "EcalBarrelImagingRecHits"};
0055 PrefetchT<edm4eic::Cluster> bemcClusters = {this, "EcalBarrelImagingMergedClusters"};
0056 PrefetchT<edm4eic::Cluster> scifiClusters = {this, "EcalBarrelScFiClusters"};
0057 PrefetchT<edm4eic::Cluster> imageClusters = {this, "EcalBarrelImagingClusters"};
0058
0059
0060 TH1D *hParChrg = nullptr;
0061 TH1D *hParMass = nullptr;
0062 TH1D *hParEta = nullptr;
0063 TH1D *hParPhi = nullptr;
0064 TH1D *hParEne = nullptr;
0065 TH1D *hParMom = nullptr;
0066 TH1D *hParMomX = nullptr;
0067 TH1D *hParMomY = nullptr;
0068 TH1D *hParMomZ = nullptr;
0069 TH2D *hParEtaVsPhi = nullptr;
0070
0071 TH1D *hHCalRecHitEta = nullptr;
0072 TH1D *hHCalRecHitPhi = nullptr;
0073 TH1D *hHCalRecHitEne = nullptr;
0074 TH1D *hHCalRecHitPosZ = nullptr;
0075 TH1D *hHCalRecHitParDiff = nullptr;
0076 TH2D *hHCalRecHitPosYvsX = nullptr;
0077 TH2D *hHCalRecHitEtaVsPhi = nullptr;
0078 TH2D *hHCalRecHitVsParEne = nullptr;
0079
0080 TH1D *hHCalClustHitEta = nullptr;
0081 TH1D *hHCalClustHitPhi = nullptr;
0082 TH1D *hHCalClustHitEne = nullptr;
0083 TH1D *hHCalClustHitPosZ = nullptr;
0084 TH1D *hHCalClustHitParDiff = nullptr;
0085 TH2D *hHCalClustHitPosYvsX = nullptr;
0086 TH2D *hHCalClustHitEtaVsPhi = nullptr;
0087 TH2D *hHCalClustHitVsParEne = nullptr;
0088
0089 TH1D *hHCalClustEta = nullptr;
0090 TH1D *hHCalClustPhi = nullptr;
0091 TH1D *hHCalClustEne = nullptr;
0092 TH1D *hHCalClustPosZ = nullptr;
0093 TH1I *hHCalClustNumHit = nullptr;
0094 TH1D *hHCalClustParDiff = nullptr;
0095 TH2D *hHCalClustPosYvsX = nullptr;
0096 TH2D *hHCalClustEtaVsPhi = nullptr;
0097 TH2D *hHCalClustVsParEne = nullptr;
0098
0099 TH1D *hHCalTruClustHitEta = nullptr;
0100 TH1D *hHCalTruClustHitPhi = nullptr;
0101 TH1D *hHCalTruClustHitEne = nullptr;
0102 TH1D *hHCalTruClustHitPosZ = nullptr;
0103 TH1D *hHCalTruClustHitParDiff = nullptr;
0104 TH2D *hHCalTruClustHitPosYvsX = nullptr;
0105 TH2D *hHCalTruClustHitEtaVsPhi = nullptr;
0106 TH2D *hHCalTruClustHitVsParEne = nullptr;
0107
0108 TH1D *hHCalTruClustEta = nullptr;
0109 TH1D *hHCalTruClustPhi = nullptr;
0110 TH1D *hHCalTruClustEne = nullptr;
0111 TH1D *hHCalTruClustPosZ = nullptr;
0112 TH1I *hHCalTruClustNumHit = nullptr;
0113 TH1D *hHCalTruClustParDiff = nullptr;
0114 TH2D *hHCalTruClustPosYvsX = nullptr;
0115 TH2D *hHCalTruClustEtaVsPhi = nullptr;
0116 TH2D *hHCalTruClustVsParEne = nullptr;
0117
0118 TH1I *hEvtHCalNumPar = nullptr;
0119
0120 TH1I *hEvtHCalNumHit = nullptr;
0121 TH1D *hEvtHCalSumHitEne = nullptr;
0122 TH1D *hEvtHCalSumHitDiff = nullptr;
0123 TH2D *hEvtHCalSumHitVsPar = nullptr;
0124
0125 TH1I *hEvtHCalNumClust = nullptr;
0126 TH1D *hEvtHCalSumClustEne = nullptr;
0127 TH1D *hEvtHCalSumClustDiff = nullptr;
0128 TH2I *hEvtHCalNumClustVsHit = nullptr;
0129 TH2D *hEvtHCalSumClustVsPar = nullptr;
0130
0131 TH1I *hEvtHCalLeadClustNumHit = nullptr;
0132 TH1D *hEvtHCalLeadClustEne = nullptr;
0133 TH1D *hEvtHCalLeadClustDiff = nullptr;
0134 TH2D *hEvtHCalLeadClustVsPar = nullptr;
0135
0136 TH1I *hEvtHCalNumTruClust = nullptr;
0137 TH1D *hEvtHCalSumTruClustEne = nullptr;
0138 TH1D *hEvtHCalSumTruClustDiff = nullptr;
0139 TH2I *hEvtHCalNumTruClustVsClust = nullptr;
0140 TH2D *hEvtHCalSumTruClustVsPar = nullptr;
0141
0142 TH1I *hEvtHCalLeadTruClustNumHit = nullptr;
0143 TH1D *hEvtHCalLeadTruClustEne = nullptr;
0144 TH1D *hEvtHCalLeadTruClustDiff = nullptr;
0145 TH2D *hEvtHCalLeadTruClustVsPar = nullptr;
0146
0147
0148 TH1I *hSciFiRecHitNLayer = nullptr;
0149 TH1D *hSciFiRecHitEta = nullptr;
0150 TH1D *hSciFiRecHitPhi = nullptr;
0151 TH1D *hSciFiRecHitEne = nullptr;
0152 TH1D *hSciFiRecHitPosZ = nullptr;
0153 TH1D *hSciFiRecHitParDiff = nullptr;
0154 TH2D *hSciFiRecHitPosYvsX = nullptr;
0155 TH2D *hSciFiRecHitEtaVsPhi = nullptr;
0156 TH2D *hSciFiRecHitVsParEne = nullptr;
0157 TH2D *hSciFiRecHitEneVsNLayer = nullptr;
0158
0159 TH1I *hImageRecHitNLayer = nullptr;
0160 TH1D *hImageRecHitEta = nullptr;
0161 TH1D *hImageRecHitPhi = nullptr;
0162 TH1D *hImageRecHitEne = nullptr;
0163 TH1D *hImageRecHitPosZ = nullptr;
0164 TH1D *hImageRecHitParDiff = nullptr;
0165 TH2D *hImageRecHitPosYvsX = nullptr;
0166 TH2D *hImageRecHitEtaVsPhi = nullptr;
0167 TH2D *hImageRecHitVsParEne = nullptr;
0168 TH2D *hImageRecHitEneVsNLayer = nullptr;
0169
0170 TH1D *hECalClustEta = nullptr;
0171 TH1D *hECalClustPhi = nullptr;
0172 TH1D *hECalClustEne = nullptr;
0173 TH1D *hECalClustPosZ = nullptr;
0174 TH1I *hECalClustNumHit = nullptr;
0175 TH1D *hECalClustParDiff = nullptr;
0176 TH2D *hECalClustPosYvsX = nullptr;
0177 TH2D *hECalClustEtaVsPhi = nullptr;
0178 TH2D *hECalClustVsParEne = nullptr;
0179
0180 TH1D *hEvtSciFiSumEne = nullptr;
0181 TH2D *hEvtSciFiSumEneVsNLayer = nullptr;
0182 TH2D *hEvtSciFiVsHCalHitSumEne = nullptr;
0183
0184 TH1D *hEvtImageSumEne = nullptr;
0185 TH2D *hEvtImageSumEneVsNLayer = nullptr;
0186 TH2D *hEvtImageVsHCalHitSumEne = nullptr;
0187
0188 TH1I *hEvtECalNumClust = nullptr;
0189 TH1D *hEvtECalSumClustEne = nullptr;
0190 TH1D *hEvtECalSumClustDiff = nullptr;
0191 TH2D *hEvtECalSumClustVsPar = nullptr;
0192 TH2D *hEvtECalVsHCalSumClustEne = nullptr;
0193
0194 TH1I *hEvtECalLeadClustNumHit = nullptr;
0195 TH1D *hEvtECalLeadClustEne = nullptr;
0196 TH1D *hEvtECalLeadClustDiff = nullptr;
0197 TH2D *hEvtECalLeadClustVsPar = nullptr;
0198 TH2D *hEvtECalVsHCalLeadClustEne = nullptr;
0199
0200
0201 Float_t varsForCalibration[CONST::NCalibVars];
0202 TNtuple *ntForCalibration;
0203
0204 public:
0205
0206
0207 FillBHCalCalibrationTupleProcessor() { SetTypeName(NAME_OF_THIS); }
0208
0209
0210 void InitWithGlobalRootLock() override;
0211 void ProcessSequential(const std::shared_ptr<const JEvent>& event) override;
0212 void FinishWithGlobalRootLock() override;
0213
0214 };
0215
0216