HadronizationModelBase.h
Go to the documentation of this file.
1 //____________________________________________________________________________
2 /*!
3 
4 \class genie::HadronizationModelBase
5 
6 \brief An abstract class. It avoids implementing the HadronizationModelI
7  interface, leaving it for the concrete subclasses (KNO, Pythia,...).
8  It propagates some common methods to the concrete subclasses.
9 
10 \author Costas Andreopoulos <costas.andreopoulos \at stfc.ac.uk>
11  University of Liverpool & STFC Rutherford Appleton Lab
12 
13 \created August 17, 2004
14 
15 \cpright Copyright (c) 2003-2019, The GENIE Collaboration
16  For the full text of the license visit http://copyright.genie-mc.org
17  or see $GENIE/LICENSE
18 */
19 //____________________________________________________________________________
20 
21 #ifndef _HADRONIZATION_MODEL_BASE_H_
22 #define _HADRONIZATION_MODEL_BASE_H_
23 
25 
26 namespace genie {
27 
29 
30 public:
31 
32  //! Don't implement the HadronizationModelI interface
33  //! Leave it for the concrete implementations (KNO, Pythia,...)
34 
35  virtual void Initialize (void) const = 0;
36  virtual TClonesArray * Hadronize (const Interaction * ) const = 0;
37  virtual double Weight (void) const = 0;
38  virtual PDGCodeList * SelectParticles (const Interaction*) const = 0;
39  virtual TH1D * MultiplicityProb (const Interaction*, Option_t* opt="") const = 0;
40 
41 protected:
44  HadronizationModelBase(string name, string config);
45  virtual ~HadronizationModelBase();
46 
47  //! Various utility methods common to hadronization models
48 
49  double Wmin (void) const;
50  double MaxMult (const Interaction * i) const;
51  void ApplyRijk (const Interaction * i, bool norm, TH1D * mp) const;
52  TH1D * CreateMultProbHist (double maxmult) const;
53 
54  //! configuration data common to all hadronizers
55  double fWcut; ///< neugen's Rijk applied for W<Wcut (see DIS/RES join scheme)
56  double fRvpCCm2; ///< neugen's Rijk: vp, CC, multiplicity = 2
57  double fRvpCCm3; ///< neugen's Rijk: vp, CC, multiplicity = 3
58  double fRvpNCm2; ///< neugen's Rijk: vp, NC, multiplicity = 2
59  double fRvpNCm3; ///< neugen's Rijk: vp, NC, multiplicity = 3
60  double fRvnCCm2; ///< neugen's Rijk: vn, CC, multiplicity = 2
61  double fRvnCCm3; ///< neugen's Rijk: vn, CC, multiplicity = 3
62  double fRvnNCm2; ///< neugen's Rijk: vn, NC, multiplicity = 2
63  double fRvnNCm3; ///< neugen's Rijk: vn, NC, multiplicity = 3
64  double fRvbpCCm2; ///< neugen's Rijk: vbp, CC, multiplicity = 2
65  double fRvbpCCm3; ///< neugen's Rijk: vbp, CC, multiplicity = 3
66  double fRvbpNCm2; ///< neugen's Rijk: vbp, NC, multiplicity = 2
67  double fRvbpNCm3; ///< neugen's Rijk: vbp, NC, multiplicity = 3
68  double fRvbnCCm2; ///< neugen's Rijk: vbn, CC, multiplicity = 2
69  double fRvbnCCm3; ///< neugen's Rijk: vbn, CC, multiplicity = 3
70  double fRvbnNCm2; ///< neugen's Rijk: vbn, NC, multiplicity = 2
71  double fRvbnNCm3; ///< neugen's Rijk: vbn, NC, multiplicity = 3
72 };
73 
74 } // genie namespace
75 
76 #endif // _HADRONIZATION_MODEL_BASE_H_
77 
static QCString name
Definition: declinfo.cpp:673
double fRvnCCm3
neugen&#39;s Rijk: vn, CC, multiplicity = 3
double fRvbpCCm3
neugen&#39;s Rijk: vbp, CC, multiplicity = 3
THE MAIN GENIE PROJECT NAMESPACE
Definition: AlgCmp.h:26
double MaxMult(const Interaction *i) const
double fRvnNCm2
neugen&#39;s Rijk: vn, NC, multiplicity = 2
double fRvbpCCm2
neugen&#39;s Rijk: vbp, CC, multiplicity = 2
virtual TH1D * MultiplicityProb(const Interaction *, Option_t *opt="") const =0
double fRvpCCm2
neugen&#39;s Rijk: vp, CC, multiplicity = 2
opt
Definition: train.py:196
double fRvbnNCm3
neugen&#39;s Rijk: vbn, NC, multiplicity = 3
virtual TClonesArray * Hadronize(const Interaction *) const =0
A list of PDG codes.
Definition: PDGCodeList.h:33
double fRvpNCm2
neugen&#39;s Rijk: vp, NC, multiplicity = 2
TH1D * CreateMultProbHist(double maxmult) const
Summary information for an interaction.
Definition: Interaction.h:55
double fRvpNCm3
neugen&#39;s Rijk: vp, NC, multiplicity = 3
static Config * config
Definition: config.cpp:1054
double fRvbnNCm2
neugen&#39;s Rijk: vbn, NC, multiplicity = 2
virtual void Initialize(void) const =0
double fRvpCCm3
neugen&#39;s Rijk: vp, CC, multiplicity = 3
double fRvbpNCm2
neugen&#39;s Rijk: vbp, NC, multiplicity = 2
auto norm(Vector const &v)
Return norm of the specified vector.
double fRvnNCm3
neugen&#39;s Rijk: vn, NC, multiplicity = 3
void ApplyRijk(const Interaction *i, bool norm, TH1D *mp) const
double Wmin(void) const
Various utility methods common to hadronization models.
virtual double Weight(void) const =0
An abstract class. It avoids implementing the HadronizationModelI interface, leaving it for the concr...
Pure abstract base class. Defines the HadronizationModelI interface to be implemented by any algorith...
double fWcut
configuration data common to all hadronizers
double fRvbnCCm3
neugen&#39;s Rijk: vbn, CC, multiplicity = 3
virtual PDGCodeList * SelectParticles(const Interaction *) const =0
double fRvbpNCm3
neugen&#39;s Rijk: vbp, NC, multiplicity = 3
double fRvnCCm2
neugen&#39;s Rijk: vn, CC, multiplicity = 2
double fRvbnCCm2
neugen&#39;s Rijk: vbn, CC, multiplicity = 2