Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef PHASIC_Channels_VHAAG_res_h
0002 #define PHASIC_Channels_VHAAG_res_h
0003 
0004 #include "PHASIC++/Channels/Single_Channel.H"
0005 #include "PHASIC++/Channels/Vegas.H"
0006 #include <map>
0007 
0008 namespace PHASIC {
0009   class VHAAG_res : public Single_Channel {
0010     int      n_p1,m_type,n_d1,n_d2,n_b,m_rkf,n_ap;
0011     int      *p_perm;
0012     double   m_s0;
0013     ATOOLS::Vec4D* m_q;
0014     double*  p_s;
0015     Vegas* p_vegas;
0016     bool m_ownvegas;
0017     
0018     std::map<int,Vegas*>* p_sharedvegaslist;
0019 
0020     double PiFunc(double a1,double a2,
0021           double s1b,double s2b,double c);
0022     void Split(ATOOLS::Vec4D q1,ATOOLS::Vec4D Q,
0023            ATOOLS::Vec4D& p1,ATOOLS::Vec4D& p2,int,int,double *ran);
0024     void Split0(ATOOLS::Vec4D q1,ATOOLS::Vec4D Q,
0025         ATOOLS::Vec4D& p1,ATOOLS::Vec4D& p2,int,int,double *ran);
0026     void SingleSplit(ATOOLS::Vec4D q1,ATOOLS::Vec4D Q,
0027              ATOOLS::Vec4D& p1,ATOOLS::Vec4D& p2,double,double *ran);
0028     void SingleSplitF(ATOOLS::Vec4D q1,ATOOLS::Vec4D Q,
0029               ATOOLS::Vec4D& p1,ATOOLS::Vec4D& p2,double,double *ran);
0030     void SingleSplitF0(ATOOLS::Vec4D q1,ATOOLS::Vec4D Q,
0031                ATOOLS::Vec4D& p1,ATOOLS::Vec4D& p2,double,double *ran);
0032     double SplitWeight(ATOOLS::Vec4D q1,ATOOLS::Vec4D Q,
0033                ATOOLS::Vec4D p1,ATOOLS::Vec4D p2,int,int,double *ran);
0034     double Split0Weight(ATOOLS::Vec4D q1,ATOOLS::Vec4D Q,
0035             ATOOLS::Vec4D p1,ATOOLS::Vec4D p2,int,int,double *ran);
0036     double SingleSplitWeight(ATOOLS::Vec4D q1,ATOOLS::Vec4D& Q,
0037                  ATOOLS::Vec4D p1,ATOOLS::Vec4D p2,double,double *ran);
0038     double SingleSplitFWeight(ATOOLS::Vec4D q1,ATOOLS::Vec4D& Q,
0039                   ATOOLS::Vec4D p1,ATOOLS::Vec4D p2,double,double *ran);
0040     double SingleSplitF0Weight(ATOOLS::Vec4D q1,ATOOLS::Vec4D Q,
0041                   ATOOLS::Vec4D p1,ATOOLS::Vec4D p2,double,double *ran);
0042     void GenerateBosonMass(ATOOLS::Vec4D *p,double *ran);
0043     double BosonWeight(ATOOLS::Vec4D *p,double *ran);
0044     void GenerateBranch(ATOOLS::Vec4D q1,ATOOLS::Vec4D Q,
0045             ATOOLS::Vec4D* q,double*,int n,double *ran);
0046     double BranchWeight(ATOOLS::Vec4D q1,ATOOLS::Vec4D &Q,
0047             ATOOLS::Vec4D* q,double*,int n,double *ran);
0048     void ConstructMomenta(double a1,double a2,
0049               double s1,double s2,double s,
0050               ATOOLS::Vec4D q1,ATOOLS::Vec4D q2,
0051               ATOOLS::Vec4D& p1,ATOOLS::Vec4D& p2);
0052     void ConstructMomenta(double a1,double phi,
0053               double s1,double s2,double s,
0054               ATOOLS::Vec4D q1,ATOOLS::Vec4D& p1,ATOOLS::Vec4D& p2);
0055     void CalculateS0(Cut_Data *);
0056      
0057     void Initialize(std::vector<int> perm, VHAAG_res* ovl);
0058 
0059   public:
0060 
0061     VHAAG_res(int _nin,int _nout,int pn,VHAAG_res* ovl);
0062 
0063     ~VHAAG_res();
0064 
0065     void AddPoint(double Value);
0066     void GenerateWeight(ATOOLS::Vec4D *,Cut_Data *);
0067     void GeneratePoint(ATOOLS::Vec4D *,Cut_Data *,double *);
0068     void   MPISync()                 { p_vegas->MPISync(); }
0069     void   Optimize()                { p_vegas->Optimize(); }
0070     void   EndOptimize()             { p_vegas->EndOptimize(); }
0071     void   WriteOut(std::string pId) { if (m_ownvegas) p_vegas->WriteOut(pId); }
0072     void   ReadIn(std::string pId)   { if (m_ownvegas) p_vegas->ReadIn(pId); }
0073 
0074     int    RKF()                     { return m_rkf; }
0075     int    RD1()                     { return n_d1; }
0076     int    RD2()                     { return n_d2; }
0077     int    Type()                    { return m_type; }
0078     int    OType(); 
0079     std::map<int,Vegas*>* GetSharedVegasList() { return p_sharedvegaslist; }
0080 
0081     bool   OptimizationFinished()  { return p_vegas->Finished(); }
0082   };
0083 }
0084 #endif