GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Namespaces | Classes | Typedefs | Enumerations | Functions
genie::hnl Namespace Reference

Namespaces

 enums
 Typedef enums.
 
 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  VertexGenerator
 Heavy Neutral Lepton decay vertex generator given production vertex and momentum ***. More...
 
class  SimpleHNL
 HNL object. More...
 
class  HNLDecayMode
 Enumeration of HNL decay modes. More...
 
class  HNLProductionMode
 Enumeration of HNL production modes. 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

Enumeration Type Documentation

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
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

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

Definition at line 115 of file HNLFluxContainer.cxx.

References genie::hnl::FluxContainer::accCorr, genie::hnl::FluxContainer::acceptance, genie::hnl::FluxContainer::boostCorr, genie::hnl::FluxContainer::delay, genie::hnl::FluxContainer::Ecm, genie::hnl::FluxContainer::evtno, genie::hnl::FluxContainer::lepPdg, genie::hnl::FluxContainer::nimpwt, genie::hnl::FluxContainer::nuEcm, genie::hnl::FluxContainer::nuPdg, genie::hnl::FluxContainer::nuProdChan, genie::hnl::FluxContainer::p4, genie::utils::print::P4AsString(), genie::hnl::FluxContainer::p4User, genie::hnl::FluxContainer::parp4, genie::hnl::FluxContainer::parp4User, genie::hnl::FluxContainer::parPdg, genie::hnl::FluxContainer::pdg, genie::hnl::FluxContainer::polz, genie::utils::hnl::ProdAsString(), genie::hnl::FluxContainer::prodChan, genie::hnl::FluxContainer::startPoint, genie::hnl::FluxContainer::startPointUser, genie::hnl::FluxContainer::targetPoint, genie::hnl::FluxContainer::targetPointUser, genie::utils::print::Vec3AsString(), genie::hnl::FluxContainer::XYWgt, genie::hnl::FluxContainer::zetaMinus, and genie::hnl::FluxContainer::zetaPlus.

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  }
enum genie::hnl::t_HNLProd HNLProd_t
TLorentzVector parp4
parent momentum at HNL production in NEAR coords [GeV/c]
double Ecm
Parent rest-frame energy of HNL [GeV].
double zetaMinus
minimum angular deviation from parent momentum to reach detector [deg]
double nuEcm
Parent rest-frame energy of equivalent SM neutrino [GeV].
double delay
delay HNL would have wrt SMv [ns]
TVector3 startPoint
parent decay vertex in NEAR coords [m]
int lepPdg
PDG code of lepton produced with HNL on parent decay.
TVector3 polz
HNL polarisation vector, in HNL rest frame, in NEAR coords.
int parPdg
parent PDG code
string P4AsString(const TLorentzVector *p)
Definition: PrintUtils.cxx:27
double zetaPlus
maximum angular deviation from parent momentum to reach detector [deg]
TVector3 startPointUser
parent decay vertex in USER coords [m]
TLorentzVector parp4User
parent momentum at HNL production in USER coords [GeV/c]
TLorentzVector p4
HNL momentum in NEAR coords [GeV/c].
TLorentzVector p4User
HNL momentum in USER coords [GeV/c].
int prodChan
Decay mode that produced HNL.
string ProdAsString(genie::hnl::HNLProd_t hnlprod)
double acceptance
full acceptance == XYWgt * boostCorr^2 * accCorr
TVector3 targetPointUser
point in detector HNL is forced towards in USER coords [m]
TVector3 targetPoint
point in detector HNL is forced towards in NEAR coords [m]
double nimpwt
Weight of parent.
double accCorr
acceptance correction (collimation effect. SM v == 1)
int nuPdg
PDG code of SM neutrino that would have been produced.
double XYWgt
geometric acceptance (angular size of detector in parent rest frame)
int nuProdChan
Decay mode that would have produced SM neutrino.
double boostCorr
boost correction wrt parent rest-frame (ELAB = ECM * boostCorr)
string Vec3AsString(const TVector3 *vec)
Definition: PrintUtils.cxx:80