File indexing completed on 2025-12-16 09:18:04
0001
0002
0003
0004
0005
0006
0007
0008 #ifndef InttSeedTrackPerformance_h
0009 #define InttSeedTrackPerformance_h
0010
0011 #include <TROOT.h>
0012 #include <TChain.h>
0013 #include <TFile.h>
0014
0015 #include <TMath.h>
0016 #include "Fit/Fitter.h"
0017 #include <Math/Functor.h>
0018
0019 #include <TH1.h>
0020 #include <TH2.h>
0021 #include <TH3.h>
0022 #include <TF1.h>
0023 #include <TProfile.h>
0024 #include <TProfile2D.h>
0025
0026 #include "TArc.h"
0027
0028 #include "SPHTracKuma.h"
0029 #include "InttSeedTracking.h"
0030
0031
0032 #include <vector>
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043 class InttSeedTrackPerformance {
0044 public :
0045 TTree *fChain;
0046 Int_t fCurrent;
0047
0048
0049
0050
0051 Int_t trk_NClus;
0052 std::vector<int> *trk_system;
0053 std::vector<int> *trk_layer;
0054 std::vector<int> *trk_adc;
0055 std::vector<double> *trk_X;
0056 std::vector<double> *trk_Y;
0057 std::vector<double> *trk_Z;
0058 std::vector<int> *trk_size;
0059 std::vector<int> *trk_phi_size;
0060 std::vector<int> *trk_Z_size;
0061
0062 Int_t nTowers;
0063 std::vector<int> *tower_system;
0064 std::vector<double> *tower_X;
0065 std::vector<double> *tower_Y;
0066 std::vector<double> *tower_Z;
0067 std::vector<double> *tower_Eta;
0068 std::vector<double> *tower_Phi;
0069 std::vector<double> *tower_Eta_test;
0070 std::vector<double> *tower_Phi_test;
0071 std::vector<double> *tower_Eta_bin;
0072 std::vector<double> *tower_Phi_bin;
0073 std::vector<double> *tower_edep;
0074
0075 Int_t nCaloClus;
0076 std::vector<int> *caloClus_system;
0077 std::vector<double> *caloClus_X;
0078 std::vector<double> *caloClus_Y;
0079 std::vector<double> *caloClus_Z;
0080 std::vector<double> *caloClus_R;
0081 std::vector<double> *caloClus_Phi;
0082 std::vector<double> *caloClus_edep;
0083
0084 Int_t NTruthVtx;
0085 Float_t TruthPV_trig_x;
0086 Float_t TruthPV_trig_y;
0087 Float_t TruthPV_trig_z;
0088 Int_t NPrimaryG4P;
0089 std::vector<float> *PrimaryG4P_Pt;
0090 std::vector<float> *PrimaryG4P_Eta;
0091 std::vector<float> *PrimaryG4P_Phi;
0092 std::vector<float> *PrimaryG4P_E;
0093 std::vector<int> *PrimaryG4P_PID;
0094 std::vector<bool> *PrimaryG4P_isChargeHadron;
0095
0096
0097 TBranch *b_trk_NClus;
0098 TBranch *b_trk_system;
0099 TBranch *b_trk_layer;
0100 TBranch *b_trk_adc;
0101 TBranch *b_trk_X;
0102 TBranch *b_trk_Y;
0103 TBranch *b_trk_Z;
0104 TBranch *b_trk_size;
0105 TBranch *b_trk_phi_size;
0106 TBranch *b_trk_Z_size;
0107
0108 TBranch *b_nTowers;
0109 TBranch *b_tower_system;
0110 TBranch *b_tower_X;
0111 TBranch *b_tower_Y;
0112 TBranch *b_tower_Z;
0113 TBranch *b_tower_Eta;
0114 TBranch *b_tower_Phi;
0115 TBranch *b_tower_Eta_test;
0116 TBranch *b_tower_Phi_test;
0117 TBranch *b_tower_Eta_bin;
0118 TBranch *b_tower_Phi_bin;
0119 TBranch *b_tower_edep;
0120
0121 TBranch *b_nCaloClus;
0122 TBranch *b_caloClus_system;
0123 TBranch *b_caloClus_X;
0124 TBranch *b_caloClus_Y;
0125 TBranch *b_caloClus_Z;
0126 TBranch *b_caloClus_R;
0127 TBranch *b_caloClus_Phi;
0128 TBranch *b_caloClus_edep;
0129
0130 TBranch *b_NTruthVtx;
0131 TBranch *b_TruthPV_trig_x;
0132 TBranch *b_TruthPV_trig_y;
0133 TBranch *b_TruthPV_trig_z;
0134
0135 TBranch *b_NPrimaryG4P;
0136 TBranch *b_PrimaryG4P_Pt;
0137 TBranch *b_PrimaryG4P_Eta;
0138 TBranch *b_PrimaryG4P_Phi;
0139 TBranch *b_PrimaryG4P_E;
0140 TBranch *b_PrimaryG4P_PID;
0141 TBranch *b_PrimaryG4P_isChargeHadron;
0142
0143 InttSeedTrackPerformance(TTree *tree=0, std::string fInputName="", std::string fOutputName="", Int_t runNum=0);
0144 virtual ~InttSeedTrackPerformance();
0145 virtual Int_t GetEntry(Long64_t entry);
0146 virtual Long64_t LoadTree(Long64_t entry);
0147 virtual void Init(TTree *tree);
0148 virtual void Loop(Int_t runNum);
0149
0150
0151
0152 std::string fDir = "";
0153
0154 std::string fInput = "";
0155 std::string fOutput = "";
0156 TFile *oFile;
0157
0158 Int_t qaEvent = 1;
0159 Int_t pubEvNum = 0;
0160
0161 bool m_bDecayEvent = false;
0162
0163 std::vector<Int_t> m_vTargetEvents;
0164
0165 std::vector<tracKuma> m_tracks;
0166
0167 std::vector<hitStruct > m_TruthParticle;
0168
0169 std::vector<hitStruct > m_fMvtxHits;
0170 std::vector<hitStruct > m_sMvtxHits;
0171 std::vector<hitStruct > m_tMvtxHits;
0172
0173 std::vector<hitStruct > m_iInttHits;
0174 std::vector<hitStruct > m_oInttHits;
0175
0176 std::vector<hitStruct > m_TpcHits;
0177
0178 std::vector<hitStruct > m_emcalHits;
0179 std::vector<hitStruct > m_iHCalHits;
0180 std::vector<hitStruct > m_oHCalHits;
0181
0182 std::vector<std::vector<hitStruct > > m_vTruthParticle;
0183
0184 std::vector<std::vector<hitStruct > > m_viInttHits;
0185 std::vector<std::vector<hitStruct > > m_voInttHits;
0186
0187 std::vector<std::vector<hitStruct > > m_vTpcHits;
0188
0189 std::vector<std::vector<hitStruct > > m_vemcalHits;
0190 std::vector<std::vector<hitStruct > > m_viHCalHits;
0191 std::vector<std::vector<hitStruct > > m_voHCalHits;
0192
0193
0194
0195 TH2D* m_HINTTHitMap;
0196 TH2D* m_HGlobalHitMap;
0197
0198 TProfile2D* m_HECalPhiVsE;
0199 TProfile2D* m_HIHCalPhiVsE;
0200 TProfile2D* m_HOHCalPhiVsE;
0201
0202 TH1D* m_HMatchCalEVsHighestCalE;
0203
0204 TH2D* m_HdPhiInttdPhiECal;
0205 TH2D* m_HTruthPtVsdPhiInttdPhiECal;
0206
0207 TH2D* m_HTruthPtVsdPhiIIntt;
0208 TH2D* m_HTruthPtVsdPhiOIntt;
0209
0210 TH3D* m_HTruthPtVsSagittaPt_rough;
0211 TH3D* m_HTruthPtVsSagittaPt_VtxIntt;
0212 TH3D* m_HTruthPtVsSagittaPt_InttEmcal;
0213 TH3D* m_HTruthPtVsSagittaPt_VtxInttEmcal;
0214 TH3D* m_HTruthPtVsSagittaPt_MvtxInttEmcal;
0215 TH3D* m_HTruthPtVsSagittaPt_VtxMvtxInttEmcal;
0216
0217 TH3D* m_HTruthPtVsFitFuncPt_IInttOInttEmcal;
0218
0219 TH3D* m_HTruthPtVsFitFuncPt_VtxIInttEmcal;
0220 TH3D* m_HTruthPtVsFitFuncPt_VtxOInttEmcal;
0221 TH3D* m_HTruthPtVsFitFuncPt_VtxInttEmcal;
0222
0223 TH3D* m_HTruthPtVsFitFuncPt_MvtxIInttEmcal;
0224 TH3D* m_HTruthPtVsFitFuncPt_MvtxOInttEmcal;
0225 TH3D* m_HTruthPtVsFitFuncPt_MvtxInttEmcal;
0226
0227 TH2D* m_HTruthPVsRecoP_InttEmcal;
0228 TH2D* m_HTruthPVsRecoP_MvtxInttEmcal;
0229 TH2D* m_HTruthPVsRecoP_FitFunc;
0230
0231 TH2D* m_HTruthPVsEOverP_InttEmcal;
0232 TH2D* m_HTruthPVsEOverP_MvtxInttEmcal;
0233 TH2D* m_HTruthPVsEOverP_FitFunc;
0234
0235 TH2D* m_HTruthPVsTheta_InttEmcal;
0236 TH2D* m_HTruthPVsTheta_MvtxInttEmcal;
0237
0238 TH2D* m_HTruthPVsPhi_InttEmcal;
0239 TH2D* m_HTruthPVsPhi_MvtxInttEmcal;
0240
0241 TH2D* m_dVtxXY_InttEmcal;
0242 TH2D* m_dVtxXY_MvtxInttEmcal;
0243
0244 TH1D* m_dVtxR_InttEmcal;
0245 TH1D* m_dVtxR_MvtxInttEmcal;
0246
0247 TH1D* m_dVtxZ_InttEmcal;
0248 TH1D* m_dVtxZ_MvtxInttEmcal;
0249
0250 TH3D* m_HDE;
0251
0252
0253 TH3D* m_HDPhiVsDStraightVsTruPt;
0254
0255 TH2D* m_HDPhiDStraight_VtxIIntt;
0256 TH1D* m_HDPhiDStraight1D_VtxIIntt;
0257 TH2D* m_HDPhiDStraight_IInttOIntt;
0258 TH1D* m_HDPhiDStraight1D_IInttOIntt;
0259 TH2D* m_HDPhiDStraight_OInttEmcal;
0260 TH1D* m_HDPhiDStraight1D_OInttEmcal;
0261
0262 TH2D* m_HTruthPtVsDdPhiddStraight_IInttOInttEmcal;
0263
0264 TH3D* m_HDLVsTruthPtVsEta_VtxIIntt;
0265 TH1D* m_HDL1D_VtxIIntt;
0266 TH3D* m_HDLVsTruthPtVsEta_IInttOIntt;
0267 TH1D* m_HDL1D_IInttOIntt;
0268 TH3D* m_HDLVsTruthPtVsEta_OInttEmcal;
0269 TH1D* m_HDL1D_OInttEmcal;
0270
0271
0272 TH3D* m_HDPhiVsTruthPtVsEta_IInttOInttEmcal;
0273
0274 TH3D* m_HDPhiVsTruthPtVsEta_VtxIIntt;
0275 TH3D* m_HDPhiVsTruthPtVsEta_IInttOIntt;
0276 TH3D* m_HDPhiVsTruthPtVsEta_OInttEmcal;
0277
0278 TH3D* m_HDPhiVsTruthPtVsEta_VtxIInttEmcal;
0279 TH3D* m_HDPhiVsTruthPtVsEta_VtxOInttEmcal;
0280 TH3D* m_HDPhiVsTruthPtVsEta_VtxInttEmcal;
0281
0282 TH3D* m_HDPhiVsTruthPtVsEta_MvtxIInttEmcal;
0283 TH3D* m_HDPhiVsTruthPtVsEta_MvtxOInttEmcal;
0284 TH3D* m_HDPhiVsTruthPtVsEta_MvtxInttEmcal;
0285
0286 TProfile* m_HDPhiVsTruthPtProf_IInttOInttEmcal;
0287
0288 TProfile* m_HDPhiVsTruthPtProf_VtxIIntt;
0289 TProfile* m_HDPhiVsTruthPtProf_IInttOIntt;
0290 TProfile* m_HDPhiVsTruthPtProf_OInttEmcal;
0291
0292 TProfile* m_HDPhiVsTruthPtProf_VtxIInttEmcal;
0293 TProfile* m_HDPhiVsTruthPtProf_VtxOInttEmcal;
0294 TProfile* m_HDPhiVsTruthPtProf_VtxInttEmcal;
0295
0296 TProfile* m_HDPhiVsTruthPtProf_MvtxIInttEmcal;
0297 TProfile* m_HDPhiVsTruthPtProf_MvtxOInttEmcal;
0298 TProfile* m_HDPhiVsTruthPtProf_MvtxInttEmcal;
0299
0300 TH1D* m_HPtEfficiency;
0301 TH1D* m_HTruTrackNum;
0302
0303
0304 void HistInit();
0305
0306 void CheckPrimP(std::vector<hitStruct >& m_TruthParticle);
0307
0308 void ReadInttHitting(std::vector<hitStruct >& vFMvtxHits,\
0309 std::vector<hitStruct >& vSMvtxHits, std::vector<hitStruct >& vTMvtxHits,\
0310 std::vector<hitStruct >& vIInttHits, std::vector<hitStruct >& vOInttHits,\
0311 std::vector<hitStruct >& vTpcHits);
0312
0313 void ReadCalHitting(std::vector<hitStruct >& vEmcalHits,\
0314 std::vector<hitStruct >& vIHCalHits, std::vector<hitStruct >& vOHcalHits);
0315
0316 void ReadCalCluHitting(std::vector<hitStruct >& vEmcalHits,\
0317 std::vector<hitStruct >& vIHCalHits, std::vector<hitStruct >& vOHcalHits);
0318
0319
0320
0321 Int_t TruRecoMatching(hitStruct truthP, std::vector<tracKuma > vRecoTrk,\
0322 std::vector<Int_t > vMatchiedRecoTrkId);
0323
0324 void TrackQA(std::vector<hitStruct > vTruthPs, std::vector<hitStruct > vEmcalHits);
0325
0326 Int_t TruRecoMatching(hitStruct truthP);
0327
0328 void DeltaPtPerform(hitStruct truthP, tracKuma trk);
0329 void TrackOtherPropertiesWTruth(hitStruct truthP, tracKuma trk,\
0330 Double_t sagittaR, Double_t centerX, Double_t centerY, Double_t recoPt,\
0331 TH2D* hTruthPVsTheta, TH2D* hTruthPVsPhi, TH2D* hTruthPVsRecoP, TH2D* hTruthPVsEOverP,\
0332 TH2D* hDVtxXY, TH1D* hDVtxR, TH1D* hDVtxZ);
0333
0334 void CaloEnergyQA(Int_t CalId, std::vector<hitStruct > calHits);
0335 bool ParticleDecayCheck(tracKuma trk, std::vector<hitStruct > vEmcalHits);
0336
0337 void EstimateMagneticShift(hitStruct truthP, tracKuma trk);
0338
0339
0340
0341 void DrawEventDisplay(Int_t eventId, std::vector<tracKuma > trks);
0342 void EventJudge(Int_t eventNum, Double_t targetVal, Double_t minLim, Double_t maxLim, bool bIn);
0343 void ShowEventInfo();
0344 void ShowTrackInfo(tracKuma trk, Double_t dPt, Double_t centerX, Double_t centerY, Double_t sagittaR);
0345
0346 void ResetValuesForEvent();
0347 void AllResetValuesForEvent();
0348 void PartResetValuesForEvent();
0349
0350 void WrightHists();
0351
0352 void ChecKuma(std::string checkNo);
0353
0354
0355
0356
0357 };
0358
0359
0360
0361 #endif
0362
0363