20 if (mcPrimaryList.empty())
21 throw StatusCodeException(STATUS_CODE_NOT_INITIALIZED);
23 unsigned int nNonNeutrons(0), nMuons(0), nElectrons(0), nProtons(0), nPiPlus(0), nPiMinus(0), nPhotons(0), nKaonPlus(0), nKaonMinus(0);
25 for (
const MCParticle *
const pMCPrimary : mcPrimaryList)
27 if (2112 != pMCPrimary->GetParticleId()) ++nNonNeutrons;
28 if (13 == std::fabs(pMCPrimary->GetParticleId())) ++nMuons;
29 if (11 == std::fabs(pMCPrimary->GetParticleId())) ++nElectrons;
30 else if (2212 == std::fabs(pMCPrimary->GetParticleId())) ++nProtons;
31 else if (22 == pMCPrimary->GetParticleId()) ++nPhotons;
32 else if (211 == pMCPrimary->GetParticleId()) ++nPiPlus;
33 else if (-211 == pMCPrimary->GetParticleId()) ++nPiMinus;
34 else if (321 == pMCPrimary->GetParticleId()) ++nKaonPlus;
35 else if (-321 == pMCPrimary->GetParticleId()) ++nKaonMinus;
38 if ((1 == mcPrimaryList.size()) && LArMCParticleHelper::IsCosmicRay(mcPrimaryList.front()))
40 if (1 == nMuons)
return COSMIC_RAY_MU;
41 if (1 == nProtons)
return COSMIC_RAY_P;
42 if (1 == nElectrons)
return COSMIC_RAY_E;
43 if (1 == nPhotons)
return COSMIC_RAY_PHOTON;
44 else return COSMIC_RAY_OTHER;
47 if ((1 == mcPrimaryList.size()) && LArMCParticleHelper::IsBeamParticle(mcPrimaryList.front()))
49 if (1 == nMuons)
return BEAM_PARTICLE_MU;
50 if (1 == nProtons)
return BEAM_PARTICLE_P;
51 if (1 == nElectrons)
return BEAM_PARTICLE_E;
52 if (1 == nPhotons)
return BEAM_PARTICLE_PHOTON;
53 if (1 == nPiPlus)
return BEAM_PARTICLE_PI_PLUS;
54 if (1 == nPiMinus)
return BEAM_PARTICLE_PI_MINUS;
55 if (1 == nKaonPlus)
return BEAM_PARTICLE_KAON_PLUS;
56 if (1 == nKaonMinus)
return BEAM_PARTICLE_KAON_MINUS;
57 else return BEAM_PARTICLE_OTHER;
60 const MCParticle *pMCNeutrino(
nullptr);
62 for (
const MCParticle *
const pMCPrimary : mcPrimaryList)
64 if (!LArMCParticleHelper::IsBeamNeutrinoFinalState(pMCPrimary) || (pMCNeutrino && (pMCNeutrino != LArMCParticleHelper::GetParentMCParticle(pMCPrimary))))
65 throw StatusCodeException(STATUS_CODE_INVALID_PARAMETER);
67 pMCNeutrino = LArMCParticleHelper::GetParentMCParticle(pMCPrimary);
71 throw StatusCodeException(STATUS_CODE_FAILURE);
73 const int nuNuanceCode(LArMCParticleHelper::GetNuanceCode(pMCNeutrino));
75 if (1001 == nuNuanceCode)
77 if ((1 == nNonNeutrons) && (1 == nMuons) && (0 == nProtons))
return CCQEL_MU;
78 if ((2 == nNonNeutrons) && (1 == nMuons) && (1 == nProtons))
return CCQEL_MU_P;
79 if ((3 == nNonNeutrons) && (1 == nMuons) && (2 == nProtons))
return CCQEL_MU_P_P;
80 if ((4 == nNonNeutrons) && (1 == nMuons) && (3 == nProtons))
return CCQEL_MU_P_P_P;
81 if ((5 == nNonNeutrons) && (1 == nMuons) && (4 == nProtons))
return CCQEL_MU_P_P_P_P;
82 if ((6 == nNonNeutrons) && (1 == nMuons) && (5 == nProtons))
return CCQEL_MU_P_P_P_P_P;
84 if ((1 == nNonNeutrons) && (1 == nElectrons) && (0 == nProtons))
return CCQEL_E;
85 if ((2 == nNonNeutrons) && (1 == nElectrons) && (1 == nProtons))
return CCQEL_E_P;
86 if ((3 == nNonNeutrons) && (1 == nElectrons) && (2 == nProtons))
return CCQEL_E_P_P;
87 if ((4 == nNonNeutrons) && (1 == nElectrons) && (3 == nProtons))
return CCQEL_E_P_P_P;
88 if ((5 == nNonNeutrons) && (1 == nElectrons) && (4 == nProtons))
return CCQEL_E_P_P_P_P;
89 if ((6 == nNonNeutrons) && (1 == nElectrons) && (5 == nProtons))
return CCQEL_E_P_P_P_P_P;
92 if (1002 == nuNuanceCode)
94 if ((1 == nNonNeutrons) && (1 == nProtons))
return NCQEL_P;
95 if ((2 == nNonNeutrons) && (2 == nProtons))
return NCQEL_P_P;
96 if ((3 == nNonNeutrons) && (3 == nProtons))
return NCQEL_P_P_P;
97 if ((4 == nNonNeutrons) && (4 == nProtons))
return NCQEL_P_P_P_P;
98 if ((5 == nNonNeutrons) && (5 == nProtons))
return NCQEL_P_P_P_P_P;
101 if ((nuNuanceCode >= 1003) && (nuNuanceCode <= 1005))
103 if ((1 == nNonNeutrons) && (1 == nMuons) && (0 == nProtons))
return CCRES_MU;
104 if ((2 == nNonNeutrons) && (1 == nMuons) && (1 == nProtons))
return CCRES_MU_P;
105 if ((3 == nNonNeutrons) && (1 == nMuons) && (2 == nProtons))
return CCRES_MU_P_P;
106 if ((4 == nNonNeutrons) && (1 == nMuons) && (3 == nProtons))
return CCRES_MU_P_P_P;
107 if ((5 == nNonNeutrons) && (1 == nMuons) && (4 == nProtons))
return CCRES_MU_P_P_P_P;
108 if ((6 == nNonNeutrons) && (1 == nMuons) && (5 == nProtons))
return CCRES_MU_P_P_P_P_P;
110 if ((2 == nNonNeutrons) && (1 == nMuons) && (0 == nProtons) && (1 == nPiPlus))
return CCRES_MU_PIPLUS;
111 if ((3 == nNonNeutrons) && (1 == nMuons) && (1 == nProtons) && (1 == nPiPlus))
return CCRES_MU_P_PIPLUS;
112 if ((4 == nNonNeutrons) && (1 == nMuons) && (2 == nProtons) && (1 == nPiPlus))
return CCRES_MU_P_P_PIPLUS;
113 if ((5 == nNonNeutrons) && (1 == nMuons) && (3 == nProtons) && (1 == nPiPlus))
return CCRES_MU_P_P_P_PIPLUS;
114 if ((6 == nNonNeutrons) && (1 == nMuons) && (4 == nProtons) && (1 == nPiPlus))
return CCRES_MU_P_P_P_P_PIPLUS;
115 if ((7 == nNonNeutrons) && (1 == nMuons) && (5 == nProtons) && (1 == nPiPlus))
return CCRES_MU_P_P_P_P_P_PIPLUS;
117 if ((2 == nNonNeutrons) && (1 == nMuons) && (0 == nProtons) && (1 == nPhotons))
return CCRES_MU_PHOTON;
118 if ((3 == nNonNeutrons) && (1 == nMuons) && (1 == nProtons) && (1 == nPhotons))
return CCRES_MU_P_PHOTON;
119 if ((4 == nNonNeutrons) && (1 == nMuons) && (2 == nProtons) && (1 == nPhotons))
return CCRES_MU_P_P_PHOTON;
120 if ((5 == nNonNeutrons) && (1 == nMuons) && (3 == nProtons) && (1 == nPhotons))
return CCRES_MU_P_P_P_PHOTON;
121 if ((6 == nNonNeutrons) && (1 == nMuons) && (4 == nProtons) && (1 == nPhotons))
return CCRES_MU_P_P_P_P_PHOTON;
122 if ((7 == nNonNeutrons) && (1 == nMuons) && (5 == nProtons) && (1 == nPhotons))
return CCRES_MU_P_P_P_P_P_PHOTON;
124 if ((3 == nNonNeutrons) && (1 == nMuons) && (0 == nProtons) && (2 == nPhotons))
return CCRES_MU_PIZERO;
125 if ((4 == nNonNeutrons) && (1 == nMuons) && (1 == nProtons) && (2 == nPhotons))
return CCRES_MU_P_PIZERO;
126 if ((5 == nNonNeutrons) && (1 == nMuons) && (2 == nProtons) && (2 == nPhotons))
return CCRES_MU_P_P_PIZERO;
127 if ((6 == nNonNeutrons) && (1 == nMuons) && (3 == nProtons) && (2 == nPhotons))
return CCRES_MU_P_P_P_PIZERO;
128 if ((7 == nNonNeutrons) && (1 == nMuons) && (4 == nProtons) && (2 == nPhotons))
return CCRES_MU_P_P_P_P_PIZERO;
129 if ((8 == nNonNeutrons) && (1 == nMuons) && (5 == nProtons) && (2 == nPhotons))
return CCRES_MU_P_P_P_P_P_PIZERO;
131 if ((1 == nNonNeutrons) && (1 == nElectrons) && (0 == nProtons))
return CCRES_E;
132 if ((2 == nNonNeutrons) && (1 == nElectrons) && (1 == nProtons))
return CCRES_E_P;
133 if ((3 == nNonNeutrons) && (1 == nElectrons) && (2 == nProtons))
return CCRES_E_P_P;
134 if ((4 == nNonNeutrons) && (1 == nElectrons) && (3 == nProtons))
return CCRES_E_P_P_P;
135 if ((5 == nNonNeutrons) && (1 == nElectrons) && (4 == nProtons))
return CCRES_E_P_P_P_P;
136 if ((6 == nNonNeutrons) && (1 == nElectrons) && (5 == nProtons))
return CCRES_E_P_P_P_P_P;
138 if ((2 == nNonNeutrons) && (1 == nElectrons) && (0 == nProtons) && (1 == nPiPlus))
return CCRES_E_PIPLUS;
139 if ((3 == nNonNeutrons) && (1 == nElectrons) && (1 == nProtons) && (1 == nPiPlus))
return CCRES_E_P_PIPLUS;
140 if ((4 == nNonNeutrons) && (1 == nElectrons) && (2 == nProtons) && (1 == nPiPlus))
return CCRES_E_P_P_PIPLUS;
141 if ((5 == nNonNeutrons) && (1 == nElectrons) && (3 == nProtons) && (1 == nPiPlus))
return CCRES_E_P_P_P_PIPLUS;
142 if ((6 == nNonNeutrons) && (1 == nElectrons) && (4 == nProtons) && (1 == nPiPlus))
return CCRES_E_P_P_P_P_PIPLUS;
143 if ((7 == nNonNeutrons) && (1 == nElectrons) && (5 == nProtons) && (1 == nPiPlus))
return CCRES_E_P_P_P_P_P_PIPLUS;
145 if ((2 == nNonNeutrons) && (1 == nElectrons) && (0 == nProtons) && (1 == nPhotons))
return CCRES_E_PHOTON;
146 if ((3 == nNonNeutrons) && (1 == nElectrons) && (1 == nProtons) && (1 == nPhotons))
return CCRES_E_P_PHOTON;
147 if ((4 == nNonNeutrons) && (1 == nElectrons) && (2 == nProtons) && (1 == nPhotons))
return CCRES_E_P_P_PHOTON;
148 if ((5 == nNonNeutrons) && (1 == nElectrons) && (3 == nProtons) && (1 == nPhotons))
return CCRES_E_P_P_P_PHOTON;
149 if ((6 == nNonNeutrons) && (1 == nElectrons) && (4 == nProtons) && (1 == nPhotons))
return CCRES_E_P_P_P_P_PHOTON;
150 if ((7 == nNonNeutrons) && (1 == nElectrons) && (5 == nProtons) && (1 == nPhotons))
return CCRES_E_P_P_P_P_P_PHOTON;
152 if ((3 == nNonNeutrons) && (1 == nElectrons) && (0 == nProtons) && (2 == nPhotons))
return CCRES_E_PIZERO;
153 if ((4 == nNonNeutrons) && (1 == nElectrons) && (1 == nProtons) && (2 == nPhotons))
return CCRES_E_P_PIZERO;
154 if ((5 == nNonNeutrons) && (1 == nElectrons) && (2 == nProtons) && (2 == nPhotons))
return CCRES_E_P_P_PIZERO;
155 if ((6 == nNonNeutrons) && (1 == nElectrons) && (3 == nProtons) && (2 == nPhotons))
return CCRES_E_P_P_P_PIZERO;
156 if ((7 == nNonNeutrons) && (1 == nElectrons) && (4 == nProtons) && (2 == nPhotons))
return CCRES_E_P_P_P_P_PIZERO;
157 if ((8 == nNonNeutrons) && (1 == nElectrons) && (5 == nProtons) && (2 == nPhotons))
return CCRES_E_P_P_P_P_P_PIZERO;
160 if ((nuNuanceCode >= 1006) && (nuNuanceCode <= 1009))
162 if ((1 == nNonNeutrons) && (1 == nProtons))
return NCRES_P;
163 if ((2 == nNonNeutrons) && (2 == nProtons))
return NCRES_P_P;
164 if ((3 == nNonNeutrons) && (3 == nProtons))
return NCRES_P_P_P;
165 if ((4 == nNonNeutrons) && (4 == nProtons))
return NCRES_P_P_P_P;
166 if ((5 == nNonNeutrons) && (5 == nProtons))
return NCRES_P_P_P_P_P;
168 if ((1 == nNonNeutrons) && (0 == nProtons) && (1 == nPiPlus))
return NCRES_PIPLUS;
169 if ((2 == nNonNeutrons) && (1 == nProtons) && (1 == nPiPlus))
return NCRES_P_PIPLUS;
170 if ((3 == nNonNeutrons) && (2 == nProtons) && (1 == nPiPlus))
return NCRES_P_P_PIPLUS;
171 if ((4 == nNonNeutrons) && (3 == nProtons) && (1 == nPiPlus))
return NCRES_P_P_P_PIPLUS;
172 if ((5 == nNonNeutrons) && (4 == nProtons) && (1 == nPiPlus))
return NCRES_P_P_P_P_PIPLUS;
173 if ((6 == nNonNeutrons) && (5 == nProtons) && (1 == nPiPlus))
return NCRES_P_P_P_P_P_PIPLUS;
175 if ((1 == nNonNeutrons) && (0 == nProtons) && (1 == nPiMinus))
return NCRES_PIMINUS;
176 if ((2 == nNonNeutrons) && (1 == nProtons) && (1 == nPiMinus))
return NCRES_P_PIMINUS;
177 if ((3 == nNonNeutrons) && (2 == nProtons) && (1 == nPiMinus))
return NCRES_P_P_PIMINUS;
178 if ((4 == nNonNeutrons) && (3 == nProtons) && (1 == nPiMinus))
return NCRES_P_P_P_PIMINUS;
179 if ((5 == nNonNeutrons) && (4 == nProtons) && (1 == nPiMinus))
return NCRES_P_P_P_P_PIMINUS;
180 if ((6 == nNonNeutrons) && (5 == nProtons) && (1 == nPiMinus))
return NCRES_P_P_P_P_P_PIMINUS;
182 if ((1 == nNonNeutrons) && (0 == nProtons) && (1 == nPhotons))
return NCRES_PHOTON;
183 if ((2 == nNonNeutrons) && (1 == nProtons) && (1 == nPhotons))
return NCRES_P_PHOTON;
184 if ((3 == nNonNeutrons) && (2 == nProtons) && (1 == nPhotons))
return NCRES_P_P_PHOTON;
185 if ((4 == nNonNeutrons) && (3 == nProtons) && (1 == nPhotons))
return NCRES_P_P_P_PHOTON;
186 if ((5 == nNonNeutrons) && (4 == nProtons) && (1 == nPhotons))
return NCRES_P_P_P_P_PHOTON;
187 if ((6 == nNonNeutrons) && (5 == nProtons) && (1 == nPhotons))
return NCRES_P_P_P_P_P_PHOTON;
189 if ((2 == nNonNeutrons) && (0 == nProtons) && (2 == nPhotons))
return NCRES_PIZERO;
190 if ((3 == nNonNeutrons) && (1 == nProtons) && (2 == nPhotons))
return NCRES_P_PIZERO;
191 if ((4 == nNonNeutrons) && (2 == nProtons) && (2 == nPhotons))
return NCRES_P_P_PIZERO;
192 if ((5 == nNonNeutrons) && (3 == nProtons) && (2 == nPhotons))
return NCRES_P_P_P_PIZERO;
193 if ((6 == nNonNeutrons) && (4 == nProtons) && (2 == nPhotons))
return NCRES_P_P_P_P_PIZERO;
194 if ((7 == nNonNeutrons) && (5 == nProtons) && (2 == nPhotons))
return NCRES_P_P_P_P_P_PIZERO;
197 if (1091 == nuNuanceCode)
199 if ((1 == nNonNeutrons) && (1 == nMuons) && (0 == nProtons))
return CCDIS_MU;
200 if ((2 == nNonNeutrons) && (1 == nMuons) && (1 == nProtons))
return CCDIS_MU_P;
201 if ((3 == nNonNeutrons) && (1 == nMuons) && (2 == nProtons))
return CCDIS_MU_P_P;
202 if ((4 == nNonNeutrons) && (1 == nMuons) && (3 == nProtons))
return CCDIS_MU_P_P_P;
203 if ((5 == nNonNeutrons) && (1 == nMuons) && (4 == nProtons))
return CCDIS_MU_P_P_P_P;
204 if ((6 == nNonNeutrons) && (1 == nMuons) && (5 == nProtons))
return CCDIS_MU_P_P_P_P_P;
206 if ((2 == nNonNeutrons) && (1 == nMuons) && (0 == nProtons) && (1 == nPiPlus))
return CCDIS_MU_PIPLUS;
207 if ((3 == nNonNeutrons) && (1 == nMuons) && (1 == nProtons) && (1 == nPiPlus))
return CCDIS_MU_P_PIPLUS;
208 if ((4 == nNonNeutrons) && (1 == nMuons) && (2 == nProtons) && (1 == nPiPlus))
return CCDIS_MU_P_P_PIPLUS;
209 if ((5 == nNonNeutrons) && (1 == nMuons) && (3 == nProtons) && (1 == nPiPlus))
return CCDIS_MU_P_P_P_PIPLUS;
210 if ((6 == nNonNeutrons) && (1 == nMuons) && (4 == nProtons) && (1 == nPiPlus))
return CCDIS_MU_P_P_P_P_PIPLUS;
211 if ((7 == nNonNeutrons) && (1 == nMuons) && (5 == nProtons) && (1 == nPiPlus))
return CCDIS_MU_P_P_P_P_P_PIPLUS;
213 if ((2 == nNonNeutrons) && (1 == nMuons) && (0 == nProtons) && (1 == nPhotons))
return CCDIS_MU_PHOTON;
214 if ((3 == nNonNeutrons) && (1 == nMuons) && (1 == nProtons) && (1 == nPhotons))
return CCDIS_MU_P_PHOTON;
215 if ((4 == nNonNeutrons) && (1 == nMuons) && (2 == nProtons) && (1 == nPhotons))
return CCDIS_MU_P_P_PHOTON;
216 if ((5 == nNonNeutrons) && (1 == nMuons) && (3 == nProtons) && (1 == nPhotons))
return CCDIS_MU_P_P_P_PHOTON;
217 if ((6 == nNonNeutrons) && (1 == nMuons) && (4 == nProtons) && (1 == nPhotons))
return CCDIS_MU_P_P_P_P_PHOTON;
218 if ((7 == nNonNeutrons) && (1 == nMuons) && (5 == nProtons) && (1 == nPhotons))
return CCDIS_MU_P_P_P_P_P_PHOTON;
220 if ((3 == nNonNeutrons) && (1 == nMuons) && (0 == nProtons) && (2 == nPhotons))
return CCDIS_MU_PIZERO;
221 if ((4 == nNonNeutrons) && (1 == nMuons) && (1 == nProtons) && (2 == nPhotons))
return CCDIS_MU_P_PIZERO;
222 if ((5 == nNonNeutrons) && (1 == nMuons) && (2 == nProtons) && (2 == nPhotons))
return CCDIS_MU_P_P_PIZERO;
223 if ((6 == nNonNeutrons) && (1 == nMuons) && (3 == nProtons) && (2 == nPhotons))
return CCDIS_MU_P_P_P_PIZERO;
224 if ((7 == nNonNeutrons) && (1 == nMuons) && (4 == nProtons) && (2 == nPhotons))
return CCDIS_MU_P_P_P_P_PIZERO;
225 if ((8 == nNonNeutrons) && (1 == nMuons) && (5 == nProtons) && (2 == nPhotons))
return CCDIS_MU_P_P_P_P_P_PIZERO;
228 if (1092 == nuNuanceCode)
230 if ((1 == nNonNeutrons) && (1 == nProtons))
return NCDIS_P;
231 if ((2 == nNonNeutrons) && (2 == nProtons))
return NCDIS_P_P;
232 if ((3 == nNonNeutrons) && (3 == nProtons))
return NCDIS_P_P_P;
233 if ((4 == nNonNeutrons) && (4 == nProtons))
return NCDIS_P_P_P_P;
234 if ((5 == nNonNeutrons) && (5 == nProtons))
return NCDIS_P_P_P_P_P;
236 if ((1 == nNonNeutrons) && (0 == nProtons) && (1 == nPiPlus))
return NCDIS_PIPLUS;
237 if ((2 == nNonNeutrons) && (1 == nProtons) && (1 == nPiPlus))
return NCDIS_P_PIPLUS;
238 if ((3 == nNonNeutrons) && (2 == nProtons) && (1 == nPiPlus))
return NCDIS_P_P_PIPLUS;
239 if ((4 == nNonNeutrons) && (3 == nProtons) && (1 == nPiPlus))
return NCDIS_P_P_P_PIPLUS;
240 if ((5 == nNonNeutrons) && (4 == nProtons) && (1 == nPiPlus))
return NCDIS_P_P_P_P_PIPLUS;
241 if ((6 == nNonNeutrons) && (5 == nProtons) && (1 == nPiPlus))
return NCDIS_P_P_P_P_P_PIPLUS;
243 if ((1 == nNonNeutrons) && (0 == nProtons) && (1 == nPiMinus))
return NCDIS_PIMINUS;
244 if ((2 == nNonNeutrons) && (1 == nProtons) && (1 == nPiMinus))
return NCDIS_P_PIMINUS;
245 if ((3 == nNonNeutrons) && (2 == nProtons) && (1 == nPiMinus))
return NCDIS_P_P_PIMINUS;
246 if ((4 == nNonNeutrons) && (3 == nProtons) && (1 == nPiMinus))
return NCDIS_P_P_P_PIMINUS;
247 if ((5 == nNonNeutrons) && (4 == nProtons) && (1 == nPiMinus))
return NCDIS_P_P_P_P_PIMINUS;
248 if ((6 == nNonNeutrons) && (5 == nProtons) && (1 == nPiMinus))
return NCDIS_P_P_P_P_P_PIMINUS;
250 if ((1 == nNonNeutrons) && (0 == nProtons) && (1 == nPhotons))
return NCDIS_PHOTON;
251 if ((2 == nNonNeutrons) && (1 == nProtons) && (1 == nPhotons))
return NCDIS_P_PHOTON;
252 if ((3 == nNonNeutrons) && (2 == nProtons) && (1 == nPhotons))
return NCDIS_P_P_PHOTON;
253 if ((4 == nNonNeutrons) && (3 == nProtons) && (1 == nPhotons))
return NCDIS_P_P_P_PHOTON;
254 if ((5 == nNonNeutrons) && (4 == nProtons) && (1 == nPhotons))
return NCDIS_P_P_P_P_PHOTON;
255 if ((6 == nNonNeutrons) && (5 == nProtons) && (1 == nPhotons))
return NCDIS_P_P_P_P_P_PHOTON;
257 if ((2 == nNonNeutrons) && (0 == nProtons) && (2 == nPhotons))
return NCDIS_PIZERO;
258 if ((3 == nNonNeutrons) && (1 == nProtons) && (2 == nPhotons))
return NCDIS_P_PIZERO;
259 if ((4 == nNonNeutrons) && (2 == nProtons) && (2 == nPhotons))
return NCDIS_P_P_PIZERO;
260 if ((5 == nNonNeutrons) && (3 == nProtons) && (2 == nPhotons))
return NCDIS_P_P_P_PIZERO;
261 if ((6 == nNonNeutrons) && (4 == nProtons) && (2 == nPhotons))
return NCDIS_P_P_P_P_PIZERO;
262 if ((7 == nNonNeutrons) && (5 == nProtons) && (2 == nPhotons))
return NCDIS_P_P_P_P_P_PIZERO;
265 if (1096 == nuNuanceCode)
return NCCOH;
266 if (1097 == nuNuanceCode)
return CCCOH;
268 return OTHER_INTERACTION;
275 switch (interactionType)
277 case CCQEL_MU:
return "CCQEL_MU";
278 case CCQEL_MU_P:
return "CCQEL_MU_P";
279 case CCQEL_MU_P_P:
return "CCQEL_MU_P_P";
280 case CCQEL_MU_P_P_P:
return "CCQEL_MU_P_P_P";
281 case CCQEL_MU_P_P_P_P:
return "CCQEL_MU_P_P_P_P";
282 case CCQEL_MU_P_P_P_P_P:
return "CCQEL_MU_P_P_P_P_P";
283 case CCQEL_E:
return "CCQEL_E";
284 case CCQEL_E_P:
return "CCQEL_E_P";
285 case CCQEL_E_P_P:
return "CCQEL_E_P_P";
286 case CCQEL_E_P_P_P:
return "CCQEL_E_P_P_P";
287 case CCQEL_E_P_P_P_P:
return "CCQEL_E_P_P_P_P";
288 case CCQEL_E_P_P_P_P_P:
return "CCQEL_E_P_P_P_P_P";
289 case NCQEL_P:
return "NCQEL_P";
290 case NCQEL_P_P:
return "NCQEL_P_P";
291 case NCQEL_P_P_P:
return "NCQEL_P_P_P";
292 case NCQEL_P_P_P_P:
return "NCQEL_P_P_P_P";
293 case NCQEL_P_P_P_P_P:
return "NCQEL_P_P_P_P_P";
294 case CCRES_MU:
return "CCRES_MU";
295 case CCRES_MU_P:
return "CCRES_MU_P";
296 case CCRES_MU_P_P:
return "CCRES_MU_P_P";
297 case CCRES_MU_P_P_P:
return "CCRES_MU_P_P_P";
298 case CCRES_MU_P_P_P_P:
return "CCRES_MU_P_P_P_P";
299 case CCRES_MU_P_P_P_P_P:
return "CCRES_MU_P_P_P_P_P";
300 case CCRES_MU_PIPLUS:
return "CCRES_MU_PIPLUS";
301 case CCRES_MU_P_PIPLUS:
return "CCRES_MU_P_PIPLUS";
302 case CCRES_MU_P_P_PIPLUS:
return "CCRES_MU_P_P_PIPLUS";
303 case CCRES_MU_P_P_P_PIPLUS:
return "CCRES_MU_P_P_P_PIPLUS";
304 case CCRES_MU_P_P_P_P_PIPLUS:
return "CCRES_MU_P_P_P_P_PIPLUS";
305 case CCRES_MU_P_P_P_P_P_PIPLUS:
return "CCRES_MU_P_P_P_P_P_PIPLUS";
306 case CCRES_MU_PHOTON:
return "CCRES_MU_PHOTON";
307 case CCRES_MU_P_PHOTON:
return "CCRES_MU_P_PHOTON";
308 case CCRES_MU_P_P_PHOTON:
return "CCRES_MU_P_P_PHOTON";
309 case CCRES_MU_P_P_P_PHOTON:
return "CCRES_MU_P_P_P_PHOTON";
310 case CCRES_MU_P_P_P_P_PHOTON:
return "CCRES_MU_P_P_P_P_PHOTON";
311 case CCRES_MU_P_P_P_P_P_PHOTON:
return "CCRES_MU_P_P_P_P_P_PHOTON";
312 case CCRES_MU_PIZERO:
return "CCRES_MU_PIZERO";
313 case CCRES_MU_P_PIZERO:
return "CCRES_MU_P_PIZERO";
314 case CCRES_MU_P_P_PIZERO:
return "CCRES_MU_P_P_PIZERO";
315 case CCRES_MU_P_P_P_PIZERO:
return "CCRES_MU_P_P_P_PIZERO";
316 case CCRES_MU_P_P_P_P_PIZERO:
return "CCRES_MU_P_P_P_P_PIZERO";
317 case CCRES_MU_P_P_P_P_P_PIZERO:
return "CCRES_MU_P_P_P_P_P_PIZERO";
318 case CCRES_E:
return "CCRES_E";
319 case CCRES_E_P:
return "CCRES_E_P";
320 case CCRES_E_P_P:
return "CCRES_E_P_P";
321 case CCRES_E_P_P_P:
return "CCRES_E_P_P_P";
322 case CCRES_E_P_P_P_P:
return "CCRES_E_P_P_P_P";
323 case CCRES_E_P_P_P_P_P:
return "CCRES_E_P_P_P_P_P";
324 case CCRES_E_PIPLUS:
return "CCRES_E_PIPLUS";
325 case CCRES_E_P_PIPLUS:
return "CCRES_E_P_PIPLUS";
326 case CCRES_E_P_P_PIPLUS:
return "CCRES_E_P_P_PIPLUS";
327 case CCRES_E_P_P_P_PIPLUS:
return "CCRES_E_P_P_P_PIPLUS";
328 case CCRES_E_P_P_P_P_PIPLUS:
return "CCRES_E_P_P_P_P_PIPLUS";
329 case CCRES_E_P_P_P_P_P_PIPLUS:
return "CCRES_E_P_P_P_P_P_PIPLUS";
330 case CCRES_E_PHOTON:
return "CCRES_E_PHOTON";
331 case CCRES_E_P_PHOTON:
return "CCRES_E_P_PHOTON";
332 case CCRES_E_P_P_PHOTON:
return "CCRES_E_P_P_PHOTON";
333 case CCRES_E_P_P_P_PHOTON:
return "CCRES_E_P_P_P_PHOTON";
334 case CCRES_E_P_P_P_P_PHOTON:
return "CCRES_E_P_P_P_P_PHOTON";
335 case CCRES_E_P_P_P_P_P_PHOTON:
return "CCRES_E_P_P_P_P_P_PHOTON";
336 case CCRES_E_PIZERO:
return "CCRES_E_PIZERO";
337 case CCRES_E_P_PIZERO:
return "CCRES_E_P_PIZERO";
338 case CCRES_E_P_P_PIZERO:
return "CCRES_E_P_P_PIZERO";
339 case CCRES_E_P_P_P_PIZERO:
return "CCRES_E_P_P_P_PIZERO";
340 case CCRES_E_P_P_P_P_PIZERO:
return "CCRES_E_P_P_P_P_PIZERO";
341 case CCRES_E_P_P_P_P_P_PIZERO:
return "CCRES_E_P_P_P_P_P_PIZERO";
342 case NCRES_P:
return "NCRES_P";
343 case NCRES_P_P:
return "NCRES_P_P";
344 case NCRES_P_P_P:
return "NCRES_P_P_P";
345 case NCRES_P_P_P_P:
return "NCRES_P_P_P_P";
346 case NCRES_P_P_P_P_P:
return "NCRES_P_P_P_P_P";
347 case NCRES_PIPLUS:
return "NCRES_PIPLUS";
348 case NCRES_P_PIPLUS:
return "NCRES_P_PIPLUS";
349 case NCRES_P_P_PIPLUS:
return "NCRES_P_P_PIPLUS";
350 case NCRES_P_P_P_PIPLUS:
return "NCRES_P_P_P_PIPLUS";
351 case NCRES_P_P_P_P_PIPLUS:
return "NCRES_P_P_P_P_PIPLUS";
352 case NCRES_P_P_P_P_P_PIPLUS:
return "NCRES_P_P_P_P_P_PIPLUS";
353 case NCRES_PIMINUS:
return "NCRES_PIMINUS";
354 case NCRES_P_PIMINUS:
return "NCRES_P_PIMINUS";
355 case NCRES_P_P_PIMINUS:
return "NCRES_P_P_PIMINUS";
356 case NCRES_P_P_P_PIMINUS:
return "NCRES_P_P_P_PIMINUS";
357 case NCRES_P_P_P_P_PIMINUS:
return "NCRES_P_P_P_P_PIMINUS";
358 case NCRES_P_P_P_P_P_PIMINUS:
return "NCRES_P_P_P_P_P_PIMINUS";
359 case NCRES_PHOTON:
return "NCRES_PHOTON";
360 case NCRES_P_PHOTON:
return "NCRES_P_PHOTON";
361 case NCRES_P_P_PHOTON:
return "NCRES_P_P_PHOTON";
362 case NCRES_P_P_P_PHOTON:
return "NCRES_P_P_P_PHOTON";
363 case NCRES_P_P_P_P_PHOTON:
return "NCRES_P_P_P_P_PHOTON";
364 case NCRES_P_P_P_P_P_PHOTON:
return "NCRES_P_P_P_P_P_PHOTON";
365 case NCRES_PIZERO:
return "NCRES_PIZERO";
366 case NCRES_P_PIZERO:
return "NCRES_P_PIZERO";
367 case NCRES_P_P_PIZERO:
return "NCRES_P_P_PIZERO";
368 case NCRES_P_P_P_PIZERO:
return "NCRES_P_P_P_PIZERO";
369 case NCRES_P_P_P_P_PIZERO:
return "NCRES_P_P_P_P_PIZERO";
370 case NCRES_P_P_P_P_P_PIZERO:
return "NCRES_P_P_P_P_P_PIZERO";
371 case CCDIS_MU:
return "CCDIS_MU";
372 case CCDIS_MU_P:
return "CCDIS_MU_P";
373 case CCDIS_MU_P_P:
return "CCDIS_MU_P_P";
374 case CCDIS_MU_P_P_P:
return "CCDIS_MU_P_P_P";
375 case CCDIS_MU_P_P_P_P:
return "CCDIS_MU_P_P_P_P";
376 case CCDIS_MU_P_P_P_P_P:
return "CCDIS_MU_P_P_P_P_P";
377 case CCDIS_MU_PIPLUS:
return "CCDIS_MU_PIPLUS";
378 case CCDIS_MU_P_PIPLUS:
return "CCDIS_MU_P_PIPLUS";
379 case CCDIS_MU_P_P_PIPLUS:
return "CCDIS_MU_P_P_PIPLUS";
380 case CCDIS_MU_P_P_P_PIPLUS:
return "CCDIS_MU_P_P_P_PIPLUS";
381 case CCDIS_MU_P_P_P_P_PIPLUS:
return "CCDIS_MU_P_P_P_P_PIPLUS";
382 case CCDIS_MU_P_P_P_P_P_PIPLUS:
return "CCDIS_MU_P_P_P_P_P_PIPLUS";
383 case CCDIS_MU_PHOTON:
return "CCDIS_MU_PHOTON";
384 case CCDIS_MU_P_PHOTON:
return "CCDIS_MU_P_PHOTON";
385 case CCDIS_MU_P_P_PHOTON:
return "CCDIS_MU_P_P_PHOTON";
386 case CCDIS_MU_P_P_P_PHOTON:
return "CCDIS_MU_P_P_P_PHOTON";
387 case CCDIS_MU_P_P_P_P_PHOTON:
return "CCDIS_MU_P_P_P_P_PHOTON";
388 case CCDIS_MU_P_P_P_P_P_PHOTON:
return "CCDIS_MU_P_P_P_P_P_PHOTON";
389 case CCDIS_MU_PIZERO:
return "CCDIS_MU_PIZERO";
390 case CCDIS_MU_P_PIZERO:
return "CCDIS_MU_P_PIZERO";
391 case CCDIS_MU_P_P_PIZERO:
return "CCDIS_MU_P_P_PIZERO";
392 case CCDIS_MU_P_P_P_PIZERO:
return "CCDIS_MU_P_P_P_PIZERO";
393 case CCDIS_MU_P_P_P_P_PIZERO:
return "CCDIS_MU_P_P_P_P_PIZERO";
394 case CCDIS_MU_P_P_P_P_P_PIZERO:
return "CCDIS_MU_P_P_P_P_P_PIZERO";
395 case NCDIS_P:
return "NCDIS_P";
396 case NCDIS_P_P:
return "NCDIS_P_P";
397 case NCDIS_P_P_P:
return "NCDIS_P_P_P";
398 case NCDIS_P_P_P_P:
return "NCDIS_P_P_P_P";
399 case NCDIS_P_P_P_P_P:
return "NCDIS_P_P_P_P_P";
400 case NCDIS_PIPLUS:
return "NCDIS_PIPLUS";
401 case NCDIS_P_PIPLUS:
return "NCDIS_P_PIPLUS";
402 case NCDIS_P_P_PIPLUS:
return "NCDIS_P_P_PIPLUS";
403 case NCDIS_P_P_P_PIPLUS:
return "NCDIS_P_P_P_PIPLUS";
404 case NCDIS_P_P_P_P_PIPLUS:
return "NCDIS_P_P_P_P_PIPLUS";
405 case NCDIS_P_P_P_P_P_PIPLUS:
return "NCDIS_P_P_P_P_P_PIPLUS";
406 case NCDIS_PIMINUS:
return "NCDIS_PIMINUS";
407 case NCDIS_P_PIMINUS:
return "NCDIS_P_PIMINUS";
408 case NCDIS_P_P_PIMINUS:
return "NCDIS_P_P_PIMINUS";
409 case NCDIS_P_P_P_PIMINUS:
return "NCDIS_P_P_P_PIMINUS";
410 case NCDIS_P_P_P_P_PIMINUS:
return "NCDIS_P_P_P_P_PIMINUS";
411 case NCDIS_P_P_P_P_P_PIMINUS:
return "NCDIS_P_P_P_P_P_PIMINUS";
412 case NCDIS_PHOTON:
return "NCDIS_PHOTON";
413 case NCDIS_P_PHOTON:
return "NCDIS_P_PHOTON";
414 case NCDIS_P_P_PHOTON:
return "NCDIS_P_P_PHOTON";
415 case NCDIS_P_P_P_PHOTON:
return "NCDIS_P_P_P_PHOTON";
416 case NCDIS_P_P_P_P_PHOTON:
return "NCDIS_P_P_P_P_PHOTON";
417 case NCDIS_P_P_P_P_P_PHOTON:
return "NCDIS_P_P_P_P_P_PHOTON";
418 case NCDIS_PIZERO:
return "NCDIS_PIZERO";
419 case NCDIS_P_PIZERO:
return "NCDIS_P_PIZERO";
420 case NCDIS_P_P_PIZERO:
return "NCDIS_P_P_PIZERO";
421 case NCDIS_P_P_P_PIZERO:
return "NCDIS_P_P_P_PIZERO";
422 case NCDIS_P_P_P_P_PIZERO:
return "NCDIS_P_P_P_P_PIZERO";
423 case NCDIS_P_P_P_P_P_PIZERO:
return "NCDIS_P_P_P_P_P_PIZERO";
424 case CCCOH:
return "CCCOH";
425 case NCCOH:
return "NCCOH";
426 case COSMIC_RAY_MU:
return "COSMIC_RAY_MU";
427 case COSMIC_RAY_P:
return "COSMIC_RAY_P";
428 case COSMIC_RAY_E:
return "COSMIC_RAY_E";
429 case COSMIC_RAY_PHOTON:
return "COSMIC_RAY_PHOTON";
430 case COSMIC_RAY_OTHER:
return "COSMIC_RAY_OTHER";
431 case BEAM_PARTICLE_MU:
return "BEAM_PARTICLE_MU";
432 case BEAM_PARTICLE_P:
return "BEAM_PARTICLE_P";
433 case BEAM_PARTICLE_E:
return "BEAM_PARTICLE_E";
434 case BEAM_PARTICLE_PHOTON:
return "BEAM_PARTICLE_PHOTON";
435 case BEAM_PARTICLE_PI_PLUS:
return "BEAM_PARTICLE_PI_PLUS";
436 case BEAM_PARTICLE_PI_MINUS:
return "BEAM_PARTICLE_PI_MINUS";
437 case BEAM_PARTICLE_KAON_PLUS:
return "BEAM_PARTICLE_KAON_PLUS";
438 case BEAM_PARTICLE_KAON_MINUS:
return "BEAM_PARTICLE_KAON_MINUS";
439 case BEAM_PARTICLE_OTHER:
return "BEAM_PARTICLE_OTHER";
440 case OTHER_INTERACTION:
return "OTHER_INTERACTION";
441 case ALL_INTERACTIONS:
return "ALL_INTERACTIONS";
442 default:
return "UNKNOWN";
Header file for the interaction type helper class.
Header file for the lar monitoring helper helper class.
Header file for the lar monte carlo particle helper helper class.
InteractionType
InteractionType enum.