MCNeutrino.h
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////
2 /// \file MCNeutrino.cxx
3 /// \brief Simple MC truth class, holds a vector of TParticles
4 ///
5 /// \version $Id: MCNeutrino.h,v 1.6 2012-11-20 17:39:38 brebel Exp $
6 /// \author jpaley@indiana.edu
7 ////////////////////////////////////////////////////////////////////////
8 #ifndef SIMB_MCNEUTRINO_H
9 #define SIMB_MCNEUTRINO_H
10 
12 
13 namespace simb {
14 
15  //......................................................................
16 
17  /// Event generator information
18  class MCNeutrino {
19  public:
20 
21  MCNeutrino();
22 
23  private:
24 
25  simb::MCParticle fNu; ///< the incoming neutrino
26  simb::MCParticle fLepton; ///< the outgoing lepton
27  int fMode; ///< Interaction mode (QE/1-pi/DIS...) see enum list
28  int fInteractionType; ///< More detailed interaction type, see enum list below kNuanceOffset
29  int fCCNC; ///< CC or NC interaction? see enum list
30  int fTarget; ///< Nuclear target, as PDG code
31  int fHitNuc; ///< Hit nucleon (2212 (proton) or 2112 (neutron))
32  int fHitQuark; ///< For DIS events only, as PDG code
33  double fW; ///< Hadronic invariant mass, in GeV
34  double fX; ///< Bjorken x=Q^2/(2M*(E_neutrino-E_lepton)), unitless
35  double fY; ///< Inelasticity y=1-(E_lepton/E_neutrino), unitless
36  double fQSqr; ///< Momentum transfer Q^2, in GeV^2
37 
38  public:
39 
41  simb::MCParticle &lep,
42  int CCNC,
43  int mode,
44  int interactionType,
45  int target,
46  int nucleon,
47  int quark,
48  double w,
49  double x,
50  double y,
51  double qsqr);
52 
53  const simb::MCParticle& Nu() const;
54  const simb::MCParticle& Lepton() const;
55  int CCNC() const;
56  int Mode() const;
57  int InteractionType() const;
58  int Target() const;
59  int HitNuc() const;
60  int HitQuark() const;
61  double W() const;
62  double X() const;
63  double Y() const;
64  double QSqr() const;
65  double Pt() const; ///< transverse momentum of interaction, in GeV/c
66  double Theta() const; ///< angle between incoming and outgoing leptons, in radians
67  friend std::ostream& operator<< (std::ostream& output, const simb::MCNeutrino &mcnu);
68  };
69 }
70 
71 namespace simb{
72  /// Neutrino interaction categories
73  enum curr_type_{
74  kCC,
76  };
77 
78  /// Neutrino interaction categories
79  enum int_type_{
80  kUnknownInteraction = -1, ///< n.b.: this group is similar but not quite, entirely unlike GENIE ScatteringType convention
81  kQE = 0,
82  kRes = 1,
83  kDIS = 2,
84  kCoh = 3,
91  kMEC = 10,
93  kEM = 12,
94  kWeakMix = 13,
95  kNuanceOffset = 1000, ///< offset to account for adding in Nuance codes to this enum
96  kCCQE = kNuanceOffset + 1, ///< charged current quasi-elastic
97  kNCQE = kNuanceOffset + 2, ///< neutral current quasi-elastic
98  kResCCNuProtonPiPlus = kNuanceOffset + 3, ///< resonant charged current, nu p -> l- p pi+
99  kResCCNuNeutronPi0 = kNuanceOffset + 4, ///< resonant charged current, nu n -> l- p pi0
100  kResCCNuNeutronPiPlus = kNuanceOffset + 5, ///< resonant charged current, nu n -> l- n pi+
101  kResNCNuProtonPi0 = kNuanceOffset + 6, ///< resonant neutral current, nu p -> nu p pi0
102  kResNCNuProtonPiPlus = kNuanceOffset + 7, ///< resonant neutral current, nu p -> nu p pi+
103  kResNCNuNeutronPi0 = kNuanceOffset + 8, ///< resonant neutral current, nu n -> nu n pi0
104  kResNCNuNeutronPiMinus = kNuanceOffset + 9, ///< resonant neutral current, nu n -> nu p pi-
105  kResCCNuBarNeutronPiMinus = kNuanceOffset + 10, ///< resonant charged current, nubar n -> l+ n pi-
106  kResCCNuBarProtonPi0 = kNuanceOffset + 11, ///< resonant charged current, nubar p -> l+ n pi0
107  kResCCNuBarProtonPiMinus = kNuanceOffset + 12, ///< resonant charged current, nubar p -> l+ p pi-
108  kResNCNuBarProtonPi0 = kNuanceOffset + 13, ///< resonant charged current, nubar p -> nubar p pi0
109  kResNCNuBarProtonPiPlus = kNuanceOffset + 14, ///< resonant charged current, nubar p -> nubar n pi+
110  kResNCNuBarNeutronPi0 = kNuanceOffset + 15, ///< resonant charged current, nubar n -> nubar n pi0
111  kResNCNuBarNeutronPiMinus = kNuanceOffset + 16, ///< resonant charged current, nubar n -> nubar p pi-
133  kCCDIS = kNuanceOffset + 91, ///< charged current deep inelastic scatter
134  kNCDIS = kNuanceOffset + 92, ///< charged current deep inelastic scatter
139  kCCCOH = kNuanceOffset + 97, ///< charged current coherent pion
140  kNuElectronElastic = kNuanceOffset + 98, ///< neutrino electron elastic scatter
141  kInverseMuDecay = kNuanceOffset + 99, ///< inverse muon decay
142  kMEC2p2h = kNuanceOffset + 100 ///< extension of nuance encoding for MEC / 2p2h
143  };
144 }
145 
146 inline const simb::MCParticle& simb::MCNeutrino::Nu() const { return fNu; }
147 inline const simb::MCParticle& simb::MCNeutrino::Lepton() const { return fLepton; }
148 inline int simb::MCNeutrino::CCNC() const { return fCCNC; }
149 inline int simb::MCNeutrino::Mode() const { return fMode; }
151 inline int simb::MCNeutrino::Target() const { return fTarget; }
152 inline int simb::MCNeutrino::HitNuc() const { return fHitNuc; }
153 inline int simb::MCNeutrino::HitQuark() const { return fHitQuark; }
154 inline double simb::MCNeutrino::W() const { return fW; }
155 inline double simb::MCNeutrino::X() const { return fX; }
156 inline double simb::MCNeutrino::Y() const { return fY; }
157 inline double simb::MCNeutrino::QSqr() const { return fQSqr; }
158 
159 #endif //SIMB_MCNEUTRINO_H
160 ////////////////////////////////////////////////////////////////////////
neutral current quasi-elastic
Definition: MCNeutrino.h:97
ofstream output
resonant charged current, nubar p -> nubar n pi+
Definition: MCNeutrino.h:109
int CCNC() const
Definition: MCNeutrino.h:148
double QSqr() const
Definition: MCNeutrino.h:157
double Theta() const
angle between incoming and outgoing leptons, in radians
Definition: MCNeutrino.cxx:63
double fX
Bjorken x=Q^2/(2M*(E_neutrino-E_lepton)), unitless.
Definition: MCNeutrino.h:34
resonant neutral current, nu p -> nu p pi0
Definition: MCNeutrino.h:101
charged current deep inelastic scatter
Definition: MCNeutrino.h:134
const XML_Char * target
Definition: expat.h:268
resonant charged current, nubar p -> l+ p pi-
Definition: MCNeutrino.h:107
int fTarget
Nuclear target, as PDG code.
Definition: MCNeutrino.h:30
int HitQuark() const
Definition: MCNeutrino.h:153
neutrino electron elastic scatter
Definition: MCNeutrino.h:140
const simb::MCParticle & Nu() const
Definition: MCNeutrino.h:146
resonant charged current, nubar p -> l+ n pi0
Definition: MCNeutrino.h:106
int fHitNuc
Hit nucleon (2212 (proton) or 2112 (neutron))
Definition: MCNeutrino.h:31
double Pt() const
transverse momentum of interaction, in GeV/c
Definition: MCNeutrino.cxx:74
int HitNuc() const
Definition: MCNeutrino.h:152
offset to account for adding in Nuance codes to this enum
Definition: MCNeutrino.h:95
charged current quasi-elastic
Definition: MCNeutrino.h:96
Particle class.
double fQSqr
Momentum transfer Q^2, in GeV^2.
Definition: MCNeutrino.h:36
resonant charged current, nubar p -> nubar p pi0
Definition: MCNeutrino.h:108
simb::MCParticle fNu
the incoming neutrino
Definition: MCNeutrino.h:25
resonant charged current, nu n -> l- p pi0
Definition: MCNeutrino.h:99
int InteractionType() const
Definition: MCNeutrino.h:150
simb::MCParticle fLepton
the outgoing lepton
Definition: MCNeutrino.h:26
const simb::MCParticle & Lepton() const
Definition: MCNeutrino.h:147
resonant neutral current, nu n -> nu n pi0
Definition: MCNeutrino.h:103
double W() const
Definition: MCNeutrino.h:154
resonant charged current, nu n -> l- n pi+
Definition: MCNeutrino.h:100
extension of nuance encoding for MEC / 2p2h
Definition: MCNeutrino.h:142
double Y() const
Definition: MCNeutrino.h:156
int fMode
Interaction mode (QE/1-pi/DIS...) see enum list.
Definition: MCNeutrino.h:27
resonant charged current, nubar n -> nubar p pi-
Definition: MCNeutrino.h:111
double fW
Hadronic invariant mass, in GeV.
Definition: MCNeutrino.h:33
int fCCNC
CC or NC interaction? see enum list.
Definition: MCNeutrino.h:29
double X() const
Definition: MCNeutrino.h:155
This class describes a particle created in the detector Monte Carlo simulation.
charged current deep inelastic scatter
Definition: MCNeutrino.h:133
resonant charged current, nu p -> l- p pi+
Definition: MCNeutrino.h:98
friend std::ostream & operator<<(std::ostream &output, const simb::MCNeutrino &mcnu)
Definition: MCNeutrino.cxx:80
n.b.: this group is similar but not quite, entirely unlike GENIE ScatteringType convention ...
Definition: MCNeutrino.h:80
int Target() const
Definition: MCNeutrino.h:151
charged current coherent pion
Definition: MCNeutrino.h:139
resonant neutral current, nu n -> nu p pi-
Definition: MCNeutrino.h:104
double fY
Inelasticity y=1-(E_lepton/E_neutrino), unitless.
Definition: MCNeutrino.h:35
inverse muon decay
Definition: MCNeutrino.h:141
int_type_
Neutrino interaction categories.
Definition: MCNeutrino.h:79
resonant charged current, nubar n -> l+ n pi-
Definition: MCNeutrino.h:105
resonant charged current, nubar n -> nubar n pi0
Definition: MCNeutrino.h:110
int fHitQuark
For DIS events only, as PDG code.
Definition: MCNeutrino.h:32
curr_type_
Neutrino interaction categories.
Definition: MCNeutrino.h:73
Event generator information.
Definition: MCNeutrino.h:18
Float_t w
Definition: plot.C:20
int Mode() const
Definition: MCNeutrino.h:149
resonant neutral current, nu p -> nu p pi+
Definition: MCNeutrino.h:102
int fInteractionType
More detailed interaction type, see enum list below kNuanceOffset.
Definition: MCNeutrino.h:28