HighLAND
nueCCAnalysis.hxx
1 #ifndef nueCCAnalysis_h
2 #define nueCCAnalysis_h
3 
4 #include "nueCCSelection.hxx"
5 
6 #include "ND280AnalysisUtils.hxx"
7 #include "baseTrackerAnalysis.hxx"
8 
10  public:
11 
13  virtual ~nueCCAnalysis(){}
14 
15  //---- These are mandatory functions
16  void DefineSelections();
17  void DefineCorrections();
18  void DefineMicroTrees(bool addBase=true);
19  void DefineTruthTree();
20 
21  void FillMicroTrees(bool addBase=true);
22  void FillTruthVars();
23  void FillToyVarsInMicroTrees(bool addBase=true);
24 
25  bool CheckFillTruthTree(const AnaTrueVertex& vtx);
26 
27  using baseAnalysis::FillTruthTree;
28  void FillTruthTree(const AnaTrueVertex& vtx);
29  using baseTrackerAnalysis::FillTruthTreeBase;
30  void FillTruthTreeBase(const AnaTrueVertex& vtx, bool IsAntinu = false);
31  //------------------------------------
32 
33  void FillConfigTree();
34  void FillCategories();
35  bool Initialize();
36 
37  void FillTrackVars();
38  void FillFirstTPCVars();
39  void FillSecondTPCVars();
40  void FillECalVars();
41  void FillTPCVetoVars();
42  void FillPairFinderVars();
43  void FillP0DVetoVars();
44  void FillECalVetoVars();
45  void FillMichelVars();
46  void FillEcalNeutralClusterVars();
47  void FillAllTracksVars();
48  void FillFGDVars();
49  void FillToFVars();
50 
51  void SetSaveSecondaries(bool save) {_savesecondaries = save;}
52 
53  const ToyBoxNueCC& nuebox(){return *static_cast<const ToyBoxNueCC*>(&box());}
54 
55  AnaTrueParticleB* GoBackToPrimaryParticle(const AnaTrueParticleB* Gamma,
56  const AnaTrueVertex *vtx);
57 
58 private:
59  Int_t _whichFGD; // 1 for FGD1 analysis, 2 for FGD2, 3 for both
60 
61  bool _savesecondaries; // Save secondary tracks
62  bool _addmoretoyvariables; // Extrend the list of toy variables
63 
64  bool _p5;
65 
66  public:
67 
68  enum enumStandardMicroTrees_nueCCAnalysis{
69 
70  selelec_mom = enumStandardMicroTreesLast_baseTrackerAnalysis+1,
71  selelec_costheta,
72  selelec_costheta_z,
73  selelec_costheta_offaxis,
74  selelec_phi,
75  selelec_pt,
76  selelec_startpos,
77  selelec_startdir,
78  selelec_momErr,
79  selelec_momEleFit,
80  selelec_momMuonFit,
81  selelec_ElemomECalEntrance,
82  selelec_tpcNNodes,
83  selelec_FGD,
84  selelec_ENuRec,
85  selelec_Q2Rec,
86  selelec_ElemomTPCBack,
87  selelec_tpcBackPos,
88  selelec_tpcBackDir,
89  selelec_inp0d,
90 
91  selelec_nfgds,
92  selelec_fgd_det,
93  selelec_fgd_x,
94  selelec_fgd_E,
95  selelec_fgd_V11,
96  selelec_fgd_V33,
97  selelec_fgd_V55,
98  selelec_fgd_V77,
99  selelec_fgd_VLayer,
100  selelec_fgd_pullmu,
101  selelec_fgd_pullpi,
102  selelec_fgd_pullprot,
103  selelec_fgd_containment,
104 
105  selelec_tpcdedx,
106  selelec_pullmuon,
107  selelec_pullelec,
108  selelec_pullpion,
109  selelec_pullprot,
110  selelec_pullmuon2nd,
111  selelec_pullelec2nd,
112 
113  selelec_nECALs,
114  selelec_ecaldetector,
115  selelec_ecalnhits,
116  selelec_ecalMostUpStreamLayerHit,
117  selelec_ecalmipem,
118  selelec_ecalmippion,
119  selelec_ecalemhip,
120  selelec_ecalemene,
121  selelec_ecalcontained,
122  selelec_ecalshowerpos,
123  selelec_ecallength,
124 
125  selelec_ToF_P0D_FGD1,
126  selelec_ToF_ECal_FGD1,
127  selelec_ToF_FGD1_FGD2,
128  selelec_ToF_ECal_FGD2,
129  selelec_ToF_DsECal_FGD1,
130  selelec_ToF_DsECal_FGD2,
131 
132  selelec_true_pdg,
133  selelec_true_costheta_z,
134  selelec_true_costheta_offaxis,
135  selelec_true_costheta_nuDir,
136  selelec_true_mom,
137  selelec_true_pos,
138  selelec_true_endpos,
139  selelec_true_dir,
140 
141  truelepton_pdg,
142  truelepton_costheta_z,
143  truelepton_costheta_offaxis,
144  truelepton_costheta_nuDir,
145  truelepton_pos,
146  truelepton_dir,
147  truelepton_det,
148  truelepton_nuErecQE,
149 
150  TPCVetoDeltaz,
151  TPCVetoMomentum,
152  TPCVetoCharge,
153  TPCVetoNNearP0DTracks,
154  TPCVetoNNearTracks,
155  TPCVetoNFarTracks,
156  NP0DVetoP0DTracks,
157  NP0DVetoFGD1Tracks,
158  NP0DVetoP0DEcalTracks,
159  ECALMinZ,
160  ECALNCMinZ,
161 
162  NFGDTracksReqTPC,
163  NFGD1TracksReqTPC1,
164  NFGD1TracksReqTPC2,
165  NFGD2TracksReqTPC2,
166  NFGD2TracksReqTPC3,
167  NFGD1TracksReqEcal,
168  NFGD2TracksReqEcal,
169  FGDDistanceReqTpc,
170  FGDMaxDistanceReqTpc,
171  FGDDistanceNoReqTpc,
172  FGDMaxDistanceNoReqTpc,
173  FGD2XYMaxTrackDist,
174  NTPCTracksReqEcal,
175  FGD2ShowerNFGD1TPC2Tracks,
176  FGD2ShowerNFGD2TPC3Tracks,
177  FGDOOFVActivity,
178  NFGDOOFVTracksReqTPC,
179  SecMomFGDDeltaZ,
180 
181  PairTrack_mom,
182  PairTrack_costheta,
183  PairTrack_pdg,
184  PairTrack_InvMass,
185  PairTrack_startdir,
186  PairTrack_startpos,
187  PairTrack_true_startdir,
188  PairTrack_true_startpos,
189  PairTrack_tpcNNodes,
190 
191  TruePairTrack_true_mom,
192  TruePairTrack_pdg,
193  selelec_parent_true_mom,
194  selelec_parent_pdg,
195  selelec_gparent_true_mom,
196  selelec_gparent_pdg,
197 
198  NisoFgds,
199  fgdiso_det,
200  fgdiso_x,
201  fgdiso_E,
202  fgdiso_pullmu,
203  fgdiso_pullpi,
204  fgdiso_pullprot,
205  fgdiso_containment,
206  fgdiso_position,
207  fgdiso_costheta,
208  fgdiso_pdg,
209 
210  NECalTracks,
211  NDsEcalNeutralClusters,
212  NBrEcalNeutralClusters,
213  MostEnergeticEcalNeutralCluster,
214  EcalNeutralClusterEnergySum,
215  EcalClusterMostEnergeticThanHMT,
216  BremNeutralClusters,
217  BremNeutralClustersEnergy,
218  BremNeutralClustersMinTheta,
219  BremNeutralClustersMinPhi,
220  FragmentsNeutralClusters,
221  FragmentsDistanceToShower,
222  TPCECALdist,
223  ECALPosECALSegment,
224  ECALPosGlobalTrack,
225  ECALTrueVertexPos,
226 
227  NME,
228 
229  NumomTrue,
230  Q2_true,
231  NuParentPDGRaw,
232  TargetPDG,
233  NuParentDecPoint,
234  NTruePions,
235  NTruePi0,
236  NTrueKaonRhoEta,
237 
238  InitiatorPDG,
239  InitiatorParentPDG,
240  InitiatorMom,
241  InitiatorDir,
242 
243  Nfgdtpc,
244  FGDTPCTrack_det,
245  FGDTPCTrack_mom,
246  FGDTPCTrack_costheta,
247  FGDTPCTrack_charge,
248  FGDTPCTrack_startpos,
249  FGDTPCTrack_startdir,
250  FGDTPCTrack_pullmuon,
251  FGDTPCTrack_pullelec,
252  FGDTPCTrack_pullpion,
253  FGDTPCTrack_pullprot,
254  FGDTPCTrack_tpcNNodes,
255  FGDTPCTrack_pdg,
256  FGDTPCTrack_MomECalEntrance,
257  FGDTPCTrack_EMEnergy,
258  FGDTPCTrack_MipEm,
259  FGDTPCTrack_MipPion,
260  FGDTPCTrack_EmHip,
261  FGDTPCTrack_ShowerPosition,
262  FGDTPCTrack_ECALdet,
263  FGDTPCTrack_NHits,
264  FGDTPCTrack_MostUpStreamLayerHit,
265  FGDTPCTrack_IsEcalContained,
266 
267  // (for xsTool)
268  truevtx_mass_component,
269 
270  enumStandardMicroTreesLast_nueCCAnalysis
271  };
272 
273  enum enumConfigTree_nueCCAnalysis{
274  nNucleonsFGD1 = enumConfigTreeLast_AnalysisAlgorithm+1,
275  nNucleonsFGD2scint,
276  nNucleonsFGD2water,
277  enumConfigTreeLast_nueCCAnalysis
278  };
279 
280 };
281 
282 
283 
284 #endif
Representation of a true Monte Carlo vertex.
Definition: DataClasses.hxx:50
virtual const ToyBoxTracker & box(Int_t isel=-1) const
Returns the ToyBoxTracker.
Representation of a true Monte Carlo trajectory/particle.
bool Initialize()
[AnalysisAlgorithm_mandatory]