21 using namespace genie;
22 using namespace genie::hnl;
30 return "pi+- --> N + mu+-";
34 return "pi+- --> N + e+-";
38 return "K+- --> N + mu+-";
42 return "K+- --> N + e+-";
46 return "K+- --> N + mu+- + pi0";
50 return "K+- --> N + e+- + pi0";
54 return "K0L --> N + mu+- + pi-+";
58 return "K0L --> N + e+- + pi-+";
62 return "mu-+ --> N + numu(bar) + e-+";
66 return "mu-+ --> N + nue(bar) + e-+";
70 return "mu-+ --> N + nutau(bar) + e-+";
74 return "Invalid HNL production mode!";
87 return "N -> pi+- mu-+";
91 return "N -> pi+- e-+";
103 return "N -> v mu+ mu-";
107 return "N -> v e+ e-";
111 return "N -> v mu+- e-+";
115 return "N -> pi+- pi0 e-+";
119 return "N -> pi+- pi0 mu-+";
123 return "N -> v pi0 pi0";
131 return "Invalid HNL decay mode!";
145 double Msum = 0.;
double Mpar = 0.;
146 PDGCodeList::const_iterator it = decay_products.begin();
147 for ( ; it != decay_products.end(); ++it)
150 TParticlePDG * p = pdglib->
Find(pdg_code);
152 if( it == decay_products.begin() ) Mpar = p->Mass();
153 else Msum += p->Mass();
156 <<
"Decay list includes particle with unrecognised PDG code: "
161 return (Mpar > Msum);
174 PDGCodeList::const_iterator it = decay_products.begin();
175 for ( ; it != decay_products.end(); ++it)
178 TParticlePDG * p = pdglib->
Find(pdg_code);
183 <<
"Decay list includes particle with unrecognised PDG code: "
196 bool allow_duplicate =
true;
278 return decay_products;
283 bool allow_duplicate =
true;
354 return decay_products;
362 int param = tmpReg->
GetInt( par_name );
372 string str = tmpReg->
GetString( par_name );
377 std::vector<int> vect;
378 size_t ntok = strtokens.size();
380 for(
size_t i=0; i < ntok; ++i ){
382 if(
" " == trimmed ||
"" == trimmed )
continue;
383 int val = strtod( trimmed.c_str(), (
char **)NULL );
384 vect.push_back( val );
394 double param = tmpReg->
GetDouble( par_name );
403 string str = tmpReg->
GetString( par_name );
408 std::vector<double> vect;
409 size_t ntok = strtokens.size();
411 for(
size_t i=0; i < ntok; ++i ){
413 if(
" " == trimmed ||
"" == trimmed )
continue;
414 double val = strtod( trimmed.c_str(), (
char **)NULL );
415 vect.push_back( val );
425 bool param = tmpReg->
GetBool( par_name );
434 string str = tmpReg->
GetString( par_name );
439 std::vector<bool> vect;
440 size_t ntok = strtokens.size();
442 for(
size_t i=0; i < ntok; ++i ){
444 if(
" " == trimmed ||
"" == trimmed )
continue;
445 bool val = strtod( trimmed.c_str(), (
char **)NULL );
446 vect.push_back( val );
456 string param = tmpReg->
GetString( par_name );
enum genie::hnl::t_HNLProd HNLProd_t
double GetCfgDouble(string file_id, string set_name, string par_name)
string AsString(genie::hnl::HNLDecayMode_t hnldm)
PDGCodeList ProductionProductList(genie::hnl::HNLProd_t hnldm)
RgDbl GetDouble(RgKey key) const
std::string GetCfgString(string file_id, string set_name, string par_name)
RgInt GetInt(RgKey key) const
std::vector< bool > GetCfgBoolVec(string file_id, string set_name, string par_name)
Registry * CommonList(const string &file_id, const string &set_name) const
std::vector< int > GetCfgIntVec(string file_id, string set_name, string par_name)
PDGCodeList DecayProductList(genie::hnl::HNLDecayMode_t hnldm)
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
enum genie::hnl::EHNLDecayMode HNLDecayMode_t
string ProdAsString(genie::hnl::HNLProd_t hnlprod)
string TrimSpaces(string input)
std::vector< double > GetCfgDoubleVec(string file_id, string set_name, string par_name)
bool GetCfgBool(string file_id, string set_name, string par_name)
RgStr GetString(RgKey key) const
static PDGLibrary * Instance(void)
bool IsProdKinematicallyAllowed(genie::hnl::HNLProd_t hnlprod)
vector< string > Split(string input, string delim)
Singleton class to load & serve a TDatabasePDG.
A registry. Provides the container for algorithm configuration parameters.
RgBool GetBool(RgKey key) const
TParticlePDG * Find(int pdgc, bool must_exist=true)
Most commonly used PDG codes. A set of utility functions to handle PDG codes is provided in PDGUtils...
bool IsKinematicallyAllowed(genie::hnl::HNLDecayMode_t hnldm, double Mhnl)
void push_back(int pdg_code)
static AlgConfigPool * Instance()
int GetCfgInt(string file_id, string set_name, string par_name)