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

Form factor lookup tables. More...

Functions

static __attribute__ ((unused)) double fDecayGammas[]
 
std::map
< genie::hnl::HNLDecayMode_t,
double > 
GetValidChannelWidths (const double M, const double Ue42, const double Umu42, const double Ut42, const bool IsMajorana=false)
 
double GetTotalDecayWidth (std::map< genie::hnl::HNLDecayMode_t, double > gammaMap)
 
double CalcCoMLifetime (const double M, const double Ue42, const double Umu42, const double Ut42, const bool IsMajorana=false)
 
std::map
< genie::hnl::HNLDecayMode_t,
double > 
SetInterestingChannels (std::vector< genie::hnl::HNLDecayMode_t > intChannels, std::map< genie::hnl::HNLDecayMode_t, double > gammaMap)
 
std::map
< genie::hnl::HNLDecayMode_t,
double > 
GetProbabilities (std::map< genie::hnl::HNLDecayMode_t, double > gammaMap)
 
genie::hnl::HNLDecayMode_t SelectChannelInclusive (std::map< genie::hnl::HNLDecayMode_t, double > Pmap, double ranThrow)
 

Variables

static const double PARTWIDTH = 1e-3
 
static const double FormfactorX []
 
static const double FormfactorF1 []
 
static const double FormfactorF2 []
 

Detailed Description

Form factor lookup tables.

Transformation inclusive-method channel selector.

Lookup tables provided for the functions f_{1}(x) and f_{2}(x) that enter the N –> {} {} channel

Author
John Plows komni.nosp@m.nos-.nosp@m.john..nosp@m.plow.nosp@m.s@phy.nosp@m.sics.nosp@m..ox.a.nosp@m.c.uk
Created:
January 25th, 2022
License:
Copyright (c) 2003-2024, The GENIE Collaboration For the full text of the license visit http://copyright.genie-mc.org

Handles the inclusive-type transformation selection

Author
John Plows komni.nosp@m.nos-.nosp@m.john..nosp@m.plow.nosp@m.s@phy.nosp@m.sics.nosp@m..ox.a.nosp@m.c.uk
Created:
December 9th, 2021
License:
Copyright (c) 2003-2024, The GENIE Collaboration For the full text of the license visit http://copyright.genie-mc.org

Function Documentation

static genie::hnl::selector::__attribute__ ( (unused)  )
static
double genie::hnl::selector::CalcCoMLifetime ( const double  M,
const double  Ue42,
const double  Umu42,
const double  Ut42,
const bool  IsMajorana = false 
)

Definition at line 194 of file HNLDecaySelector.cxx.

References GetTotalDecayWidth(), and GetValidChannelWidths().

194  {
195 
196  std::map< HNLDecayMode_t, double > allChannels = selector::GetValidChannelWidths( M, Ue42, Umu42, Ut42, IsMajorana );
197  double totGamma = selector::GetTotalDecayWidth( allChannels );
198  return 1.0 / totGamma; // GeV^{-1}
199 }
double GetTotalDecayWidth(std::map< genie::hnl::HNLDecayMode_t, double > gammaMap)
std::map< genie::hnl::HNLDecayMode_t, double > GetValidChannelWidths(const double M, const double Ue42, const double Umu42, const double Ut42, const bool IsMajorana=false)
std::map< genie::hnl::HNLDecayMode_t, double > genie::hnl::selector::GetProbabilities ( std::map< genie::hnl::HNLDecayMode_t, double >  gammaMap)

Referenced by SelectDecayMode().

double genie::hnl::selector::GetTotalDecayWidth ( std::map< genie::hnl::HNLDecayMode_t, double >  gammaMap)

Referenced by CalcCoMLifetime().

std::map< HNLDecayMode_t, double > genie::hnl::selector::GetValidChannelWidths ( const double  M,
const double  Ue42,
const double  Umu42,
const double  Ut42,
const bool  IsMajorana = false 
)

Definition at line 18 of file HNLDecaySelector.cxx.

References genie::hnl::BRCalculator::DecayWidth(), genie::AlgFactory::GetAlgorithm(), genie::AlgFactory::Instance(), genie::constants::kElectronMass, genie::hnl::kHNLDcyNuEE, genie::hnl::kHNLDcyNuMuE, genie::hnl::kHNLDcyNuMuMu, genie::hnl::kHNLDcyNuNuNu, genie::hnl::kHNLDcyPi0Nu, genie::hnl::kHNLDcyPi0Pi0Nu, genie::hnl::kHNLDcyPiE, genie::hnl::kHNLDcyPiMu, genie::hnl::kHNLDcyPiPi0E, genie::hnl::kHNLDcyPiPi0Mu, genie::constants::kMuonMass, genie::constants::kPi0Mass, genie::constants::kPionMass, LOG, and pDEBUG.

Referenced by CalcCoMLifetime().

18  {
19 
20  // construct an BRCalculator * object to handle the scalings.
21  const Algorithm * algBRCalc = AlgFactory::Instance()->GetAlgorithm("genie::hnl::BRCalculator", "Default");
22  const BRCalculator * BRCalc = dynamic_cast< const BRCalculator * >( algBRCalc );
23 
24  std::map< HNLDecayMode_t, double > allChannels;
25 
26  // invisible decay is always possible
27  double GINV = 0.0;
28  if( fDecayGammas[0] < 0.0 ){
29  GINV = BRCalc->DecayWidth( kHNLDcyNuNuNu );
30  if( IsMajorana ) GINV *= 2.0;
31  fDecayGammas[0] = GINV;
32  LOG("HNL", pDEBUG)
33  << " Invisible decay gamma = " << fDecayGammas[0];
34  } else GINV = fDecayGammas[0];
35  allChannels.insert( allChannels.begin(), std::pair< HNLDecayMode_t, double >( kHNLDcyNuNuNu, GINV ) );
36 
37  assert( GINV >= 0.0 );
38 
39  // nu-e-e is next lightest
40  if( M < 2.0 * genie::constants::kElectronMass ) return allChannels;
41 
42  double GNEE = 0.0;
43  if( fDecayGammas[1] < 0.0 ){
44  GNEE = BRCalc->DecayWidth( kHNLDcyNuEE );
45  if( IsMajorana ) GNEE *= 2.0;
46  fDecayGammas[1] = GNEE;
47  LOG("HNL", pDEBUG)
48  << " Nu-e-e gamma = " << fDecayGammas[1];
49  } else GNEE = fDecayGammas[1];
50  allChannels.insert( allChannels.begin(), std::pair< HNLDecayMode_t, double >( kHNLDcyNuEE, GNEE ) );
51 
52  assert( GNEE >= 0.0 );
53 
54  // nu-e-mu is next lightest
55  if( M < genie::constants::kElectronMass + genie::constants::kMuonMass ) return allChannels;
56 
57  double GNEM = 0.0;
58  if( fDecayGammas[2] < 0.0 ){
59  GNEM = BRCalc->DecayWidth( kHNLDcyNuMuE );
60  if( IsMajorana ) GNEM *= 2.0;
61  fDecayGammas[2] = GNEM;
62  LOG("HNL", pDEBUG)
63  << " Nu-e-mu gamma = " << fDecayGammas[2];
64  } else GNEM = fDecayGammas[2];
65  allChannels.insert( allChannels.begin(), std::pair< HNLDecayMode_t, double >( kHNLDcyNuMuE, GNEM ) );
66 
67  assert( GNEM >= 0.0 );
68 
69  // pi0-nu is next lightest
70  if( M < genie::constants::kPi0Mass ) return allChannels;
71 
72  double GP0N = 0.0;
73  if( fDecayGammas[3] < 0.0 ){
74  GP0N = BRCalc->DecayWidth( kHNLDcyPi0Nu );
75  if( IsMajorana ) GP0N *= 2.0;
76  fDecayGammas[3] = GP0N;
77  LOG("HNL", pDEBUG)
78  << " Pi0-nu gamma = " << fDecayGammas[3];
79  } else GP0N = fDecayGammas[3];
80  allChannels.insert( allChannels.begin(), std::pair< HNLDecayMode_t, double >( kHNLDcyPi0Nu, GP0N ) );
81 
82  assert( GP0N >= 0.0 );
83 
84  // pi-e is next lightest
85  if( M < genie::constants::kPionMass + genie::constants::kElectronMass ) return allChannels;
86 
87  double GPIE = 0.0;
88  if( fDecayGammas[4] < 0.0 ){
89  GPIE = BRCalc->DecayWidth( kHNLDcyPiE );
90  if( IsMajorana ) GPIE *= 2.0;
91  fDecayGammas[4] = GPIE;
92  LOG("HNL", pDEBUG)
93  << " Pi-e gamma = " << fDecayGammas[4];
94  } else GPIE = fDecayGammas[4];
95  allChannels.insert( allChannels.begin(), std::pair< HNLDecayMode_t, double >( kHNLDcyPiE, GPIE) );
96 
97  assert( GPIE >= 0.0 );
98 
99  // nu-mu-mu is next lightest
100  if( M < 2.0 * genie::constants::kMuonMass ) return allChannels;
101 
102  double GNMM = 0.0;
103  if( fDecayGammas[5] < 0.0 ){
104  GNMM = BRCalc->DecayWidth( kHNLDcyNuMuMu );
105  if( IsMajorana ) GNMM *= 2.0;
106  fDecayGammas[5] = GNMM;
107  LOG("HNL", pDEBUG)
108  << " Nu-mu-mu gamma = " << fDecayGammas[5];
109  } else GNMM = fDecayGammas[5];
110  allChannels.insert( allChannels.begin(), std::pair< HNLDecayMode_t, double >( kHNLDcyNuMuMu, GNMM ) );
111 
112  assert( GNMM >= 0.0 );
113 
114  // pi-mu is next lightest
115  if( M < genie::constants::kPionMass + genie::constants::kMuonMass ) return allChannels;
116 
117  double GPIM = 0.0;
118  if( fDecayGammas[6] < 0.0 ){
119  GPIM = BRCalc->DecayWidth( kHNLDcyPiMu );
120  if( IsMajorana ) GPIM *= 2.0;
121  fDecayGammas[6] = GPIM;
122  LOG("HNL", pDEBUG)
123  << " Pi-mu gamma = " << fDecayGammas[6];
124  } else GPIM = fDecayGammas[6];
125  allChannels.insert( allChannels.begin(), std::pair< HNLDecayMode_t, double >( kHNLDcyPiMu, GPIM ) );
126 
127  assert( GPIM >= 0.0 );
128 
129  // pi0-pi0-nu is next lightest
130  if( M < 2.0 * genie::constants::kPi0Mass ) return allChannels;
131 
132  double GP02 = 0.0;
133  if( fDecayGammas[7] < 0.0 ){
134  GP02 = BRCalc->DecayWidth( kHNLDcyPi0Pi0Nu );
135  if( IsMajorana ) GP02 *= 2.0;
136  fDecayGammas[7] = GP02;
137  LOG("HNL", pDEBUG)
138  << " Pi0-pi0-nu gamma = " << fDecayGammas[7];
139  } else fDecayGammas[7] = GP02;
140  allChannels.insert( allChannels.begin(), std::pair< HNLDecayMode_t, double >( kHNLDcyPi0Pi0Nu, GP02 ) );
141 
142  assert( GP02 >= 0.0 );
143 
144  // pi-pi0-e is next lightest
146 
147  double GP0E = 0.0;
148  if( fDecayGammas[8] < 0.0 ){
149  GP0E = BRCalc->DecayWidth( kHNLDcyPiPi0E );
150  if( IsMajorana ) GP0E *= 2.0;
151  fDecayGammas[8] = GP0E;
152  LOG("HNL", pDEBUG)
153  << " Pi-pi0-e gamma = " << fDecayGammas[8];
154  } else GP0E = fDecayGammas[8];
155  allChannels.insert( allChannels.begin(), std::pair< HNLDecayMode_t, double >( kHNLDcyPiPi0E, GP0E ) );
156 
157  assert( GP0E >= 0.0 );
158 
159  // pi-pi0-mu is next lightest
161 
162  double GP0M = 0.0;
163  if( fDecayGammas[9] < 0.0 ){
164  GP0M = BRCalc->DecayWidth( kHNLDcyPiPi0Mu );
165  if( IsMajorana ) GP0M *= 2.0;
166  fDecayGammas[9] = GP0M;
167  LOG("HNL", pDEBUG)
168  << " Pi-pi0-mu gamma = " << fDecayGammas[9];
169  } else GP0M = fDecayGammas[9];
170  allChannels.insert( allChannels.begin(), std::pair< HNLDecayMode_t, double >( kHNLDcyPiPi0Mu, GP0M ) );
171 
172  assert( GP0M >= 0.0 );
173 
174  //all done! Return
175  return allChannels;
176 }
Manages HNL BR (prod and decay)
static const double kElectronMass
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
Definition: Messenger.h:96
double DecayWidth(genie::hnl::HNLDecayMode_t hnldm) const
#define pDEBUG
Definition: Messenger.h:63
genie::hnl::HNLDecayMode_t genie::hnl::selector::SelectChannelInclusive ( std::map< genie::hnl::HNLDecayMode_t, double >  Pmap,
double  ranThrow 
)

Referenced by SelectDecayMode().

std::map< genie::hnl::HNLDecayMode_t, double > genie::hnl::selector::SetInterestingChannels ( std::vector< genie::hnl::HNLDecayMode_t intChannels,
std::map< genie::hnl::HNLDecayMode_t, double >  gammaMap 
)

Referenced by SelectDecayMode().

Variable Documentation

const double genie::hnl::selector::FormfactorF1[]
static

Definition at line 58 of file FormFactorTables.h.

Referenced by genie::hnl::BRCalculator::GetFormfactorF1().

const double genie::hnl::selector::FormfactorF2[]
static

Definition at line 109 of file FormFactorTables.h.

Referenced by genie::hnl::BRCalculator::GetFormfactorF2().

const double genie::hnl::selector::FormfactorX[]
static
Initial value:
= { 0.000, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009, 0.010, 0.011, 0.012, 0.013, 0.014, 0.015, 0.016, 0.017, 0.018, 0.019,
0.020, 0.021, 0.022, 0.023, 0.024, 0.025, 0.026, 0.027, 0.028, 0.029, 0.030, 0.031, 0.032, 0.033, 0.034, 0.035, 0.036, 0.037, 0.038, 0.039,
0.040, 0.041, 0.042, 0.043, 0.044, 0.045, 0.046, 0.047, 0.048, 0.049, 0.050, 0.051, 0.052, 0.053, 0.054, 0.055, 0.056, 0.057, 0.058, 0.059,
0.060, 0.061, 0.062, 0.063, 0.064, 0.065, 0.066, 0.067, 0.068, 0.069, 0.070, 0.071, 0.072, 0.073, 0.074, 0.075, 0.076, 0.077, 0.078, 0.079,
0.080, 0.081, 0.082, 0.083, 0.084, 0.085, 0.086, 0.087, 0.088, 0.089, 0.090, 0.091, 0.092, 0.093, 0.094, 0.095, 0.096, 0.097, 0.098, 0.099,
0.100, 0.101, 0.102, 0.103, 0.104, 0.105, 0.106, 0.107, 0.108, 0.109, 0.110, 0.111, 0.112, 0.113, 0.114, 0.115, 0.116, 0.117, 0.118, 0.119,
0.120, 0.121, 0.122, 0.123, 0.124, 0.125, 0.126, 0.127, 0.128, 0.129, 0.130, 0.131, 0.132, 0.133, 0.134, 0.135, 0.136, 0.137, 0.138, 0.139,
0.140, 0.141, 0.142, 0.143, 0.144, 0.145, 0.146, 0.147, 0.148, 0.149, 0.150, 0.151, 0.152, 0.153, 0.154, 0.155, 0.156, 0.157, 0.158, 0.159,
0.160, 0.161, 0.162, 0.163, 0.164, 0.165, 0.166, 0.167, 0.168, 0.169, 0.170, 0.171, 0.172, 0.173, 0.174, 0.175, 0.176, 0.177, 0.178, 0.179,
0.180, 0.181, 0.182, 0.183, 0.184, 0.185, 0.186, 0.187, 0.188, 0.189, 0.190, 0.191, 0.192, 0.193, 0.194, 0.195, 0.196, 0.197, 0.198, 0.199,
0.200, 0.201, 0.202, 0.203, 0.204, 0.205, 0.206, 0.207, 0.208, 0.209, 0.210, 0.211, 0.212, 0.213, 0.214, 0.215, 0.216, 0.217, 0.218, 0.219,
0.220, 0.221, 0.222, 0.223, 0.224, 0.225, 0.226, 0.227, 0.228, 0.229, 0.230, 0.231, 0.232, 0.233, 0.234, 0.235, 0.236, 0.237, 0.238, 0.239,
0.240, 0.241, 0.242, 0.243, 0.244, 0.245, 0.246, 0.247, 0.248, 0.249, 0.250, 0.251, 0.252, 0.253, 0.254, 0.255, 0.256, 0.257, 0.258, 0.259,
0.260, 0.261, 0.262, 0.263, 0.264, 0.265, 0.266, 0.267, 0.268, 0.269, 0.270, 0.271, 0.272, 0.273, 0.274, 0.275, 0.276, 0.277, 0.278, 0.279,
0.280, 0.281, 0.282, 0.283, 0.284, 0.285, 0.286, 0.287, 0.288, 0.289, 0.290, 0.291, 0.292, 0.293, 0.294, 0.295, 0.296, 0.297, 0.298, 0.299,
0.300, 0.301, 0.302, 0.303, 0.304, 0.305, 0.306, 0.307, 0.308, 0.309, 0.310, 0.311, 0.312, 0.313, 0.314, 0.315, 0.316, 0.317, 0.318, 0.319,
0.320, 0.321, 0.322, 0.323, 0.324, 0.325, 0.326, 0.327, 0.328, 0.329, 0.330, 0.331, 0.332, 0.333, 0.334, 0.335, 0.336, 0.337, 0.338, 0.339,
0.340, 0.341, 0.342, 0.343, 0.344, 0.345, 0.346, 0.347, 0.348, 0.349, 0.350, 0.351, 0.352, 0.353, 0.354, 0.355, 0.356, 0.357, 0.358, 0.359,
0.360, 0.361, 0.362, 0.363, 0.364, 0.365, 0.366, 0.367, 0.368, 0.369, 0.370, 0.371, 0.372, 0.373, 0.374, 0.375, 0.376, 0.377, 0.378, 0.379,
0.380, 0.381, 0.382, 0.383, 0.384, 0.385, 0.386, 0.387, 0.388, 0.389, 0.390, 0.391, 0.392, 0.393, 0.394, 0.395, 0.396, 0.397, 0.398, 0.399,
0.400, 0.401, 0.402, 0.403, 0.404, 0.405, 0.406, 0.407, 0.408, 0.409, 0.410, 0.411, 0.412, 0.413, 0.414, 0.415, 0.416, 0.417, 0.418, 0.419,
0.420, 0.421, 0.422, 0.423, 0.424, 0.425, 0.426, 0.427, 0.428, 0.429, 0.430, 0.431, 0.432, 0.433, 0.434, 0.435, 0.436, 0.437, 0.438, 0.439,
0.440, 0.441, 0.442, 0.443, 0.444, 0.445, 0.446, 0.447, 0.448, 0.449, 0.450, 0.451, 0.452, 0.453, 0.454, 0.455, 0.456, 0.457, 0.458, 0.459,
0.460, 0.461, 0.462, 0.463, 0.464, 0.465, 0.466, 0.467, 0.468, 0.469, 0.470, 0.471, 0.472, 0.473, 0.474, 0.475, 0.476, 0.477, 0.478, 0.479,
0.480, 0.481, 0.482, 0.483, 0.484, 0.485, 0.486, 0.487, 0.488, 0.489, 0.490, 0.491, 0.492, 0.493, 0.494, 0.495, 0.496, 0.497, 0.498, 0.499, 0.500 }

Definition at line 32 of file FormFactorTables.h.

const double genie::hnl::selector::PARTWIDTH = 1e-3
static