37 using std::ostringstream;
38 using namespace genie;
39 using namespace genie::constants;
40 using namespace genie::controls;
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);
virtual double Prob(double p, double w, const Target &t, double hitNucleonRadius) const
virtual double LocalFermiMomentum(const Target &t, int nucleon_pdg, double radius) const
double RemovalEnergy(void) const
Pure abstract base class. Defines the NuclearModelI interface to be implemented by any physics model ...
const NuclearModelI * fDefGlobModel
default basic model (should work for all nuclei)
const TVector3 & Momentum3(void) const
virtual ~NuclearModelMap()
virtual NuclearModel_t ModelType(const Target &) const =0
FermiMoverInteractionType_t GetFermiMoverInteractionType(void) const
virtual const Registry & GetConfig(void) const
NuclearModel_t ModelType(const Target &t) const
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
FermiMoverInteractionType_t fFermiMoverInteractionType
const RgIMap & GetItemMap(void) const
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
virtual void Configure(const Registry &config)
virtual double Prob(double p, double w, const Target &) const =0
virtual bool GenerateNucleon(const Target &t, double hitNucleonRadius) const
map< int, const NuclearModelI * > fRefinedModels
refinements for specific elements
double fCurrRemovalEnergy
void Configure(const Registry &config)
enum genie::ENuclearModel NuclearModel_t
A registry. Provides the container for algorithm configuration parameters.
virtual double FermiMomentum(const Target &t, int nucleon_pdg) const
int IonPdgCodeToZ(int pdgc)
const NuclearModelI * SelectModel(const Target &t) const
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
virtual bool GenerateNucleon(const Target &) const =0
void Set(RgIMapPair entry)
Most commonly used PDG codes. A set of utility functions to handle PDG codes is provided in PDGUtils...
RgAlg GetAlg(RgKey key) const
static AlgConfigPool * Instance()
map< RgKey, RegistryItemI * > RgIMap
const Algorithm * SubAlg(const RgKey ®istry_key) const