HighLAND
FlatTreeConverter.hxx
1 /*
2  converter for new FlatTree input format (direct dump of analysis data classes)
3 
4  A. Cervera September 2012
5 */
6 
7 
8 #ifndef FlatTreeConverter_h
9 #define FlatTreeConverter_h
10 
11 #include "RedoTreeConverter.hxx"
12 #include "DataClassesIO.hxx"
13 #include "P0DDataClasses.hxx"
14 #include "InputConverter.hxx"
15 #include <TClonesArray.h>
16 #include "AnalysisTools/libReadoaAnalysis/libReadoaAnalysisProjectHeaders.h"
17 
18 
20 
21  public:
22 
23  FlatTreeConverter(bool readRooTrackerVtx=false);
24  virtual ~FlatTreeConverter();
25 
26  virtual bool Initialize();
27 
28  /// Define the branches to be read from the input tree
29  virtual void DefineBranches();
30 
32  Int_t GetSpill(Long64_t& entry, AnaSpillC*& spill);
33 
34  virtual bool AddFileToTChain(const std::string& inputString);
35 
36  virtual AnaSpillB* MakeSpill () { return new AnaSpill (); }
37  virtual AnaBunchB* MakeBunch () { return new AnaBunch (); }
38  virtual AnaBeamB* MakeBeam () { return new AnaBeam (); }
39  virtual AnaDataQualityB* MakeDataQuality () { return new AnaDataQuality (); }
40  virtual AnaEventInfoB* MakeEventInfo () { return new AnaEventInfo (); }
41  virtual AnaTrigger* MakeTrigger () { return new AnaTrigger (); }
42  virtual AnaVertexB* MakeVertex () { return new AnaVertex (); }
43  virtual AnaTrueParticleB* MakeTrueParticle () { return new AnaTrueParticle (); }
44  virtual AnaTrueVertexB* MakeTrueVertex () { return new AnaTrueVertex (); }
45  virtual AnaTrackB* MakeTrack () { return new AnaTrack (); }
46  virtual AnaTPCParticleB* MakeTpcTrack () { return new AnaTPCParticle (); }
47  virtual AnaTrackerTrackB* MakeTrackerTrack () { return new AnaTrackerTrack (); }
48  virtual AnaFGDParticleB* MakeFgdTrack () { return new AnaFGDParticle (); }
49  virtual AnaP0DParticleB* MakeP0dTrack () { return new AnaP0DParticle (); }
50  virtual AnaECALParticleB* MakeEcalTrack () { return new AnaECALParticle (); }
51  virtual AnaSMRDParticleB* MakeSmrdTrack () { return new AnaSMRDParticle (); }
52  virtual AnaFgdTimeBinB* MakeFgdTimeBin () { return new AnaFgdTimeBin (); }
53 
54  // Optional information from the local reconstruction...
55  virtual AnaBunchB* MakeLocalReconBunch () { return new AnaLocalReconBunch (); }
56  virtual AnaTECALReconObject* MakeTECALReconObject () { return new AnaTECALReconObject (); }
57  virtual AnaTECALUnmatchedObject* MakeTECALUnmatchedObject() { return new AnaTECALUnmatchedObject(); }
58  virtual AnaPECALReconObject* MakePECALReconObject () { return new AnaPECALReconObject (); }
59  virtual AnaPECALUnmatchedObject* MakePECALUnmatchedObject() { return new AnaPECALUnmatchedObject(); }
60  virtual AnaP0DReconObject* MakeP0DReconVertex () { return new AnaP0DReconVertex (); }
61  virtual AnaFGDOnlyReconObject* MakeFGDOnlyReconObject () { return new AnaFGDOnlyReconObject (); }
62 
63  virtual void FillTECALReconObjectInfo(int iObj, AnaTECALReconObject* anaTECAL, AnaBunch* bunch);
64 
65  using RedoTreeConverter::FillInfo;
66  virtual void FillInfo(AnaSpillB* spill);
67  using RedoTreeConverter::FillBunchInfo;
68  virtual void FillBunchInfo(std::vector<AnaTrueParticleB*>& trueParticles, AnaBunchB* bunch);
69  virtual void FillNotInBunchObjWithNullPointers(AnaSpill* spill);
70  virtual void CheckNotInBunchObjWithNullPointers(AnaSpill* spill);
71  virtual void FillNotInBunchObjWithNullPointers(AnaBunch* bunch);
72  using RedoTreeConverter::FillFgdTimeBinInfo;
73  virtual void FillFgdTimeBinInfo(std::vector<AnaFgdTimeBinB*>& AnaFgdTimeBins);
74  using RedoTreeConverter::FillTrackInfo;
75  virtual void FillTrackInfo(std::vector<AnaTrueParticleB*>& trueParticles, int itrk, AnaTrackB* track);
76  using RedoTreeConverter::FillTrueParticleInfo;
77  virtual void FillTrueParticleInfo(std::vector<AnaTrueVertexB*>& trueVertices, int itrk, AnaTrueParticleB* part);
78  using RedoTreeConverter::FillTpcInfo;
79  virtual void FillTpcInfo(std::vector<AnaTrueParticleB*>& trueParticles, int itrk, int tpc, AnaTPCParticleB* track);
80  using RedoTreeConverter::FillFgdInfo;
81  virtual void FillFgdInfo(int itrk, int fgd, AnaFGDParticleB* track);
82  using RedoTreeConverter::FillEcalInfo;
83  virtual void FillEcalInfo(int itrk, int ecal, AnaECALParticleB* track);
84  using RedoTreeConverter::FillSmrdInfo;
85  virtual void FillSmrdInfo(int itrk, int smrd, AnaSMRDParticleB* track);
86  using RedoTreeConverter::FillP0dInfo;
87  virtual void FillP0dInfo(int itrk, int p0d, AnaP0DParticleB* track);
88  virtual void FillTrackerInfo(int itrk, int tracker, AnaTrackerTrack* seg);
89 
90  using RedoTreeConverter::FillSubdetectorInfo;
91  virtual void FillSubdetectorInfo(std::vector<AnaTrueParticleB*>& trueParticles, int itrk, AnaTrackB* trackB);
92 
93  using RedoTreeConverter::FillTrueVertexInfo;
94  virtual void FillTrueVertexInfo(int ivtx, AnaTrueVertexB* vertex);
95  using RedoTreeConverter::FillTrueVertexRooInfo;
96  virtual bool FillTrueVertexRooInfo(AnaTrueVertexB* vertex);
97  virtual void FillNPrimaryParticles(AnaTrueVertex* vertex);
98 
99  using RedoTreeConverter::FillDQInfo;
100  virtual void FillDQInfo(AnaDataQualityB* dq);
101  using RedoTreeConverter::FillBeamInfo;
102  virtual void FillBeamInfo(AnaBeamB* beam);
103  virtual void FillTriggerInfo(AnaTrigger* trigger);
104 
105  using RedoTreeConverter::FillVertexInfo;
106  virtual void FillVertexInfo(int ivtx, AnaVertexB* vertex, AnaBunchB* bunch);
107 
108 // virtual int FindTrueVertex(int ID, AnaTrueVertex*& trueVertex); // not used anymore
109  virtual AnaParticleB* FindParticle(int ID, AnaBunchB* bunch);
110 
111  /// Get old local detector enumeration to find array index of Flat tree
113 
114 protected:
115 
116  bool _useCorrectedValues;
117  bool _readRooTrackerVtx;
118 
119  bool _firstFile;
120  bool _firstEntry;
121 
122  Int_t _RooVtxEntryInCurrentInputFile;
123 
124  // the current RooTrackerVtx entry
125  Long64_t _entry_roo;
126 
127  /// Store whether AnaLocalReconBunch information is enabled in the parameters file
129  bool _isUsingReconDirP0D;
130  bool _isUsingReconDirPECAL;
131  bool _isUsingReconDirTECAL;
132 
133  protected:
134 
135  // Genie and Neut Tracker Vertex
136  Int_t RunID;
137  Int_t SubrunID;
138  Int_t EventID;
139  Int_t NNVtx;
140  TClonesArray *NVtx;
141  Int_t NGVtx;
142  TClonesArray *GVtx;
143 
144  Int_t sIsMC;
145  Int_t sRooVtxEntry;
146  Int_t sInputFileIndex;
147  Int_t sTrueVertexLeptonPDG[NMAXTRUEVERTICES]; //[sNTrueVertices]
148  Int_t sTrueVertexIsPauliBlocked[NMAXTRUEVERTICES]; //[sNTrueVertices]
149  Int_t sTrueVertexIsCohOnH[NMAXTRUEVERTICES]; //[sNTrueVertices]
150  Int_t sTrueVertexNPrimaryParticles[NMAXTRUEVERTICES][Int_t(ParticleId::kLast)+1]; //[sNTrueVertices]
151  Int_t trReconPDG[NMAXPARTICLES]; //[NParticles]
152  Int_t trNTimeNodes[NMAXPARTICLES]; //[NParticles]
153  Int_t trTimeNodeDetector[NMAXPARTICLES][NMAXTIMENODES]; //[NParticles]
154  Int_t trTpcUniqueID[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
155  Int_t trFgdUniqueID[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
156  Int_t trECALUniqueID[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
157  Int_t trSMRDUniqueID[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
158  Int_t trP0DUniqueID[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
159  Int_t trNTRACKERs[NMAXPARTICLES]; //[NParticles]
160  Int_t trTRACKERDetector[NMAXPARTICLES][NMAXTRACKERS]; //[NParticles]
161  Int_t trTRACKERNHits[NMAXPARTICLES][NMAXTRACKERS]; //[NParticles]
162  Int_t trTRACKERNNodes[NMAXPARTICLES][NMAXTRACKERS]; //[NParticles]
163  Int_t trTRACKERUniqueID[NMAXPARTICLES][NMAXTRACKERS]; //[NParticles]
164  Int_t trFgdHasFgdVA[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
165  Int_t trFgdHasFgdVA_fmode[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
166  Int_t trFgdTypeVA[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
167  Int_t trFgdHasFgdEA[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
168  Int_t trFgdHasFgdEA_fmode[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
169  Int_t trFgdTypeEA[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
170 
171 
172 
173  Float_t sTrueVertexTargetMom[NMAXTRUEVERTICES]; //[sNTrueVertices]
174  Float_t sTrueVertexTargetDir[NMAXTRUEVERTICES][3]; //[sNTrueVertices]
175  Float_t trTimeNodeTimeStart[NMAXPARTICLES][NMAXTIMENODES]; //[NParticles]
176  Float_t trTimeNodeTimeEnd[NMAXPARTICLES][NMAXTIMENODES]; //[NParticles]
177  Float_t sTrueVertexLeptonDir[NMAXTRUEVERTICES][3]; //[sNTrueVertices]
178  Float_t sTrueVertexProtonDir[NMAXTRUEVERTICES][3]; //[sNTrueVertices]
179  Float_t sTrueVertexPionDir[NMAXTRUEVERTICES][3]; //[sNTrueVertices]
180  Float_t sTrueVertexLeptonMom[NMAXTRUEVERTICES]; //[sNTrueVertices]
181  Float_t sTrueVertexProtonMom[NMAXTRUEVERTICES]; //[sNTrueVertices]
182  Float_t sTrueVertexPionMom[NMAXTRUEVERTICES]; //[sNTrueVertices]
183  Float_t trTpcPullmu[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
184  Float_t trTpcPullele[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
185  Float_t trTpcPullp[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
186  Float_t trTpcPullpi[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
187  Float_t trTpcPullk[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
188  Float_t trTpcRawdEdxMeas[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
189  Float_t trTpcRawdEdxExpMu[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
190  Float_t trTpcRawdEdxExpEle[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
191  Float_t trTpcRawdEdxExpP[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
192  Float_t trTpcRawdEdxExpPi[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
193  Float_t trTpcRawdEdxExpK[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
194  Float_t trFgdEnd0x0[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
195  Float_t trFgdEnd1x1[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
196  Float_t trFgdEnd3x3[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
197  Float_t trFgdEnd5x5[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
198  Float_t trFgdEnd7x7[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
199 
200  Float_t trECALPIDMipPion[NMAXPARTICLES][NECALSUBDETS]; //[NParticles]
201  Float_t trECALContainment[NMAXPARTICLES][NECALSUBDETS]; //[NParticles]
202 
203  // SMRD
204  Float_t trSMRDEDeposit[NMAXPARTICLES][NSMRDSUBDETS]; //[NParticles]
205 
206 
207  Float_t trP0DAvgTime[NMAXPARTICLES][NMAXP0DS]; //[NParticles]
208  Float_t trTRACKERLength[NMAXPARTICLES][NMAXTRACKERS]; //[NParticles]
209  Float_t trTRACKERDirectionStart[NMAXPARTICLES][NMAXTRACKERS][3]; //[NParticles]
210  Float_t trTRACKERDirectionEnd[NMAXPARTICLES][NMAXTRACKERS][3]; //[NParticles]
211  Float_t trTRACKERPositionStart[NMAXPARTICLES][NMAXTRACKERS][4]; //[NParticles]
212  Float_t trTRACKERPositionEnd[NMAXPARTICLES][NMAXTRACKERS][4]; //[NParticles]
213  Float_t trTRACKERCharge[NMAXPARTICLES][NMAXTRACKERS]; //[NParticles]
214  Float_t trTRACKERMomentum[NMAXPARTICLES][NMAXTRACKERS]; //[NParticles]
215  Float_t trTRACKERMomentumEnd[NMAXPARTICLES][NMAXTRACKERS]; //[NParticles]
216  Float_t trDirectionStartFlip[NMAXPARTICLES][3]; //[NParticles]
217  Float_t trDirectionEndFlip[NMAXPARTICLES][3]; //[NParticles]
218  Float_t trRangeMomentumMuonFlip[NMAXPARTICLES]; //[NParticles]
219  Float_t trRangeMomentumProtonFlip[NMAXPARTICLES]; //[NParticles]
220  Float_t trMomentumAtVertex[NMAXPARTICLES]; //[NParticles]
221  Float_t trDirectionAtVertex[NMAXPARTICLES][3]; //[NParticles]
222  Float_t trLength[NMAXPARTICLES]; //[NParticles]
223 
224 
225  /// AnaLocalReconBunch information
227  Float_t tecalReconAverageHitTime [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
228  Float_t tecalReconAverageZPosition [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
229  Float_t tecalReconContainment [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
230  Float_t tecalReconEFitResult [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
231  Float_t tecalReconEFitUncertainty [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
232  Int_t tecalReconFirstLayer [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
233  Int_t tecalReconIsShowerLike [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
234  Int_t tecalReconIsTrackLike [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
235  Int_t tecalReconLastLayer [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
236  Float_t tecalReconLikeMIPEM [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
237  Float_t tecalReconLikeMIPPion [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
238  Float_t tecalReconLikeEMHIP [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
239  Float_t tecalReconLikeMIPEMLow [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
240  Float_t tecalReconMatchingLike [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
241  Int_t tecalReconMichelTagNDelayedCluster[NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
242  Char_t tecalReconModule [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
243  Int_t tecalReconMostDownStreamLayerHit [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
244  Int_t tecalReconMostUpStreamLayerHit [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
245  Int_t tecalReconNHits [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
246  Int_t tecalReconNLayersHit [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
247  Float_t tecalReconObjectLength [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
248  Float_t tecalReconPIDAMR [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
249  Float_t tecalReconPIDAngle [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
250  Float_t tecalReconPIDAsymmetry [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
251  Float_t tecalReconPIDCircularity [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
252  Float_t tecalReconPIDFBR [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
253  Float_t tecalReconPIDMaxRatio [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
254  Float_t tecalReconPIDMeanPos [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
255  Float_t tecalReconPIDShowerAngle [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
256  Float_t tecalReconPIDShowerWidth [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
257  Float_t tecalReconPIDTransverseChargeRatio[NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
258  Float_t tecalReconPIDTruncatedMaxRatio [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
259  Float_t tecalReconPointing [NMAXTECALRECONOBJECTS][3]; //[tecalReconCounter]
260  Float_t tecalReconThrust [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
261  Float_t tecalReconThrustAxis [NMAXTECALRECONOBJECTS][3]; //[tecalReconCounter]
262  Float_t tecalReconThrustOrigin [NMAXTECALRECONOBJECTS][3]; //[tecalReconCounter]
263  Int_t tecalReconTimeBunch [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
264  Float_t tecalReconTotalHitCharge [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
265  Int_t tecalReconTrueID [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
266  Int_t tecalReconTrueIDPrimary [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
267  Int_t tecalReconTrueIDRecursive [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
268  Int_t tecalReconTrueIDSingle [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
269  Int_t tecalReconUniqueID [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
270  Int_t tecalReconBunch [NMAXTECALRECONOBJECTS]; //[tecalReconCounter]
271 
272 
273  // List of branches
274  TBranch *b_sIsMC; //!
275  TBranch *b_sInputFileIndex; //!
276  TBranch *b_sRooVtxEntry; //!
277  TBranch *b_sBeamPOT; //!
278  TBranch *b_sBeamPOTCT4; //!
279  TBranch *b_sBeamSpill; //!
280  TBranch *b_sBeamSpillNumber; //!
281  TBranch *b_sBeamBeamRunNumber; //!
282  TBranch *b_sDQND280Flag; //!
283  TBranch *b_sDQDetFlag; //!
284 
285 
286  TBranch *b_sTrueVertexLeptonPDG; //!
287  TBranch *b_sTrueVertexLeptonDir; //!
288  TBranch *b_sTrueVertexProtonDir; //!
289  TBranch *b_sTrueVertexPionDir; //!
290  TBranch *b_sTrueVertexLeptonMom; //!
291  TBranch *b_sTrueVertexProtonMom; //!
292  TBranch *b_sTrueVertexPionMom; //!
293  TBranch *b_sTrueVertexTargetDir; //!
294  TBranch *b_sTrueVertexTargetMom; //!
295  TBranch *b_sTrueVertexIsPauliBlocked; //!
296  TBranch *b_sTrueVertexIsCohOnH; //!
297  TBranch *b_sTrueVertexNPrimaryParticles; //!
298 
299  TBranch *b_trReconPDG; //!
300  TBranch *b_trDirectionAtVertex; //!
301 
302  TBranch *b_trNTRACKERs; //!
303 
304  TBranch *b_trTpcPullmu; //!
305  TBranch *b_trTpcPullele; //!
306  TBranch *b_trTpcPullp; //!
307  TBranch *b_trTpcPullpi; //!
308  TBranch *b_trTpcPullk; //!
309  TBranch *b_trNTimeNodes; //!
310  TBranch *b_trTimeNodeDetector; //!
311  TBranch *b_trTimeNodeTimeStart; //!
312  TBranch *b_trTimeNodeTimeEnd; //!
313 
314  TBranch *b_trTpcUniqueID; //!
315  TBranch *b_trFgdUniqueID; //!
316  TBranch *b_trECALUniqueID; //!
317  TBranch *b_trSMRDUniqueID; //!
318  TBranch *b_trP0DUniqueID; //!
319 
320  TBranch *b_trTpcRawdEdxMeas; //!
321  TBranch *b_trTpcRawdEdxExpMu; //!
322  TBranch *b_trTpcRawdEdxExpEle; //!
323  TBranch *b_trTpcRawdEdxExpP; //!
324  TBranch *b_trTpcRawdEdxExpPi; //!
325  TBranch *b_trTpcRawdEdxExpK; //!
326 
327  TBranch *b_trFgdHasFgdVA; //!
328  TBranch *b_trFgdHasFgdVA_fmode; //!
329  TBranch *b_trFgdTypeVA; //!
330  TBranch *b_trFgdHasFgdEA; //!
331  TBranch *b_trFgdHasFgdEA_fmode; //!
332  TBranch *b_trFgdTypeEA; //!
333  TBranch *b_trFgdEnd0x0; //!
334  TBranch *b_trFgdEnd1x1; //!
335  TBranch *b_trFgdEnd3x3; //!
336  TBranch *b_trFgdEnd5x5; //!
337  TBranch *b_trFgdEnd7x7; //!
338 
339  TBranch *b_trP0DAvgTime; //!
340 
341  TBranch *b_trTRACKERDetector; //!
342  TBranch *b_trTRACKERNHits; //!
343  TBranch *b_trTRACKERNNodes; //!
344  TBranch *b_trTRACKERUniqueID; //!
345  TBranch *b_trTRACKERLength; //!
346  TBranch *b_trTRACKERDirectionStart; //!
347  TBranch *b_trTRACKERDirectionEnd; //!
348  TBranch *b_trTRACKERPositionStart; //!
349  TBranch *b_trTRACKERPositionEnd; //!
350  TBranch *b_trTRACKERCharge; //!
351  TBranch *b_trTRACKERMomentum; //!
352  TBranch *b_trTRACKERMomentumEnd; //!
353 
354  TBranch *b_trDirectionStartFlip; //!
355  TBranch *b_trDirectionEndFlip; //!
356  TBranch *b_trRangeMomentumMuonFlip; //!
357  TBranch *b_trRangeMomentumProtonFlip; //!
358  TBranch *b_trMomentumAtVertex; //!
359 
360  TBranch *b_trECALPIDMipPion; //!
361  TBranch *b_trECALContainment; //!
362  TBranch *b_trLength; //!
363 
364  TBranch *b_trSMRDEDeposit; //!
365 
366 
367  TBranch *b_tecalReconCounter; //!
368  TBranch *b_tecalReconAverageHitTime; //!
369  TBranch *b_tecalReconAverageZPosition; //!
370  TBranch *b_tecalReconContainment; //!
371  TBranch *b_tecalReconEFitResult; //!
372  TBranch *b_tecalReconEFitUncertainty; //!
373  TBranch *b_tecalReconFirstLayer; //!
374  TBranch *b_tecalReconIsShowerLike; //!
375  TBranch *b_tecalReconIsTrackLike; //!
376  TBranch *b_tecalReconLastLayer; //!
377  TBranch *b_tecalReconLikeMIPEM; //!
378  TBranch *b_tecalReconLikeMIPPion; //!
379  TBranch *b_tecalReconLikeEMHIP; //!
380  TBranch *b_tecalReconLikeMIPEMLow; //!
381  TBranch *b_tecalReconMatchingLike; //!
382  TBranch *b_tecalReconMichelTagNDelayedCluster; //!
383  TBranch *b_tecalReconModule; //!
384  TBranch *b_tecalReconMostDownStreamLayerHit; //!
385  TBranch *b_tecalReconMostUpStreamLayerHit; //!
386  TBranch *b_tecalReconNHits; //!
387  TBranch *b_tecalReconNLayersHit; //!
388  TBranch *b_tecalReconObjectLength; //!
389  TBranch *b_tecalReconPIDAMR; //!
390  TBranch *b_tecalReconPIDAngle; //!
391  TBranch *b_tecalReconPIDAsymmetry; //!
392  TBranch *b_tecalReconPIDCircularity; //!
393  TBranch *b_tecalReconPIDFBR; //!
394  TBranch *b_tecalReconPIDMaxRatio; //!
395  TBranch *b_tecalReconPIDMeanPos; //!
396  TBranch *b_tecalReconPIDShowerAngle; //!
397  TBranch *b_tecalReconPIDShowerWidth; //!
398  TBranch *b_tecalReconPIDTransverseChargeRatio; //!
399  TBranch *b_tecalReconPIDTruncatedMaxRatio; //!
400  TBranch *b_tecalReconPointing; //!
401  TBranch *b_tecalReconThrust; //!
402  TBranch *b_tecalReconThrustAxis; //!
403  TBranch *b_tecalReconThrustOrigin; //!
404  TBranch *b_tecalReconTimeBunch; //!
405  TBranch *b_tecalReconTotalHitCharge; //!
406  TBranch *b_tecalReconTrueID; //!
407  TBranch *b_tecalReconTrueIDPrimary; //!
408  TBranch *b_tecalReconTrueIDRecursive; //!
409  TBranch *b_tecalReconTrueIDSingle; //!
410  TBranch *b_tecalReconUniqueID; //!
411  TBranch *b_tecalReconBunch; //!
412 };
413 
414 #endif
415 
416 
Representation of the beam quality and perhaps other beam information as needed.
Representation of a global track.
Representation of the ND280 data quality flags.
FlatTreeConverter(bool readRooTrackerVtx=false)
P0DRecon Vertex.
Representation of the ND280 trigger bits.
Representation of a true Monte Carlo vertex.
Representation of an ECAL segment of a global track.
Representation of the ND280 data quality flags.
bool _isUsingReconDirFGDOnly
Store whether AnaLocalReconBunch information is enabled in the parameters file.
This Ana* object is used to flatten TECALReconObjects from ReconDir/TrackerECal.
Int_t GetSpill(Long64_t &entry, AnaSpillC *&spill)
int GetLocalDetEnum(SubDetId::SubDetEnum det, SubDetId::SubDetEnum i)
Get old local detector enumeration to find array index of Flat tree.
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.
SubDetEnum
Enumeration of all detector systems and subdetectors.
Definition: SubDetId.hxx:25
Representation of a global track.
This Ana* object is used to flatten PECALReconObjects from ReconDir/P0DECal.
Representation of a TPC segment of a global track.
Representation of a global vertex.
virtual bool AddFileToTChain(const std::string &inputString)
Add the file specified to fChain, and any friend chains that were set up.
This is a base P0D object that shares the common attributes of Vertex, Particle, Track, Shower, Cluster, Hit.
Representation of a FGD segment of a global track.
This Ana* object is used to flatten TECALUnmatchedObjects from ReconDir/TrackerECal.
Int_t tecalReconCounter
AnaLocalReconBunch information.
virtual bool Initialize()
Representation of a TPC segment of a global track.
virtual void DefineBranches()
Define the branches to be read from the input tree.
Representation of a P0D segment of a global track.
Int_t GetSpill(Long64_t &entry, AnaSpillC *&spill)
Representation of a reconstructed particle (track or shower).
virtual void FillBunchInfo(std::vector< AnaTrueParticleB *> &trueParticles, AnaBunchB *bunch)
Representation of a true Monte Carlo trajectory/particle.
Representation of the beam information, including POT and quality.