Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TruthPhotonJet.C
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file TruthPhotonJet.C
2 #include <g4main/PHG4Hit.h>
3 #include <g4main/PHG4Particle.h>
9 #include <phool/getClass.h>
10 
11 #include <TLorentzVector.h>
12 #include <g4jets/Jet.h>
13 #include <g4jets/JetMap.h>
14 #include <iostream>
15 
17 #include <g4eval/JetEvalStack.h>
20 
21 #include <g4eval/SvtxEvalStack.h>
22 #include <sstream>
23 
24 #include <HepMC/GenEvent.h>
25 #include <HepMC/GenVertex.h>
27 #include "TruthPhotonJet.h"
28 
29 using namespace std;
30 
32  : SubsysReco("TRUTHPHOTONJET")
33 {
35 
36  outfilename = name;
37 
38  //add other initializers here
39  //default use isocone algorithm
40  use_isocone = 0;
41 
43 
44  //default use 0.3 jet cone
45  jet_cone_size = 3;
46  nevents = 0;
47 
48  //default to barrel
49  etalow = -1;
50  etahigh = 1;
51 
52  //default jetminptcut
53  minjetpt = 4.;
54 
55  //default mincluscut
56  mincluspt = 0.5;
57 
58  //default to photon-jet instead of dijet
60 }
61 
63 {
64  cout << "GATHERING JETS: " << jet_cone_size << endl;
65  cout << "GATHERING IN ETA: [" << etalow
66  << "," << etahigh << "]" << endl;
67  cout << "EVALUATING TRACKED JETS: " << eval_tracked_jets << endl;
68  cout << "USING ISOLATION CONE: " << use_isocone << endl;
69 
70  file = new TFile(outfilename.c_str(), "RECREATE");
71 
72  ntruthconstituents_h = new TH1F("ntruthconstituents", "", 200, 0, 200);
73  histo = new TH1F("histo", "histo", 100, -3, 3);
74 
75  tree = new TTree("tree", "a tree");
76  tree->Branch("nevents", &nevents, "nevents/I");
77 
79 
80  return 0;
81 }
82 
84 {
85  if(nevents % 50 == 0)
86  cout << "at event number " << nevents << endl;
87 
88  //get the nodes from the NodeTree
89 
90  //get the requested size jets
91  ostringstream truthjetsize;
92 
93  truthjetsize.str("");
94  truthjetsize << "AntiKt_Truth_r";
95 
96  //cout<<"Gathering Jets: "<<recojetsize.str().c_str()<<endl;
97  //cout<<"Gathering Jets: "<<truthjetsize.str().c_str()<<endl;
98  if (jet_cone_size == 2)
99  {
100  truthjetsize << "02";
101  }
102  else if (jet_cone_size == 3)
103  {
104  truthjetsize << "03";
105  }
106  else if (jet_cone_size == 4)
107  {
108  truthjetsize << "04";
109  }
110  else if (jet_cone_size == 5)
111  {
112  truthjetsize << "05";
113  }
114  else if (jet_cone_size == 6)
115  {
116  truthjetsize << "06";
117  }
118 
119  else if (jet_cone_size == 7)
120  {
121  truthjetsize << "07";
122  }
123  //if its some other number just set it to 0.4
124 
125  else
126  {
127  truthjetsize << "04";
128  }
129 
130  JetMap *truth_jets =
131  //findNode::getClass<JetMap>(topnode,"AntiKt_Truth_r04");
132  findNode::getClass<JetMap>(topnode, truthjetsize.str().c_str());
133 
134  PHG4TruthInfoContainer *truthinfo = findNode::getClass<PHG4TruthInfoContainer>(topnode, "G4TruthInfo");
135 
137 
138  if (!truth_jets)
139  {
140  cout << "no truth jets" << endl;
141  return 0;
142  }
143  if (!truthinfo)
144  {
145  cout << "no truth track info" << endl;
146  return 0;
147  }
148  JetEvalStack *_jetevalstack = new JetEvalStack(topnode, truthjetsize.str().c_str(), truthjetsize.str().c_str());
149  JetTruthEval *trutheval = _jetevalstack->get_truth_eval();
150 
151  /***********************************************
152 
153  GET ALL THE HEPMC EVENT LEVEL TRUTH PARTICLES
154 
155  ************************************************/
156  if (Verbosity() > 1)
157  cout << "GETTING HEPMC" << endl;
158 
159  PHHepMCGenEventMap *hepmceventmap = findNode::getClass<PHHepMCGenEventMap>(topnode, "PHHepMCGenEventMap");
160 
161  if (!hepmceventmap)
162  {
163  cout << "hepmc event node is missing, BAILING" << endl;
164  return 0;
165  }
166 
167  //0 corresponds to the hepmc pythia event. 1 is gold gold embedded background
168  PHHepMCGenEvent *hepmcevent = hepmceventmap->get(1);
169 
170  if (!hepmcevent)
171  {
172  cout << PHWHERE << "no hepmcevent pointer, bailing" << endl;
173  return 0;
174  }
175 
176  HepMC::GenEvent *truthevent = hepmcevent->getEvent();
177  if (!truthevent)
178  {
179  cout << PHWHERE << "no evt pointer under phhepmvgenevent found " << endl;
180  return 0;
181  }
182 
183  //get the interacting protons
184  if (truthevent->valid_beam_particles())
185  {
186  HepMC::GenParticle *part1 = truthevent->beam_particles().first;
187 
188  //beam energy
189  beam_energy = fabs(part1->momentum().pz());
190  }
191 
192  //Parton info
193  HepMC::PdfInfo *pdfinfo = truthevent->pdf_info();
194 
195  partid1 = pdfinfo->id1();
196  partid2 = pdfinfo->id2();
197  x1 = pdfinfo->x1();
198  x2 = pdfinfo->x2();
199 
200  if (Verbosity() > 1)
201  cout << "Looping over HEPMC particles" << endl;
202 
204  process_id = truthevent->signal_process_id();
205  for (HepMC::GenEvent::particle_const_iterator iter = truthevent->particles_begin(); iter != truthevent->particles_end(); ++iter)
206  {
207  truthenergy = (*iter)->momentum().e();
208  truthpid = (*iter)->pdg_id();
209  trutheta = (*iter)->momentum().pseudoRapidity();
210  truthphi = (*iter)->momentum().phi();
211  truthpx = (*iter)->momentum().px();
212  truthpy = (*iter)->momentum().py();
213  truthpz = (*iter)->momentum().pz();
214  truthpt = sqrt(truthpx * truthpx + truthpy * truthpy);
215 
216  truthtree->Fill();
218  }
219 
220  if (Verbosity() > 1)
221  cout << "LOOPING OVER G4 TRUTH PARTICLES" << endl;
222 
223  cluseventenergy = 0;
224  cluseventphi = 0;
225  cluseventpt = 0;
226  cluseventeta = 0;
227  float lastenergy = 0;
228  for (PHG4TruthInfoContainer::ConstIterator iter = range.first; iter != range.second; ++iter)
229  {
230  PHG4Particle *truth = iter->second;
231 
232  truthpx = truth->get_px();
233  truthpy = truth->get_py();
234  truthpz = truth->get_pz();
235  truthp = sqrt(truthpx * truthpx + truthpy * truthpy + truthpz * truthpz);
236  truthenergy = truth->get_e();
237 
238  TLorentzVector vec;
239  vec.SetPxPyPzE(truthpx, truthpy, truthpz, truthenergy);
240 
241  truthpt = sqrt(truthpx * truthpx + truthpy * truthpy);
242 
243  truthphi = vec.Phi();
244  trutheta = vec.Eta();
245  truthpid = truth->get_pid();
246 
247  if (truthpid == 22 && truthenergy > lastenergy && trutheta < etahigh && trutheta > etalow)
248  {
249  lastenergy = truthenergy;
254  }
255  truth_g4particles->Fill();
256  }
257 
258  //cout<<"CLUSTER Properties : " << cluseventenergy<< " " <<cluseventphi<<
259  //" " << cluseventeta<<endl;
260 
261  if (Verbosity() > 1)
262  cout << "LOOPING OVER TRUTH JETS" << endl;
263  /***************************************
264 
265  TRUTH JETS
266 
267  ***************************************/
268 
269  float hardest_jet = 0;
270  float subleading_jet = 0;
271  int numtruthjets = 0;
272 
273  hardest_jetpt = 0;
274  hardest_jeteta = 0;
275  hardest_jetphi = 0;
276  hardest_jetenergy = 0;
277  for (JetMap::Iter iter = truth_jets->begin(); iter != truth_jets->end(); ++iter)
278  {
279  Jet *jet = iter->second;
280 
281  truthjetpt = jet->get_pt();
282  if (truthjetpt < minjetpt)
283  continue;
284 
285  truthjeteta = jet->get_eta();
286 
287  //make the width extra just to be safe
288  if (truthjeteta < (etalow - 1) || truthjeteta > (etahigh + 1))
289  continue;
290 
291  truthjetpx = jet->get_px();
292  truthjetpy = jet->get_py();
293  truthjetpz = jet->get_pz();
294  truthjetphi = jet->get_phi();
295  truthjetmass = jet->get_mass();
296  truthjetp = jet->get_p();
297  truthjetenergy = jet->get_e();
298  truthjetxf = truthjetpz / beam_energy; //just the energy of one beam, so don't need 1/2
299 
300  //check that the jet isn't just a photon or something like this
301  //needs at least 2 constituents and that 90% of jet isn't from one photon
302  std::set<PHG4Particle *> truthjetcomp =
303  trutheval->all_truth_particles(jet);
304  int _ntruthconstituents = 0;
305  int photonflag = 0;
306  for (std::set<PHG4Particle *>::iterator iter2 = truthjetcomp.begin();
307  iter2 != truthjetcomp.end();
308  ++iter2)
309  {
310  PHG4Particle *truthpart = *iter2;
311  if (!truthpart)
312  {
313  cout << "no truth particles in the jet??" << endl;
314  break;
315  }
316  _ntruthconstituents++;
317 
318  TLorentzVector constvec;
319  constvec.SetPxPyPzE(truthpart->get_px(),
320  truthpart->get_py(),
321  truthpart->get_pz(),
322  truthpart->get_e());
323 
324  int constpid = truthpart->get_pid();
325 
326  // If this jet contains the truth prompt photon, skip it
327  if(fabs(cluseventphi - constvec.Phi()) < 0.02 &&
328  fabs(cluseventeta - constvec.Eta()) < 0.02 &&
329  constpid == 22)
330  {
331  photonflag = 1;
332  break;
333  }
334  }
335  ntruthconstituents_h->Fill(_ntruthconstituents);
336 
337  // If it contains the truth direct photon, skip this jet
338  if(photonflag)
339  continue;
340 
341  if (_ntruthconstituents < 3)
342  continue;
343 
344  numtruthjets++;
345 
346  // if it is photon-jet process then we want the hardest away-side jet
347  if (!_is_dijet_process)
348  {
349  if (truthjetpt > hardest_jet)
350  {
351  hardest_jet = truthjetpt;
356  ntruthconstituents = _ntruthconstituents;
357  }
358  }
359 
360  //if it is dijet process we want to overwrite
361  //the highest pt photon with the highest pt jet
362  if (_is_dijet_process)
363  {
364  if (truthjetpt > hardest_jet)
365  {
366  hardest_jet = truthjetpt;
371  }
372  }
373 
374  truthjettree->Fill();
375  }
376 
377 
378  //cout<<"Jet properties : " << hardest_jetenergy << " " << truthjetphi
379  // << " " << truthjeteta << endl;
380 
381  if (_is_dijet_process && numtruthjets > 1)
382  {
383  for (JetMap::Iter iter2 = truth_jets->begin(); iter2 != truth_jets->end();
384  ++iter2)
385  {
386  Jet *jet = iter2->second;
387  float subtruthjetpt = jet->get_pt();
388  if (subtruthjetpt < minjetpt)
389  continue;
390 
391  float subtruthjeteta = jet->get_eta();
392  //make the width extra just to be safe
393  if (subtruthjeteta < (etalow - 1) || subtruthjeteta > (etahigh + 1))
394  continue;
395 
396  float subtruthjetphi = jet->get_phi();
397  float subtruthjetenergy = jet->get_e();
398 
399  //check that the jet isn't just a photon or something like this
400  //needs at least 2 constituents and that 90% of jet isn't from one photon
401  std::set<PHG4Particle *> truthjetcomp =
402  trutheval->all_truth_particles(jet);
403  int ntruthconstituents = 0;
404 
405  for (std::set<PHG4Particle *>::iterator iter3 = truthjetcomp.begin();
406  iter3 != truthjetcomp.end();
407  ++iter3)
408  {
409  PHG4Particle *truthpart = *iter3;
410  if (!truthpart)
411  {
412  cout << "no truth particles in the jet??" << endl;
413  break;
414  }
415  ntruthconstituents++;
416  }
417 
418  if (ntruthconstituents < 2)
419  continue;
420 
421  if (subtruthjetpt > subleading_jet && subtruthjetpt < cluseventpt)
422  {
423  subleading_jet = subtruthjetpt;
424  hardest_jetpt = subtruthjetpt;
425  hardest_jetenergy = subtruthjetenergy;
426  hardest_jeteta = subtruthjeteta;
427  hardest_jetphi = subtruthjetphi;
428  }
429  }
430  }
431 
433  event_tree->Fill();
434 
435  nevents++;
436  tree->Fill();
437 
438 
439 
440  return 0;
441  }
442 
444 {
445  std::cout << " DONE PROCESSING " << endl;
446 
447  //get the integrated luminosity
448 
449  PHGenIntegral *phgen = findNode::getClass<PHGenIntegral>(topnode, "PHGenIntegral");
450  if (phgen)
451  {
452  intlumi = phgen->get_Integrated_Lumi();
457 
458  runinfo->Fill();
459  }
460 
461 
462 
463  file->Write();
464  file->Close();
465  return 0;
466 }
467 
469 {
470  runinfo = new TTree("runinfo", "a tree with pythia run info like int lumi");
471  runinfo->Branch("intlumi", &intlumi, "intlumi/F");
472  runinfo->Branch("nprocessedevents", &nprocessedevents, "nprocessedevents/F");
473  runinfo->Branch("nacceptedevents", &nacceptedevents, "nacceptedevents/F");
474  runinfo->Branch("xsecprocessedevents", &xsecprocessedevents, "xsecprocessedevents/F");
475  runinfo->Branch("xsecacceptedevents", &xsecacceptedevents, "xsecacceptedevents/F");
476 
477  truthjettree = new TTree("truthjettree", "a tree with truth jets");
478  truthjettree->Branch("truthjetpt", &truthjetpt, "truthjetpt/F");
479  truthjettree->Branch("truthjetpx", &truthjetpx, "truthjetpx/F");
480  truthjettree->Branch("truthjetpy", &truthjetpy, "truthjetpy/F");
481  truthjettree->Branch("truthjetpz", &truthjetpz, "truthjetpz/F");
482  truthjettree->Branch("truthjetphi", &truthjetphi, "truthjetphi/F");
483  truthjettree->Branch("truthjeteta", &truthjeteta, "truthjeteta/F");
484  truthjettree->Branch("truthjetmass", &truthjetmass, "truthjetmass/F");
485  truthjettree->Branch("truthjetp", &truthjetp, "truthjetp/F");
486  truthjettree->Branch("truthjetenergy", &truthjetenergy, "truthjetenergy/F");
487  truthjettree->Branch("nevents", &nevents, "nevents/I");
488  truthjettree->Branch("process_id", &process_id, "process_id/I");
489  truthjettree->Branch("x1", &x1, "x1/F");
490  truthjettree->Branch("x2", &x2, "x2/F");
491  truthjettree->Branch("partid1", &partid1, "partid1/I");
492  truthjettree->Branch("partid2", &partid2, "partid2/I");
493  truthjettree->Branch("E_4x4", &E_4x4, "E_4x4/F");
494  truthjettree->Branch("phi_4x4", &phi_4x4, "phi_4x4/F");
495  truthjettree->Branch("eta_4x4", &eta_4x4, "eta_4x4/F");
496  truthjettree->Branch("E_2x2", &E_2x2, "E_2x2/F");
497  truthjettree->Branch("phi_2x2", &phi_2x2, "phi_2x2/F");
498  truthjettree->Branch("eta_2x2", &eta_2x2, "eta_2x2/F");
499  truthjettree->Branch("truthjetxf", &truthjetxf, "truthjetxf/F");
500 
501  truth_g4particles = new TTree("truthtree_g4", "a tree with all truth g4 particles");
502  truth_g4particles->Branch("truthpx", &truthpx, "truthpx/F");
503  truth_g4particles->Branch("truthpy", &truthpy, "truthpy/F");
504  truth_g4particles->Branch("truthpz", &truthpz, "truthpz/F");
505  truth_g4particles->Branch("truthp", &truthp, "truthp/F");
506  truth_g4particles->Branch("truthenergy", &truthenergy, "truthenergy/F");
507  truth_g4particles->Branch("truthphi", &truthphi, "truthphi/F");
508  truth_g4particles->Branch("trutheta", &trutheta, "trutheta/F");
509  truth_g4particles->Branch("truthpt", &truthpt, "truthpt/F");
510  truth_g4particles->Branch("truthpid", &truthpid, "truthpid/I");
511  truth_g4particles->Branch("nevents", &nevents, "nevents/I");
512  truth_g4particles->Branch("process_id", &process_id, "process_id/I");
513  truth_g4particles->Branch("x1", &x1, "x1/F");
514  truth_g4particles->Branch("x2", &x2, "x2/F");
515  truth_g4particles->Branch("partid1", &partid1, "partid1/I");
516  truth_g4particles->Branch("partid2", &partid2, "partid2/I");
517  truth_g4particles->Branch("E_4x4", &E_4x4, "E_4x4/F");
518  truth_g4particles->Branch("phi_4x4", &phi_4x4, "phi_4x4/F");
519  truth_g4particles->Branch("eta_4x4", &eta_4x4, "eta_4x4/F");
520  truth_g4particles->Branch("E_2x2", &E_2x2, "E_2x2/F");
521  truth_g4particles->Branch("phi_2x2", &phi_2x2, "phi_2x2/F");
522  truth_g4particles->Branch("eta_2x2", &eta_2x2, "eta_2x2/F");
523 
524  truthtree = new TTree("truthtree", "a tree with all truth pythia particles");
525  truthtree->Branch("truthpx", &truthpx, "truthpx/F");
526  truthtree->Branch("truthpy", &truthpy, "truthpy/F");
527  truthtree->Branch("truthpz", &truthpz, "truthpz/F");
528  truthtree->Branch("truthp", &truthp, "truthp/F");
529  truthtree->Branch("truthenergy", &truthenergy, "truthenergy/F");
530  truthtree->Branch("truthphi", &truthphi, "truthphi/F");
531  truthtree->Branch("trutheta", &trutheta, "trutheta/F");
532  truthtree->Branch("truthpt", &truthpt, "truthpt/F");
533  truthtree->Branch("truthpid", &truthpid, "truthpid/I");
534  truthtree->Branch("nevents", &nevents, "nevents/I");
535  truthtree->Branch("numparticlesinevent", &numparticlesinevent, "numparticlesinevent/I");
536  truthtree->Branch("process_id", &process_id, "process_id/I");
537  truthtree->Branch("x1", &x1, "x1/F");
538  truthtree->Branch("x2", &x2, "x2/F");
539  truthtree->Branch("partid1", &partid1, "partid1/I");
540  truthtree->Branch("partid2", &partid2, "partid2/I");
541 
542  event_tree = new TTree("eventtree", "A tree with 2 to 2 event info");
543  event_tree->Branch("x1", &x1, "x1/F");
544  event_tree->Branch("x2", &x2, "x2/F");
545  event_tree->Branch("partid1", &partid1, "partid1/I");
546  event_tree->Branch("partid2", &partid2, "partid2/I");
547  event_tree->Branch("process_id", &process_id, "process_id/I");
548  event_tree->Branch("nevents", &nevents, "nevents/I");
549  event_tree->Branch("cluseventenergy", &cluseventenergy, "cluseventenergy/F");
550  event_tree->Branch("cluseventeta", &cluseventeta, "cluseventeta/F");
551  event_tree->Branch("cluseventpt", &cluseventpt, "cluseventpt/F");
552  event_tree->Branch("cluseventphi", &cluseventphi, "cluseventphi/F");
553  event_tree->Branch("hardest_jetpt", &hardest_jetpt, "hardest_jetpt/F");
554  event_tree->Branch("hardest_jetphi", &hardest_jetphi, "hardest_jetphi/F");
555  event_tree->Branch("hardest_jeteta", &hardest_jeteta, "hardest_jeteta/F");
556  event_tree->Branch("hardest_jetenergy", &hardest_jetenergy, "hardest_jetenergy/F");
557  event_tree->Branch("ntruthconstituents", &ntruthconstituents, "ntruthconstituents/I");
558  event_tree->Branch("eventdphi", &eventdphi, "eventdphi/F");
559  event_tree->Branch("E_4x4", &E_4x4, "E_4x4/F");
560  event_tree->Branch("phi_4x4", &phi_4x4, "phi_4x4/F");
561  event_tree->Branch("eta_4x4", &eta_4x4, "eta_4x4/F");
562  event_tree->Branch("E_2x2", &E_2x2, "E_2x2/F");
563  event_tree->Branch("phi_2x2", &phi_2x2, "phi_2x2/F");
564  event_tree->Branch("eta_2x2", &eta_2x2, "eta_2x2/F");
565 }
566 
568 {
569  event_tree = 0;
570  tree = 0;
571 
572  truth_g4particles = 0;
573  truthtree = 0;
574 
575  truthjettree = 0;
576 
577  histo = 0;
578 
579  _truthjetmass = -999;
580  clus_energy = -999;
581  clus_eta = -999;
582  clus_phi = -999;
583  clus_pt = -999;
584  clus_px = -999;
585  clus_py = -999;
586  clus_pz = -999;
587  clus_theta = -999;
588  clus_x = -999;
589  clus_y = -999;
590  clus_z = -999;
591  clus_t = -999;
592 
593  tr_px = -999;
594  tr_py = -999;
595  tr_pz = -999;
596  tr_p = -999;
597  tr_pt = -999;
598  tr_phi = -999;
599  tr_eta = -999;
600  charge = -999;
601  chisq = -999;
602  ndf = -999;
603  dca = -999;
604  tr_x = -999;
605  tr_y = -999;
606  tr_z = -999;
607  truthtrackpx = -999;
608  truthtrackpy = -999;
609  truthtrackpz = -999;
610  truthtrackp = -999;
611  truthtracke = -999;
612  truthtrackpt = -999;
613  truthtrackphi = -999;
614  truthtracketa = -999;
615  truthtrackpid = -999;
616  truth_is_primary = false;
617 
618  truthjetpt = -999;
619  truthjetpx = -999;
620  truthjetpy = -999;
621  truthjetpz = -999;
622  truthjetphi = -999;
623  truthjeteta = -999;
624  truthjetmass = -999;
625  truthjetp = -999;
626  truthjetenergy = -999;
627  recojetpt = -999;
628  recojetpx = -999;
629  recojetpy = -999;
630  recojetpz = -999;
631  recojetphi = -999;
632  recojeteta = -999;
633  recojetmass = -999;
634  recojetp = -999;
635  recojetenergy = -999;
636  recojetid = -999;
637  truthjetid = -999;
638 
639  _recojetid = -999;
640  _recojetpt = -999;
641  _recojetpx = -999;
642  _recojetpy = -999;
643  _recojetpz = -999;
644  _recojetphi = -999;
645  _recojeteta = -999;
646  _recojetmass = -999;
647  _recojetp = -999;
648  _recojetenergy = -999;
649  jetdphi = -999;
650  jetpout = -999;
651  jetdeta = -999;
652  _truthjetid = -999;
653  _truthjetpt = -999;
654  _truthjetpx = -999;
655  _truthjetpy = -999;
656  _truthjetpz = -999;
657  _truthjetphi = -999;
658  _truthjeteta = -999;
659  _truthjetmass = -999;
660  _truthjetp = -999;
661  _truthjetenergy = -999;
662 
663  _trecojetid = -999;
664  _trecojetpt = -999;
665  _trecojetpx = -999;
666  _trecojetpy = -999;
667  _trecojetpz = -999;
668  _trecojetphi = -999;
669  _trecojeteta = -999;
670  _trecojetmass = -999;
671  _trecojetp = -999;
672  _trecojetenergy = -999;
673  tjetdphi = -999;
674  tjetpout = -999;
675  tjetdeta = -999;
676  _ttruthjetid = -999;
677  _ttruthjetpt = -999;
678  _ttruthjetpx = -999;
679  _ttruthjetpy = -999;
680  _ttruthjetpz = -999;
681  _ttruthjetphi = -999;
682  _ttruthjeteta = -999;
683  _ttruthjetmass = -999;
684  _ttruthjetp = -999;
685  _ttruthjetenergy = -999;
686 
687  intlumi = -999;
688  nprocessedevents = -999;
689  nacceptedevents = -999;
690  xsecprocessedevents = -999;
691  xsecacceptedevents = -999;
692 
693  _tr_px = -999;
694  _tr_py = -999;
695  _tr_pz = -999;
696  _tr_p = -999;
697  _tr_pt = -999;
698  _tr_phi = -999;
699  _tr_eta = -999;
700  _charge = -999;
701  _chisq = -999;
702  _ndf = -999;
703  _dca = -999;
704  _tr_x = -999;
705  _tr_y = -999;
706  _tr_z = -999;
707  haddphi = -999;
708  hadpout = -999;
709  haddeta = -999;
710  _truth_is_primary = false;
711  _truthtrackpx = -999;
712  _truthtrackpy = -999;
713  _truthtrackpz = -999;
714  _truthtrackp = -999;
715  _truthtracke = -999;
716  _truthtrackpt = -999;
717  _truthtrackphi = -999;
718  _truthtracketa = -999;
719  _truthtrackpid = -999;
720 
721  eventdphi = -999;
722  truthpx = -999;
723  truthpy = -999;
724  truthpz = -999;
725  truthp = -999;
726  truthphi = -999;
727  trutheta = -999;
728  truthpt = -999;
729  truthenergy = -999;
730  truthpid = -999;
731  numparticlesinevent = -999;
732  process_id = -999;
733 
734  clustruthpx = -999;
735  clustruthpy = -999;
736  clustruthpz = -999;
737  clustruthenergy = -999;
738  clustruthpt = -999;
739  clustruthphi = -999;
740  clustrutheta = -999;
741  clustruthpid = -999;
742 
743  beam_energy = 0;
744  x1 = 0;
745  x2 = 0;
746  partid1 = 0;
747  partid2 = 0;
748 
749  hardest_jetpt = 0;
750  hardest_jetphi = 0;
751  hardest_jeteta = 0;
752  hardest_jetenergy = 0;
753 }