#ifndef ATOOLS_Phys_Fragmentation_Base_H #define ATOOLS_Phys_Fragmentation_Base_H #include "ATOOLS/Phys/Blob_List.H" #include "ATOOLS/Org/Return_Value.H" #include "ATOOLS/Org/Getter_Function.H" namespace ATOOLS { class Fragmentation_Base { protected: std::string m_name; bool m_shrink, m_flagpartonics; void Shrink(ATOOLS::Blob_List *); void ReadMassParameters(); public: Fragmentation_Base(); virtual ~Fragmentation_Base(); virtual Return_Value::code Hadronize(ATOOLS::Blob_List *) = 0; const std::string & Name() const { return m_name; } void SetName(const std::string& name) { m_name=name; } }; struct Fragmentation_Getter_Parameters { std::string shower; Fragmentation_Getter_Parameters(const std::string& _shower) : shower(_shower) {} }; typedef Getter_Function Fragmentation_Getter; } #define DEFINE_FRAGMENTATION_GETTER(CLASS,TAG) \ DECLARE_GETTER(CLASS,TAG,Fragmentation_Base,Fragmentation_Getter_Parameters); \ Fragmentation_Base *ATOOLS::Getter:: \ operator()(const Fragmentation_Getter_Parameters ¶meters) const \ { Fragmentation_Base* ret = new CLASS(parameters.shower); ret->SetName(TAG); return ret; } \ void ATOOLS::Getter:: \ PrintInfo(std::ostream &str,const size_t width) const \ { str<