Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:09:56

0001 #ifndef ATOOLS_Phys_Fragmentation_Base_H
0002 #define ATOOLS_Phys_Fragmentation_Base_H
0003 
0004 #include "ATOOLS/Phys/Blob_List.H"
0005 #include "ATOOLS/Org/Return_Value.H"
0006 #include "ATOOLS/Org/Getter_Function.H"
0007 
0008 namespace ATOOLS {
0009 
0010   class Fragmentation_Base {
0011   protected:
0012     std::string m_name;
0013     bool        m_shrink, m_flagpartonics;
0014     void Shrink(ATOOLS::Blob_List *);
0015     void ReadMassParameters();
0016   public:
0017     Fragmentation_Base();
0018     virtual ~Fragmentation_Base();
0019 
0020     virtual Return_Value::code Hadronize(ATOOLS::Blob_List *) = 0;
0021     
0022     const std::string & Name() const { return m_name; }
0023     void SetName(const std::string& name) { m_name=name; }
0024   };
0025 
0026 
0027   struct Fragmentation_Getter_Parameters {
0028     std::string shower;
0029     Fragmentation_Getter_Parameters(const std::string& _shower) :
0030       shower(_shower)
0031     {}
0032   };
0033   typedef Getter_Function<Fragmentation_Base,Fragmentation_Getter_Parameters> Fragmentation_Getter;
0034 }
0035 
0036 #define DEFINE_FRAGMENTATION_GETTER(CLASS,TAG)                      \
0037   DECLARE_GETTER(CLASS,TAG,Fragmentation_Base,Fragmentation_Getter_Parameters); \
0038   Fragmentation_Base *ATOOLS::Getter<Fragmentation_Base,Fragmentation_Getter_Parameters,CLASS>:: \
0039   operator()(const Fragmentation_Getter_Parameters &parameters) const \
0040   { Fragmentation_Base* ret = new CLASS(parameters.shower); ret->SetName(TAG); return ret;  } \
0041   void ATOOLS::Getter<Fragmentation_Base,Fragmentation_Getter_Parameters, CLASS>:: \
0042   PrintInfo(std::ostream &str,const size_t width) const \
0043   { str<<TAG<<" fragmentation"; }
0044 
0045 #endif
0046