Back to home page

EIC code displayed by LXR

 
 

    


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   };// end of class Shower_Base
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   };//end of struct Shower_Key
0076 
0077   typedef ATOOLS::Getter_Function
0078   <Shower_Base,Shower_Key> Shower_Getter;
0079 
0080 }// end of namespace ATOOLS
0081 
0082 #endif