eventAnalysis  7.0-49-g0ac7482
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
TP0DECALReconModule.cxx
Go to the documentation of this file.
1 #include "TDatum.hxx"
2 #include "TGeomInfo.hxx"
3 #include "TPrincipal.h"
4 #include "TRealDatum.hxx"
5 #include "TReconHit.hxx"
6 #include "TShowerTruthInfo.hxx"
7 #include "TrackTruthInfo.hxx"
8 
10 
13 
14 #include "../cvstags/TP0DECALReconModule.cxx"
15 
16 int GetStackNo(TString Name) {
17  if (Name.Contains("LS")) {
18  return 1;
19  } else if (Name.Contains("LT")) {
20  return 2;
21  } else if (Name.Contains("LB")) {
22  return 3;
23  } else if (Name.Contains("RS")) {
24  return 4;
25  } else if (Name.Contains("RT")) {
26  return 5;
27  } else if (Name.Contains("RB")) {
28  return 6;
29  } else {
30  return -1;
31  }
32 }
33 
35  const char *title) {
36  SetNameTitle(name, title);
37  // Enable this module by default:
38  fIsEnabled = kTRUE;
39  fDescription = "P0D ECAL recon output";
41  fCVSID = CVSID;
42 
43  this->SetSplitLevel(1); // set splitlevel of trees
44 
45  // Tree variables
46  fReconTracks =
47  new TClonesArray("ND::TP0DECALReconModule::TP0DECALReconTrack", 200);
49  new TClonesArray("ND::TP0DECALReconModule::TP0DECALReconShower", 200);
50  fLayerCharge =
51  new TClonesArray("ND::TP0DECALReconModule::TP0DECALLayerCharge", 200);
52 }
53 
55 
56 Bool_t ND::TP0DECALReconModule::ProcessFirstEvent(ND::TND280Event &event) {
57  return true;
58 }
59 
61 
63  // Event Level Recon Info
64  fOutputTree->Branch("NReconTracks", &fNReconTracks, "NReconTracks/I",fBufferSize)
65  ->SetTitle("Number TP0DECALReconTrack Objects ");
66  fOutputTree->Branch("NReconShowers", &fNReconShowers, "NReconShowers/I",fBufferSize)
67  ->SetTitle("Number of TP0DECALReconShower Objects ");
68  fOutputTree->Branch("NLayerCharge", &fNLayerCharge, "NLayerCharge/I",fBufferSize)
69  ->SetTitle(" Number of TP0DECALLayerCharge objects");
70 
71  // A TClonesArray of TP0DECALReconTrack objects
72  fOutputTree->Branch("ReconTracks", &fReconTracks, fBufferSize, fSplitLevel)
73  ->SetTitle(" TP0DECALReconTrack Objects");
74  // A TClonesArray of TP0DECALReconShower objects
75  fOutputTree->Branch("ReconShowers", &fReconShowers, fBufferSize, fSplitLevel)
76  ->SetTitle("TP0DECALReconShower Objects ");
77  fOutputTree->Branch("LayerCharge", &fLayerCharge, fBufferSize, fSplitLevel)
78  ->SetTitle("TP0DECALLayerCharge Objects ");
79 }
80 
81 bool ND::TP0DECALReconModule::FillTree(ND::TND280Event &event) {
82  bool isMC = event.GetContext().IsMC();
83 
84  ///////////////// Add Recon Data ///////////////////////////////////////
85  // reset the variables
86  fNReconTracks = 0;
87  fReconTracks->Clear();
88  fNReconShowers = 0;
89  fReconShowers->Clear();
90  fNLayerCharge = 0;
91  fLayerCharge->Clear();
92 
93  if (!event.GetFit("P0DECALPid")) {
94  // No P0DECal Info - return blank info
95  return true;
96  }
97 
98  ND::THandle<ND::TAlgorithmResult> ecalFinalResult =
99  event.GetFit("P0DECALPid");
100 
101  for (ND::TDataVector::iterator dataIter = ecalFinalResult->begin();
102  dataIter != ecalFinalResult->end(); ++dataIter) {
103  std::string class_name = (*dataIter)->ClassName();
104  if (class_name.find("ND::TReconObjectContainer") != std::string::npos) {
105  ND::TReconObjectContainer *reconContainer =
106  dynamic_cast<ND::TReconObjectContainer *>(*dataIter);
107 
108  if (!reconContainer) {
109  // No P0DECal Info - return blank info
110  return true;
111  }
112 
113  // Should be called final
114  TString reconContainerName = reconContainer->GetFullName();
115 
116  if (reconContainerName.Contains("final")) {
117  // Loop over the top level Recon Container - ReconPid's
118  for (ND::TReconObjectContainer::iterator reconIter =
119  reconContainer->begin();
120  reconIter != reconContainer->end(); ++reconIter) {
121  std::string reco_class_name = (*reconIter)->ClassName();
122 
123  // Get the TReconPid from the container
124  if (reco_class_name.find("ND::TReconPID") != std::string::npos) {
125  ND::THandle<ND::TReconPID> pid = (*reconIter);
126  ND::THandle<ND::TReconObjectContainer> conContainer =
127  pid->GetConstituents();
128 
129  for (ND::TReconObjectContainer::iterator conIter =
130  conContainer->begin();
131  conIter != conContainer->end(); ++conIter) {
132  std::string constituent_class_name = (*conIter)->ClassName();
133 
134  if (constituent_class_name.find("ND::TReconTrack") !=
135  std::string::npos) {
136  ND::THandle<ND::TReconTrack> track = (*conIter);
137  TP0DECALReconTrack *ecalReconTrack = 0;
138 
139  if (track->GetEDeposit()) {
140  ecalReconTrack =
141  new ((*fReconTracks)[fNReconTracks]) TP0DECALReconTrack;
142 
143  // Fill UniqueID
144  ecalReconTrack->UniqueID = track->GetUniqueID();
145  ecalReconTrack->Direction = track->GetDirection();
146  ecalReconTrack->Position = track->GetPosition();
147 
148  // Module Tagging - TRACKS
149  //-------------------------------------------------------
150  ND::THandle<ND::THitSelection> track_hitsel =
151  track->GetHits();
152  std::string module("unknown");
153  if(track_hitsel){
154  ND::THandle<ND::TReconHit> track_reconhit =
155  *(track_hitsel->begin());
156  module = ND::TGeomInfo::Get()
157  .ECAL()
158  .GetModule(track_reconhit->GetGeomId())
159  .GetName();
160  }
161  ecalReconTrack->Module = module;
162  //-------------------------------------------------------
163 
164  ecalReconTrack->StackNo = (int)track->GetDetectors();
165 
166  // TReconTrack standard Get member functions
167  ecalReconTrack->Curvature = track->GetCurvature();
168  ecalReconTrack->EDeposit = track->GetEDeposit();
169  ecalReconTrack->NDOF = track->GetNDOF();
170  ecalReconTrack->Quality = track->GetQuality();
171  ecalReconTrack->Width = track->GetWidth();
172 
173  // Truth matching info - TRACKS
174  //-----------------------------------------------------
175  int trueID = -999;
176  TLorentzVector trueInitPos(-9999, -9999, -9999, -9999);
177  TLorentzVector trueFinalPos(-9999, -9999, -9999, -9999);
178  TLorentzVector trueInitMom(-9999, -9999, -9999, -9999);
179  int truePDG = 0;
180  int trueParentID = -999;
181  double truePur = -9999.0;
182  double trueEff = -9999.0;
183 
184  ND::THandle<ND::THitSelection> track_hits = track->GetHits();
185 
186  if (isMC) {
187  trueID = TrackTruthInfo::GetG4TrajIDHits(*track_hits,
188  trueEff, truePur);
189  ND::THandle<ND::TG4TrajectoryContainer>
190  trajectoryContainer =
191  event.Get<ND::TG4TrajectoryContainer>(
192  "truth/G4Trajectories");
193  ND::THandle<ND::TG4Trajectory> g4traj(0);
194  if (trajectoryContainer) {
195  g4traj = trajectoryContainer->GetTrajectory(trueID);
196  }
197  if (g4traj) {
198  trueInitPos = g4traj->GetInitialPosition();
199  trueFinalPos = g4traj->GetFinalPosition();
200  trueInitMom = g4traj->GetInitialMomentum();
201  truePDG = g4traj->GetPDGEncoding();
202  trueParentID = g4traj->GetParentId();
203  }
204  }
205 
206  ecalReconTrack->TrueID = trueID;
207  ecalReconTrack->TruePDG = truePDG;
208  ecalReconTrack->TrueParentID = trueParentID;
209  ecalReconTrack->TrueHitPurity = truePur;
210  ecalReconTrack->TrueHitEfficiency = trueEff;
211 
212  ecalReconTrack->TrueInitPos = trueInitPos;
213  ecalReconTrack->TrueFinalPos = trueFinalPos;
214  ecalReconTrack->TrueInitMom = trueInitMom;
215  //--------------------------------------------------
216 
217  fNReconTracks++;
218  // Pid Vars
219  if (track->Get<ND::TRealDatum>("AMR")) {
220  ecalReconTrack->AMR =
221  track->Get<ND::TRealDatum>("AMR")->GetValue();
222  } else {
223  ecalReconTrack->AMR = -1;
224  }
225 
226  if (track->Get<ND::TRealDatum>("CWTrackWidth")) {
227  ecalReconTrack->CWTrackWidth =
228  track->Get<ND::TRealDatum>("CWTrackWidth")->GetValue();
229  } else {
230  ecalReconTrack->CWTrackWidth = -1;
231  }
232 
233  if (track->Get<ND::TRealDatum>("Max_Ratio")) {
234  ecalReconTrack->Max_Ratio =
235  track->Get<ND::TRealDatum>("Max_Ratio")->GetValue();
236  } else {
237  ecalReconTrack->Max_Ratio = -1;
238  }
239 
240  if (track->Get<ND::TRealDatum>("NormChargeSD")) {
241  ecalReconTrack->NormChargeSD =
242  track->Get<ND::TRealDatum>("NormChargeSD")->GetValue();
243  } else {
244  ecalReconTrack->NormChargeSD = -1;
245  }
246 
247  if (track->Get<ND::TRealDatum>("PathChargeRatio")) {
248  ecalReconTrack->PathChargeRatio =
249  track->Get<ND::TRealDatum>("PathChargeRatio")
250  ->GetValue();
251  } else {
252  ecalReconTrack->PathChargeRatio = -1;
253  }
254 
255  if (track->Get<ND::TRealDatum>("TrShval")) {
256  ecalReconTrack->TrShval =
257  track->Get<ND::TRealDatum>("TrShval")->GetValue();
258  } else {
259  ecalReconTrack->TrShval = -1;
260  }
261 
262  /// If you need any info from the contributing clusters
263  ND::THandle<ND::TReconObjectContainer> clusterContainer =
264  track->GetConstituents();
265  for (ND::TReconObjectContainer::iterator clusterIter =
266  clusterContainer->begin();
267  clusterIter != clusterContainer->end(); ++clusterIter) {
268  std::string track_constituent_class_name =
269  (*clusterIter)->ClassName();
270  if (track_constituent_class_name.find(
271  "ND::TReconCluster") != std::string::npos) {
272  ND::THandle<ND::TReconCluster> cluster = (*clusterIter);
273 
274  if (cluster->Get<ND::TRealDatum>("BenCWPos")) {
275 
276  ecalReconTrack->BenCWPosition = TVector3(
277  cluster->Get<ND::TRealDatum>("BenCWPos")->at(0),
278  cluster->Get<ND::TRealDatum>("BenCWPos")->at(1),
279  cluster->Get<ND::TRealDatum>("BenCWPos")->at(2)
280  );
281  }
282 
283  // Pid Vars
284  if (cluster->Get<ND::TRealDatum>("AMR")) {
285  ecalReconTrack->AMR =
286  cluster->Get<ND::TRealDatum>("AMR")->GetValue();
287  } else {
288  ecalReconTrack->AMR = -1;
289  }
290 
291  if (cluster->Get<ND::TRealDatum>("CWTrackWidth")) {
292  ecalReconTrack->CWTrackWidth =
293  cluster->Get<ND::TRealDatum>("CWTrackWidth")
294  ->GetValue();
295  } else {
296  ecalReconTrack->CWTrackWidth = -1;
297  }
298 
299  if (cluster->Get<ND::TRealDatum>("Max_Ratio")) {
300  ecalReconTrack->Max_Ratio =
301  cluster->Get<ND::TRealDatum>("Max_Ratio")
302  ->GetValue();
303  } else {
304  ecalReconTrack->Max_Ratio = -1;
305  }
306 
307  if (cluster->Get<ND::TRealDatum>("NormChargeSD")) {
308  ecalReconTrack->NormChargeSD =
309  cluster->Get<ND::TRealDatum>("NormChargeSD")
310  ->GetValue();
311  } else {
312  ecalReconTrack->NormChargeSD = -1;
313  }
314 
315  if (cluster->Get<ND::TRealDatum>("PathChargeRatio")) {
316  ecalReconTrack->PathChargeRatio =
317  cluster->Get<ND::TRealDatum>("PathChargeRatio")
318  ->GetValue();
319  } else {
320  ecalReconTrack->PathChargeRatio = -1;
321  }
322 
323  ecalReconTrack->NHits = (int)cluster->GetHits()->size();
324  }
325  }
326  }
327  } else if (constituent_class_name.find("ND::TReconShower") !=
328  std::string::npos) {
329  ND::THandle<ND::TReconShower> shower = (*conIter);
330  TP0DECALReconShower *ecalReconShower = 0;
331 
332  if (shower->GetEDeposit()) {
333  ecalReconShower = new ((*fReconShowers)[fNReconShowers])
335 
336  ecalReconShower->UniqueID = shower->GetUniqueID();
337  ecalReconShower->StackNo = (int)shower->GetDetectors();
338 
339  // TReconShower standard Get member functions
340  ecalReconShower->ConeAngle = shower->GetConeAngle();
341  ecalReconShower->Direction = shower->GetDirection();
342  ecalReconShower->EDeposit = shower->GetEDeposit();
343  ecalReconShower->NDOF = shower->GetNDOF();
344  ecalReconShower->Position = shower->GetPosition();
345  ecalReconShower->Quality = shower->GetQuality();
346 
347  // Module tagging - SHOWERS
348  //-----------------------------
349  ND::THandle<ND::THitSelection> shower_hitsel =
350  shower->GetHits();
351  std::string module;
352  ND::THandle<ND::TReconHit> shower_reconhit =
353  *(shower_hitsel->begin());
354  module = ND::TGeomInfo::Get()
355  .ECAL()
356  .GetModule(shower_reconhit->GetGeomId())
357  .GetName();
358  ecalReconShower->Module = module;
359  //-----------------------------
360  // Truth matching info - SHOWERS
361  //-----------------------------
362  int trueID = -999;
363 
364  if (isMC) {
365  ND::TShowerTruthInfo showerTruth(pid);
366  std::vector<ND::TShowerTruthInfo::TruthInfo> results =
367  showerTruth.GetPrimaryTrajectories();
368  if (results.size() > 0) {
369  trueID = results[0].ParticleID;
370  }
371  }
372  ecalReconShower->TrueID = trueID;
373  //-----------------------------
374 
375  fNReconShowers++;
376 
377  // Pid Vars - Get these from the consituents of which there
378  // should be just one for p0decal objects
379  if (shower->Get<ND::TRealDatum>("AMR")) {
380  ecalReconShower->AMR =
381  shower->Get<ND::TRealDatum>("AMR")->GetValue();
382  } else {
383  ecalReconShower->AMR = -1;
384  }
385 
386  if (shower->Get<ND::TRealDatum>("CWTrackWidth")) {
387  ecalReconShower->CWTrackWidth =
388  shower->Get<ND::TRealDatum>("CWTrackWidth")->GetValue();
389  } else {
390  ecalReconShower->CWTrackWidth = -1;
391  }
392 
393  if (shower->Get<ND::TRealDatum>("Max_Ratio")) {
394  ecalReconShower->Max_Ratio =
395  shower->Get<ND::TRealDatum>("Max_Ratio")->GetValue();
396  } else {
397  ecalReconShower->Max_Ratio = -1;
398  }
399 
400  if (shower->Get<ND::TRealDatum>("NormChargeSD")) {
401  ecalReconShower->NormChargeSD =
402  shower->Get<ND::TRealDatum>("NormChargeSD")->GetValue();
403  } else {
404  ecalReconShower->NormChargeSD = -1;
405  }
406 
407  if (shower->Get<ND::TRealDatum>("PathChargeRatio")) {
408  ecalReconShower->PathChargeRatio =
409  shower->Get<ND::TRealDatum>("PathChargeRatio")
410  ->GetValue();
411  } else {
412  ecalReconShower->PathChargeRatio = -1;
413  }
414 
415  if (shower->Get<ND::TRealDatum>("TrShval")) {
416  ecalReconShower->TrShval =
417  shower->Get<ND::TRealDatum>("TrShval")->GetValue();
418  } else {
419  ecalReconShower->TrShval = -1;
420  }
421 
422  /// If you need any info from the contributing clusters
423  ND::THandle<ND::TReconObjectContainer> clusterContainer =
424  shower->GetConstituents();
425  for (ND::TReconObjectContainer::iterator clusterIter =
426  clusterContainer->begin();
427  clusterIter != clusterContainer->end(); ++clusterIter) {
428  std::string shower_constituent_class_name =
429  (*clusterIter)->ClassName();
430  if (shower_constituent_class_name.find(
431  "ND::TReconCluster") != std::string::npos) {
432  ND::THandle<ND::TReconCluster> cluster = (*clusterIter);
433 
434 
435  if (cluster->Get<ND::TRealDatum>("BenCWPos")) {
436  ecalReconShower->BenCWPosition = TVector3(
437  cluster->Get<ND::TRealDatum>("BenCWPos")->at(0),
438  cluster->Get<ND::TRealDatum>("BenCWPos")->at(1),
439  cluster->Get<ND::TRealDatum>("BenCWPos")->at(2)
440  );
441  }
442 
443  // Pid Vars -Get these from the consituents of which there
444  // should be just one for p0decal objects
445  if (cluster->Get<ND::TRealDatum>("AMR")) {
446  ecalReconShower->AMR =
447  cluster->Get<ND::TRealDatum>("AMR")->GetValue();
448  } else {
449  ecalReconShower->AMR = -1;
450  }
451 
452  if (cluster->Get<ND::TRealDatum>("CWTrackWidth")) {
453  ecalReconShower->CWTrackWidth =
454  cluster->Get<ND::TRealDatum>("CWTrackWidth")
455  ->GetValue();
456  } else {
457  ecalReconShower->CWTrackWidth = -1;
458  }
459 
460  if (cluster->Get<ND::TRealDatum>("Max_Ratio")) {
461  ecalReconShower->Max_Ratio =
462  cluster->Get<ND::TRealDatum>("Max_Ratio")
463  ->GetValue();
464  } else {
465  ecalReconShower->Max_Ratio = -1;
466  }
467 
468  if (cluster->Get<ND::TRealDatum>("NormChargeSD")) {
469  ecalReconShower->NormChargeSD =
470  cluster->Get<ND::TRealDatum>("NormChargeSD")
471  ->GetValue();
472  } else {
473  ecalReconShower->NormChargeSD = -1;
474  }
475 
476  if (cluster->Get<ND::TRealDatum>("PathChargeRatio")) {
477  ecalReconShower->PathChargeRatio =
478  cluster->Get<ND::TRealDatum>("PathChargeRatio")
479  ->GetValue();
480  } else {
481  ecalReconShower->PathChargeRatio = -1;
482  }
483 
484  ecalReconShower->NHits = (int)cluster->GetHits()->size();
485  }
486  }
487  }
488  }
489  }
490  }
491  }
492  } else if (reconContainerName.Contains("charge_by_layer")) {
493  for (ND::TReconObjectContainer::iterator reconIter =
494  reconContainer->begin();
495  reconIter != reconContainer->end(); ++reconIter) {
496  ND::THandle<ND::TReconCluster> cluster = (*reconIter);
497  TP0DECALLayerCharge *LayerCharge = 0;
498 
499  LayerCharge =
500  new ((*fLayerCharge)[fNLayerCharge]) TP0DECALLayerCharge;
501  fNLayerCharge++;
502 
503  LayerCharge->module_name = "";
504  TString algoname = cluster->GetAlgorithmName();
505  if (algoname.Contains("Left")) {
506  LayerCharge->module_name += "Left";
507  }
508  if (algoname.Contains("Right")) {
509  LayerCharge->module_name += "Right";
510  }
511  LayerCharge->module_name += " ";
512 
513  if (algoname.Contains("Top")) {
514  LayerCharge->module_name += "Top";
515  }
516  if (algoname.Contains("Bottom")) {
517  LayerCharge->module_name += "Bottom";
518  }
519  if (algoname.Contains("Side")) {
520  LayerCharge->module_name += "Side";
521  }
522 
523  if (cluster->Get<ND::TRealDatum>("first_time")) {
524  LayerCharge->FirstTime =
525  cluster->Get<ND::TRealDatum>("first_time")->GetValue();
526  } else {
527  LayerCharge->FirstTime = -1;
528  }
529 
530  if (cluster->Get<ND::TRealDatum>("last_time")) {
531  LayerCharge->LastTime =
532  cluster->Get<ND::TRealDatum>("last_time")->GetValue();
533  } else {
534  LayerCharge->LastTime = -1;
535  }
536 
537  if (cluster->Get<ND::TRealDatum>("layer_charge")) {
538  for (int nlay = 0; nlay < 6; nlay++) {
539  LayerCharge->Charge[nlay] =
540  cluster->Get<ND::TRealDatum>("layer_charge")->at(nlay);
541  }
542  }
543  }
544  }
545  }
546  }
547  return true;
548 }
549 
double AMR
PID Variable: Axis Max Ratio - the ratio of primary and secondary components of a 2D PCA...
int NHits
The number of THits which contributed to this reconstruction cluster.
#define CVSID
double AMR
PID Variable: Axis Max Ratio - the ratio of primary and secondary components of a 2D PCA...
TVector3 BenCWPosition
Ben Smith&#39;s charge weighted reconstruction position.
UInt_t UniqueID
The object UniqueID which can be used to match this object to the Global Recon object.
double Quality
The &#39;quality&#39; of the reconstruction according to the relevant TReconTrack, from ND::TReconBase::GetQu...
virtual bool FillTree(ND::TND280Event &)
Fill all the stuff that goes in the output tree.
ClassImp(ND::TBeamSummaryDataModule::TBeamSummaryData)
double LastTime
The latest hit time of the relevant cluster.
std::string fDescription
A longish descrition of the analysis.
UInt_t UniqueID
The object UniqueID which can be used to match this object to the Global Recon object.
Summary of reconstruction information held within a TReconShower.
double EDeposit
The reconstructed energy deposited by the corresponding TReconTrack.
TClonesArray * fLayerCharge
TClonesArray of TP0DECALLayerCharge Objects.
virtual void InitializeModule()
Initialize Module, override if necessary.
double PathChargeRatio
The ratio of total hit charges between the front half and back half of the TReconTrack.
double NormChargeSD
PID Variable: Normalised standard deviation of the contributing reconstructed hit charges...
TVector3 Direction
The Direction of the corresponding TReconTrack.
double TrueHitEfficiency
For MC events: The &#39;completeness&#39; of the ND::THits which make up the corresponding ND::TReconTrack...
double TrShval
PID Variable: The output of the ANN using the other PID Variables as input. Shower-like events have a...
int TrueID
For MC events: The Id of the corresponding ND::TG4Trajectory.
int TrueParentID
For MC events: The Id of the true trajectory&#39;s parent ND::TG4Trajectory.
double NormChargeSD
PID Variable: Normalised standard deviation of the contributing reconstructed hit charges...
double Max_Ratio
PID Variable: The ratio between highest and lowest hit charges in the reconstruction cluster...
int TruePDG
For MC events: The PDG code of the true particle.
int StackNo
The stack in which the TReconTrack resides.
TVector3 Direction
The Direction of the corresponding TReconShower.
int NHits
The number of THits which contributed to this reconstruction cluster.
virtual Bool_t ProcessFirstEvent(ND::TND280Event &event)
Is called after the first event is loaded in.
TLorentzVector TrueFinalPos
For MC events: The true final position of the corresponding ND::TG4Trajectory.
TLorentzVector Position
The reconstructed starting 4-position of the TReconTrack.
TLorentzVector Position
The reconstructed starting 4-position of the TReconTrack.
double FirstTime
The earliest hit time of the relevant cluster.
double TrueHitPurity
For MC events: The &#39;cleanliness&#39; of the ND::THits which make up the corresponding ND::TReconTrack...
int GetStackNo(TString Name)
TLorentzVector TrueInitPos
For MC events: The true initial position of the corresponding ND::TG4Trajectory.
std::string fCVSID
Defined if an official tagged version.
double Max_Ratio
PID Variable: The ratio between highest and lowest hit charges in the reconstruction cluster...
std::string Module
The name of the module in which the TReconTrack resides.
void SetNameTitle(char const *name, char const *title)
TClonesArray * fReconShowers
TClonesArray of TP0DECALReconShower Objects.
int StackNo
The stack in which the TReconTrack resides.
virtual void InitializeBranches()
Initialize Branches. Don&#39;t do anything else in this function.
TClonesArray * fReconTracks
TClonesArray of TP0DECALReconTrack Objects.
int NDOF
The Number of Degrees of Freedom in the reconstruction of the.
TLorentzVector TrueInitMom
For MC events: The true initial momentum of the corresponding ND::TG4Trajectory.
TVector3 ConeAngle
The opening angle of the corresponding TReconShower.
double Charge[6]
The total charge deposited in each of 6layers. Index 0 corresponds the innermost layer.
TVector3 Width
The &#39;width&#39; of the corresponding TReconTrack.
TP0DECALReconModule(const char *name="P0DECal", const char *title="P0D ECal Recon Module")
double TrShval
PID Variable: The output of the ANN using the other PID Variables as input. Track-like events have a ...
std::string Module
The name of the module in which the TReconTrack resides.
int NDOF
The Number of Degrees of Freedom in the reconstruction of the.
double EDeposit
The reconstructed energy deposited by the corresponding TReconTrack.
std::string fCVSTagName
Defined if an official tagged version.
#define CVSTAG
TVector3 BenCWPosition
Ben&#39;s charge weighted reconstruction position.
double PathChargeRatio
The ratio of total hit charges between the front half and back half of the TReconShower.
Summary of reconstruction information held within a TReconTrack.
void SetSplitLevel(Int_t splitlevel)
ROOT output parameters, usually no need to touch.
double CWTrackWidth
PID Variable: Width of the track in bars, weighted by the charge in each bar.
double Curvature
The curvature around the x axis of the corresponding TReconTrack.
double CWTrackWidth
PID Variable: Width of the track in bars, weighted by the charge in each bar.
int TrueID
For MC events: The Id of the primary corresponding ND::TG4Trajectory.
double Quality
The &#39;quality&#39; of the reconstruction according to the relevant.

Package Summary
Package Name: eventAnalysis
Package Version: 7.0-49-g0ac7482
Package Manager:

Generated on Mon Mar 25 2024 14:43:59 for eventAnalysis by doxygen 1.8.5