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 ¶meters) 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