HighLAND
RedoTreeConverter.hxx
1 /*
2  converter for new RedoTree input format (direct dump of analysis data classes)
3 
4  A. Cervera September 2012
5 */
6 
7 
8 #ifndef RedoTreeConverter_h
9 #define RedoTreeConverter_h
10 
11 #include "InputConverter.hxx"
12 #include "BaseDataClasses.hxx"
13 #include <TClonesArray.h>
14 
16 
17  public:
18 
20  virtual ~RedoTreeConverter();
21 
22  virtual bool Initialize();
23 
24  virtual void Reset() {
26  _firstFile = true;
27  }
28 
29  /// Define the branches to be read from the input tree
30  virtual void DefineBranches();
31 
32 
33  Int_t GetSpill(Long64_t& entry, AnaSpillC*& spill);
34  Int_t GetEvent(Long64_t& entry, AnaEventC*& event);
35 
36  /// Record the POT for the current spill, based on information in the AnaBeam
37  /// member of the current AnaSpillB.
38  void IncrementPOTBySpill();
39 
40  virtual bool AddFileToTChain(const std::string& inputString);
41  Long64_t GetEntries();
42 
43  virtual AnaSpillB* MakeSpill() { return new AnaSpillB(); }
44  virtual AnaBunchB* MakeBunch() { return new AnaBunchB(); }
45  virtual AnaBeamB* MakeBeam() { return new AnaBeamB(); }
46  virtual AnaDataQualityB* MakeDataQuality() { return new AnaDataQualityB(); }
47  virtual AnaEventInfoB* MakeEventInfo() { return new AnaEventInfoB(); }
48  //virtual AnaTrigger* MakeTrigger() { return new AnaTrigger(); }
49  virtual AnaVertexB* MakeVertex() { return new AnaVertexB(); }
50  virtual AnaTrueParticleB* MakeTrueParticle() { return new AnaTrueParticleB(); }
51  virtual AnaTrueVertexB* MakeTrueVertex() { return new AnaTrueVertexB(); }
52  virtual AnaTrackB* MakeTrack() { return new AnaTrackB(); }
53  virtual AnaTPCParticleB* MakeTpcTrack() { return new AnaTPCParticleB(); }
54  virtual AnaTrackerTrackB* MakeTrackerTrack() { return new AnaTrackerTrackB(); }
55  virtual AnaFGDParticleB* MakeFgdTrack() { return new AnaFGDParticleB(); }
56  virtual AnaP0DParticleB* MakeP0dTrack() { return new AnaP0DParticleB(); }
57  virtual AnaECALParticleB* MakeEcalTrack() { return new AnaECALParticleB(); }
58  virtual AnaSMRDParticleB* MakeSmrdTrack() { return new AnaSMRDParticleB(); }
59  virtual AnaFgdTimeBinB* MakeFgdTimeBin() { return new AnaFgdTimeBinB(); }
60 
61 
62  void FillEventInfo(AnaEventB* event);
63  void FillEventSpillInfo(AnaEventB* event);
64 
65  virtual void FillInfo(AnaSpillB* spill);
66  virtual void FillBunchInfo(std::vector<AnaTrueParticleB*>& trueParticles, AnaBunchB* bunch);
67  virtual void FillFgdTimeBinInfo(AnaEventB* event);
68  virtual void FillTrackInfo(AnaEventB* event, int itrk, AnaTrackB* track);
69  virtual void FillTrueParticleInfo(AnaEventB* event, int itrk, AnaTrueParticleB* track);
70  virtual void FillTpcInfo(AnaEventB* event, int itrk, int tpc, AnaTPCParticleB* track);
71  virtual void FillFgdTimeBinInfo(std::vector<AnaFgdTimeBinB*>& AnaFgdTimeBins);
72  virtual void FillTrackInfo(std::vector<AnaTrueParticleB*>& trueParticles, int itrk, AnaTrackB* track);
73  virtual void FillTrueParticleInfo(std::vector<AnaTrueVertexB*>& trueVertices, int itrk, AnaTrueParticleB* track);
74  virtual void FillTpcInfo(std::vector<AnaTrueParticleB*>& trueParticles, int itrk, int tpc, AnaTPCParticleB* track);
75  virtual void FillFgdInfo(int itrk, int fgd, AnaFGDParticleB* track);
76  virtual void FillEcalInfo(int itrk, int ecal, AnaECALParticleB* track);
77  virtual void FillSmrdInfo(int itrk, int smrd, AnaSMRDParticleB* track);
78  virtual void FillP0dInfo(int itrk, int p0d, AnaP0DParticleB* track);
79 
80  void FillSubdetectorInfo(AnaEventB* event, int itrk, AnaTrackB* track);
81  virtual void FillSubdetectorInfo(std::vector<AnaTrueParticleB*>& trueParticles, int itrk, AnaTrackB* track);
82 
83  virtual void FillTrueVertexInfo(int ivtx, AnaTrueVertexB* vertex);
84  virtual bool FillTrueVertexRooInfo(AnaTrueVertexB*){return true;}
85 
86  virtual void FillDQInfo(AnaDataQualityB* dq);
87  virtual void FillBeamInfo(AnaBeamB* beam);
88  // void FillTriggerInfo(AnaTrigger* trigger);
89 
90  void FindTrueParticle(AnaEventB* event, int ID, AnaTrueObjectC*& trueParticle);
91  void FindTrueParticle(std::vector<AnaTrueParticleB*>& trueParticles, int ID, AnaTrueObjectC*& trueParticle);
92 // int FindTrueVertex(int ID, AnaTrueVertexB*& trueVertex); // not used anymore
93  virtual void FillVertexInfo(int ivtx, AnaVertexB* vertex, AnaBunchB* bunch);
94  void FillVertexInfo(int ivtx, AnaVertexB* vertex, AnaEventB* event);
95  virtual AnaParticleB* FindParticle(int ID, AnaBunchB* bunch);
96  AnaParticleB* FindParticle(int ID, AnaEventB* event);
97 
98 protected:
99 
100  bool _firstFile;
101  Int_t _entry_roo;
102  TString _currentfilename;
103 
104  AnaSpillB* _spill;
105 
106  AnaEventB* _prevEvent;
107 
108  TChain *flattree;
109  TChain *GRooTrackerVTX;
110  TChain *NRooTrackerVTX;
111 
112  bool fGenie;
113  bool fNeut;
114 
115  protected:
116 
117  // Declaration of leaf types
118  Int_t sRun;
119  Int_t sSubrun;
120  Int_t sEvt;
121  Int_t sEventTime;
122  Int_t sNTotalTrueParticles;
123  Int_t sNTotalTrueVertices;
124  Int_t sBeamSpill;
125  Int_t sBeamSpillNumber;
126  Int_t sBeamGoodSpill;
127  Int_t sBeamBeamRunNumber;
128  Int_t sDQGoodDaq;
129  Int_t sDQND280Flag;
130  Int_t sDQDetFlag[7];
131  Int_t sTriggerFGDCosmic;
132  Int_t sTriggerTripTCosmic;
133  Int_t sNTrueVertices;
134  Int_t sTrueVertexID[NMAXTRUEVERTICES]; //[sNTrueVertices]
135  Int_t sTrueVertexRooVtxIndex[NMAXTRUEVERTICES]; //[sNTrueVertices]
136  Int_t sTrueVertexRooVtxEntry[NMAXTRUEVERTICES]; //[sNTrueVertices]
137  Int_t sTrueVertexReacCode[NMAXTRUEVERTICES]; //[sNTrueVertices]
138  Int_t sTrueVertexNTrueParticles[NMAXTRUEVERTICES]; //[sNTrueVertices]
139  Int_t sTrueVertexNReconTracks[NMAXTRUEVERTICES]; //[sNTrueVertices]
140  Int_t sTrueVertexNReconVertices[NMAXTRUEVERTICES]; //[sNTrueVertices]
141  Int_t sTrueVertexNBaryons[NMAXTRUEVERTICES]; //[sNTrueVertices]
142  Int_t sTrueVertexBunch[NMAXTRUEVERTICES]; //[sNTrueVertices]
143  Int_t sTrueVertexDetector[NMAXTRUEVERTICES]; //[sNTrueVertices]
144  Int_t sTrueVertexNuPDG[NMAXTRUEVERTICES]; //[sNTrueVertices]
145  Int_t sTrueVertexTargetPDG[NMAXTRUEVERTICES]; //[sNTrueVertices]
146  Int_t sNTrueParticles;
147  Int_t sTrueVertexNuParentPDG[NMAXTRUEVERTICES]; //[sNTrueVertices]
148  Int_t sTrueParticleID[NMAXTRUEPARTICLES]; //[sNTrueParticles]
149  Int_t sTrueParticleBunch[NMAXTRUEPARTICLES]; //[sNTrueParticles]
150  Int_t sTrueParticlePDG[NMAXTRUEPARTICLES]; //[sNTrueParticles]
151  Int_t sTrueParticleParentPDG[NMAXTRUEPARTICLES]; //[sNTrueParticles]
152  Int_t sTrueParticleGParentPDG[NMAXTRUEPARTICLES]; //[sNTrueParticles]
153  Int_t sTrueParticlePrimaryID[NMAXTRUEPARTICLES]; //[sNTrueParticles]
154  Int_t sTrueParticleParentID[NMAXTRUEPARTICLES]; //[sNTrueParticles]
155  Int_t sTrueParticleVertexIndex[NMAXTRUEPARTICLES]; //[sNTrueParticles]
156  Int_t sTrueParticleTruthVertexID[NMAXTRUEPARTICLES]; //[sNTrueParticles]
157  Int_t sTrueParticleNReconTracks[NMAXTRUEPARTICLES]; //[sNTrueParticles]
158  Int_t sTrueParticleNDetCrossings[NMAXTRUEPARTICLES]; //[NTrueParticles]
159  Int_t sTrueParticleDetector[NMAXTRUEPARTICLES][NMAXCROSSEDDET]; //[NTrueParticles]
160  Int_t sTrueParticleInActive[NMAXTRUEPARTICLES][NMAXCROSSEDDET]; //[NTrueParticles]
161  Int_t sTrueParticleIsTruePrimaryPi0DecayPhoton[NMAXTRUEPARTICLES]; //[sNTrueParticles]
162  Int_t sTrueParticleIsTruePrimaryPi0DecayPhotonChild[NMAXTRUEPARTICLES]; //[sNTrueParticles]
163  Int_t sNFgdTimeBins;
164  Int_t sFgdTimeBinNHits1[NMAXFGDTIMEBINS]; //[sNFgdTimeBins]
165  Int_t sFgdTimeBinNHits2[NMAXFGDTIMEBINS]; //[sNFgdTimeBins]
166  Int_t sFgdTimeBinG4ID[NMAXFGDTIMEBINS]; //[sNFgdTimeBins]
167  Int_t Bunch;
168  Int_t NVertices;
169  Int_t vPrimaryIndex[NMAXVERTICES]; //[NVertices]
170  Int_t vBunch[NMAXVERTICES]; //[NVertices]
171  Int_t vNDOF[NMAXVERTICES]; //[NVertices]
172  Int_t vNReconParticles[NMAXVERTICES]; //[NVertices]
173  Int_t vNTrueVerticesMatch[NMAXVERTICES]; //[NVertices]
174  Int_t vParticlesUniqueID[NMAXVERTICES][NMAXPARTICLESINVERTEX]; //[NVertices]
175  Int_t vTrueVertexIndex[NMAXVERTICES][NMAXTRUEVERTICESMATCH]; //[NVertices]
176  Int_t NParticles;
177  Int_t trUniqueID[NMAXPARTICLES]; //[NParticles]
178  Int_t trStatus[NMAXPARTICLES]; //[NParticles]
179  Int_t trBunch[NMAXPARTICLES]; //[NParticles]
180  Int_t trNReconVertices[NMAXPARTICLES]; //[NParticles]
181  Int_t trDetectors[NMAXPARTICLES]; //[NParticles]
182  Int_t trDetUsed[NMAXPARTICLES][NDETECTORS]; //[NParticles]
183  Int_t trNTPCs[NMAXPARTICLES]; //[NParticles]
184  Int_t trNFGDs[NMAXPARTICLES]; //[NParticles]
185  Int_t trNECALs[NMAXPARTICLES]; //[NParticles]
186  Int_t trNSMRDs[NMAXPARTICLES]; //[NParticles]
187  Int_t trNP0Ds[NMAXPARTICLES]; //[NParticles]
188  Int_t trNHits[NMAXPARTICLES]; //[NParticles]
189  Int_t trNNodes[NMAXPARTICLES]; //[NParticles]
190  Int_t trNDOF[NMAXPARTICLES]; //[NParticles]
191  Int_t trTpcDetector[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
192  Int_t trTpcNHits[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
193  Int_t trTpcNNodes[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
194 
195  Int_t trFgdDetector[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
196  Int_t trFgdNHits[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
197  Int_t trFgdNNodes[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
198  Int_t trFgdContainment[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
199 
200  Int_t trECALDetector[NMAXPARTICLES][NECALSUBDETS]; //[NParticles]
201  Int_t trECALNHits[NMAXPARTICLES][NECALSUBDETS]; //[NParticles]
202  Int_t trECALNNodes[NMAXPARTICLES][NECALSUBDETS]; //[NParticles]
203  Int_t trECALMostUpStreamLayerHit[NMAXPARTICLES][NECALSUBDETS]; //[NParticles]
204  Int_t trECALIsShowerLike[NMAXPARTICLES][NECALSUBDETS]; //[NParticles]
205 
206  Int_t trSMRDDetector[NMAXPARTICLES][NSMRDSUBDETS]; //[NParticles]
207  Int_t trSMRDNHits[NMAXPARTICLES][NSMRDSUBDETS]; //[NParticles]
208  Int_t trSMRDNNodes[NMAXPARTICLES][NSMRDSUBDETS]; //[NParticles]
209 
210  Int_t trP0DDetector[NMAXPARTICLES][1]; //[NParticles]
211  Int_t trP0DNHits[NMAXPARTICLES][1]; //[NParticles]
212  Int_t trP0DNNodes[NMAXPARTICLES][1]; //[NParticles]
213 
214  Int_t trTrueParticleID[NMAXPARTICLES]; //[NParticles]
215  Int_t trTpcTrueParticleID[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
216 
217  Float_t Weight;
218  Float_t sTrueVertexNuEnergy[NMAXTRUEVERTICES]; //[sNTrueVertices]
219  Float_t sTrueVertexQ2[NMAXTRUEVERTICES]; //[sNTrueVertices]
220  Float_t sTrueVertexPosition[NMAXTRUEVERTICES][4]; //[sNTrueVertices]
221  Float_t sBeamPOT;
222  Float_t sBeamPOTCT4;
223  Float_t sPOTSincePreviousSpill;
224  Float_t sTrueVertexNuParentDecPoint[NMAXTRUEVERTICES][4]; //[sNTrueVertices]
225  Float_t sTrueVertexNuDir[NMAXTRUEVERTICES][3]; //[sNTrueVertices]
226  Float_t sTrueParticlePurity[NMAXTRUEPARTICLES]; //[sNTrueParticles]
227  Float_t sTrueParticleMomentum[NMAXTRUEPARTICLES]; //[sNTrueParticles]
228  Float_t sTrueParticleCharge[NMAXTRUEPARTICLES]; //[sNTrueParticles]
229  Float_t sTrueParticlePosition[NMAXTRUEPARTICLES][4]; //[sNTrueParticles]
230  Float_t sTrueParticlePositionEnd[NMAXTRUEPARTICLES][4]; //[sNTrueParticles]
231  Float_t sTrueParticleDirection[NMAXTRUEPARTICLES][3]; //[sNTrueParticles]
232  Float_t sTrueParticleEntrancePosition[NMAXTRUEPARTICLES][NMAXCROSSEDDET][4]; //[NTrueParticles]
233  Float_t sTrueParticleExitPosition[NMAXTRUEPARTICLES][NMAXCROSSEDDET][4]; //[NTrueParticles]
234  Float_t sTrueParticleEntranceMomentum[NMAXTRUEPARTICLES][NMAXCROSSEDDET][3]; //[NTrueParticles]
235  Float_t sTrueParticleExitMomentum[NMAXTRUEPARTICLES][NMAXCROSSEDDET][3]; //[NTrueParticles]
236  Float_t sFgdTimeBinMinTime[NMAXFGDTIMEBINS]; //[sNFgdTimeBins]
237  Float_t sFgdTimeBinMaxTime[NMAXFGDTIMEBINS]; //[sNFgdTimeBins]
238  Float_t sFgdTimeBinRawChargeSum1[NMAXFGDTIMEBINS]; //[sNFgdTimeBins]
239  Float_t sFgdTimeBinRawChargeSum2[NMAXFGDTIMEBINS]; //[sNFgdTimeBins]
240  Float_t vPosition[NMAXVERTICES][4]; //[NVertices]
241  Float_t vVariance[NMAXVERTICES][4]; //[NVertices]
242  Float_t vChi2[NMAXVERTICES]; //[NVertices]
243  Float_t vTrueVerticesClean[NMAXVERTICES][NMAXTRUEVERTICESMATCH]; //[NVertices]
244  Float_t vTrueVerticesCompl[NMAXVERTICES][NMAXTRUEVERTICESMATCH]; //[NVertices]
245  Float_t trChi2[NMAXPARTICLES]; //[NParticles]
246  Float_t trCharge[NMAXPARTICLES]; //[NParticles]
247  Float_t trToFFGD1_FGD2[NMAXPARTICLES]; //!
248  Float_t trToFP0D_FGD1[NMAXPARTICLES]; //!
249  Float_t trToFECal_FGD1[NMAXPARTICLES]; //!
250  Float_t trToFECal_FGD2[NMAXPARTICLES]; //!
251  Float_t trToFFlag_FGD1_FGD2[NMAXPARTICLES]; //!
252  Float_t trToFFlag_P0D_FGD1[NMAXPARTICLES]; //!
253  Float_t trToFFlag_ECal_FGD1[NMAXPARTICLES]; //!
254  Float_t trToFFlag_ECal_FGD2[NMAXPARTICLES]; //!
255  Float_t trMomentum[NMAXPARTICLES]; //[NParticles]
256  Float_t trMomentumError[NMAXPARTICLES]; //[NParticles]
257  Float_t trMomentumMuon[NMAXPARTICLES]; //[NParticles]
258  Float_t trMomentumErrorMuon[NMAXPARTICLES]; //[NParticles]
259  Float_t trMomentumProton[NMAXPARTICLES]; //[NParticles]
260  Float_t trMomentumErrorProton[NMAXPARTICLES]; //[NParticles]
261  Float_t trMomentumEle[NMAXPARTICLES]; //[NParticles]
262  Float_t trMomentumErrorEle[NMAXPARTICLES]; //[NParticles]
263  Float_t trRangeMomentumEle[NMAXPARTICLES]; //[NParticles]
264  Float_t trRangeMomentumMuon[NMAXPARTICLES]; //[NParticles]
265  Float_t trRangeMomentumProton[NMAXPARTICLES]; //[NParticles]
266  Float_t trDirectionStart[NMAXPARTICLES][3]; //[NParticles]
267  Float_t trDirectionEnd[NMAXPARTICLES][3]; //[NParticles]
268  Float_t trPositionStart[NMAXPARTICLES][4]; //[NParticles]
269  Float_t trPositionEnd[NMAXPARTICLES][4]; //[NParticles]
270  Float_t trMomentumFlip[NMAXPARTICLES]; //[NParticles]
271 
272  Float_t trTpcLength[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
273  Float_t trTpcDirectionStart[NMAXPARTICLES][NMAXTPCS][3]; //[NParticles]
274  Float_t trTpcDirectionEnd[NMAXPARTICLES][NMAXTPCS][3]; //[NParticles]
275  Float_t trTpcPositionStart[NMAXPARTICLES][NMAXTPCS][4]; //[NParticles]
276  Float_t trTpcPositionEnd[NMAXPARTICLES][NMAXTPCS][4]; //[NParticles]
277  Float_t trTpcCharge[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
278  Float_t trTpcMomentum[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
279  Float_t trTpcMomentumError[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
280  Float_t trTpcBackMomentum[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
281  Float_t trTpcRefitCharge[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
282  Float_t trTpcRefitMomentum[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
283  Float_t trTpcRefitPosition[NMAXPARTICLES][NMAXTPCS][4]; //[NParticles]
284  Float_t trTpcRefitDirection[NMAXPARTICLES][NMAXTPCS][3]; //[NParticles]
285  Float_t trTpcEFieldRefitMomentum[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
286  Float_t trTpcdEdxMeas[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
287  Float_t trTpcdEdxExpMu[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
288  Float_t trTpcdEdxExpEle[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
289  Float_t trTpcdEdxExpP[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
290  Float_t trTpcdEdxExpPi[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
291  Float_t trTpcdEdxExpK[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
292  Float_t trTpcdEdxSigmaMu[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
293  Float_t trTpcdEdxSigmaEle[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
294  Float_t trTpcdEdxSigmaP[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
295  Float_t trTpcdEdxSigmaPi[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
296  Float_t trTpcdEdxSigmaK[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
297  Float_t trTpcPurity[NMAXPARTICLES][NMAXTPCS]; //[NParticles]
298 
299  Float_t trFgdLength[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
300  Float_t trFgdDirectionStart[NMAXPARTICLES][NMAXFGDS][3]; //[NParticles]
301  Float_t trFgdDirectionEnd[NMAXPARTICLES][NMAXFGDS][3]; //[NParticles]
302  Float_t trFgdPositionStart[NMAXPARTICLES][NMAXFGDS][4]; //[NParticles]
303  Float_t trFgdPositionEnd[NMAXPARTICLES][NMAXFGDS][4]; //[NParticles]
304  Float_t trFgdX[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
305  Float_t trFgdE[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
306  Float_t trFgdPullmu[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
307  Float_t trFgdPullp[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
308  Float_t trFgdPullpi[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
309  Float_t trFgdPullno[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
310  Float_t trFgdAvgTime[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
311  Float_t trFgdVertex1x1[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
312  Float_t trFgdVertex3x3[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
313  Float_t trFgdVertex5x5[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
314  Float_t trFgdVertex7x7[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
315  Float_t trFgdVertexLayer[NMAXPARTICLES][NMAXFGDS]; //[NParticles]
316 
317  Float_t trECALLength[NMAXPARTICLES][NECALSUBDETS]; //[NParticles]
318  Float_t trECALDirectionStart[NMAXPARTICLES][NECALSUBDETS][3]; //[NParticles]
319  Float_t trECALDirectionEnd[NMAXPARTICLES][NECALSUBDETS][3]; //[NParticles]
320  Float_t trECALPositionStart[NMAXPARTICLES][NECALSUBDETS][4]; //[NParticles]
321  Float_t trECALPositionEnd[NMAXPARTICLES][NECALSUBDETS][4]; //[NParticles]
322  Float_t trECALEMEnergy[NMAXPARTICLES][NECALSUBDETS]; //[NParticles]
323  Float_t trECALEDeposit[NMAXPARTICLES][NECALSUBDETS]; //[NParticles]
324  Float_t trECALAvgTime[NMAXPARTICLES][NECALSUBDETS]; //[NParticles]
325  Float_t trECALPIDMipEm[NMAXPARTICLES][NECALSUBDETS]; //[NParticles]
326  Float_t trECALPIDEmHip[NMAXPARTICLES][NECALSUBDETS]; //[NParticles]
327  Float_t trECALShowerPosition[NMAXPARTICLES][NECALSUBDETS][3]; //[NParticles]
328 
329 
330  Float_t trSMRDLength[NMAXPARTICLES][NSMRDSUBDETS]; //[NParticles]
331  Float_t trSMRDDirectionStart[NMAXPARTICLES][NSMRDSUBDETS][3]; //[NParticles]
332  Float_t trSMRDDirectionEnd[NMAXPARTICLES][NSMRDSUBDETS][3]; //[NParticles]
333  Float_t trSMRDPositionStart[NMAXPARTICLES][NSMRDSUBDETS][4]; //[NParticles]
334  Float_t trSMRDPositionEnd[NMAXPARTICLES][NSMRDSUBDETS][4]; //[NParticles]
335  Float_t trSMRDAvgTime[NMAXPARTICLES][NSMRDSUBDETS]; //[NParticles]
336 
337  Float_t trP0DLength[NMAXPARTICLES][1]; //[NParticles]
338  Float_t trP0DELoss[NMAXPARTICLES][1]; //[NParticles]
339  Float_t trP0DDirectionStart[NMAXPARTICLES][1][3]; //[NParticles]
340  Float_t trP0DDirectionEnd[NMAXPARTICLES][1][3]; //[NParticles]
341  Float_t trP0DPositionStart[NMAXPARTICLES][1][4]; //[NParticles]
342  Float_t trP0DPositionEnd[NMAXPARTICLES][1][4]; //[NParticles]
343 
344  // List of branches
345  TBranch *b_sPOTSincePreviousSpill; //!
346  TBranch *b_sRun; //!
347  TBranch *b_sSubrun; //!
348  TBranch *b_sEvt; //!
349  TBranch *b_sEventTime; //!
350  TBranch *b_sNTotalTrueParticles; //!
351  TBranch *b_sNTotalTrueVertices; //!
352  TBranch *b_sBeamGoodSpill; //!
353  TBranch *b_sDQGoodDaq; //!
354  TBranch *b_sTriggerFGDCosmic;//!
355  TBranch *b_sTriggerTripTCosmic;//!
356  TBranch *b_sNTrueVertices; //!
357  TBranch *b_sTrueVertexID; //!
358  TBranch *b_sTrueVertexRooVtxIndex; //!
359  TBranch *b_sTrueVertexRooVtxEntry; //!
360  TBranch *b_sTrueVertexReacCode; //!
361  TBranch *b_sTrueVertexNTrueParticles; //!
362  TBranch *b_sTrueVertexNReconTracks; //!
363  TBranch *b_sTrueVertexNReconVertices; //!
364  TBranch *b_sTrueVertexNBaryons; //!
365  TBranch *b_sTrueVertexBunch; //!
366  TBranch *b_sTrueVertexDetector; //!
367  TBranch *b_sTrueVertexNuPDG; //!
368  TBranch *b_sTrueVertexTargetPDG; //!
369  TBranch *b_sTrueVertexNuEnergy; //!
370  TBranch *b_sTrueVertexQ2; //!
371  TBranch *b_sTrueVertexPosition; //!
372  TBranch *b_sTrueVertexNuParentPDG; //!
373  TBranch *b_sTrueVertexNuParentDecPoint; //!
374  TBranch *b_sTrueVertexNuDir; //!
375  TBranch *b_sNTrueParticles; //!
376  TBranch *b_sTrueParticleID; //!
377  TBranch *b_sTrueParticleBunch; //!
378  TBranch *b_sTrueParticlePDG; //!
379  TBranch *b_sTrueParticleParentPDG; //!
380  TBranch *b_sTrueParticleGParentPDG; //!
381  TBranch *b_sTrueParticlePrimaryID; //!
382  TBranch *b_sTrueParticleParentID; //!
383  TBranch *b_sTrueParticlePurity; //!
384  TBranch *b_sTrueParticleMomentum; //!
385  TBranch *b_sTrueParticleCharge; //!
386  TBranch *b_sTrueParticleVertexIndex; //!
387  TBranch *b_sTrueParticleTruthVertexID; //!
388  TBranch *b_sTrueParticleNReconTracks; //!
389  TBranch *b_sTrueParticlePosition; //!
390  TBranch *b_sTrueParticlePositionEnd; //!
391  TBranch *b_sTrueParticleDirection; //!
392  TBranch *b_sTrueParticleNDetCrossings;
393  TBranch *b_sTrueParticleEntrancePosition;
394  TBranch *b_sTrueParticleExitPosition;
395  TBranch *b_sTrueParticleEntranceMomentum;
396  TBranch *b_sTrueParticleExitMomentum;
397  TBranch *b_sTrueParticleDetector;
398  TBranch *b_sTrueParticleInActive;
399  TBranch *b_sTrueParticleIsTruePrimaryPi0DecayPhoton; //!
400  TBranch *b_sTrueParticleIsTruePrimaryPi0DecayPhotonChild; //!
401  TBranch *b_sNFgdTimeBins; //!
402  TBranch *b_sFgdTimeBinMinTime; //!
403  TBranch *b_sFgdTimeBinMaxTime; //!
404  TBranch *b_sFgdTimeBinNHits1; //!
405  TBranch *b_sFgdTimeBinNHits2; //!
406  TBranch *b_sFgdTimeBinRawChargeSum1; //!
407  TBranch *b_sFgdTimeBinRawChargeSum2; //!
408  TBranch *b_sFgdTimeBinG4ID; //!
409  TBranch *b_Bunch; //!
410  TBranch *b_Weight; //!
411  TBranch *b_NVertices; //!
412  TBranch *b_vPrimaryIndex; //!
413  TBranch *b_vBunch; //!
414  TBranch *b_vPosition; //!
415  TBranch *b_vVariance; //!
416  TBranch *b_vChi2; //!
417  TBranch *b_vNDOF; //!
418  TBranch *b_vNReconParticles; //!
419  TBranch *b_vNTrueVerticesMatch; //!
420  TBranch *b_vParticlesUniqueID; //!
421  TBranch *b_vTrueVertexIndex; //!
422  TBranch *b_vTrueVerticesClean; //!
423  TBranch *b_vTrueVerticesCompl; //!
424  TBranch *b_NParticles; //!
425  TBranch *b_trUniqueID; //!
426  TBranch *b_trStatus; //!
427  TBranch *b_trBunch; //!
428  TBranch *b_trNReconVertices; //!
429  TBranch *b_trDetectors; //!
430  TBranch *b_trDetUsed; //!
431  TBranch *b_trNTPCs; //!
432  TBranch *b_trNFGDs; //!
433  TBranch *b_trNECALs; //!
434  TBranch *b_trNSMRDs; //!
435  TBranch *b_trNP0Ds; //!
436  TBranch *b_trNHits; //!
437  TBranch *b_trNNodes; //!
438  TBranch *b_trNDOF; //!
439  TBranch *b_trChi2; //!
440  TBranch *b_trCharge; //!
441  TBranch *b_trMomentum; //!
442  TBranch *b_trToFFGD1_FGD2; //!
443  TBranch *b_trToFP0D_FGD1; //!
444  TBranch *b_trToFECal_FGD1; //!
445  TBranch *b_trToFECal_FGD2; //!
446  TBranch *b_trToFFlag_FGD1_FGD2; //!
447  TBranch *b_trToFFlag_P0D_FGD1; //!
448  TBranch *b_trToFFlag_ECal_FGD1; //!
449  TBranch *b_trToFFlag_ECal_FGD2; //!
450  TBranch *b_trMomentumError; //!
451  TBranch *b_trMomentumMuon; //!
452  TBranch *b_trMomentumErrorMuon; //!
453  TBranch *b_trMomentumProton; //!
454  TBranch *b_trMomentumErrorProton; //!
455  TBranch *b_trMomentumEle; //!
456  TBranch *b_trMomentumErrorEle; //!
457  TBranch *b_trRangeMomentumEle; //!
458  TBranch *b_trRangeMomentumMuon; //!
459  TBranch *b_trRangeMomentumProton; //!
460  TBranch *b_trDirectionStart; //!
461  TBranch *b_trDirectionEnd; //!
462  TBranch *b_trPositionStart; //!
463  TBranch *b_trPositionEnd; //!
464  TBranch *b_trMomentumFlip; //!
465 
466  TBranch *b_trTpcDetector; //!
467  TBranch *b_trTpcNHits; //!
468  TBranch *b_trTpcNNodes; //!
469  TBranch *b_trTpcLength; //!
470  TBranch *b_trTpcDirectionStart; //!
471  TBranch *b_trTpcDirectionEnd; //!
472  TBranch *b_trTpcPositionStart; //!
473  TBranch *b_trTpcPositionEnd; //!
474  TBranch *b_trTpcCharge; //!
475  TBranch *b_trTpcMomentum; //!
476  TBranch *b_trTpcMomentumError; //!
477  TBranch *b_trTpcBackMomentum; //!
478  TBranch *b_trTpcRefitCharge;
479  TBranch *b_trTpcRefitMomentum;
480  TBranch *b_trTpcRefitPosition;
481  TBranch *b_trTpcRefitDirection;
482  TBranch *b_trTpcEFieldRefitMomentum;
483  TBranch *b_trTpcdEdxMeas; //!
484  TBranch *b_trTpcdEdxExpMu; //!
485  TBranch *b_trTpcdEdxExpEle; //!
486  TBranch *b_trTpcdEdxExpP; //!
487  TBranch *b_trTpcdEdxExpPi; //!
488  TBranch *b_trTpcdEdxExpK; //!
489  TBranch *b_trTpcdEdxSigmaMu; //!
490  TBranch *b_trTpcdEdxSigmaEle; //!
491  TBranch *b_trTpcdEdxSigmaP; //!
492  TBranch *b_trTpcdEdxSigmaPi; //!
493  TBranch *b_trTpcdEdxSigmaK; //!
494  TBranch *b_trTpcPurity; //!
495  TBranch *b_trFgdDetector; //!
496  TBranch *b_trFgdNHits; //!
497  TBranch *b_trFgdNNodes; //!
498  TBranch *b_trFgdLength; //!
499  TBranch *b_trFgdDirectionStart; //!
500  TBranch *b_trFgdDirectionEnd; //!
501  TBranch *b_trFgdPositionStart; //!
502  TBranch *b_trFgdPositionEnd; //!
503  TBranch *b_trFgdX; //!
504  TBranch *b_trFgdE; //!
505  TBranch *b_trFgdPullmu; //!
506  TBranch *b_trFgdPullp; //!
507  TBranch *b_trFgdPullpi; //!
508  TBranch *b_trFgdPullno; //!
509  TBranch *b_trFgdContainment; //!
510  TBranch *b_trFgdAvgTime; //!
511  TBranch *b_trFgdVertex1x1; //!
512  TBranch *b_trFgdVertex3x3; //!
513  TBranch *b_trFgdVertex5x5; //!
514  TBranch *b_trFgdVertex7x7; //!
515  TBranch *b_trFgdVertexLayer; //!
516 
517  TBranch *b_trECALDetector; //!
518  TBranch *b_trECALNHits; //!
519  TBranch *b_trECALNNodes; //!
520  TBranch *b_trECALLength; //!
521  TBranch *b_trECALDirectionStart; //!
522  TBranch *b_trECALDirectionEnd; //!
523  TBranch *b_trECALPositionStart; //!
524  TBranch *b_trECALPositionEnd; //!
525  TBranch *b_trECALEMEnergy; //!
526  TBranch *b_trECALEDeposit; //!
527  TBranch *b_trECALIsShowerLike; //!
528  TBranch *b_trECALAvgTime; //!
529  TBranch *b_trECALPIDMipEm; //!
530  TBranch *b_trECALPIDEmHip; //!
531  TBranch *b_trECALMostUpStreamLayerHit; //!
532  TBranch *b_trECALShowerPosition; //!
533 
534  TBranch *b_trSMRDDetector; //!
535  TBranch *b_trSMRDNHits; //!
536  TBranch *b_trSMRDNNodes; //!
537  TBranch *b_trSMRDLength; //!
538  TBranch *b_trSMRDDirectionStart; //!
539  TBranch *b_trSMRDDirectionEnd; //!
540  TBranch *b_trSMRDPositionStart; //!
541  TBranch *b_trSMRDPositionEnd; //!
542  TBranch *b_trSMRDAvgTime; //!
543 
544  TBranch *b_trP0DDetector; //!
545  TBranch *b_trP0DNHits; //!
546  TBranch *b_trP0DNNodes; //!
547  TBranch *b_trP0DLength; //!
548  TBranch *b_trP0DELoss; //!
549  TBranch *b_trP0DDirectionStart; //!
550  TBranch *b_trP0DDirectionEnd; //!
551  TBranch *b_trP0DPositionStart; //!
552  TBranch *b_trP0DPositionEnd; //!
553  TBranch *b_trTrueParticleID; //!
554  TBranch *b_trTpcTrueParticleID; //!
555 };
556 
557 #endif
558 
559 
Representation of the beam quality and perhaps other beam information as needed.
Representation of the ND280 data quality flags.
Int_t GetEvent(Long64_t &entry, AnaEventC *&event)
Representation of a true Monte Carlo vertex.
virtual void Reset()
Reset the trees in the TChain and the number of entries. Also the header (POT, etc) ...
Representation of an ECAL segment of a global track.
virtual bool Initialize()
Long64_t GetEntries()
Return the total number of entries in the chain.
virtual void Reset()
Reset the trees in the TChain and the number of entries. Also the header (POT, etc) ...
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.
Representation of a global track.
Representation of a TPC segment of a global track.
Representation of a global vertex.
virtual void DefineBranches()
Define the branches to be read from the input tree.
Representation of a FGD segment of a global track.
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 bool AddFileToTChain(const std::string &inputString)
Add the file specified to fChain, and any friend chains that were set up.