Back to home page

EIC code displayed by LXR

 
 

    


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

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