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 };
0083
0084 }
0085
0086 #endif