HighLAND
DataClasses.hxx
1 #ifndef DataClasses_hxx
2 #define DataClasses_hxx
3 
4 #include "BaseDataClasses.hxx"
5 #include "Versioning.hxx"
6 #include "ParticleId.hxx"
7 
8 const UInt_t NMAXTIMENODES=10;
9 
10 /// Representation of detector time info
12 public :
13 
14  AnaTimeNode();
15  virtual ~AnaTimeNode(){}
16 
17  /// Clone this object.
18  virtual AnaTimeNode* Clone() {
19  return new AnaTimeNode(*this);
20  }
21 
22 protected:
23 
24  /// Copy constructor is protected, as Clone() should be used to copy this object.
25  AnaTimeNode(const AnaTimeNode& anaTime);
26 
27 public:
28 
29  /// Detector associated to this times
30  /// The systems are numbered as:
31  /// 1: TPC1
32  /// 2: TPC2
33  /// 3: TPC3
34  /// 4: FGD1
35  /// 5: FGD2
36  /// 6: P0D
37  /// 7: DSECal
38  /// 8: Any SMRD module
39  /// 9: Any TECal or PECal module
40  Int_t Detector;
41 
42  /// Start time
43  Float_t TimeStart;
44 
45  /// End time
46  Float_t TimeEnd;
47 };
48 
49 /// Representation of a true Monte Carlo vertex.
51 public :
52 
53  AnaTrueVertex();
54  virtual ~AnaTrueVertex(){}
55 
56  /// Clone this object.
57  virtual AnaTrueVertex* Clone() {
58  return new AnaTrueVertex(*this);
59  }
60 
61  /// Dump the object to screen.
62  void Print() const;
63 
64 protected:
65 
66  /// Copy constructor is protected, as Clone() should be used to copy this object.
67  AnaTrueVertex(const AnaTrueVertex& vertex);
68 
69 public:
70 
71  /// Entry in the RooTrackerVtx tree (not set directly)
72  Int_t RooVtxEntry;
73 
74  /// The index of the associated RooTrackerVtx vertex from its position in the TClonesArray
75  Int_t RooVtxIndex;
76 
77  /// The NEUT reaction code. Genie files have their code translated to the
78  /// Neut equivalent.
79  Int_t ReacCode;
80 
81  /// The true (unit) direction of the incoming neutrino.
82  Float_t NuDir[3];
83 
84  /// The PDG code of the target nucleus.
85  Int_t TargetPDG;
86 
87  /// Neutrino parent PDG code
88  Int_t NuParentPDG;
89 
90  /// Decay point of the neutrino parent.
91  Float_t NuParentDecPoint[4];
92 
93  /// Accumulated cut level for all selections and cut branches. Tell us if a true vertex has been selected or not
94  std::vector< std::vector<Int_t> > AccumLevel; //!
95 
96  /// The Q2 of the true interaction
97  Float_t Q2;
98 
99  /// The PDG code of the primary outgoing electron/muon.
100  Int_t LeptonPDG;
101 
102  /// The momentum of the primary outgoing electron/muon.
103  Float_t LeptonMom;
104 
105  /// The direction of the primary outgoing electron/muon.
106  Float_t LeptonDir[3];
107 
108  /// The momentum of the primary outgoing protons listed first (likely the interacted one).
109  Float_t ProtonMom;
110 
111  /// The direction of the primary outgoing protons listed first (likely the interacted one).
112  Float_t ProtonDir[3];
113 
114  /// The momentum of the primary outgoing pions listed first (likely the interacted one).
115  Float_t PionMom;
116 
117  /// The direction of the primary outgoing pions listed first (likely the interacted one).
118  Float_t PionDir[3];
119 
120  /// Array to count the outgoing primary particles of each type (
121  Int_t NPrimaryParticles[Int_t(ParticleId::kLast)+1];
122 
123  // Vector to store particles pre-FSI info (only available for NEUT by now)
124  // TODO: check how much the file size increases
125  // Only store particles escaping the nucleus w/o beeing affected by FSI (other than the lepton, for which FSI in not applied)
126 // std::vector<TVector3> PreFSIParticles; // shortcut to store PDG, Momentum and CosTheta (all as Float_t)
127 
128  /// The total number of primary baryons that were ejected.
129  // OBSOLETE, NOT FILLED, TO BE DELETED, use NPrimaryParticles instead
130  Int_t NBaryons;
131 
132  /// The momentum of the target nucleus.
133  Float_t TargetMom;
134 
135  /// The direction of the target nucleus.
136  Float_t TargetDir[3];
137 
138  /// Vector of pointers to AnaParticleB associated with this true vertex
139  /// Do we really need this? It makes stuff more complicated
140  std::vector<AnaParticleB*> ReconParticles; //!
141 
142  /// Vector of pointers to AnaVertexB (global vertices) associated with this true vertex
143  std::vector<AnaVertexB*> ReconVertices; //!
144 
145  /// Neut keep also 1pi and single gamma Pauli blocked vertices (unphysical, to be removed)
146  /// see https://bugzilla.nd280.org/show_bug.cgi?id=1011
148 
149  // For a Neut bug, unphysical coherent interactions on hydrogen were produced (in prod 5 and 6)
150  // see https://bugzilla.nd280.org/show_bug.cgi?id=1056
151  bool IsCohOnH;
152 
153 };
154 
155 /// Representation of a true Monte Carlo trajectory/particle.
157 public :
158 
159  AnaTrueParticle();
160  virtual ~AnaTrueParticle(){}
161 
162  /// Clone this object.
163  virtual AnaTrueParticle* Clone() {
164  return new AnaTrueParticle(*this);
165  }
166 
167  /// Dump the object to screen.
168  void Print() const;
169 
170 protected:
171 
172  /// Copy constructor is protected, as Clone() should be used to copy this object.
173  AnaTrueParticle(const AnaTrueParticle& track);
174 
175 public:
176 
177  /// The ID of the primary particle that created this particle. You can use the
178  /// anaUtils::GetTrueTrackByID(Int_t ID) or anaUtils::GetPrimaryTrueTrack(AnaTrueParticleB* track)
179  /// functions to find the AnaTrueParticleB representing the primary particle.
180  Int_t PrimaryID;
181 
182  /// The purity with which this particle was matched to a reconstructed object.
183  Float_t Purity;
184 
185  /// The bunch in which this true interaction occurred, based on the time of
186  /// this true particle Start Position and the bunching used for the reconstructed objects.
187  Int_t Bunch;
188 
189  /// The index of the AnaTrueVertexB of the interaction that created this AnaTrueParticleB. Doesn't
190  /// match to any variable in the AnaTrueVertexB class, but is needed to set up
191  /// the Vertex pointer, which should be used to access the vertex that
192  /// created this particle.
193  Int_t VertexIndex;
194 
195  /// Vector of pointers to AnaParticle's associated with this true particle
196  std::vector<AnaParticleB*> ReconParticles; //!
197 
198  /// Is this a true primary pi0 decay photon or the child of one?
200  bool IsTruePrimaryPi0DecayPhotonChild;
201 };
202 
203 /// Extension to AnaParticleB to be used by aggregation
205 public :
206 
207  AnaParticleE();
208  virtual ~AnaParticleE();
209 
210  /// Clone this object.
211  virtual AnaParticleE* Clone() {
212  return new AnaParticleE(*this);
213  }
214 
215  /// Dump the object to screen.
216  virtual void Print() const;
217 
218 protected:
219 
220  /// Copy constructor is protected, as Clone() should be used to copy this object.
221  AnaParticleE(const AnaParticleE& track);
222 
223 public:
224 
225  /// The error on the reconstructed momentum.
226  Float_t MomentumError;
227 
228  /// The number of degrees of freedom when the track was fitted with a Kalman filter.
229  Int_t NDOF;
230 
231  /// The chi2 value when the track was fitted using a Kalman filter.
232  Float_t Chi2;
233 
234  /// Momentum from refitting the track assuming the electron hypothesis.
235  Float_t MomentumEle;
236 
237  /// Error on momentum from refitting the track assuming the electron hypothesis.
239 
240  /// Momentum from refitting the track assuming the muon hypothesis.
241  Float_t MomentumMuon;
242 
243  /// Error on momentum from refitting the track assuming the muon hypothesis.
245 
246  /// Momentum from refitting the track assuming the proton hypothesis.
247  Float_t MomentumProton;
248 
249  /// Error on momentum from refitting the track assuming the proton hypothesis.
251 
252  /// Direction at the start for the main PID hypothesis and reverse sense
253  Float_t DirectionStartFlip[3];
254 
255 #if VERSION_HAS_REVERSED_REFITS
256 
257  /// Position at the start for the main PID hypothesis and reverse sense
258  Float_t PositionStartFlip[4];
259 
260  /// Direction at the end for the main PID hypothesis and reverse sense
261  Float_t DirectionEndFlip[3];
262 #endif
263 
264 
265 #if VERSION_HAS_PRANGE_ESTIMATES
266 
267  /// Momentum by range calculated with electron hypothesis
268  Float_t RangeMomentumEle;
269 
270  // Muon hypothesis is in AnaParticleEB
271 
272  /// Momentum by range calculated with proton hypothesis
273  Float_t RangeMomentumProton;
274 
275  /// Momentum by range calculated with muon hypothesis and flipped track
276  Float_t RangeMomentumMuonFlip;
277 
278  /// Momentum by range calculated with proton hypothesis and flipped track
279  Float_t RangeMomentumProtonFlip;
280 #endif
281 
282  /// PDG of the most probable particle hypothesis used at reconstruction level
283  Int_t ReconPDG;
284 
285  /// The bunch of the track, based on the PositionStart.T()
286  Int_t Bunch;
287 
288  /// Position and charge of 1 or 2 hits at the edges: if the more
289  /// upstream/downstream hit does not contain both X and Y info,
290  /// a second hit (containing the missing info) is also saved.
291  /// (Time and PositionError are also available in oaAnalysis files)
292  /// (variables not in FlatTreeConverter yet)
293  TVector3 UpstreamHits_Position[2];
294  TVector3 DownstreamHits_Position[2];
295  Float_t UpstreamHits_Charge[2];
296  Float_t DownstreamHits_Charge[2];
297 
298  /// The pointer to the most primary AnaVertexB (global vertex) associated with this track
300 
301  /// Vector of pointers to AnaVertexB (global vertices) associated with this track
302  std::vector<AnaVertexB*> ReconVertices; //!
303 
304  /// The reconstructed momentum of the track, at the most primary global vertex (if exists).
306  // std::vector<Float_t> MomentumAtVertices;
307 
308  /// The reconstructed direction of the track at the most primary global vertex (if exists).
309  Float_t DirectionAtVertex[3];
310  // std::vector<TVector3> DirectionAtVertices;
311 
312 #if VERSION_HAS_TIME_FITS
313  /// Time info; the results of "partial" tof fits for a group of nodes in each sub-detector included
314  std::vector<AnaTimeNode*> TimeNodes;
315 #endif
316 };
317 
318 /// AnaParticle
319 class AnaParticle: public AnaParticleB, public AnaParticleE{
320 public :
321 
323  virtual ~AnaParticle(){}
324 
325  /// Clone this object.
326  virtual AnaParticle* Clone() {
327  return new AnaParticle(*this);
328  }
329 
330  /// Dump the object to screen.
331  virtual void Print() const{}
332 
333 protected:
334 
335  /// Copy constructor is protected, as Clone() should be used to copy this object.
337 };
338 
340 public :
341 
342  AnaSubTrack();
343  virtual ~AnaSubTrack(){}
344 
345  /// Clone this object.
346  virtual AnaSubTrack* Clone() {
347  return new AnaSubTrack(*this);
348  }
349 
350  /// Dump the object to screen.
351  virtual void Print() const;
352 
353  // ClassDef(AnaSubTrack, 1);
354 
355 protected:
356 
357  /// Copy constructor is protected, as Clone() should be used to copy this object.
358  AnaSubTrack(const AnaSubTrack& seg);
359 
360 public :
361 
362  /// The number of hits in the reconstructed object.
363  // Int_t NHits;
364 
365  /// The length of the reconstructed object, accounting for curvature etc.
366  Float_t Length;
367 
368  /// The direction at the end of the reconstructed track.
369  // Float_t DirectionEnd[3];
370 
371  /// The unique ID of the reconstructed object for matchign between global and local reconstruction
372  // Int_t UniqueID;
373 
374 };
375 
376 /// Representation of a TPC segment of a global track.
378 public :
379 
380  AnaTPCParticle();
381  virtual ~AnaTPCParticle();
382 
384 
385  /// Clone this object.
386  virtual AnaTPCParticle* Clone() {
387  return new AnaTPCParticle(*this);
388  }
389 
390  /// Dump the object to screen.
391  virtual void Print() const;
392 
393 protected:
394 
395  /// Copy constructor is protected, as Clone() should be used to copy this object.
396  AnaTPCParticle(const AnaTPCParticle& seg);
397 
398 public:
399 
400 #if VERSION_HAS_BFIELD_REFIT_FULL
401  /// Reconstructed charge with the empirical distortion corrections
402  Float_t RefitCharge;
403 
404  /// Reconstructed direction with the empirical distortion corrections
405  Float_t RefitDirection[3];
406 
407  /// Reconstructed position with the empirical distortion corrections
408  Float_t RefitPosition[4];
409 #endif
410 
411  /// Muon pull of the segment: (dEdxMeas-dEdxexpMuon)/dEdxSigmaMuon.
412  Float_t Pullmu;
413 
414  /// Electron pull of the segment: (dEdxMeas-dEdxexpEle)/dEdxSigmaEle.
415  Float_t Pullele;
416 
417  /// Proton pull of the segment: (dEdxMeas-dEdxexpProton)/dEdxSigmaProton.
418  Float_t Pullp;
419 
420  /// Pion pull of the segment: (dEdxMeas-dEdxexpPion)/dEdxSigmaPion.
421  Float_t Pullpi;
422 
423  /// Kaon pull of the segment: (dEdxMeas-dEdxexpPion)/dEdxSigmaKaon.
424  Float_t Pullk;
425 
426  /// Expected dE/dx for a proton, based on the reconstructed momentum.
427  Float_t dEdxexpKaon;
428 
429  /// Expected error on the dE/dx measurement, for the proton hypothesis.
430  Float_t dEdxSigmaKaon;
431 
432  /// The purity of the associated true track with respect to this TPC segment.
433  /// TrueTrack->Purity gives the purity of the true track with respect to the
434  /// global object.
435  Float_t Purity;
436 
437  // ClassDef(AnaTPCParticle, 1);
438 };
439 
441 public :
442 
443  AnaFGDParticle();
444  virtual ~AnaFGDParticle(){};
445 
446  /// Clone this object.
447  virtual AnaFGDParticle* Clone() {
448  return new AnaFGDParticle(*this);
449  }
450 
451 protected:
452 
453  /// Copy constructor is protected, as Clone() should be used to copy this object.
454  AnaFGDParticle(const AnaFGDParticle& seg);
455 
456 public:
457 
458  /// Input to the pull calculations. Needs to be documented properly in oaAnalysis.
459  // Float_t X;
460 
461  /// Input to the pull calculations. Needs to be documented properly in oaAnalysis.
462  Float_t E;
463 
464  /// Average Time for the iso FGD hits.
465  Float_t AvgTime;
466 
467  /// Vertex activity variables
468  /// Split this for two cases: entrance(start ) and exit(stop) activity
469 
470 #if VERSION_HAS_FGD_VERTEX_AND_END_ACTIVITY
471  /// Whether any vertex activity variables were calculated (start/entrance point is in FGD)
472  bool HasFgdVA;
473  /// Failure mode
474  Int_t HasFgdVA_fmode;
475  /// FGD vertex activity type: Vertex (1) or Entrance (2)
476  Int_t TypeVA;
477 #endif
478 
479  /// Vertex activity variables
480  Float_t Vertex1x1;
481  Float_t Vertex3x3;
482  Float_t Vertex5x5;
483  Float_t Vertex7x7;
484  Float_t VertexLayer;
485 
486 #if VERSION_HAS_FGD_VERTEX_AND_END_ACTIVITY
487  /// Whether any vertex activity variables were calculated (start/entrance point is in FGD)
488  bool HasFgdEA;
489  /// Failure mode
490  Int_t HasFgdEA_fmode;
491  /// FGD vertex activity type: Vertex (1) or Entrance (2)
492  Int_t TypeEA;
493 
494  /// Vertex activity variables
495  Float_t End0x0;
496  Float_t End1x1;
497  Float_t End3x3;
498  Float_t End5x5;
499  Float_t End7x7;
500 
501 #endif
502 
503 };
504 
506 public :
507 
508  AnaECALParticle();
509  virtual ~AnaECALParticle(){};
510 
511  /// Clone this object.
512  virtual AnaECALParticle* Clone() {
513  return new AnaECALParticle(*this);
514  }
515 
516 protected:
517 
518  /// Copy constructor is protected, as Clone() should be used to copy this object.
519  AnaECALParticle(const AnaECALParticle& seg);
520 
521 public:
522 
523  Float_t PIDMipPion;
524  Float_t Containment;
525 
526 };
527 
529 public :
530 
531  AnaSMRDParticle();
532  virtual ~AnaSMRDParticle(){};
533 
534  /// Clone this object.
535  virtual AnaSMRDParticle* Clone() {
536  return new AnaSMRDParticle(*this);
537  }
538 
539 
540  Float_t EDeposit;
541 
542 
543 protected:
544 
545  /// Copy constructor is protected, as Clone() should be used to copy this object.
546  AnaSMRDParticle(const AnaSMRDParticle& seg);
547 };
548 
550 public :
551 
552  AnaTrackerTrack();
553  virtual ~AnaTrackerTrack(){};
554 
555  /// Clone this object.
556  virtual AnaTrackerTrack* Clone() {
557  return new AnaTrackerTrack(*this);
558  }
559 
560 protected:
561 
562  /// Copy constructor is protected, as Clone() should be used to copy this object.
563  AnaTrackerTrack(const AnaTrackerTrack& seg);
564 
565 public:
566 
567 
568 };
569 
570 /// Representation of a global track.
571 class AnaTrack: public AnaTrackB, public AnaParticleE{
572 public :
573 
574  AnaTrack();
575  virtual ~AnaTrack();
576 
577  /// Clone this object.
578  virtual AnaTrack* Clone() {
579  return new AnaTrack(*this);
580  }
581 
582  /// Dump the object to screen.
583  virtual void Print() const;
584 
585 protected:
586 
587  /// Copy constructor is protected, as Clone() should be used to copy this object.
588  AnaTrack(const AnaTrack& track);
589 
590 public:
591 
592  /// A different representation of the detectors used by this track.
593  ///
594  /// The systems are numbered as:
595  /// 1: TPC1
596  /// 2: TPC2
597  /// 3: TPC3
598  /// 4: FGD1
599  /// 5: FGD2
600  /// 6: P0D
601  /// 7: DSECal
602  /// 8: Any SMRD module
603  /// 9: Any TECal or PECal module
604  ///
605  /// If this field then has a value of "235", it means the track used TPC2, TPC3
606  /// and FGD2. You will have to do some mathematical manipulation to extract the
607  /// information you want, so it is recommended to just use the DetUsed array
608  /// instead.
609  Int_t Detectors;
610 
611 
612  /// The length of this global track
613  Float_t Length;
614 
615  /// The TRACKER segments that contributed to this global track.
616  std::vector<AnaTrackerTrackB*> TRACKERSegments;
617 
618 };
619 
620 class AnaVertex:public AnaVertexB{
621 public :
622 
623  AnaVertex();
624  virtual ~AnaVertex(){}
625 
626  /// Clone this object.
627  virtual AnaVertex* Clone() {
628  return new AnaVertex(*this);
629  }
630 
631  /// Dump the object to screen.
632  void Print() const;
633 
634 protected:
635 
636  /// Copy constructor is protected, as Clone() should be used to copy this object.
637  AnaVertex(const AnaVertex& vertex);
638 
639 public:
640 
641  /// The variance values of the fit using a Kalman filter.
642  Float_t Variance[4];
643 
644  /// The chi2 value of the fit using a Kalman filter.
645  Float_t Chi2;
646 
647  /// The number of degrees of freedom of the fit using a Kalman filter.
648  Int_t NDOF;
649 };
650 
651 /// Representation of the beam information, including POT and quality.
652 class AnaBeam: public AnaBeamB{
653 public :
654 
655  AnaBeam();
656  virtual ~AnaBeam(){}
657 
658  /// Clone this object.
659  virtual AnaBeam* Clone() {
660  return new AnaBeam(*this);
661  }
662 
663 protected:
664 
665  /// Copy constructor is protected, as Clone() should be used to copy this object.
666  AnaBeam(const AnaBeam& beam);
667 
668 public:
669 
670  /// The POT for this spill. For data, this comes from the Beam Summary Data.
671  Float_t POT;
672 
673 #if !VERSION_HAS_OFFICIAL_POT
674  /// The POT from CT4 for this spill. This is only needed for P5 files.
675  Float_t POTCT4;
676 #endif
677 
678  /// Spill number from BeamSummaryDataModule::ND280Spill
679  Int_t Spill;
680 
681  /// Spill number from BeamSummaryDataModule::BeamSummaryData::SpillNumber
682  Int_t SpillNumber;
683 
684  /// Beam run, in form RRSSSS, where RR is main ring run (e.g. 44), and SSSS
685  /// is the main ring subrun.
687 };
688 
689 /// Representation of the ND280 data quality flags.
691 public:
692 
693  AnaDataQuality();
694  virtual ~AnaDataQuality() {}
695 
696  /// Clone this object.
697  virtual AnaDataQuality* Clone() {
698  return new AnaDataQuality(*this);
699  }
700 
701 protected:
702 
703  /// Copy constructor is protected, as Clone() should be used to copy this object.
704  AnaDataQuality(const AnaDataQuality& dq);
705 
706 public:
707 
708  /// Flag for the ND280 as a whole. The values the flag can take aren't
709  /// documented in the oaAnalysis code, but the important thing is that
710  /// 0 means good quality.
711  Int_t ND280Flag;
712 
713  /// Flags for each sub-detector. The values each flag can take aren't
714  /// documented in the oaAnalysis code, but the important thing is that
715  /// 0 means good quality.
716  ///
717  /// Indexing is:
718  /// [0] = TPC
719  /// [1] = FGD
720  /// [2] = ECAL
721  /// [3] = DSECAL
722  /// [4] = P0D
723  /// [5] = SMRD
724  /// [6] = MAGNET
725  Int_t DetFlag[7];
726 };
727 
728 
730 public :
731 
732  AnaEventInfo();
733  virtual ~AnaEventInfo(){}
734 
735  /// Clone this object.
736  virtual AnaEventInfo* Clone() {
737  return new AnaEventInfo(*this);
738  }
739 
740  /// Dump the object to screen.
741  virtual void Print() const;
742 
743 protected:
744 
745  /// Copy constructor is protected, as Clone() should be used to copy this object.
746  AnaEventInfo(const AnaEventInfo& event);
747 
748 public:
749 
750  /// The ND280 subrun number.
751  // Int_t SubRun;
752 
753  /// UNIX timestamp of the event, from the MCM (master clock module).
754  Int_t EventTime;
755 };
756 
757 
758 
759 /// Representation of the ND280 trigger bits
760 class AnaTrigger {
761 public:
762 
763  AnaTrigger();
764  virtual ~AnaTrigger() {}
765 
766  /// Clone this object.
767  virtual AnaTrigger* Clone() {
768  return new AnaTrigger(*this);
769  }
770 
771  /// Dump the object to screen.
772  virtual void Print() const;
773 
774 protected:
775 
776  /// Copy constructor is protected, as Clone() should be used to copy this object.
777  AnaTrigger(const AnaTrigger& tr);
778 
779 public:
780 
781  /// FGD cosmic trigger flag
782  bool FGDCosmic;
783 
784  /// TripT cosmic trigger flag
786 };
787 
788 /// An AnaBunch contains all the reconstructed objects in a given time window.
789 /// The normal bunches are indexed from 0-7.
790 ///
791 /// The bunch windows for each run period are defined in the text file
792 /// $HIGHLEVELANALYSISIOROOT/data/BunchPosition.dat, where the run period of -1
793 /// means Monte Carlo.
794 ///
795 /// Each bunch has a weighting associated with it, to allow for flux
796 /// re-weighting.
797 class AnaBunch: public AnaBunchB{
798 public :
799 
800  AnaBunch();
801  virtual ~AnaBunch();
802 
803  /// Clone this object.
804  virtual AnaBunch* Clone() {
805  return new AnaBunch(*this);
806  }
807 
808  /// Dump the object to screen.
809  virtual void Print() const;
810 
811 protected:
812 
813  /// Copy constructor is protected, as Clone() should be used to copy this object.
814  AnaBunch(const AnaBunch& bunch);
815 
816 public:
817 };
818 
819 /// The top-level object for representing information from the input files.
820 /// A single AnaSpill contains information from an entire ND280 event.
821 /// The reconstructed objects are separated into bunches based on their time
822 /// information.
823 ///
824 /// There are multiple copies of each spill available through the InputManager
825 /// [ND::input()], showing the raw state of the spill after reading it in from
826 /// the input files; after applying corrections; and after applying corrections
827 /// and systematics.
828 class AnaSpill: public AnaSpillB{
829 public :
830 
831  AnaSpill();
832  virtual ~AnaSpill();
833 
834  /// Clone this object.
835  virtual AnaSpill* Clone() {
836  AnaSpill* spill = new AnaSpill(*this);
837  spill->RedoLinks();
838  spill->isClone=true;
839  return spill;
840  }
841 
842  /// Dump the object to screen.
843  virtual void Print() const;
844 
845  /// Redo reco-reco and reco-truth after cloning or reading MiniTree
846  virtual void RedoLinks();
847 
848 protected:
849 
850  /// Copy constructor is protected, as Clone() should be used to copy this object.
851  AnaSpill(const AnaSpill& spill);
852 
853  /// Add to a particle a given associated vertex (not in the base class)
854  virtual void associateVertexToParticle(AnaParticleB*, AnaVertexB*) const;
855 
856  /// Add to a true vertex a given associated reconstructed vertex (not in the base class)
857  virtual void associateVertexToTrueVertex(AnaVertexB*) const;
858 
859  /// Add to a true particle a given associated reconstructed particle (not in the base class)
860  virtual void associateParticleToTrueParticle(AnaParticleB*) const;
861 
862 public:
863 
864  /// Index of the input file producing this spill
865  Int_t InputFileIndex; //! Not in the MiniTree for the Moment since it produces a seg fault
866 
867  /// The entry of the RooVtxTracker tree producing this spill
868  Int_t RooVtxEntry; //! Not in the MiniTree for the Moment since it produces a seg fault
869 
870  /// The trigger flags for this spill.
872 };
873 
874 
875 class AnaEvent: public AnaEventB{
876 public :
877 
878  AnaEvent();
879  AnaEvent(const AnaSpill& spill, const AnaBunch& bunch);
880  virtual ~AnaEvent();
881 
882  /// Clone this object.
883  virtual AnaEvent* Clone() {
884  AnaEvent* spill = new AnaEvent(*this);
885  spill->isClone=true;
886  return spill;
887  }
888 
889  /// Dump the object to screen.
890  virtual void Print() const;
891 
892 protected:
893 
894  /// Copy constructor is protected, as Clone() should be used to copy this object.
895  AnaEvent(const AnaEvent& event);
896 
897 public:
898 
899  /// The trigger flags for this event.
901 };
902 
904 public :
905 
906  AnaFgdTimeBin();
907  virtual ~AnaFgdTimeBin(){}
908 
909  /// Clone this object.
910  virtual AnaFgdTimeBin* Clone() {
911  return new AnaFgdTimeBin(*this);
912  }
913 
914  /// Dump the object to screen.
915  virtual void Print() const;
916 
917 protected:
918 
919  /// Copy constructor is protected, as Clone() should be used to copy this object.
920  AnaFgdTimeBin(const AnaFgdTimeBin& timein);
921 
922 public:
923 
924  Float_t MaxTime; //
925  Int_t G4ID; //
926 };
927 
928 
930 public :
931 
933  virtual ~AnaRecTrueMatch(){}
934 
935 };
936 
937 
938 const UInt_t NMAXTECALRECONOBJECTS =20; // Arbitrarily define a maximum number of reconstructed objects to flatten from ReconDir/TrackerECal and assign it to an unbound global variable.
939 const UInt_t NMAXTECALUNMATCHEOBJECTS=20; // Do the same for unmatched objects. Other such instances can be found in psycheCore BasicDataClasses.hxx.
940 
941 /// This Ana* object is used to flatten TECALReconObjects from ReconDir/TrackerECal
943 
944 public :
945 
947  virtual ~AnaTECALReconObject(){}
948 
949  /// Clone this object.
951  return new AnaTECALReconObject(*this);
952  }
953 
954  /// Dump the object to screen.
955  void Print() const;
956 
957 protected:
958 
959  /// Copy constructor is protected, as Clone() should be used to copy this object.
961 
962 public :
963 
964  // Variables copied directly from TECALReconObject
965  Float_t AverageHitTime; // AverageHitTime
966  Float_t AverageZPos; // AverageZPosition
967  Float_t Containment; // Containment
968  Float_t EFitResult; // EMEnergyFit_Result
969  Float_t EFitUncertainty; // EMEnergyFit_Uncertainty
970  Int_t FirstLayer; // FirstLayer;
971  bool IsShowerLike; // IsShowerLike
972  bool IsTrackLike; // IsTrackLike
973  Int_t LastLayer; // LastLayer;
974  Float_t LikeMIPEM; // PID_LLR_MIP_EM
975  Float_t LikeMIPPion; // PID_LLR_MIP_Pion
976  Float_t LikeEMHIP; // PID_LLR_EM_HIP
977  Float_t LikeMIPEMLow; // PID_LLR_MIP_EM_LowMomentum
978  Float_t MatchingLike; // MatchingLikelihood
979  Int_t MichelTagNDelayedCluster; // MElectronTag_NDelayedCluster
980  std::string Module; // Module
981  Int_t MostDownStreamLayerHit; // mostDownStreamLayerHit
982  Int_t MostUpStreamLayerHit; // mostUpStreamLayerHit
983  Int_t NHits; // NHits
984  Int_t NLayersHit; // NLayersHit
985  Float_t ObjectLength; // ObjectLength
986  Float_t PIDAMR; // PID_AMR
987  Float_t PIDAngle; // PID_Angle
988  Float_t PIDAsymmetry; // PID_Asymmetry
989  Float_t PIDCircularity; // PID_Circularity
990  Float_t PIDFBR; // PID_FrontBackRatio
991  Float_t PIDMaxRatio; // PID_Max_Ratio
992  Float_t PIDMeanPos; // PID_MeanPosition
993  Float_t PIDShowerAngle; // PID_ShowerAngle
994  Float_t PIDShowerWidth; // PID_ShowerWidth
995  Float_t PIDTransverseChargeRatio; // PID_TransverseChargeRatio
996  Float_t PIDTruncatedMaxRatio; // PID_TruncatedMaxRatio
997  Float_t Pointing[3]; // Pointing
998  Float_t Thrust; // Thrust
999  Float_t ThrustAxis[3]; // ThrustAxis
1000  Float_t ThrustOrigin[3]; // ThrustOrigin
1001  Int_t TimeBunch; // TimeBunch
1002  Float_t TotalHitCharge; // TotalHitCharge
1003  Int_t TrueID; // G4ID
1004  Int_t TrueIDPrimary; // G4ID_Primary
1005  Int_t TrueIDRecursive; // G4ID_Recursive
1006  Int_t TrueIDSingle; // G4ID_Single
1007  Int_t UniqueID; // UniqueID
1008 
1009  // Additional info
1010  Int_t Bunch;
1011 
1012 };
1013 
1014 /// This Ana* object is used to flatten TECALUnmatchedObjects from ReconDir/TrackerECal
1016 
1017 public :
1018 
1020  virtual ~AnaTECALUnmatchedObject(){}
1021 
1022  /// Clone this object.
1024  return new AnaTECALUnmatchedObject(*this);
1025  }
1026 
1027  /// Dump the object to screen.
1028  virtual void Print() const;
1029 
1030 protected:
1031 
1032  /// Copy constructor is protected, as Clone() should be used to copy this object.
1034 
1035 public :
1036 
1037  // Variables copied directly from TECALUnmatchedObject
1038  Float_t AverageHitTime; // AverageHitTime
1039  Float_t BackPos [3]; // BackPosition
1040  Float_t FrontPos[3]; // FrontPosition
1041  Int_t MostDownStreamLayerHit; // mostDownStreamLayerHit
1042  Int_t MostUpStreamLayerHit; // mostUpStreamLayerHit
1043  Int_t NHits; // NHits
1044  Float_t TotalHitCharge; // TotalHitCharge
1045  Int_t TrueID; // G4ID
1046  Int_t TrueIDPrimary; // G4ID_Primary
1047  Int_t TrueIDRecursive; // G4ID_Recursive
1048  Int_t TrueIDSingle; // G4ID_Single
1049  Int_t View; // View
1050 
1051  // Additional info
1052  Int_t Bunch;
1053 
1054 };
1055 
1056 
1057 /// This Ana* object is used to flatten PECALReconObjects from ReconDir/P0DECal
1059 
1060 public :
1061 
1063  virtual ~AnaPECALReconObject(){}
1064 
1065  /// Clone this object.
1067  return new AnaPECALReconObject(*this);
1068  }
1069 
1070 protected:
1071 
1072  /// Copy constructor is protected, as Clone() should be used to copy this object.
1074 };
1075 
1077 
1078 public :
1079 
1081  virtual ~AnaPECALUnmatchedObject(){}
1082 
1083  /// Clone this object.
1085  return new AnaPECALUnmatchedObject(*this);
1086  }
1087 
1088 protected:
1089 
1090  /// Copy constructor is protected, as Clone() should be used to copy this object.
1092 };
1093 
1094 
1095 const UInt_t NMAXP0DRECONOBJECTS = 100;
1096 
1097 class AnaP0DReconCluster;
1098 class AnaP0DReconVertex;
1099 class AnaP0DReconParticle;
1100 
1101 /// This is a base P0D object that shares the common attributes of Vertex, Particle, Track, Shower, Cluster, Hit
1103 
1104 public:
1105 
1107  virtual ~AnaP0DReconObject(){}
1108 
1109 protected:
1110 
1111  /// Copy constructor is protected, as Clone() should be used to copy this object.
1113 
1114 public:
1115  /// Dump the object to screen.
1116  virtual void Print() const;
1117 
1118  std::vector<AnaP0DReconVertex*> VerticesP;
1119  std::vector<AnaP0DReconParticle*> ParticlesP;
1120  std::vector<AnaP0DReconCluster*> ClustersP;
1121 
1122 
1123  std::vector<Short_t> Vertices;
1124  std::vector<Short_t> Particles;
1125  std::vector<Short_t> Tracks;
1126  std::vector<Short_t> Showers;
1127  std::vector<Short_t> Clusters;
1128  std::vector<Short_t> Nodes;
1129  std::vector<Short_t> Hits;
1130 
1131  std::vector<Int_t> Truth_PrimaryTrajIDs;
1132  std::vector<Int_t> Truth_TrajIDs;
1133  std::vector<Short_t> Truth_HitCount;
1134  std::vector<Float_t> Truth_ChargeShare;
1135  Float_t Position [4];
1136  Float_t PosVariance[4]; // ? For the vertex only and probably for cluster
1137  Short_t ValidDimensions;
1138 
1139  std::string AlgorithmName; // --> enum
1140  Short_t Cycle;
1141  Short_t NHits;
1142  unsigned int UniqueID;
1143 
1144  Int_t Bunch;
1145 };
1146 
1147 /// P0DRecon Vertex
1149 
1150 public:
1151 
1153  virtual ~AnaP0DReconVertex(){}
1154 
1155  /// Clone this object.
1157  return new AnaP0DReconVertex(*this);
1158  }
1159 
1160 protected:
1161 
1162  /// Copy constructor is protected, as Clone() should be used to copy this object.
1164 
1165 public:
1166 
1167  Int_t Status;
1168  Float_t Quality; // ?
1169  Int_t NDOF; // ?
1170  Float_t Fiducial;
1171 
1172 };
1173 
1174 /// P0DRecon Particle
1176 
1177 public:
1178 
1180  virtual ~AnaP0DReconParticle(){}
1181 
1182  /// Clone this object.
1184  return new AnaP0DReconParticle(*this);
1185  }
1186 
1187 protected:
1188 
1189  /// Copy constructor is protected, as Clone() should be used to copy this object.
1191 
1192 public:
1193 
1194  Int_t Status;
1195  Float_t Quality; // ?
1196  Int_t NDOF; // ?
1197  Float_t SideDeposit;
1198  Float_t EndDeposit;
1199  Float_t Direction [3];
1200  Float_t DirVariance[3]; //
1201  Float_t Momentum; //
1202  Float_t Charge; //
1203  Float_t Length;
1204  Float_t EDeposit;
1205 
1206  std::vector<std::string> realPIDNames;
1207  std::vector<std::vector<Float_t> > realPIDValues;
1208  std::vector<std::string> integerPIDNames;
1209  std::vector<std::vector<Short_t> > integerPIDValues;
1210 
1211 
1212  std::vector<Short_t> PID;
1213  std::vector<Float_t> PID_weight;
1214 
1215  AnaTrueParticleB* TrueParticle;
1216 
1217 };
1218 
1219 
1220 //P0DReconCluster
1221 
1223 
1224 public:
1225 
1227  virtual ~AnaP0DReconCluster(){}
1228 
1229  /// Clone this object.
1231  return new AnaP0DReconCluster(*this);
1232  }
1233 
1234 protected:
1235 
1236  /// Copy constructor is protected, as Clone() should be used to copy this object.
1238 
1239 public:
1240 
1241  Short_t NFiducialHits; // Clark has to tell me what it means
1242  Float_t EDeposit;
1243 
1244 };
1245 
1247 
1248 public :
1249 
1251  virtual ~AnaFGDOnlyReconObject(){}
1252 
1253  /// Clone this object.
1255  return new AnaFGDOnlyReconObject(*this);
1256  }
1257 
1258 protected:
1259 
1260  /// Copy constructor is protected, as Clone() should be used to copy this object.
1262 };
1263 
1264 
1265 // When saving information from the local reconstruction, the reconstructed objects
1266 // must be added to the bunch.
1267 // A derived bunch object is defined here to encapsulate these additional data.
1268 // Since the choice of which data to flatten is made at run time, this object requires
1269 // place holders for all locally reconstructed objects potentially added to the flat tree
1271 public :
1272 
1274  virtual ~AnaLocalReconBunch();
1275 
1276  /// Clone this object.
1278  return new AnaLocalReconBunch(*this);
1279  }
1280 
1281  /// Dump the object to screen.
1282  virtual void Print() const;
1283 
1284  /// Returns true if the bunch is completely empty
1285  virtual bool IsEmpty() const;
1286 
1287 protected:
1288 
1289  /// Copy constructor is protected, as Clone() should be used to copy this object.
1290  AnaLocalReconBunch(const AnaLocalReconBunch& localBunch);
1291 
1292 public:
1293 
1294  std::vector<AnaTECALReconObject* > TECALReconObjects;
1295  std::vector<AnaTECALUnmatchedObject*> TECALUnmatchedObjects;
1296  std::vector<AnaPECALReconObject* > PECALReconObjects;
1297  std::vector<AnaPECALUnmatchedObject*> PECALUnmatchedObjects;
1298  std::vector<AnaP0DReconVertex* > P0DReconVertices;
1299  std::vector<AnaP0DReconParticle* > P0DReconParticles;
1300  std::vector<AnaP0DReconCluster* > P0DReconClusters;
1301  std::vector<AnaFGDOnlyReconObject* > FGDOnlyReconObjects;
1302 };
1303 
1305 public :
1306 
1308  AnaLocalReconEvent(const AnaSpill& spill, const AnaLocalReconBunch& bunch);
1309  virtual ~AnaLocalReconEvent();
1310 
1311  /// Clone this object.
1313  AnaLocalReconEvent* event = new AnaLocalReconEvent(*this);
1314  event->isClone=true;
1315  return event;
1316  }
1317 
1318 protected:
1319 
1320  /// Copy constructor is protected, as Clone() should be used to copy this object.
1321  AnaLocalReconEvent(const AnaLocalReconEvent& event);
1322 
1323 public:
1324 
1325  std::vector<AnaTECALReconObject* > TECALReconObjects;
1326  std::vector<AnaTECALUnmatchedObject*> TECALUnmatchedObjects;
1327  std::vector<AnaPECALReconObject* > PECALReconObjects;
1328  std::vector<AnaPECALUnmatchedObject*> PECALUnmatchedObjects;
1329  std::vector<AnaP0DReconVertex* > P0DReconVertices;
1330  std::vector<AnaP0DReconParticle* > P0DReconParticles;
1331  std::vector<AnaP0DReconCluster* > P0DReconClusters;
1332  std::vector<AnaFGDOnlyReconObject* > FGDOnlyReconObjects;
1333 
1334 };
1335 
1336 #endif
Float_t Pullmu
Muon pull of the segment: (dEdxMeas-dEdxexpMuon)/dEdxSigmaMuon.
virtual AnaP0DReconVertex * Clone()
Clone this object.
Float_t MomentumAtVertex
The reconstructed momentum of the track, at the most primary global vertex (if exists).
Representation of the beam quality and perhaps other beam information as needed.
Representation of a global track.
Representation of the ND280 data quality flags.
Int_t InputFileIndex
Index of the input file producing this spill.
virtual void RedoLinks()
Redo reco-reco and reco-truth after cloning or reading MiniTree.
Int_t LeptonPDG
The PDG code of the primary outgoing electron/muon.
virtual AnaTimeNode * Clone()
Clone this object.
Definition: DataClasses.hxx:18
Float_t MomentumEle
Momentum from refitting the track assuming the electron hypothesis.
bool IsTruePrimaryPi0DecayPhoton
Is this a true primary pi0 decay photon or the child of one?
Int_t NDOF
The number of degrees of freedom of the fit using a Kalman filter.
Int_t Detector
Definition: DataClasses.hxx:40
bool FGDCosmic
FGD cosmic trigger flag.
Int_t NuParentPDG
Neutrino parent PDG code.
Definition: DataClasses.hxx:88
P0DRecon Vertex.
Representation of the ND280 trigger bits.
Int_t NDOF
The number of degrees of freedom when the track was fitted with a Kalman filter.
virtual AnaEventInfo * Clone()
Clone this object.
Int_t RooVtxIndex
The index of the associated RooTrackerVtx vertex from its position in the TClonesArray.
Definition: DataClasses.hxx:75
virtual void Print() const
Dump the object to screen.
Representation of a true Monte Carlo vertex.
Float_t E
Input to the pull calculations. Needs to be documented properly in oaAnalysis.
Float_t Pullpi
Pion pull of the segment: (dEdxMeas-dEdxexpPion)/dEdxSigmaPion.
std::vector< std::vector< Int_t > > AccumLevel
Accumulated cut level for all selections and cut branches. Tell us if a true vertex has been selected...
Definition: DataClasses.hxx:94
Int_t NBaryons
The total number of primary baryons that were ejected.
virtual AnaDataQuality * Clone()
Clone this object.
Representation of an ECAL segment of a global track.
Representation of the ND280 data quality flags.
Float_t Vertex1x1
Vertex activity variables.
virtual AnaPECALReconObject * Clone()
Clone this object.
Int_t Bunch
The bunch of the track, based on the PositionStart.T()
virtual AnaTrack * Clone()
Clone this object.
P0DRecon Particle.
Float_t Length
The number of hits in the reconstructed object.
virtual AnaTPCParticle * Clone()
Clone this object.
This Ana* object is used to flatten TECALReconObjects from ReconDir/TrackerECal.
Float_t MomentumErrorProton
Error on momentum from refitting the track assuming the proton hypothesis.
virtual AnaFGDOnlyReconObject * Clone()
Clone this object.
Float_t AvgTime
Average Time for the iso FGD hits.
Int_t TargetPDG
The PDG code of the target nucleus.
Definition: DataClasses.hxx:85
virtual AnaTrueParticle * Clone()
Clone this object.
std::vector< AnaParticleB * > ReconParticles
Vector of pointers to AnaParticle&#39;s associated with this true particle.
Float_t Chi2
The chi2 value of the fit using a Kalman filter.
bool isClone
Is this the original Event or a clone.
virtual AnaBeam * Clone()
Clone this object.
Int_t Spill
Spill number from BeamSummaryDataModule::ND280Spill.
Float_t Chi2
The chi2 value when the track was fitted using a Kalman filter.
Representation of detector time info.
Definition: DataClasses.hxx:11
Float_t POTCT4
The POT from CT4 for this spill. This is only needed for P5 files.
Float_t ProtonMom
The momentum of the primary outgoing protons listed first (likely the interacted one).
Float_t LeptonMom
The momentum of the primary outgoing electron/muon.
Representation of a true Monte Carlo vertex.
Definition: DataClasses.hxx:50
Representation of a true Monte Carlo trajectory/particle.
Representation of an SMRD segment of a global track.
Representation of a Tracker segment of a global track.
virtual AnaP0DReconParticle * Clone()
Clone this object.
Float_t dEdxSigmaKaon
Expected error on the dE/dx measurement, for the proton hypothesis.
virtual AnaTECALUnmatchedObject * Clone()
Clone this object.
std::vector< AnaVertexB * > ReconVertices
Vector of pointers to AnaVertexB (global vertices) associated with this true vertex.
virtual AnaParticleE * Clone()
Clone this object.
virtual AnaSpill * Clone()
Clone this object.
Int_t SpillNumber
Spill number from BeamSummaryDataModule::BeamSummaryData::SpillNumber.
Float_t MomentumErrorMuon
Error on momentum from refitting the track assuming the muon hypothesis.
virtual void Print() const
Dump the object to screen.
Int_t Detectors
AnaFGDOnlyReconObject(const AnaTECALReconObject &)
Copy constructor is protected, as Clone() should be used to copy this object.
AnaPECALReconObject(const AnaTECALReconObject &)
Copy constructor is protected, as Clone() should be used to copy this object.
Int_t BeamRunNumber
virtual AnaLocalReconEvent * Clone()
Clone this object.
Float_t MomentumErrorEle
Error on momentum from refitting the track assuming the electron hypothesis.
Float_t TimeEnd
End time.
Definition: DataClasses.hxx:46
Representation of a global track.
bool TripTCosmic
TripT cosmic trigger flag.
This Ana* object is used to flatten PECALReconObjects from ReconDir/P0DECal.
Int_t EventTime
The ND280 subrun number.
Representation of a TPC segment of a global track.
virtual AnaTECALReconObject * Clone()
Clone this object.
Float_t Pullk
Kaon pull of the segment: (dEdxMeas-dEdxexpPion)/dEdxSigmaKaon.
virtual AnaFGDParticle * Clone()
Clone this object.
std::vector< AnaTrackerTrackB * > TRACKERSegments
The TRACKER segments that contributed to this global track.
virtual AnaFgdTimeBin * Clone()
Clone this object.
Float_t Pullp
Proton pull of the segment: (dEdxMeas-dEdxexpProton)/dEdxSigmaProton.
Representation of a global vertex.
AnaVertexB * ReconVertex
The pointer to the most primary AnaVertexB (global vertex) associated with this track.
Int_t RooVtxEntry
Not in the MiniTree for the Moment since it produces a seg fault.
Float_t Length
The length of this global track.
This is a base P0D object that shares the common attributes of Vertex, Particle, Track, Shower, Cluster, Hit.
Float_t MomentumError
The error on the reconstructed momentum.
virtual AnaVertex * Clone()
Clone this object.
Representation of a FGD segment of a global track.
std::vector< AnaVertexB * > ReconVertices
Vector of pointers to AnaVertexB (global vertices) associated with this track.
AnaPECALUnmatchedObject(const AnaTECALReconObject &)
Copy constructor is protected, as Clone() should be used to copy this object.
This Ana* object is used to flatten TECALUnmatchedObjects from ReconDir/TrackerECal.
AnaParticle(const AnaParticle &part)
Copy constructor is protected, as Clone() should be used to copy this object.
virtual AnaLocalReconBunch * Clone()
Clone this object.
Float_t Pullele
Electron pull of the segment: (dEdxMeas-dEdxexpEle)/dEdxSigmaEle.
virtual AnaPECALUnmatchedObject * Clone()
Clone this object.
Float_t Q2
The Q2 of the true interaction.
Definition: DataClasses.hxx:97
AnaTrigger Trigger
Not in the MiniTree for the Moment since it produces a seg fault.
Int_t RooVtxEntry
Entry in the RooTrackerVtx tree (not set directly)
Definition: DataClasses.hxx:72
virtual AnaECALParticle * Clone()
Clone this object.
virtual AnaParticle * Clone()
Clone this object.
Float_t Purity
The purity with which this particle was matched to a reconstructed object.
virtual AnaP0DReconCluster * Clone()
Clone this object.
Representation of a TPC segment of a global track.
bool isClone
Is this the original Event or a clone.
Float_t TimeStart
Start time.
Definition: DataClasses.hxx:43
virtual AnaEvent * Clone()
Clone this object.
AnaParticle.
virtual AnaSubTrack * Clone()
Clone this object.
Representation of a reconstructed particle (track or shower).
Int_t ReconPDG
PDG of the most probable particle hypothesis used at reconstruction level.
virtual AnaBunch * Clone()
Clone this object.
Representation of a true Monte Carlo trajectory/particle.
Float_t MomentumMuon
Momentum from refitting the track assuming the muon hypothesis.
virtual AnaTrackerTrack * Clone()
Clone this object.
Representation of the beam information, including POT and quality.
AnaTrigger Trigger
The trigger flags for this event.
Float_t POT
The POT for this spill. For data, this comes from the Beam Summary Data.
Float_t dEdxexpKaon
Expected dE/dx for a proton, based on the reconstructed momentum.
Float_t TargetMom
The momentum of the target nucleus.
Float_t PionMom
The momentum of the primary outgoing pions listed first (likely the interacted one).
Extension to AnaParticleB to be used by aggregation.
virtual AnaTrueVertex * Clone()
Clone this object.
Definition: DataClasses.hxx:57
std::vector< AnaParticleB * > ReconParticles
virtual AnaTrigger * Clone()
Clone this object.
Float_t MomentumProton
Momentum from refitting the track assuming the proton hypothesis.
virtual AnaSMRDParticle * Clone()
Clone this object.