8 #ifndef LAR_INTERACTION_TYPE_HELPER_H 9 #define LAR_INTERACTION_TYPE_HELPER_H 1 19 #define INTERACTION_TYPE_TABLE(d) \ 24 d(CCQEL_MU_P_P_P_P ) \ 25 d(CCQEL_MU_P_P_P_P_P ) \ 31 d(CCQEL_E_P_P_P_P_P ) \ 41 d(CCRES_MU_P_P_P_P ) \ 42 d(CCRES_MU_P_P_P_P_P ) \ 44 d(CCRES_MU_P_PIPLUS ) \ 45 d(CCRES_MU_P_P_PIPLUS ) \ 46 d(CCRES_MU_P_P_P_PIPLUS ) \ 47 d(CCRES_MU_P_P_P_P_PIPLUS ) \ 48 d(CCRES_MU_P_P_P_P_P_PIPLUS ) \ 50 d(CCRES_MU_P_PHOTON ) \ 51 d(CCRES_MU_P_P_PHOTON ) \ 52 d(CCRES_MU_P_P_P_PHOTON ) \ 53 d(CCRES_MU_P_P_P_P_PHOTON ) \ 54 d(CCRES_MU_P_P_P_P_P_PHOTON ) \ 56 d(CCRES_MU_P_PIZERO ) \ 57 d(CCRES_MU_P_P_PIZERO ) \ 58 d(CCRES_MU_P_P_P_PIZERO ) \ 59 d(CCRES_MU_P_P_P_P_PIZERO ) \ 60 d(CCRES_MU_P_P_P_P_P_PIZERO ) \ 66 d(CCRES_E_P_P_P_P_P ) \ 68 d(CCRES_E_P_PIPLUS ) \ 69 d(CCRES_E_P_P_PIPLUS ) \ 70 d(CCRES_E_P_P_P_PIPLUS ) \ 71 d(CCRES_E_P_P_P_P_PIPLUS ) \ 72 d(CCRES_E_P_P_P_P_P_PIPLUS ) \ 74 d(CCRES_E_P_PHOTON ) \ 75 d(CCRES_E_P_P_PHOTON ) \ 76 d(CCRES_E_P_P_P_PHOTON ) \ 77 d(CCRES_E_P_P_P_P_PHOTON ) \ 78 d(CCRES_E_P_P_P_P_P_PHOTON ) \ 80 d(CCRES_E_P_PIZERO ) \ 81 d(CCRES_E_P_P_PIZERO ) \ 82 d(CCRES_E_P_P_P_PIZERO ) \ 83 d(CCRES_E_P_P_P_P_PIZERO ) \ 84 d(CCRES_E_P_P_P_P_P_PIZERO ) \ 92 d(NCRES_P_P_PIPLUS ) \ 93 d(NCRES_P_P_P_PIPLUS ) \ 94 d(NCRES_P_P_P_P_PIPLUS ) \ 95 d(NCRES_P_P_P_P_P_PIPLUS ) \ 98 d(NCRES_P_P_PIMINUS ) \ 99 d(NCRES_P_P_P_PIMINUS ) \ 100 d(NCRES_P_P_P_P_PIMINUS ) \ 101 d(NCRES_P_P_P_P_P_PIMINUS ) \ 104 d(NCRES_P_P_PHOTON ) \ 105 d(NCRES_P_P_P_PHOTON ) \ 106 d(NCRES_P_P_P_P_PHOTON ) \ 107 d(NCRES_P_P_P_P_P_PHOTON ) \ 110 d(NCRES_P_P_PIZERO ) \ 111 d(NCRES_P_P_P_PIZERO ) \ 112 d(NCRES_P_P_P_P_PIZERO ) \ 113 d(NCRES_P_P_P_P_P_PIZERO ) \ 118 d(CCDIS_MU_P_P_P_P ) \ 119 d(CCDIS_MU_P_P_P_P_P ) \ 120 d(CCDIS_MU_PIPLUS ) \ 121 d(CCDIS_MU_P_PIPLUS ) \ 122 d(CCDIS_MU_P_P_PIPLUS ) \ 123 d(CCDIS_MU_P_P_P_PIPLUS ) \ 124 d(CCDIS_MU_P_P_P_P_PIPLUS ) \ 125 d(CCDIS_MU_P_P_P_P_P_PIPLUS ) \ 126 d(CCDIS_MU_PHOTON ) \ 127 d(CCDIS_MU_P_PHOTON ) \ 128 d(CCDIS_MU_P_P_PHOTON ) \ 129 d(CCDIS_MU_P_P_P_PHOTON ) \ 130 d(CCDIS_MU_P_P_P_P_PHOTON ) \ 131 d(CCDIS_MU_P_P_P_P_P_PHOTON ) \ 132 d(CCDIS_MU_PIZERO ) \ 133 d(CCDIS_MU_P_PIZERO ) \ 134 d(CCDIS_MU_P_P_PIZERO ) \ 135 d(CCDIS_MU_P_P_P_PIZERO ) \ 136 d(CCDIS_MU_P_P_P_P_PIZERO ) \ 137 d(CCDIS_MU_P_P_P_P_P_PIZERO ) \ 142 d(NCDIS_P_P_P_P_P ) \ 145 d(NCDIS_P_P_PIPLUS ) \ 146 d(NCDIS_P_P_P_PIPLUS ) \ 147 d(NCDIS_P_P_P_P_PIPLUS ) \ 148 d(NCDIS_P_P_P_P_P_PIPLUS ) \ 150 d(NCDIS_P_PIMINUS ) \ 151 d(NCDIS_P_P_PIMINUS ) \ 152 d(NCDIS_P_P_P_PIMINUS ) \ 153 d(NCDIS_P_P_P_P_PIMINUS ) \ 154 d(NCDIS_P_P_P_P_P_PIMINUS ) \ 157 d(NCDIS_P_P_PHOTON ) \ 158 d(NCDIS_P_P_P_PHOTON ) \ 159 d(NCDIS_P_P_P_P_PHOTON ) \ 160 d(NCDIS_P_P_P_P_P_PHOTON ) \ 163 d(NCDIS_P_P_PIZERO ) \ 164 d(NCDIS_P_P_P_PIZERO ) \ 165 d(NCDIS_P_P_P_P_PIZERO ) \ 166 d(NCDIS_P_P_P_P_P_PIZERO ) \ 172 d(COSMIC_RAY_PHOTON ) \ 173 d(COSMIC_RAY_OTHER ) \ 174 d(BEAM_PARTICLE_MU ) \ 175 d(BEAM_PARTICLE_P ) \ 176 d(BEAM_PARTICLE_E ) \ 177 d(BEAM_PARTICLE_PHOTON ) \ 178 d(BEAM_PARTICLE_PI_PLUS ) \ 179 d(BEAM_PARTICLE_PI_MINUS ) \ 180 d(BEAM_PARTICLE_KAON_PLUS ) \ 181 d(BEAM_PARTICLE_KAON_MINUS ) \ 182 d(BEAM_PARTICLE_OTHER ) \ 183 d(BEAM_PARTICLE_PI_PLUS_PI_PLUS ) \ 184 d(BEAM_PARTICLE_PI_PLUS_PI_PLUS_PHOTON ) \ 185 d(BEAM_PARTICLE_PI_PLUS_PI_PLUS_PIZERO ) \ 186 d(BEAM_PARTICLE_PI_PLUS_COMPLEX ) \ 187 d(BEAM_PARTICLE_PI_MINUS_PI_MINUS ) \ 188 d(BEAM_PARTICLE_PI_MINUS_PI_MINUS_PHOTON ) \ 189 d(BEAM_PARTICLE_PI_MINUS_PI_MINUS_PIZERO ) \ 190 d(BEAM_PARTICLE_PI_MINUS_COMPLEX ) \ 191 d(BEAM_PARTICLE_P_P ) \ 192 d(BEAM_PARTICLE_P_P_PHOTON ) \ 193 d(BEAM_PARTICLE_P_P_PHOTON_PHOTON ) \ 194 d(BEAM_PARTICLE_P_P_PHOTON_PHOTON_PHOTON ) \ 195 d(BEAM_PARTICLE_P_P_PHOTON_PHOTON_PHOTON_PHOTON ) \ 196 d(BEAM_PARTICLE_P_P_P ) \ 197 d(BEAM_PARTICLE_P_P_P_PHOTON ) \ 198 d(BEAM_PARTICLE_P_P_P_PHOTON_PHOTON ) \ 199 d(BEAM_PARTICLE_P_P_P_PHOTON_PHOTON_PHOTON ) \ 200 d(BEAM_PARTICLE_P_P_P_P ) \ 201 d(BEAM_PARTICLE_P_P_P_P_PHOTON ) \ 202 d(BEAM_PARTICLE_P_P_P_P_PHOTON_PHOTON ) \ 203 d(BEAM_PARTICLE_P_P_P_P_P ) \ 204 d(BEAM_PARTICLE_P_P_P_P_P_PHOTON ) \ 205 d(BEAM_PARTICLE_P_P_P_P_P_P ) \ 206 d(BEAM_PARTICLE_P_COMPLEX ) \ 207 d(BEAM_PARTICLE_MU_E ) \ 208 d(BEAM_PARTICLE_MU_COMPLEX ) \ 209 d(BEAM_PARTICLE_KAON_PLUS_MU ) \ 210 d(BEAM_PARTICLE_KAON_PLUS_KAON_PLUS_KAON0L_COMPLEX ) \ 211 d(BEAM_PARTICLE_KAON_PLUS_KAON_PLUS_COMPLEX ) \ 212 d(BEAM_PARTICLE_KAON_PLUS_COMPLEX ) \ 213 d(BEAM_PARTICLE_KAON_MINUS_MU ) \ 214 d(BEAM_PARTICLE_KAON_MINUS_KAON_MINUS_KAON0L_COMPLEX) \ 215 d(BEAM_PARTICLE_KAON_MINUS_KAON_MINUS_COMPLEX ) \ 216 d(BEAM_PARTICLE_KAON_MINUS_COMPLEX ) \ 217 d(BEAM_PARTICLE_E_COMPLEX ) \ 218 d(BEAM_PARTICLE_COMPLEX_HIERARCHY ) \ 219 d(BEAM_PARTICLE_UNKNOWN_HIERARCHY ) \ 220 d(OTHER_INTERACTION ) \ 226 #define GET_INTERACTION_TYPE_ENTRY(a) \ 232 #define GET_INTERACTION_TYPE_NAME_SWITCH(a) \ 233 case a : return std::string(#a); 236 class InteractionDescriptor;
261 InteractionParameters();
349 InteractionDescriptor(
const bool isCC,
const bool isQE,
const bool isRes,
const bool isDIS,
const bool isCoherent,
const bool isNumu,
350 const bool isNue,
const unsigned int nPiPlus,
const unsigned int nPiMinus,
const unsigned int nPhotons,
const unsigned int nProtons);
371 bool IsResonant()
const;
385 bool IsCoherent()
const;
392 bool IsMuonNeutrino()
const;
399 bool IsElectronNeutrino()
const;
406 unsigned int GetNumPiZero()
const;
413 unsigned int GetNumPiPlus()
const;
420 unsigned int GetNumPiMinus()
const;
427 unsigned int GetNumPhotons()
const;
434 unsigned int GetNumProtons()
const;
442 int GetUniqueId()
const;
449 const std::string &
ToString()
const;
583 #endif // #ifndef LAR_INTERACTION_TYPE_HELPER_H unsigned int GetNumPiZero() const
Retrieve the number of pi zeros.
bool IsElectronNeutrino() const
Whether or not the interaction is electron neutrino.
bool IsQE() const
Whether or not the interaction is QE.
unsigned int GetNumPhotons() const
Retrieve the number of photons.
unsigned int GetNumPiMinus() const
Retrieve the number of pi minus.
const unsigned int m_nPiPlus
const unsigned int m_nPhotons
bool IsResonant() const
Whether or not the interaction is resonant.
static void SetInteractionParameters(const pandora::MCParticleList &mcPrimaryList, InteractionParameters ¶meters)
Set parameters describing the number and species of primary interaction products. ...
static InteractionType GetInteractionType(const pandora::MCParticleList &mcPrimaryList)
Get the interaction type of an event.
bool IsCoherent() const
Whether or not the interaction is coherent.
const std::string & ToString() const
Retrieve the string descriptor for the event.
unsigned int GetNumProtons() const
Retrieve the number of protons.
#define GET_INTERACTION_TYPE_ENTRY(a)
The particle type enum macro.
const unsigned int m_nProtons
LArInteractionTypeHelper class.
unsigned int m_nNonNeutrons
Header file for the lar monte carlo particle helper helper class.
static std::string ToString(const InteractionType interactionType)
Get a string representation of an interaction type.
const unsigned int m_nPiZero
Header file for the lar mc particle class.
InteractionType
InteractionType enum.
const unsigned int m_nPiMinus
unsigned int m_nElectrons
bool IsMuonNeutrino() const
Whether or not the interaction is muon neutrino.
int GetUniqueId() const
Retrieve a unique ID describing the event (that is, a given type of interaction with specific final s...
static InteractionType GetTestBeamHierarchyInteractionType(const pandora::MCParticleList &mcPrimaryList)
Get the test beam hierarchy interaction type of an event.
static InteractionDescriptor GetInteractionDescriptor(const pandora::MCParticleList &mcPrimaryList)
Get the interaction descriptor of an event.
static InteractionType CosmicRayHypothesis(const pandora::MCParticleList &mcPrimaryList, const InteractionParameters ¶meters)
Get the interaction type of an event under a cosmic ray hypothesis.
unsigned int GetNumPiPlus() const
Retrieve the number of pi plus.
bool IsDIS() const
Whether or not the interaction is DIS.
unsigned int m_nKaonMinus
bool IsCC() const
Whether or not the interaction is CC.