GENIEGenerator
Loading...
Searching...
No Matches
genie::hnl Namespace Reference

Namespaces

namespace  enums
 Typedef enums.
namespace  selector
 Form factor lookup tables.

Classes

class  BRCalculator
 Manages HNL BR (prod and decay) More...
class  ChannelCalculatorI
 Pure abstract base class. Defines the ChannelCalculatorI interface to be implemented by BRCalculator Algorithm for calculating HNL production and decay rates. More...
class  Decayer
 Heavy Neutral Lepton final-state product generator. More...
class  DecayRecordVisitorI
 Expands the EventRecordVisitorI interface to include public interfaces for the HNL Decayer module. Concrete implementations of this interface use the 'Visitor' Design Pattern to perform an operation on an EventRecord. More...
class  FluxContainer
 A GENIE flux container specific for HNL containers. Based on the dk2nu flux paradigm and genie::flux::GNuMIFluxPassThroughInfo. More...
class  FluxCreator
 Calculates HNL production kinematics & production vertex. Is a concrete implementation of the FluxRecordVisitorI interface. More...
class  FluxRecordVisitorI
 Expands the EventRecordVisitorI interface to include public interfaces for the HNL FluxCreator module. Concrete implementations of this interface use the 'Visitor' Design Pattern to perform an operation on an EventRecord. More...
class  GeomRecordVisitorI
 Expands the EventRecordVisitorI interface to include public interfaces for the HNL VertexGenerator module. Concrete implementations of this interface use the 'Visitor' Design Pattern to perform an operation on an EventRecord. More...
class  SimpleHNL
 HNL object. More...
class  VertexGenerator
 Heavy Neutral Lepton decay vertex generator given production vertex and momentum ***. More...

Typedefs

typedef enum genie::hnl::EHNLDecayMode HNLDecayMode_t
typedef enum genie::hnl::t_HNLProd HNLProd_t

Enumerations

enum  EHNLDecayMode {
  kHNLDcyNull = -1 , kHNLDcyNuNuNu = 0 , kHNLDcyNuEE = 1 , kHNLDcyNuMuE = 2 ,
  kHNLDcyPi0Nu = 3 , kHNLDcyPiE = 4 , kHNLDcyNuMuMu = 5 , kHNLDcyPiMu = 6 ,
  kHNLDcyPi0Pi0Nu = 7 , kHNLDcyPiPi0E = 8 , kHNLDcyPiPi0Mu = 9 , kHNLDcyTEST = 99
}
enum  t_HNLProd {
  kHNLProdNull = -1 , kHNLProdPion2Muon = 0 , kHNLProdPion2Electron = 1 , kHNLProdKaon2Muon = 2 ,
  kHNLProdKaon2Electron = 3 , kHNLProdKaon3Muon = 4 , kHNLProdKaon3Electron = 5 , kHNLProdNeuk3Muon = 6 ,
  kHNLProdNeuk3Electron = 7 , kHNLProdMuon3Numu = 8 , kHNLProdMuon3Nue = 9 , kHNLProdMuon3Nutau = 10
}

Functions

ostream & operator<< (ostream &stream, const FluxContainer &info)

Detailed Description

Class for the HNL itself

Typedef Documentation

◆ HNLDecayMode_t

◆ HNLProd_t

Enumeration Type Documentation

◆ EHNLDecayMode

Enumerator
kHNLDcyNull 
kHNLDcyNuNuNu 
kHNLDcyNuEE 
kHNLDcyNuMuE 
kHNLDcyPi0Nu 
kHNLDcyPiE 
kHNLDcyNuMuMu 
kHNLDcyPiMu 
kHNLDcyPi0Pi0Nu 
kHNLDcyPiPi0E 
kHNLDcyPiPi0Mu 
kHNLDcyTEST 

Definition at line 31 of file HNLDecayMode.h.

31 {
32
33 kHNLDcyNull = -1, // dummy
34 kHNLDcyNuNuNu = 0, // N --> 3 nus. Summed over all flavours
35 kHNLDcyNuEE = 1, // N --> nu_{a} e^{\mp} e^{\pm}. W and Z interfere
36 kHNLDcyNuMuE = 2, // N --> nu_{\mu/e} e^{\mp} \mu^{\pm}. Only W. Summed over nue and numu
37 kHNLDcyPi0Nu = 3, // N --> \pi^{0} \nu (any kind)
38 kHNLDcyPiE = 4, // N --> \pi^{\pm} e^{\mp}
39 kHNLDcyNuMuMu = 5, // N --> nu_{a} \mu^{\mp} \mu^{\pm}. W and Z interfere
40 kHNLDcyPiMu = 6, // N --> \pi^{\pm} \mu^{\mp}
41 kHNLDcyPi0Pi0Nu = 7, // N --> \pi^{0} \pi^{0} \nu (any kind)
42 kHNLDcyPiPi0E = 8, // N --> \pi^{\pm} \pi^{0} e^{\mp}
43 kHNLDcyPiPi0Mu = 9, // N --> \pi^{\pm} \pi^{0} \mu^{\mp}
44 kHNLDcyTEST = 99, // N --> vv. Test only, not a valid FS.
45
enum genie::hnl::EHNLDecayMode HNLDecayMode_t

◆ t_HNLProd

Enumerator
kHNLProdNull 
kHNLProdPion2Muon 
kHNLProdPion2Electron 
kHNLProdKaon2Muon 
kHNLProdKaon2Electron 
kHNLProdKaon3Muon 
kHNLProdKaon3Electron 
kHNLProdNeuk3Muon 
kHNLProdNeuk3Electron 
kHNLProdMuon3Numu 
kHNLProdMuon3Nue 
kHNLProdMuon3Nutau 

Definition at line 27 of file HNLProductionMode.h.

27 {
28
29 kHNLProdNull = -1,
30 kHNLProdPion2Muon = 0, // pi --> HNL + mu
31 kHNLProdPion2Electron = 1, // pi --> HNL + e
32 kHNLProdKaon2Muon = 2, // K --> HNL + mu
33 kHNLProdKaon2Electron = 3, // K --> HNL + e
34 kHNLProdKaon3Muon = 4, // K --> HNL + mu + pi0
35 kHNLProdKaon3Electron = 5, // K --> HNL + e + pi0
36 kHNLProdNeuk3Muon = 6, // K0 --> HNL + mu + pi
37 kHNLProdNeuk3Electron = 7, // K0 --> HNL + e + pi
38 kHNLProdMuon3Numu = 8, // mu --> HNL + numu + e
39 kHNLProdMuon3Nue = 9, // mu --> HNL + nue + e
40 kHNLProdMuon3Nutau = 10 // mu --> HNL + nutau + e (LFV!)
41
42 } HNLProd_t;
enum genie::hnl::t_HNLProd HNLProd_t

Function Documentation

◆ operator<<()

ostream & genie::hnl::operator<< ( ostream & stream,
const FluxContainer & info )

Definition at line 115 of file HNLFluxContainer.cxx.

117 {
118 // convert some stuff to string
119 HNLProd_t hProdChan = static_cast<HNLProd_t>(info.prodChan);
120
121 std::string sNuProdChan;
122 int typeMod = (info.pdg > 0) ? 1 : -1;
123 int switchChan = typeMod * info.nuProdChan;
124 switch(switchChan){
125 case 1: sNuProdChan = std::string("K0L -> nue + pi- + e+"); break;
126 case -1: sNuProdChan = std::string("K0L -> nuebar + pi+ + e-"); break;
127 case 2: sNuProdChan = std::string("K0L -> numu + pi- + mu"); break;
128 case -2: sNuProdChan = std::string("K0L -> numubar + pi+ + mu-"); break;
129 case 3: sNuProdChan = std::string("K+ -> numu + mu+"); break;
130 case -3: sNuProdChan = std::string("K- -> numubar + mu-"); break;
131 case 4: sNuProdChan = std::string("K+ -> nue + e+"); break;
132 case -4: sNuProdChan = std::string("K- -> nuebar + e-"); break;
133 case 5: sNuProdChan = std::string("K+ -> numu + pi0 + mu+"); break;
134 case -5: sNuProdChan = std::string("K- -> numubar + pi0 + mu-"); break;
135 case 6: sNuProdChan = std::string("K+ -> nue + pi0 + e+"); break;
136 case -6: sNuProdChan = std::string("K- -> nuebar + pi0 + e-"); break;
137 case 7: sNuProdChan = std::string("pi+ -> numu + mu+"); break;
138 case -7: sNuProdChan = std::string("pi- -> numubar + mu-"); break;
139 case 8: sNuProdChan = std::string("pi+ -> nue + e+"); break;
140 case -8: sNuProdChan = std::string("pi- -> nuebar + e-"); break;
141 case 9: sNuProdChan = std::string("mu- -> numu + nuebar + e-"); break;
142 case -9: sNuProdChan = std::string("mu+ -> numubar + nue + e+"); break;
143 default: sNuProdChan = std::string("Unknown!"); break;
144 }
145
146 stream << "\nEvent number: " << info.evtno
147 << "\nHNL PDG code: " << info.pdg
148 << "\nParent PDG code: " << info.parPdg
149 << "\nCo-produced lepton PDG code: " << info.lepPdg
150 << "\nParent weight: " << info.nimpwt
151 << "\nHNL polarisation vector [HNL rest frame, NEAR coords]: " << utils::print::Vec3AsString(&info.polz)
152 << "\nPDG code of equivalent SM neutrino: " << info.nuPdg
153 << "\nProduction channel: " << utils::hnl::ProdAsString(hProdChan)
154 << " ; code " << info.prodChan
155 << "\nEquivalent neutrino production channel: " << sNuProdChan
156 << " ; code " << info.nuProdChan
157 << "\nHNL parent rest-frame energy [GeV]: " << info.Ecm
158 << "\nEquivalent neutrino parent rest-frame energy [GeV]: " << info.nuEcm
159 << "\nStart point [NEAR, m]: " << utils::print::Vec3AsString(&info.startPoint)
160 << "\nStart point [USER, m]: " << utils::print::Vec3AsString(&info.startPointUser)
161 << "\nFlux passes through point [NEAR, m]: " << utils::print::Vec3AsString(&info.targetPoint)
162 << "\nFlux passes through point [USER, m]: " << utils::print::Vec3AsString(&info.targetPointUser)
163 << "\nHNL momentum [NEAR, GeV]: " << utils::print::P4AsString(&info.p4)
164 << "\nHNL momentum [USER, GeV]: " << utils::print::P4AsString(&info.p4User)
165 << "\nHNL delay wrt SM neutrino [ns]: " << info.delay
166 << "\nParent momentum [NEAR, GeV]: " << utils::print::P4AsString(&info.parp4)
167 << "\nParent momentum [USER, GeV]: " << utils::print::P4AsString(&info.parp4User)
168 << "\nDeviation angles zeta- = " << info.zetaMinus << ", zeta+ = " << info.zetaPlus
169 << "\nGeometric acceptance: " << info.XYWgt
170 << "\nBoost correction: " << info.boostCorr
171 << "\nAcceptance correction: " << info.accCorr
172 << "\nFull acceptance: " << info.acceptance;
173
174 return stream;
175 }
double nimpwt
Weight of parent.
double zetaPlus
maximum angular deviation from parent momentum to reach detector [deg]
double Ecm
Parent rest-frame energy of HNL [GeV].
double delay
delay HNL would have wrt SMv [ns]
int nuPdg
PDG code of SM neutrino that would have been produced.
int prodChan
Decay mode that produced HNL.
TVector3 polz
HNL polarisation vector, in HNL rest frame, in NEAR coords.
TLorentzVector parp4
parent momentum at HNL production in NEAR coords [GeV/c]
double zetaMinus
minimum angular deviation from parent momentum to reach detector [deg]
TVector3 targetPoint
point in detector HNL is forced towards in NEAR coords [m]
int nuProdChan
Decay mode that would have produced SM neutrino.
int parPdg
parent PDG code
TLorentzVector parp4User
parent momentum at HNL production in USER coords [GeV/c]
TLorentzVector p4User
HNL momentum in USER coords [GeV/c].
double accCorr
acceptance correction (collimation effect. SM v == 1)
TVector3 startPointUser
parent decay vertex in USER coords [m]
double nuEcm
Parent rest-frame energy of equivalent SM neutrino [GeV].
double XYWgt
geometric acceptance (angular size of detector in parent rest frame)
double boostCorr
boost correction wrt parent rest-frame (ELAB = ECM * boostCorr)
TVector3 startPoint
parent decay vertex in NEAR coords [m]
TLorentzVector p4
HNL momentum in NEAR coords [GeV/c].
TVector3 targetPointUser
point in detector HNL is forced towards in USER coords [m]
double acceptance
full acceptance == XYWgt * boostCorr^2 * accCorr
int lepPdg
PDG code of lepton produced with HNL on parent decay.
string ProdAsString(genie::hnl::HNLProd_t hnlprod)
string Vec3AsString(const TVector3 *vec)
string P4AsString(const TLorentzVector *p)