Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef COMIX_Phasespace_PS_Vertex_H
0002 #define COMIX_Phasespace_PS_Vertex_H
0003 
0004 #include "METOOLS/Explicit/Vertex.H"
0005 #include "COMIX/Phasespace/PS_Info.H"
0006 
0007 using namespace METOOLS;
0008 
0009 namespace ATOOLS { class NLO_subevt; }
0010 
0011 namespace COMIX {
0012 
0013   typedef std::vector<PS_Info*> PS_Info_Vector;
0014 
0015   class PS_Vertex: public Vertex {
0016   protected:
0017 
0018     double m_alpha, m_oldalpha, m_weight;
0019     double m_np, m_sum, m_sum2;
0020     double m_mnp, m_msum, m_msum2;
0021 
0022     int m_type;
0023 
0024     ATOOLS::NLO_subevt *p_dip;
0025 
0026   public:
0027 
0028     // constructor
0029     PS_Vertex(const Vertex_Key &key);
0030     
0031     // member functions
0032     void Evaluate();
0033 
0034     void AddPoint(const double &weight);
0035     void Reset();
0036 
0037     void MPISync();
0038 
0039     // inline functions
0040     inline double Alpha() const    { return m_alpha;    }
0041     inline double OldAlpha() const { return m_oldalpha; }
0042 
0043     inline double Weight() const { return m_weight; }
0044 
0045     inline void SetAlpha(const double &alpha)    { m_alpha=alpha;    }
0046     inline void SetOldAlpha(const double &alpha) { m_oldalpha=alpha; }
0047 
0048     inline void SetWeight(const double &weight) { m_weight=weight; }
0049 
0050     inline double N() const    { return m_np;   }
0051     inline double Sum() const  { return m_sum;  }
0052     inline double Sum2() const { return m_sum2; }
0053 
0054     inline void SetN(const double &n)       { m_np=n;      }
0055     inline void SetSum(const double &sum)   { m_sum=sum;   }
0056     inline void SetSum2(const double &sum2) { m_sum2=sum2; }
0057 
0058     inline double Mean() const { return m_sum/m_np; }
0059     inline double Variance() const    
0060     { return (m_sum2-m_sum*m_sum/m_np)/(m_np-1.0); }
0061     inline double Sigma() const  
0062     { return sqrt(Variance()/m_np); }
0063 
0064     inline void SetType(const int &type) { m_type=type; }
0065 
0066     inline int Type() const { return m_type; }
0067 
0068     inline void GetMPIVars(double *v)
0069     { v[0]=m_mnp; v[1]=m_msum; v[2]=m_msum2; }
0070     inline void AddMPIVars(const double *v)
0071     { m_mnp+=v[0]; m_msum+=v[1]; m_msum2+=v[2]; }
0072     inline void SetMPIVars(const double *v)
0073     { m_mnp=v[0]; m_msum=v[1]; m_msum2=v[2]; }
0074 
0075     inline void SetDip(ATOOLS::NLO_subevt *const d) { p_dip=d; }
0076 
0077     inline ATOOLS::NLO_subevt *Dip() const { return p_dip; }
0078 
0079   };// end of class PS_Vertex
0080 
0081 }// end of namespace COMIX
0082 
0083 #endif