Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-13 10:29:17

0001 #ifndef PHASIC_Process_Process_Group_H
0002 #define PHASIC_Process_Process_Group_H
0003 
0004 #include "PHASIC++/Process/Process_Base.H"
0005 #include "ATOOLS/Org/CXXFLAGS.H"
0006 
0007 namespace PHASIC {
0008 
0009   class Process_Group: public Process_Base {
0010   protected:
0011 
0012     std::vector<Process_Base*>          m_procs;
0013     std::map<std::string,Process_Base*> m_procmap;
0014 
0015     std::vector<int> m_blocks;
0016 
0017     Process_Base *GetProcess(const std::string &name);
0018 
0019     bool CheckFlavours(const Subprocess_Info &ii,
0020                const Subprocess_Info &fi,int mode=0) const;
0021     void SetFlavour(Subprocess_Info &cii,Subprocess_Info &cfi,
0022             const ATOOLS::Flavour &fl,const size_t i) const;
0023     bool ConstructProcesses(Process_Info &pi,const size_t &ci);
0024     bool ConstructProcess(Process_Info &pi);
0025 
0026   public:
0027 
0028     ~Process_Group();
0029 
0030     size_t Size() const override;
0031     Process_Base *operator[](const size_t &i) override;
0032 
0033     virtual void Add(Process_Base *const proc,const int mode=0);
0034     virtual bool Remove(Process_Base *const proc);
0035     virtual bool Delete(Process_Base *const proc);
0036     virtual void Clear();
0037     
0038     virtual Process_Base *GetProcess(const PHASIC::Process_Info &pi) const = 0;
0039     virtual bool Initialize(Process_Base *const proc) = 0;
0040 
0041     void ConstructColorMatrix() override;
0042 
0043     void DeSelect();
0044     bool SelectOne(const int mode);
0045 
0046     ATOOLS::Weight_Info *OneEvent(
0047         const int wmode,
0048         ATOOLS::Variations_Mode varmode=ATOOLS::Variations_Mode::all,
0049         const int mode=0) override;
0050 
0051     ATOOLS::Weights_Map Differential(const ATOOLS::Vec4D_Vector& p,
0052                                      ATOOLS::Variations_Mode) override;
0053 
0054     bool InitScale() override;
0055 
0056     void SetScale(const Scale_Setter_Arguments &args) override;
0057     void SetKFactor(const KFactor_Setter_Arguments &args) override;
0058     void InitializeTheReweighting(ATOOLS::Variations_Mode) override;
0059 
0060     void SetFixedScale(const std::vector<double> &s) override;
0061     void SetSelectorOn(const bool on) override;
0062     void SetUseBIWeight(bool on) override;
0063 
0064     bool CalculateTotalXSec(const std::string &resultpath,
0065                 const bool create) override;
0066     void SetLookUp(const bool lookup) override;
0067 
0068     bool IsGroup() const override;
0069     
0070     bool ConstructProcesses();
0071 
0072     void SetGenerator(ME_Generator_Base *const gen) override;
0073     void SetShower(PDF::Shower_Base *const ps) override;
0074     void SetNLOMC(PDF::NLOMC_Base *const mc) override;
0075     void SetSelector(const Selector_Key &key) override;
0076     bool Trigger(const ATOOLS::Vec4D_Vector &p) override;
0077 
0078     void FillOnshellConditions() override;
0079 
0080     int PerformTests() override;
0081 
0082   };// end of class Process_Group
0083 
0084 }// end of namespace PHASIC
0085 
0086 #endif