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
0039
0040 use_isocone = 0;
0041
0042 eval_tracked_jets = 0;
0043
0044
0045 jet_cone_size = 3;
0046 nevents = 0;
0047
0048
0049 etalow = -1;
0050 etahigh = 1;
0051
0052
0053 minjetpt = 4.;
0054
0055
0056 mincluspt = 0.5;
0057
0058
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
0089
0090
0091 ostringstream truthjetsize;
0092
0093 truthjetsize.str("");
0094 truthjetsize << "AntiKt_Truth_r";
0095
0096
0097
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
0124
0125 else
0126 {
0127 truthjetsize << "04";
0128 }
0129
0130 JetMap *truth_jets =
0131
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
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
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
0184 if (truthevent->valid_beam_particles())
0185 {
0186 HepMC::GenParticle *part1 = truthevent->beam_particles().first;
0187
0188
0189 beam_energy = fabs(part1->momentum().pz());
0190 }
0191
0192
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
0259
0260
0261 if (Verbosity() > 1)
0262 cout << "LOOPING OVER TRUTH JETS" << endl;
0263
0264
0265
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
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;
0299
0300
0301
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
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
0338 if(photonflag)
0339 continue;
0340
0341 if (_ntruthconstituents < 3)
0342 continue;
0343
0344 numtruthjets++;
0345
0346
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
0361
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
0379
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
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
0400
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
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 }