Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 09:18:04

0001 //////////////////////////////////////////////////////////
0002 // This class has been automatically generated on
0003 // Sat Nov 23 01:L:33 2024 by ROOT version 6.26/06
0004 // from TTree tree/sPHENIX info.
0005 // found on file: ana439_Electron_2GeV_00150.root
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 // Header file for the classes stored in the TTree if any.
0032 #include <vector>
0033 
0034 // struct hitStruct{
0035 //  Double_t r;
0036 //    Double_t z;
0037 //  Double_t phi;
0038 //    Double_t eta;
0039 //    Double_t pt;
0040 //    Double_t energy;
0041 // };
0042 
0043 class InttSeedTrackPerformance {
0044 public :
0045    TTree          *fChain;   //!pointer to the analyzed TTree or TChain
0046    Int_t           fCurrent; //!current Tree number in a TChain
0047 
0048 // Fixed size dimensions of array or collections stored in the TTree if any.
0049 
0050    // Declaration of leaf types
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    // List of branches
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    // Kuma Members ======
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    // == member functions == 
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    // Track Performance QA functions =======================================
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    // Track Performance QA functions =======================================
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    // Kuma Members ======
0354 
0355 
0356 
0357 };
0358 
0359 
0360 
0361 #endif
0362 
0363