IBDXSecMap.h
Go to the documentation of this file.
1 //____________________________________________________________________________
2 /*!
3 
4 \class genie::IBDXSecMap
5 
6 \brief Maps specific nuclei to appropriate cross section models.
7 
8 \author Corey Reed <cjreed \at nikhef.nl>
9  Nikhef
10 
11 \created February 4, 2010
12 
13 \cpright Copyright (c) 2003-2020, The GENIE Collaboration
14  For the full text of the license visit http://copyright.genie-mc.org
15 */
16 //____________________________________________________________________________
17 
18 #ifndef _IBD_CROSSSECTION_MAP_H_
19 #define _IBD_CROSSSECTION_MAP_H_
20 
22 
23 namespace genie {
24 
25 class IBDXSecMap : public XSecAlgorithmI {
26 
27  public:
28  IBDXSecMap();
29  IBDXSecMap(string config);
30  virtual ~IBDXSecMap();
31 
32  //-- XSecAlgorithmI interface implementation
33  double XSec (const Interaction * i, KinePhaseSpace_t k) const;
34  double Integral (const Interaction * i) const;
35  bool ValidProcess (const Interaction * i) const;
36  bool ValidKinematics (const Interaction * i) const;
37 
38  //-- overload the Algorithm::Configure() methods to load private data
39  // members from configuration options
40  void Configure(const Registry & config);
41  void Configure(string config);
42 
43  protected:
44  const XSecAlgorithmI* SelectModel(const Target & t) const;
45 
46  private:
47  void LoadConfig (void);
48 
49  bool fIsotopesUseSameModel; // if true, force all nuclei with same Z to use the same cross section model
50  const XSecAlgorithmI* fDefaultModel; // the default xsec model (should "work" with any nucleus)
51  std::map<int, const XSecAlgorithmI*> fRefinedModels; // specific models for the given nucleus (int being the PDG code of the nucleus)
52 
53  public:
54  ClassDef(IBDXSecMap, 1) // maps a request for the xsec on a given nucleus to the most appropriate model for that nucleus
55 
56 };
57 
58 };
59 
60 #endif // _IBD_CROSSSECTION_MAP_H_
Cross Section Calculation Interface.
THE MAIN GENIE PROJECT NAMESPACE
Definition: AlgCmp.h:25
void Configure(const Registry &config)
Definition: IBDXSecMap.cxx:45
const XSecAlgorithmI * fDefaultModel
Definition: IBDXSecMap.h:50
double Integral(const Interaction *i) const
Definition: IBDXSecMap.cxx:123
enum genie::EKinePhaseSpace KinePhaseSpace_t
void LoadConfig(void)
Definition: IBDXSecMap.cxx:57
bool ValidKinematics(const Interaction *i) const
Is the input kinematical point a physically allowed one?
Definition: IBDXSecMap.cxx:147
Summary information for an interaction.
Definition: Interaction.h:56
std::map< int, const XSecAlgorithmI * > fRefinedModels
Definition: IBDXSecMap.h:51
static Config * config
Definition: config.cpp:1054
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
Definition: Target.h:40
Maps specific nuclei to appropriate cross section models.
Definition: IBDXSecMap.h:25
bool fIsotopesUseSameModel
Definition: IBDXSecMap.h:49
const XSecAlgorithmI * SelectModel(const Target &t) const
Definition: IBDXSecMap.cxx:99
virtual ~IBDXSecMap()
Definition: IBDXSecMap.cxx:39
A registry. Provides the container for algorithm configuration parameters.
Definition: Registry.h:65
double XSec(const Interaction *i, KinePhaseSpace_t k) const
Compute the cross section for the input interaction.
Definition: IBDXSecMap.cxx:111
bool ValidProcess(const Interaction *i) const
Can this cross section algorithm handle the input process?
Definition: IBDXSecMap.cxx:135