File indexing completed on 2025-04-19 09:10:08
0001 #ifndef PDF_Main_Shower_Base_H
0002 #define PDF_Main_Shower_Base_H
0003
0004 #include "ATOOLS/Org/Getter_Function.H"
0005 #include "ATOOLS/Org/Settings.H"
0006 #include "ATOOLS/Phys/Weights.H"
0007 #include "ATOOLS/Phys/Flavour.H"
0008
0009 #include <string>
0010
0011 namespace ATOOLS {
0012 class Cluster_Amplitude;
0013 class Blob_List;
0014 }
0015
0016 namespace MODEL { class Model_Base; }
0017
0018 namespace REMNANTS { class Remnant_Handler; }
0019
0020 namespace PDF {
0021
0022 class ISR_Handler;
0023 class Cluster_Definitions_Base;
0024
0025 class Shower_Base {
0026 protected:
0027
0028 Cluster_Definitions_Base * p_cluster;
0029
0030 std::string m_name;
0031 ATOOLS::Weights_Map m_weightsmap;
0032 int m_on, m_kttype;
0033
0034 public:
0035
0036 Shower_Base(const std::string &name);
0037
0038 virtual ~Shower_Base();
0039
0040 virtual int PerformShowers() = 0;
0041 virtual int PerformDecayShowers() = 0;
0042
0043 virtual bool ExtractPartons(ATOOLS::Blob_List *const bl) = 0;
0044 virtual void CleanUp()=0;
0045
0046 virtual Cluster_Definitions_Base *GetClusterDefinitions() = 0;
0047
0048 virtual bool PrepareShower(ATOOLS::Cluster_Amplitude *const ampl,
0049 const bool & soft=false) = 0;
0050
0051 virtual void SetRemnants(REMNANTS::Remnant_Handler * remnants) {}
0052
0053 static void ShowSyntax(const int mode);
0054
0055 inline const std::string &Name() const { return m_name; }
0056
0057 inline ATOOLS::Weights_Map WeightsMap() const { return m_weightsmap; }
0058
0059 inline int On() { return m_on; }
0060
0061 inline void SetOn(const int on) { m_on=on; }
0062
0063 inline int KTType() const { return m_kttype; }
0064
0065 };
0066
0067 struct Shower_Key {
0068 MODEL::Model_Base *p_model;
0069 ISR_Handler *p_isr;
0070 int m_type;
0071 inline Shower_Key(MODEL::Model_Base *const model,
0072 ISR_Handler *const isr,
0073 const int type):
0074 p_model(model), p_isr(isr), m_type(type) {}
0075 };
0076
0077 typedef ATOOLS::Getter_Function
0078 <Shower_Base,Shower_Key> Shower_Getter;
0079
0080 }
0081
0082 #endif