Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-03 08:15:07

0001 #ifndef __PHOTONJET_H__
0002 #define __PHOTONJET_H__
0003 
0004 #include <fun4all/SubsysReco.h>
0005 #include <vector>
0006 
0007 #include <TFile.h>
0008 #include <TH1.h>
0009 #include <TH2.h>
0010 #include <TMath.h>
0011 #include <TTree.h>
0012 
0013 class PHCompositeNode;
0014 class RawClusterContainer;
0015 class RawTowerContainer;
0016 class RawCluster;
0017 class SvtxTrackMap;
0018 class JetMap;
0019 class GlobalVertex;
0020 class PHHepMCGenEventMap;
0021 class JetEvalStack;
0022 class JetRecoEval;
0023 class SvtxTrackEval;
0024 class PHG4TruthInfoContainer;
0025 class PHHepMCGenEvent;
0026 class CaloTriggerInfo;
0027 class JetTruthEval;
0028 
0029 class PhotonJet : public SubsysReco
0030 {
0031  public:
0032   PhotonJet(const std::string &name = "photonjet.root");
0033   double isoconeradius, mincluspt;
0034   double minjetpt;
0035   int jet_cone_size;
0036   int use_isocone;
0037   int eval_tracked_jets;
0038   int etalow;
0039   int etahigh;
0040   int usetrigger;
0041   int use_pos_cor_cemc;
0042   int is_AA;
0043   double mindp_pt;
0044 
0045   int Init(PHCompositeNode *);
0046   int process_event(PHCompositeNode *);
0047   int End(PHCompositeNode *);
0048 
0049   void use_trigger_emulator(int yesorno) { usetrigger = yesorno; };
0050   void set_jetpt_mincut(double pt) { minjetpt = pt; };
0051   void Set_Isocone_radius(double rad) { isoconeradius = rad; };
0052   void set_cluspt_mincut(double pt) { mincluspt = pt; };
0053   void set_directphotonpt_mincut(double pt) { mindp_pt = pt; };
0054   void use_isocone_algorithm(int yes) { use_isocone = yes; };  //1 is use it, 0 is don't use it
0055   void set_jetcone_size(int size) { jet_cone_size = size; }    //float for jet cone size, i.e. 0.2,0.3,0.4, etc.
0056   void SetFirstEventNum(int eventnum) { nevents = eventnum; }  //setting the first event based on job number so that each event has an individual eventnum
0057   void use_tracked_jets(int useit) { eval_tracked_jets = useit; };
0058   void set_eta_lowhigh(float low, float high)
0059   {
0060     etalow = low;
0061     etahigh = high;
0062   };
0063   void use_positioncorrection_CEMC(int useit) { use_pos_cor_cemc = useit; };
0064   void set_AA_collisions(int isaa) { is_AA = isaa; };
0065  private:
0066   TH1 *ntruthconstituents_h;
0067   TH1 *percent_photon_h;
0068   TFile *file;
0069   TTree *tree;
0070   TTree *cluster_tree;
0071   TTree *truth_g4particles;
0072   TTree *truthtree;
0073   TTree *isolated_clusters;
0074   TTree *tracktree;
0075   TTree *truthjettree;
0076   TTree *recojettree;
0077   TTree *isophot_jet_tree;
0078   TTree *isophot_trackjet_tree;
0079   TTree *isophot_had_tree;
0080   TTree *event_tree;
0081   std::string outfilename;
0082 
0083   float mpi;
0084   int ntruthconstituents;
0085   int nevents;
0086   TH1F *histo;
0087 
0088   float beam_energy;
0089   float x1;
0090   float x2;
0091   int partid1;
0092   int partid2;
0093 
0094   float hardest_jetpt;
0095   float hardest_jetphi;
0096   float hardest_jeteta;
0097   float hardest_jetenergy;
0098 
0099   //cluster info
0100   float clus_energy;
0101   float clus_eta;
0102   float clus_phi;
0103   float clus_pt;
0104   float clus_px;
0105   float clus_py;
0106   float clus_pz;
0107   float clus_theta;
0108   float clus_x, clus_y, clus_z, clus_t;
0109 
0110   //track info
0111   float tr_px, tr_py, tr_pz;
0112   float tr_p;
0113   float tr_pt;
0114   float tr_phi;
0115   float tr_eta;
0116   int charge;
0117   float chisq;
0118   unsigned int ndf;
0119   float dca;
0120   float tr_x, tr_y, tr_z;
0121   float truthtrackpx, truthtrackpy, truthtrackpz;
0122   float truthtrackp;
0123   float truthtracke;
0124   float truthtrackpt;
0125   float truthtrackphi;
0126   float truthtracketa;
0127   int truthtrackpid;
0128   bool truth_is_primary;
0129 
0130   //all truth jets
0131   float truthjetpt;
0132   float truthjetpx, truthjetpy, truthjetpz;
0133   float truthjetphi;
0134   float truthjeteta;
0135   float truthjetmass;
0136   float truthjetp;
0137   float truthjetenergy;
0138 
0139   float dR;
0140   //all reco jets
0141   float recojetpt;
0142   float recojetpx, recojetpy, recojetpz;
0143   float recojetphi;
0144   float recojeteta;
0145   float recojetmass;
0146   float recojetp;
0147   float recojetenergy;
0148   float recojetid;
0149   float truthjetid;
0150 
0151   //isophot+reco jet
0152   float _recojetid;
0153   float _recojetpt;
0154   float _recojetpx, _recojetpy, _recojetpz;
0155   float _recojetphi;
0156   float _recojeteta;
0157   float _recojetmass;
0158   float _recojetp;
0159   float _recojetenergy;
0160   float jetdphi;
0161   float jetpout;
0162   float jetdeta;
0163   float _truthjetid;
0164   float _truthjetpt;
0165   float _truthjetpx, _truthjetpy, _truthjetpz;
0166   float _truthjetphi;
0167   float _truthjeteta;
0168   float _truthjetmass;
0169   float _truthjetp;
0170   float _truthjetenergy;
0171 
0172   //isophot+reco track jet
0173   float _trecojetid;
0174   float _trecojetpt;
0175   float _trecojetpx, _trecojetpy, _trecojetpz;
0176   float _trecojetphi;
0177   float _trecojeteta;
0178   float _trecojetmass;
0179   float _trecojetp;
0180   float _trecojetenergy;
0181   float tjetdphi;
0182   float tjetpout;
0183   float tjetdeta;
0184   float _ttruthjetid;
0185   float _ttruthjetpt;
0186   float _ttruthjetpx, _ttruthjetpy, _ttruthjetpz;
0187   float _ttruthjetphi;
0188   float _ttruthjeteta;
0189   float _ttruthjetmass;
0190   float _ttruthjetp;
0191   float _ttruthjetenergy;
0192 
0193   //isophot+reco hadron
0194   float _tr_px, _tr_py, _tr_pz;
0195   float _tr_p;
0196   float _tr_pt;
0197   float _tr_phi;
0198   float _tr_eta;
0199   int _charge;
0200   float _chisq;
0201   unsigned int _ndf;
0202   float _dca;
0203   float _tr_x, _tr_y, _tr_z;
0204   float haddphi;
0205   float hadpout;
0206   float haddeta;
0207   bool _truth_is_primary;
0208   float _truthtrackpx;
0209   float _truthtrackpy;
0210   float _truthtrackpz;
0211   float _truthtrackp;
0212   float _truthtracke;
0213   float _truthtrackpt;
0214   float _truthtrackphi;
0215   float _truthtracketa;
0216   int _truthtrackpid;
0217 
0218   //all truth particles
0219   float truthpx, truthpy, truthpz;
0220   float truthp;
0221   float truthphi;
0222   float trutheta;
0223   float truthpt;
0224   float truthenergy;
0225   int truthpid;
0226   int numparticlesinevent;
0227   int process_id;
0228 
0229   //clust truth variables
0230   float clustruthpx;
0231   float clustruthpy;
0232   float clustruthpz;
0233   float clustruthenergy;
0234   float clustruthpt;
0235   float clustruthphi;
0236   float clustrutheta;
0237   int clustruthpid;
0238 
0239   float cluseventenergy;
0240   float cluseventphi;
0241   float cluseventeta;
0242   float cluseventpt;
0243 
0244   //trigger emulator info (emcal trigger)
0245   float E_4x4;
0246   float phi_4x4;
0247   float eta_4x4;
0248   float E_2x2;
0249   float phi_2x2;
0250   float eta_2x2;
0251 
0252   void Set_Tree_Branches();
0253 
0254 
0255   std::vector<float> constituent_dphis;
0256   std::vector<float> constituent_detas;
0257 
0258 
0259   float ConeSum(RawCluster *cluster,
0260         RawClusterContainer *cluster_container,
0261                 SvtxTrackMap *trackmap, float coneradius,
0262                 GlobalVertex *vtx);
0263   void GetRecoHadronsAndJets(RawCluster *trig,
0264                              SvtxTrackMap *tracks,
0265                              JetMap *jets,
0266                              JetMap *trackedjets,
0267                              JetRecoEval *recoeval,
0268                              SvtxTrackEval *trackeval,
0269                              PHG4TruthInfoContainer *alltruth,
0270                              JetTruthEval *trutheval,
0271                              JetMap *truthjets,
0272                              GlobalVertex *vtx);
0273 
0274   void GetRecoHadronsAndJetsAA(RawCluster *trig,
0275                                SvtxTrackMap *tracks,
0276                                JetMap *recojets,
0277                                PHG4TruthInfoContainer *alltruth,
0278                                JetMap *truthjets,
0279                                GlobalVertex *vtx);
0280 
0281   void initialize_values();
0282 
0283   const float pi2 = -1.5707963;
0284   const float threepi2 = 4.71238898;
0285   const float pi = 3.1415926;
0286 };
0287 
0288 #endif  // __PHOTONJET_H__