Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:10:00

0001 #ifndef COMIX_Main_Single_Process_H
0002 #define COMIX_Main_Single_Process_H
0003 
0004 #include "ATOOLS/Phys/NLO_Types.H"
0005 #include "COMIX/Main/Process_Base.H"
0006 #include "PHASIC++/Process/Single_Process.H"
0007 #include "PHASIC++/Process/KP_Terms.H"
0008 #include "COMIX/Amplitude/Amplitude.H"
0009 
0010 namespace COMIX {
0011 
0012   class Amplitude;
0013 
0014   typedef std::set<PS_Generator*> PSGenerator_Set;
0015   typedef std::vector<std::vector<Complex> > Hard_Matrix;
0016 
0017   class Single_Process: 
0018     public PHASIC::Single_Process, public Process_Base {
0019 
0020   protected:
0021 
0022     Amplitude      *p_bg;
0023     Hard_Matrix    *p_hc;
0024     Single_Process *p_map;
0025 
0026     PHASIC::Virtual_ME2_Base *p_loop;
0027     PHASIC::KP_Terms         *p_kpterms;
0028 
0029     ATOOLS::Vec4D_Vector m_p;
0030     ATOOLS::Flavour_Map  m_fmap;
0031 
0032     Combination_Set m_ccombs;
0033     CFlavVector_Map m_cflavs;
0034     PSGenerator_Set m_psset;
0035 
0036     double m_w, m_dxs, m_x[2];
0037     bool   m_checkpoles, m_allowmap, m_hasmapfile;
0038 
0039     ATOOLS::sbt::subtype   m_user_stype;
0040     ATOOLS::cs_itype::type m_user_imode;
0041     ATOOLS::NLO_subevtlist m_subs;
0042 
0043     void InitPSGenerator(const size_t &ismode);
0044 
0045     void MapSubEvts(const int mode);
0046 
0047     double SetZero();
0048 
0049     void FillMEWeights(ATOOLS::ME_Weight_Info &wgtinfo) const;
0050 
0051     void UpdateKPTerms(const int mode);
0052     double KPTerms(const int mode,PDF::PDF_Base *pdfa,
0053            PDF::PDF_Base *pdfb,double scalefac2=1.0);
0054 
0055     void ComputeHardMatrix(const int mode);
0056 
0057   public:
0058 
0059     // constructors
0060     Single_Process();
0061 
0062     // destructor
0063     ~Single_Process();
0064 
0065     // member functions
0066     bool Initialize(std::map<std::string,std::string> *const pmap,
0067             std::vector<Single_Process*> *const procs,
0068             const std::vector<int> &blocks,size_t &nproc);
0069     bool MapProcess();
0070 
0071     int PerformTests();
0072 
0073     void ConstructPSVertices(PS_Generator *ps);
0074 
0075     Amplitude *GetAmplitude() const;
0076 
0077     const Hard_Matrix *ComputeHardMatrix
0078     (ATOOLS::Cluster_Amplitude *const ampl,const int mode);
0079     double Partonic(const ATOOLS::Vec4D_Vector&,
0080                     ATOOLS::Variations_Mode varmode,
0081                     int mode);
0082     ATOOLS::Weights_Map Differential
0083     (const ATOOLS::Cluster_Amplitude& ampl,
0084      ATOOLS::Variations_Mode type=ATOOLS::Variations_Mode::nominal_only,
0085      int mode=0);
0086 
0087     bool Trigger(const ATOOLS::Vec4D_Vector &p);
0088 
0089     bool GeneratePoint();
0090     bool Tests();
0091 
0092     bool FillIntegrator(PHASIC::Phase_Space_Handler *const psh);
0093 
0094     bool Combinable(const size_t &idi,const size_t &idj);
0095 
0096     const ATOOLS::Flavour_Vector &CombinedFlavour(const size_t &idij);
0097 
0098     void FillAmplitudes(std::vector<METOOLS::Spin_Amplitudes> &amps,
0099             std::vector<std::vector<Complex> > &cols);
0100 
0101     ATOOLS::Flavour ReMap(const ATOOLS::Flavour &fl,
0102               const size_t &id) const;
0103 
0104     ATOOLS::NLO_subevtlist *GetSubevtList();
0105     ATOOLS::NLO_subevtlist *GetRSSubevtList();
0106 
0107     void SetScale(const PHASIC::Scale_Setter_Arguments &args);
0108     void SetShower(PDF::Shower_Base *const ps);
0109     void SetNLOMC(PDF::NLOMC_Base *const mc);
0110 
0111     size_t SetMCMode(const size_t mcmode);
0112     void   SetLookUp(const bool lookup);
0113 
0114   };// end of class Single_Process
0115 
0116 }// end of namespace COMIX
0117 
0118 #endif
0119 
0120 
0121