Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:14:30

0001 #include <fun4all/Fun4AllServer.h>
0002 #include <g4main/PHG4Hit.h>
0003 #include <g4main/PHG4Particle.h>
0004 #include <g4main/PHG4TruthInfoContainer.h>
0005 #include <phhepmc/PHGenIntegral.h>
0006 #include <phhepmc/PHHepMCGenEvent.h>
0007 #include <phhepmc/PHHepMCGenEventMap.h>
0008 #include <phool/PHCompositeNode.h>
0009 #include <phool/getClass.h>
0010 
0011 #include <TLorentzVector.h>
0012 #include <g4jets/Jet.h>
0013 #include <g4jets/JetMap.h>
0014 #include <iostream>
0015 
0016 #include <g4detectors/PHG4ScintillatorSlatContainer.h>
0017 #include <g4eval/JetEvalStack.h>
0018 #include <trackbase_historic/SvtxTrack.h>
0019 #include <trackbase_historic/SvtxTrackMap.h>
0020 
0021 #include <g4eval/SvtxEvalStack.h>
0022 #include <sstream>
0023 
0024 #include <HepMC/GenEvent.h>
0025 #include <HepMC/GenVertex.h>
0026 #include <phhepmc/PHHepMCGenEvent.h>
0027 #include "TruthPhotonJet.h"
0028 
0029 using namespace std;
0030 
0031 TruthPhotonJet::TruthPhotonJet(const std::string &name)
0032   : SubsysReco("TRUTHPHOTONJET")
0033 {
0034   initialize_values();
0035 
0036   outfilename = name;
0037 
0038   //add other initializers here
0039   //default use isocone algorithm
0040   use_isocone = 0;
0041 
0042   eval_tracked_jets = 0;
0043 
0044   //default use 0.3 jet cone
0045   jet_cone_size = 3;
0046   nevents = 0;
0047 
0048   //default to barrel
0049   etalow = -1;
0050   etahigh = 1;
0051 
0052   //default jetminptcut
0053   minjetpt = 4.;
0054 
0055   //default mincluscut
0056   mincluspt = 0.5;
0057 
0058   //default to photon-jet instead of dijet
0059   _is_dijet_process = 0;
0060 }
0061 
0062 int TruthPhotonJet::Init(PHCompositeNode *topnode)
0063 {
0064   cout << "GATHERING JETS: " << jet_cone_size << endl;
0065   cout << "GATHERING IN ETA: [" << etalow
0066        << "," << etahigh << "]" << endl;
0067   cout << "EVALUATING TRACKED JETS: " << eval_tracked_jets << endl;
0068   cout << "USING ISOLATION CONE: " << use_isocone << endl;
0069 
0070   file = new TFile(outfilename.c_str(), "RECREATE");
0071 
0072   ntruthconstituents_h = new TH1F("ntruthconstituents", "", 200, 0, 200);
0073   histo = new TH1F("histo", "histo", 100, -3, 3);
0074 
0075   tree = new TTree("tree", "a tree");
0076   tree->Branch("nevents", &nevents, "nevents/I");
0077 
0078   Set_Tree_Branches();
0079 
0080   return 0;
0081 }
0082 
0083 int TruthPhotonJet::process_event(PHCompositeNode *topnode)
0084 {
0085   if(nevents % 50 == 0)
0086     cout << "at event number " << nevents << endl;
0087 
0088   //get the nodes from the NodeTree
0089 
0090   //get the requested size jets
0091   ostringstream truthjetsize;
0092 
0093   truthjetsize.str("");
0094   truthjetsize << "AntiKt_Truth_r";
0095 
0096   //cout<<"Gathering Jets:  "<<recojetsize.str().c_str()<<endl;
0097   //cout<<"Gathering Jets:  "<<truthjetsize.str().c_str()<<endl;
0098   if (jet_cone_size == 2)
0099   {
0100     truthjetsize << "02";
0101   }
0102   else if (jet_cone_size == 3)
0103   {
0104     truthjetsize << "03";
0105   }
0106   else if (jet_cone_size == 4)
0107   {
0108     truthjetsize << "04";
0109   }
0110   else if (jet_cone_size == 5)
0111   {
0112     truthjetsize << "05";
0113   }
0114   else if (jet_cone_size == 6)
0115   {
0116     truthjetsize << "06";
0117   }
0118 
0119   else if (jet_cone_size == 7)
0120   {
0121     truthjetsize << "07";
0122   }
0123   //if its some other number just set it to 0.4
0124 
0125   else
0126   {
0127     truthjetsize << "04";
0128   }
0129 
0130   JetMap *truth_jets =
0131       //findNode::getClass<JetMap>(topnode,"AntiKt_Truth_r04");
0132       findNode::getClass<JetMap>(topnode, truthjetsize.str().c_str());
0133 
0134   PHG4TruthInfoContainer *truthinfo = findNode::getClass<PHG4TruthInfoContainer>(topnode, "G4TruthInfo");
0135 
0136   PHG4TruthInfoContainer::Range range = truthinfo->GetPrimaryParticleRange();
0137 
0138   if (!truth_jets)
0139   {
0140     cout << "no truth jets" << endl;
0141     return 0;
0142   }
0143   if (!truthinfo)
0144   {
0145     cout << "no truth track info" << endl;
0146     return 0;
0147   }
0148   JetEvalStack *_jetevalstack = new JetEvalStack(topnode, truthjetsize.str().c_str(), truthjetsize.str().c_str());
0149   JetTruthEval *trutheval = _jetevalstack->get_truth_eval();
0150 
0151   /***********************************************
0152 
0153   GET ALL THE HEPMC EVENT LEVEL TRUTH PARTICLES
0154 
0155   ************************************************/
0156   if (Verbosity() > 1)
0157     cout << "GETTING HEPMC" << endl;
0158 
0159   PHHepMCGenEventMap *hepmceventmap = findNode::getClass<PHHepMCGenEventMap>(topnode, "PHHepMCGenEventMap");
0160 
0161   if (!hepmceventmap)
0162   {
0163     cout << "hepmc event node is missing, BAILING" << endl;
0164     return 0;
0165   }
0166 
0167   //0 corresponds to the hepmc pythia event. 1 is gold gold embedded background
0168   PHHepMCGenEvent *hepmcevent = hepmceventmap->get(1);
0169 
0170   if (!hepmcevent)
0171   {
0172     cout << PHWHERE << "no hepmcevent pointer, bailing" << endl;
0173     return 0;
0174   }
0175 
0176   HepMC::GenEvent *truthevent = hepmcevent->getEvent();
0177   if (!truthevent)
0178   {
0179     cout << PHWHERE << "no evt pointer under phhepmvgenevent found " << endl;
0180     return 0;
0181   }
0182 
0183   //get the interacting protons
0184   if (truthevent->valid_beam_particles())
0185   {
0186     HepMC::GenParticle *part1 = truthevent->beam_particles().first;
0187 
0188     //beam energy
0189     beam_energy = fabs(part1->momentum().pz());
0190   }
0191 
0192   //Parton info
0193   HepMC::PdfInfo *pdfinfo = truthevent->pdf_info();
0194 
0195   partid1 = pdfinfo->id1();
0196   partid2 = pdfinfo->id2();
0197   x1 = pdfinfo->x1();
0198   x2 = pdfinfo->x2();
0199 
0200   if (Verbosity() > 1)
0201     cout << "Looping over HEPMC particles" << endl;
0202 
0203   numparticlesinevent = 0;
0204   process_id = truthevent->signal_process_id();
0205   for (HepMC::GenEvent::particle_const_iterator iter = truthevent->particles_begin(); iter != truthevent->particles_end(); ++iter)
0206   {
0207     truthenergy = (*iter)->momentum().e();
0208     truthpid = (*iter)->pdg_id();
0209     trutheta = (*iter)->momentum().pseudoRapidity();
0210     truthphi = (*iter)->momentum().phi();
0211     truthpx = (*iter)->momentum().px();
0212     truthpy = (*iter)->momentum().py();
0213     truthpz = (*iter)->momentum().pz();
0214     truthpt = sqrt(truthpx * truthpx + truthpy * truthpy);
0215 
0216     truthtree->Fill();
0217     numparticlesinevent++;
0218   }
0219 
0220   if (Verbosity() > 1)
0221     cout << "LOOPING OVER G4 TRUTH PARTICLES" << endl;
0222 
0223   cluseventenergy = 0;
0224   cluseventphi = 0;
0225   cluseventpt = 0;
0226   cluseventeta = 0;
0227   float lastenergy = 0;
0228   for (PHG4TruthInfoContainer::ConstIterator iter = range.first; iter != range.second; ++iter)
0229   {
0230     PHG4Particle *truth = iter->second;
0231 
0232     truthpx = truth->get_px();
0233     truthpy = truth->get_py();
0234     truthpz = truth->get_pz();
0235     truthp = sqrt(truthpx * truthpx + truthpy * truthpy + truthpz * truthpz);
0236     truthenergy = truth->get_e();
0237 
0238     TLorentzVector vec;
0239     vec.SetPxPyPzE(truthpx, truthpy, truthpz, truthenergy);
0240 
0241     truthpt = sqrt(truthpx * truthpx + truthpy * truthpy);
0242 
0243     truthphi = vec.Phi();
0244     trutheta = vec.Eta();
0245     truthpid = truth->get_pid();
0246 
0247     if (truthpid == 22 && truthenergy > lastenergy && trutheta < etahigh && trutheta > etalow)
0248     {
0249       lastenergy = truthenergy;
0250       cluseventenergy = truthenergy;
0251       cluseventpt = truthpt;
0252       cluseventphi = truthphi;
0253       cluseventeta = trutheta;
0254     }
0255     truth_g4particles->Fill();
0256   }
0257 
0258   //cout<<"CLUSTER Properties : " << cluseventenergy<< " " <<cluseventphi<< 
0259   //" " << cluseventeta<<endl;
0260 
0261   if (Verbosity() > 1)
0262     cout << "LOOPING OVER TRUTH JETS" << endl;
0263   /***************************************
0264 
0265    TRUTH JETS
0266 
0267    ***************************************/
0268 
0269   float hardest_jet = 0;
0270   float subleading_jet = 0;
0271   int numtruthjets = 0;
0272 
0273   hardest_jetpt = 0;
0274   hardest_jeteta = 0;
0275   hardest_jetphi = 0;
0276   hardest_jetenergy = 0;
0277   for (JetMap::Iter iter = truth_jets->begin(); iter != truth_jets->end(); ++iter)
0278   {
0279     Jet *jet = iter->second;
0280 
0281     truthjetpt = jet->get_pt();
0282     if (truthjetpt < minjetpt)
0283       continue;
0284 
0285     truthjeteta = jet->get_eta();
0286 
0287     //make the width extra just to be safe
0288     if (truthjeteta < (etalow - 1) || truthjeteta > (etahigh + 1))
0289       continue;
0290 
0291     truthjetpx = jet->get_px();
0292     truthjetpy = jet->get_py();
0293     truthjetpz = jet->get_pz();
0294     truthjetphi = jet->get_phi();
0295     truthjetmass = jet->get_mass();
0296     truthjetp = jet->get_p();
0297     truthjetenergy = jet->get_e();
0298     truthjetxf = truthjetpz / beam_energy;  //just the energy of one beam, so don't need 1/2
0299 
0300     //check that the jet isn't just a photon or something like this
0301     //needs at least 2 constituents and that 90% of jet isn't from one photon
0302     std::set<PHG4Particle *> truthjetcomp =
0303         trutheval->all_truth_particles(jet);
0304     int _ntruthconstituents = 0;
0305     int photonflag = 0;
0306     for (std::set<PHG4Particle *>::iterator iter2 = truthjetcomp.begin();
0307          iter2 != truthjetcomp.end();
0308          ++iter2)
0309     {
0310       PHG4Particle *truthpart = *iter2;
0311       if (!truthpart)
0312       {
0313         cout << "no truth particles in the jet??" << endl;
0314         break;
0315       }
0316       _ntruthconstituents++;
0317 
0318       TLorentzVector constvec;
0319       constvec.SetPxPyPzE(truthpart->get_px(), 
0320               truthpart->get_py(), 
0321               truthpart->get_pz(),
0322               truthpart->get_e());
0323 
0324       int constpid = truthpart->get_pid();
0325 
0326       // If this jet contains the truth prompt photon, skip it
0327     if(fabs(cluseventphi - constvec.Phi()) < 0.02 && 
0328        fabs(cluseventeta - constvec.Eta()) < 0.02 &&
0329        constpid == 22)
0330       {
0331     photonflag = 1;
0332     break;
0333       }
0334     }
0335     ntruthconstituents_h->Fill(_ntruthconstituents);
0336 
0337     // If it contains the truth direct photon, skip this jet
0338     if(photonflag)
0339       continue;
0340 
0341     if (_ntruthconstituents < 3)
0342       continue;
0343 
0344     numtruthjets++;
0345 
0346     // if it is photon-jet process then we want the hardest away-side jet
0347     if (!_is_dijet_process)
0348     {
0349       if (truthjetpt > hardest_jet)
0350       {
0351         hardest_jet = truthjetpt;
0352         hardest_jetpt = truthjetpt;
0353         hardest_jetenergy = truthjetenergy;
0354         hardest_jeteta = truthjeteta;
0355         hardest_jetphi = truthjetphi;
0356     ntruthconstituents = _ntruthconstituents;
0357       }
0358     }
0359 
0360     //if it is dijet process we want to overwrite
0361     //the highest pt photon with the highest pt jet
0362     if (_is_dijet_process)
0363     {
0364       if (truthjetpt > hardest_jet)
0365       {
0366         hardest_jet = truthjetpt;
0367         cluseventenergy = truthjetenergy;
0368         cluseventpt = truthjetpt;
0369         cluseventphi = truthjetphi;
0370         cluseventeta = truthjeteta;
0371       }
0372     }
0373 
0374     truthjettree->Fill();
0375   }
0376 
0377 
0378   //cout<<"Jet properties : " << hardest_jetenergy << "  " << truthjetphi
0379   //  << " " << truthjeteta << endl;
0380 
0381   if (_is_dijet_process && numtruthjets > 1)
0382   {
0383     for (JetMap::Iter iter2 = truth_jets->begin(); iter2 != truth_jets->end();
0384          ++iter2)
0385     {
0386       Jet *jet = iter2->second;
0387       float subtruthjetpt = jet->get_pt();
0388       if (subtruthjetpt < minjetpt)
0389         continue;
0390 
0391       float subtruthjeteta = jet->get_eta();
0392       //make the width extra just to be safe
0393       if (subtruthjeteta < (etalow - 1) || subtruthjeteta > (etahigh + 1))
0394         continue;
0395 
0396       float subtruthjetphi = jet->get_phi();
0397       float subtruthjetenergy = jet->get_e();
0398 
0399       //check that the jet isn't just a photon or something like this
0400       //needs at least 2 constituents and that 90% of jet isn't from one photon
0401       std::set<PHG4Particle *> truthjetcomp =
0402           trutheval->all_truth_particles(jet);
0403       int ntruthconstituents = 0;
0404 
0405       for (std::set<PHG4Particle *>::iterator iter3 = truthjetcomp.begin();
0406            iter3 != truthjetcomp.end();
0407            ++iter3)
0408       {
0409         PHG4Particle *truthpart = *iter3;
0410         if (!truthpart)
0411         {
0412           cout << "no truth particles in the jet??" << endl;
0413           break;
0414         }
0415         ntruthconstituents++;
0416       }
0417 
0418       if (ntruthconstituents < 2)
0419         continue;
0420 
0421       if (subtruthjetpt > subleading_jet && subtruthjetpt < cluseventpt)
0422       {
0423         subleading_jet = subtruthjetpt;
0424         hardest_jetpt = subtruthjetpt;
0425         hardest_jetenergy = subtruthjetenergy;
0426         hardest_jeteta = subtruthjeteta;
0427         hardest_jetphi = subtruthjetphi;
0428       }
0429     }
0430   }
0431 
0432   eventdphi = cluseventphi - hardest_jetphi;
0433   event_tree->Fill();
0434     
0435   nevents++;
0436   tree->Fill();
0437 
0438 
0439 
0440   return 0;
0441   }
0442 
0443 int TruthPhotonJet::End(PHCompositeNode *topnode)
0444 {
0445   std::cout << " DONE PROCESSING " << endl;
0446 
0447   //get the integrated luminosity
0448 
0449   PHGenIntegral *phgen = findNode::getClass<PHGenIntegral>(topnode, "PHGenIntegral");
0450   if (phgen)
0451   {
0452     intlumi = phgen->get_Integrated_Lumi();
0453     nprocessedevents = phgen->get_N_Processed_Event();
0454     nacceptedevents = phgen->get_N_Generator_Accepted_Event();
0455     xsecprocessedevents = phgen->get_CrossSection_Processed_Event();
0456     xsecacceptedevents = phgen->get_CrossSection_Generator_Accepted_Event();
0457     
0458     runinfo->Fill();
0459   }
0460   
0461 
0462 
0463   file->Write();
0464   file->Close();
0465   return 0;
0466 }
0467 
0468 void TruthPhotonJet::Set_Tree_Branches()
0469 {
0470   runinfo = new TTree("runinfo", "a tree with pythia run info like int lumi");
0471   runinfo->Branch("intlumi", &intlumi, "intlumi/F");
0472   runinfo->Branch("nprocessedevents", &nprocessedevents, "nprocessedevents/F");
0473   runinfo->Branch("nacceptedevents", &nacceptedevents, "nacceptedevents/F");
0474   runinfo->Branch("xsecprocessedevents", &xsecprocessedevents, "xsecprocessedevents/F");
0475   runinfo->Branch("xsecacceptedevents", &xsecacceptedevents, "xsecacceptedevents/F");
0476 
0477   truthjettree = new TTree("truthjettree", "a tree with truth jets");
0478   truthjettree->Branch("truthjetpt", &truthjetpt, "truthjetpt/F");
0479   truthjettree->Branch("truthjetpx", &truthjetpx, "truthjetpx/F");
0480   truthjettree->Branch("truthjetpy", &truthjetpy, "truthjetpy/F");
0481   truthjettree->Branch("truthjetpz", &truthjetpz, "truthjetpz/F");
0482   truthjettree->Branch("truthjetphi", &truthjetphi, "truthjetphi/F");
0483   truthjettree->Branch("truthjeteta", &truthjeteta, "truthjeteta/F");
0484   truthjettree->Branch("truthjetmass", &truthjetmass, "truthjetmass/F");
0485   truthjettree->Branch("truthjetp", &truthjetp, "truthjetp/F");
0486   truthjettree->Branch("truthjetenergy", &truthjetenergy, "truthjetenergy/F");
0487   truthjettree->Branch("nevents", &nevents, "nevents/I");
0488   truthjettree->Branch("process_id", &process_id, "process_id/I");
0489   truthjettree->Branch("x1", &x1, "x1/F");
0490   truthjettree->Branch("x2", &x2, "x2/F");
0491   truthjettree->Branch("partid1", &partid1, "partid1/I");
0492   truthjettree->Branch("partid2", &partid2, "partid2/I");
0493   truthjettree->Branch("E_4x4", &E_4x4, "E_4x4/F");
0494   truthjettree->Branch("phi_4x4", &phi_4x4, "phi_4x4/F");
0495   truthjettree->Branch("eta_4x4", &eta_4x4, "eta_4x4/F");
0496   truthjettree->Branch("E_2x2", &E_2x2, "E_2x2/F");
0497   truthjettree->Branch("phi_2x2", &phi_2x2, "phi_2x2/F");
0498   truthjettree->Branch("eta_2x2", &eta_2x2, "eta_2x2/F");
0499   truthjettree->Branch("truthjetxf", &truthjetxf, "truthjetxf/F");
0500 
0501   truth_g4particles = new TTree("truthtree_g4", "a tree with all truth g4 particles");
0502   truth_g4particles->Branch("truthpx", &truthpx, "truthpx/F");
0503   truth_g4particles->Branch("truthpy", &truthpy, "truthpy/F");
0504   truth_g4particles->Branch("truthpz", &truthpz, "truthpz/F");
0505   truth_g4particles->Branch("truthp", &truthp, "truthp/F");
0506   truth_g4particles->Branch("truthenergy", &truthenergy, "truthenergy/F");
0507   truth_g4particles->Branch("truthphi", &truthphi, "truthphi/F");
0508   truth_g4particles->Branch("trutheta", &trutheta, "trutheta/F");
0509   truth_g4particles->Branch("truthpt", &truthpt, "truthpt/F");
0510   truth_g4particles->Branch("truthpid", &truthpid, "truthpid/I");
0511   truth_g4particles->Branch("nevents", &nevents, "nevents/I");
0512   truth_g4particles->Branch("process_id", &process_id, "process_id/I");
0513   truth_g4particles->Branch("x1", &x1, "x1/F");
0514   truth_g4particles->Branch("x2", &x2, "x2/F");
0515   truth_g4particles->Branch("partid1", &partid1, "partid1/I");
0516   truth_g4particles->Branch("partid2", &partid2, "partid2/I");
0517   truth_g4particles->Branch("E_4x4", &E_4x4, "E_4x4/F");
0518   truth_g4particles->Branch("phi_4x4", &phi_4x4, "phi_4x4/F");
0519   truth_g4particles->Branch("eta_4x4", &eta_4x4, "eta_4x4/F");
0520   truth_g4particles->Branch("E_2x2", &E_2x2, "E_2x2/F");
0521   truth_g4particles->Branch("phi_2x2", &phi_2x2, "phi_2x2/F");
0522   truth_g4particles->Branch("eta_2x2", &eta_2x2, "eta_2x2/F");
0523 
0524   truthtree = new TTree("truthtree", "a tree with all truth pythia particles");
0525   truthtree->Branch("truthpx", &truthpx, "truthpx/F");
0526   truthtree->Branch("truthpy", &truthpy, "truthpy/F");
0527   truthtree->Branch("truthpz", &truthpz, "truthpz/F");
0528   truthtree->Branch("truthp", &truthp, "truthp/F");
0529   truthtree->Branch("truthenergy", &truthenergy, "truthenergy/F");
0530   truthtree->Branch("truthphi", &truthphi, "truthphi/F");
0531   truthtree->Branch("trutheta", &trutheta, "trutheta/F");
0532   truthtree->Branch("truthpt", &truthpt, "truthpt/F");
0533   truthtree->Branch("truthpid", &truthpid, "truthpid/I");
0534   truthtree->Branch("nevents", &nevents, "nevents/I");
0535   truthtree->Branch("numparticlesinevent", &numparticlesinevent, "numparticlesinevent/I");
0536   truthtree->Branch("process_id", &process_id, "process_id/I");
0537   truthtree->Branch("x1", &x1, "x1/F");
0538   truthtree->Branch("x2", &x2, "x2/F");
0539   truthtree->Branch("partid1", &partid1, "partid1/I");
0540   truthtree->Branch("partid2", &partid2, "partid2/I");
0541 
0542   event_tree = new TTree("eventtree", "A tree with 2 to 2 event info");
0543   event_tree->Branch("x1", &x1, "x1/F");
0544   event_tree->Branch("x2", &x2, "x2/F");
0545   event_tree->Branch("partid1", &partid1, "partid1/I");
0546   event_tree->Branch("partid2", &partid2, "partid2/I");
0547   event_tree->Branch("process_id", &process_id, "process_id/I");
0548   event_tree->Branch("nevents", &nevents, "nevents/I");
0549   event_tree->Branch("cluseventenergy", &cluseventenergy, "cluseventenergy/F");
0550   event_tree->Branch("cluseventeta", &cluseventeta, "cluseventeta/F");
0551   event_tree->Branch("cluseventpt", &cluseventpt, "cluseventpt/F");
0552   event_tree->Branch("cluseventphi", &cluseventphi, "cluseventphi/F");
0553   event_tree->Branch("hardest_jetpt", &hardest_jetpt, "hardest_jetpt/F");
0554   event_tree->Branch("hardest_jetphi", &hardest_jetphi, "hardest_jetphi/F");
0555   event_tree->Branch("hardest_jeteta", &hardest_jeteta, "hardest_jeteta/F");
0556   event_tree->Branch("hardest_jetenergy", &hardest_jetenergy, "hardest_jetenergy/F");
0557   event_tree->Branch("ntruthconstituents", &ntruthconstituents, "ntruthconstituents/I");
0558   event_tree->Branch("eventdphi", &eventdphi, "eventdphi/F");
0559   event_tree->Branch("E_4x4", &E_4x4, "E_4x4/F");
0560   event_tree->Branch("phi_4x4", &phi_4x4, "phi_4x4/F");
0561   event_tree->Branch("eta_4x4", &eta_4x4, "eta_4x4/F");
0562   event_tree->Branch("E_2x2", &E_2x2, "E_2x2/F");
0563   event_tree->Branch("phi_2x2", &phi_2x2, "phi_2x2/F");
0564   event_tree->Branch("eta_2x2", &eta_2x2, "eta_2x2/F");
0565 }
0566 
0567 void TruthPhotonJet::initialize_values()
0568 {
0569   event_tree = 0;
0570   tree = 0;
0571 
0572   truth_g4particles = 0;
0573   truthtree = 0;
0574 
0575   truthjettree = 0;
0576 
0577   histo = 0;
0578 
0579   _truthjetmass = -999;
0580   clus_energy = -999;
0581   clus_eta = -999;
0582   clus_phi = -999;
0583   clus_pt = -999;
0584   clus_px = -999;
0585   clus_py = -999;
0586   clus_pz = -999;
0587   clus_theta = -999;
0588   clus_x = -999;
0589   clus_y = -999;
0590   clus_z = -999;
0591   clus_t = -999;
0592 
0593   tr_px = -999;
0594   tr_py = -999;
0595   tr_pz = -999;
0596   tr_p = -999;
0597   tr_pt = -999;
0598   tr_phi = -999;
0599   tr_eta = -999;
0600   charge = -999;
0601   chisq = -999;
0602   ndf = -999;
0603   dca = -999;
0604   tr_x = -999;
0605   tr_y = -999;
0606   tr_z = -999;
0607   truthtrackpx = -999;
0608   truthtrackpy = -999;
0609   truthtrackpz = -999;
0610   truthtrackp = -999;
0611   truthtracke = -999;
0612   truthtrackpt = -999;
0613   truthtrackphi = -999;
0614   truthtracketa = -999;
0615   truthtrackpid = -999;
0616   truth_is_primary = false;
0617 
0618   truthjetpt = -999;
0619   truthjetpx = -999;
0620   truthjetpy = -999;
0621   truthjetpz = -999;
0622   truthjetphi = -999;
0623   truthjeteta = -999;
0624   truthjetmass = -999;
0625   truthjetp = -999;
0626   truthjetenergy = -999;
0627   recojetpt = -999;
0628   recojetpx = -999;
0629   recojetpy = -999;
0630   recojetpz = -999;
0631   recojetphi = -999;
0632   recojeteta = -999;
0633   recojetmass = -999;
0634   recojetp = -999;
0635   recojetenergy = -999;
0636   recojetid = -999;
0637   truthjetid = -999;
0638 
0639   _recojetid = -999;
0640   _recojetpt = -999;
0641   _recojetpx = -999;
0642   _recojetpy = -999;
0643   _recojetpz = -999;
0644   _recojetphi = -999;
0645   _recojeteta = -999;
0646   _recojetmass = -999;
0647   _recojetp = -999;
0648   _recojetenergy = -999;
0649   jetdphi = -999;
0650   jetpout = -999;
0651   jetdeta = -999;
0652   _truthjetid = -999;
0653   _truthjetpt = -999;
0654   _truthjetpx = -999;
0655   _truthjetpy = -999;
0656   _truthjetpz = -999;
0657   _truthjetphi = -999;
0658   _truthjeteta = -999;
0659   _truthjetmass = -999;
0660   _truthjetp = -999;
0661   _truthjetenergy = -999;
0662 
0663   _trecojetid = -999;
0664   _trecojetpt = -999;
0665   _trecojetpx = -999;
0666   _trecojetpy = -999;
0667   _trecojetpz = -999;
0668   _trecojetphi = -999;
0669   _trecojeteta = -999;
0670   _trecojetmass = -999;
0671   _trecojetp = -999;
0672   _trecojetenergy = -999;
0673   tjetdphi = -999;
0674   tjetpout = -999;
0675   tjetdeta = -999;
0676   _ttruthjetid = -999;
0677   _ttruthjetpt = -999;
0678   _ttruthjetpx = -999;
0679   _ttruthjetpy = -999;
0680   _ttruthjetpz = -999;
0681   _ttruthjetphi = -999;
0682   _ttruthjeteta = -999;
0683   _ttruthjetmass = -999;
0684   _ttruthjetp = -999;
0685   _ttruthjetenergy = -999;
0686 
0687   intlumi = -999;
0688   nprocessedevents = -999;
0689   nacceptedevents = -999;
0690   xsecprocessedevents = -999;
0691   xsecacceptedevents = -999;
0692 
0693   _tr_px = -999;
0694   _tr_py = -999;
0695   _tr_pz = -999;
0696   _tr_p = -999;
0697   _tr_pt = -999;
0698   _tr_phi = -999;
0699   _tr_eta = -999;
0700   _charge = -999;
0701   _chisq = -999;
0702   _ndf = -999;
0703   _dca = -999;
0704   _tr_x = -999;
0705   _tr_y = -999;
0706   _tr_z = -999;
0707   haddphi = -999;
0708   hadpout = -999;
0709   haddeta = -999;
0710   _truth_is_primary = false;
0711   _truthtrackpx = -999;
0712   _truthtrackpy = -999;
0713   _truthtrackpz = -999;
0714   _truthtrackp = -999;
0715   _truthtracke = -999;
0716   _truthtrackpt = -999;
0717   _truthtrackphi = -999;
0718   _truthtracketa = -999;
0719   _truthtrackpid = -999;
0720 
0721   eventdphi = -999;
0722   truthpx = -999;
0723   truthpy = -999;
0724   truthpz = -999;
0725   truthp = -999;
0726   truthphi = -999;
0727   trutheta = -999;
0728   truthpt = -999;
0729   truthenergy = -999;
0730   truthpid = -999;
0731   numparticlesinevent = -999;
0732   process_id = -999;
0733 
0734   clustruthpx = -999;
0735   clustruthpy = -999;
0736   clustruthpz = -999;
0737   clustruthenergy = -999;
0738   clustruthpt = -999;
0739   clustruthphi = -999;
0740   clustrutheta = -999;
0741   clustruthpid = -999;
0742 
0743   beam_energy = 0;
0744   x1 = 0;
0745   x2 = 0;
0746   partid1 = 0;
0747   partid2 = 0;
0748 
0749   hardest_jetpt = 0;
0750   hardest_jetphi = 0;
0751   hardest_jeteta = 0;
0752   hardest_jetenergy = 0;
0753 }