File indexing completed on 2025-08-05 08:12:41
0001 #ifndef ANAUPC_H
0002 #define ANAUPC_H
0003
0004 #include <Rtypes.h>
0005 #include <fun4all/SubsysReco.h>
0006
0007
0008 class PHCompositeNode;
0009 class TFile;
0010 class TTree;
0011 class TH1;
0012 class TH2;
0013 class PHCompositeNode;
0014 class RawClusterContainer;
0015 class RawCluster;
0016 class SvtxTrackMap;
0017 class JetMap;
0018 class GlobalVertex;
0019 class JetEvalStack;
0020 class JetRecoEval;
0021 class SvtxTrackEval;
0022 class PHG4TruthInfoContainer;
0023 class PHHepMCGenEventMap;
0024 class PHHepMCGenEvent;
0025 class CaloTriggerInfo;
0026 class JetTruthEval;
0027 class SvtxEvalStack;
0028 class EventHeader;
0029
0030
0031 class AnaUPC : public SubsysReco
0032 {
0033 public:
0034
0035 AnaUPC(const std::string &name = "AnaUPC",
0036 const std::string &outputfname = "AnaUPC.root");
0037
0038
0039 virtual ~AnaUPC();
0040
0041
0042 int Init(PHCompositeNode *) override;
0043
0044
0045 int process_event(PHCompositeNode *) override;
0046
0047
0048 int End(PHCompositeNode *) override;
0049
0050
0051
0052
0053
0054
0055
0056
0057 void analyzeTracks(bool analyzeTracks) { m_analyzeTracks = analyzeTracks; }
0058
0059
0060 void analyzeTruth(bool analyzeTruth) { m_analyzeTruth = analyzeTruth; }
0061
0062 int Reset(PHCompositeNode * ) override;
0063
0064 private:
0065
0066 std::string m_outfilename;
0067
0068
0069
0070
0071
0072
0073
0074
0075 bool m_analyzeTracks;
0076
0077
0078
0079
0080
0081
0082
0083
0084 bool m_analyzeTruth;
0085
0086
0087 TFile *m_outfile{nullptr};
0088
0089 TTree *m_tracktree{nullptr};
0090 TTree *m_hepmctree{nullptr};
0091 TTree *m_truthtree{nullptr};
0092 TTree *m_globaltree{nullptr};
0093
0094 TTree *m_pairtree{nullptr};
0095
0096 TH1 *h_phi[2]{nullptr,nullptr};
0097 TH2 *h2_eta_phi[2]{nullptr,nullptr};
0098 TH1 *h_mass[2]{nullptr,nullptr};
0099 TH1 *h_pt[2]{nullptr,nullptr};
0100 TH1 *h_y[2]{nullptr,nullptr};
0101 TH1 *h_eta[2]{nullptr,nullptr};
0102
0103 TH1 *h_trig{nullptr};
0104 TH1 *h_ntracks{nullptr};
0105 TH2 *h2_ntrksvsb{nullptr};
0106
0107 TH1 *h_b_mb{nullptr};
0108 TH1 *h_npart_mb{nullptr};
0109 TH1 *h_ncoll_mb{nullptr};
0110 TH1 *h_b{nullptr};
0111 TH1 *h_npart{nullptr};
0112 TH1 *h_ncoll{nullptr};
0113
0114 const double E_MASS = 0.000510998950;
0115
0116 SvtxEvalStack *m_svtxEvalStack{nullptr};
0117
0118
0119
0120 int GetNodes(PHCompositeNode *topNode);
0121 int getTracks(PHCompositeNode *topNode);
0122
0123
0124
0125 void getHEPMCTruth();
0126 void getPHG4Truth();
0127
0128
0129 EventHeader *_evthdr{nullptr};
0130 SvtxTrackMap *_trackmap{nullptr};
0131 PHG4TruthInfoContainer *_truthinfo{nullptr};
0132 PHHepMCGenEventMap *_genevent_map{nullptr};
0133
0134 void initializeVariables();
0135 void initializeTrees();
0136
0137
0138
0139
0140
0141
0142 Int_t m_run{ 0 };
0143 Int_t m_evt{ 0 };
0144 Int_t m_npart_targ{ 0 };
0145 Int_t m_npart_proj{ 0 };
0146 Int_t m_npart{ 0 };
0147 Int_t m_ncoll{ 0 };
0148 Int_t m_ncoll_hard{ 0 };
0149 Float_t m_bimpact{ -1. };
0150 Int_t m_ntracks{ 0 };
0151 Int_t m_ntrk_sphenix{ 0 };
0152 Int_t m_ntrk_mc{ 0 };
0153
0154
0155 int m_partid1;
0156 int m_partid2;
0157 double m_x1;
0158 double m_x2;
0159 int m_mpi;
0160 int m_process_id;
0161 double m_truthenergy;
0162 double m_trutheta;
0163 double m_truthphi;
0164 double m_truthpx;
0165 double m_truthpy;
0166 double m_truthpz;
0167 double m_truthpt;
0168 double m_truthp;
0169 int m_numparticlesinevent;
0170 int m_truthpid;
0171 int m_truthcharge;
0172
0173
0174
0175 double m_tr_px;
0176 double m_tr_py;
0177 double m_tr_pz;
0178 double m_tr_p;
0179 double m_tr_pt;
0180 double m_tr_phi;
0181 double m_tr_eta;
0182 int m_charge;
0183 double m_chisq;
0184 int m_ndf;
0185 double m_dca;
0186 double m_tr_x;
0187 double m_tr_y;
0188 double m_tr_z;
0189 int m_truth_is_primary;
0190 double m_truthtrackpx;
0191 double m_truthtrackpy;
0192 double m_truthtrackpz;
0193 double m_truthtrackp;
0194 double m_truthtracke;
0195 double m_truthtrackpt;
0196 double m_truthtrackphi;
0197 double m_truthtracketa;
0198 int m_truthtrackpid;
0199
0200
0201 Double_t m_pm{ 0. };
0202 Double_t m_ppt{ 0. };
0203 Double_t m_pphi{ 0. };
0204 Double_t m_py{ 0. };
0205 Double_t m_peta{ 0. };
0206 Double_t m_pdphi{ 0. };
0207 Double_t m_ppt1{ 0. };
0208 Double_t m_ppz1{ 0. };
0209 Double_t m_pphi1{ 0. };
0210 Double_t m_peta1{ 0. };
0211 Double_t m_ppt2{ 0. };
0212 Double_t m_ppz2{ 0. };
0213 Double_t m_pphi2{ 0. };
0214 Double_t m_peta2{ 0. };
0215 Short_t m_pq1{ 0 };
0216 Short_t m_pq2{ 0 };
0217
0218
0219
0220
0221
0222
0223
0224
0225
0226
0227
0228
0229
0230
0231
0232
0233
0234
0235
0236
0237
0238
0239
0240
0241
0242
0243
0244
0245
0246
0247
0248
0249
0250
0251
0252
0253 };
0254
0255 #endif