37using std::ostringstream;
61 double hitNucleonRadius)
const
77 double hitNucRadius)
const
82 return nm->
Prob(p,w,target,hitNucRadius);
101 int nucleon_pdg,
double radius )
const {
119 Registry r(
"NuclearModelMap",
false ) ;
122 RgIMap entries = algos -> GetItemMap();
123 const std::string keyStart =
"NuclearModel";
124 for( RgIMap::const_iterator it = entries.begin(); it != entries.end(); ++it ) {
126 if( it -> first.compare(0, keyStart.size(), keyStart.c_str()) == 0 ) {
127 r.
Set( it -> first, algos -> GetAlg(it->first ) ) ;
143 GetParam(
"NuclearModel", dgmodel ) ;
146 <<
"Default global nuclear model: " << dgmodel;
151 const std::string keyStart =
"NuclearModel@Pdg=";
155 for(RgIMap::const_iterator it = entries.begin(); it != entries.end(); ++it){
156 const std::string& key = it->first;
158 if(key.compare(0, keyStart.size(), keyStart.c_str()) == 0){
160 const int pdg = atoi(key.c_str()+keyStart.size());
166 <<
"Nucleus =" <<
pdg
167 <<
" -> refined nuclear model: " << rgmodel;
172 fRefinedModels.insert(map<int,const NuclearModelI*>::value_type(Z,model));
176#ifdef __GENIE_LOW_LEVEL_MESG_ENABLED__
177 for (map<int,const NuclearModelI*>::iterator it =
fRefinedModels.begin();
180 <<
"Z = " << (*it).first <<
"; model = " << (*it).second;
190 map<int,const NuclearModelI*>::const_iterator it =
fRefinedModels.find(Z);
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE,...
Most commonly used PDG codes. A set of utility functions to handle PDG codes is provided in PDGUtils.
static AlgConfigPool * Instance()
virtual const Registry & GetConfig(void) const
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
virtual void Configure(const Registry &config)
const Algorithm * SubAlg(const RgKey ®istry_key) const
FermiMoverInteractionType_t fFermiMoverInteractionType
double fCurrRemovalEnergy
const TVector3 & Momentum3(void) const
virtual double Prob(double p, double w, const Target &) const =0
virtual bool GenerateNucleon(const Target &) const =0
virtual NuclearModel_t ModelType(const Target &) const =0
FermiMoverInteractionType_t GetFermiMoverInteractionType(void) const
double RemovalEnergy(void) const
const NuclearModelI * fDefGlobModel
default basic model (should work for all nuclei)
virtual double LocalFermiMomentum(const Target &t, int nucleon_pdg, double radius) const
virtual ~NuclearModelMap()
const NuclearModelI * SelectModel(const Target &t) const
void Configure(const Registry &config)
NuclearModel_t ModelType(const Target &t) const
virtual double Prob(double p, double w, const Target &t, double hitNucleonRadius) const
virtual double FermiMomentum(const Target &t, int nucleon_pdg) const
virtual bool GenerateNucleon(const Target &t, double hitNucleonRadius) const
map< int, const NuclearModelI * > fRefinedModels
refinements for specific elements
A registry. Provides the container for algorithm configuration parameters.
const RgIMap & GetItemMap(void) const
RgAlg GetAlg(RgKey key) const
void Set(RgIMapPair entry)
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
Misc GENIE control constants.
Utilities for improving the code readability when using PDG codes.
int IonPdgCodeToZ(int pdgc)
THE MAIN GENIE PROJECT NAMESPACE
map< RgKey, RegistryItemI * > RgIMap
enum genie::ENuclearModel NuclearModel_t