Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef PHASIC_Channels_Rambo_H
0002 #define PHASIC_Channels_Rambo_H
0003 
0004 #include "PHASIC++/Channels/Single_Channel.H"
0005 
0006 namespace PHASIC {
0007   class Rambo : public Single_Channel {
0008     bool     massflag;
0009     double   Z_N, * xm2, * p2, * E;
0010     short int itmax;
0011     double accu;
0012     const ATOOLS::Mass_Selector* p_masssel;
0013   public:
0014     Rambo(size_t,size_t,const ATOOLS::Flavour *,const ATOOLS::Mass_Selector* ms=NULL);
0015     Rambo(size_t nin, std::vector<double> masses);
0016     ~Rambo();
0017     void Init(const size_t& nin, const size_t& nout, const std::vector<double>& masses);
0018     ATOOLS::Vec4D_Vector GeneratePoint(const double& E);
0019     void GenerateWeight(ATOOLS::Vec4D *,Cut_Data *);  
0020     void GeneratePoint(ATOOLS::Vec4D *,Cut_Data *);
0021     void GenerateWeight(ATOOLS::Vec4D * p) { GenerateWeight(p,NULL); }  
0022     void GeneratePoint(ATOOLS::Vec4D * p)  { GeneratePoint(p,NULL); }
0023     void GeneratePoint(ATOOLS::Vec4D *,Cut_Data *,double *);
0024     void MassiveWeight(ATOOLS::Vec4D *,double);
0025     void MassivePoint(ATOOLS::Vec4D *,double);
0026     std::string Name() { return std::string("Rambo"); }
0027     int CountResonances(ATOOLS::Flavour *&) { return 0; }
0028     void MPISync() {}
0029   };
0030   //! Flag to see wether massive or massless points are to be generated.
0031   //! Constants needed for the weight and the phase space distribution.
0032   //! Maximal number of iterations to generate the massive weight
0033   //! Accuracy when generating the massive weight.
0034   /*!
0035     Generates the weight. In case of massless Rambo this is given by
0036     a constant, since Rambo uses uniform distribution. For massive
0037     points, this constant is corrected via MassiveWeight.
0038     /sa MassiveWeight
0039   */
0040   /*!
0041     To generate a phase space point according to a uniform distribution.
0042     In case massive vectors are needed this point gets modified by 
0043     MassivePoint.
0044     /sa MassivePoint
0045   */
0046   /*!
0047     This method is only a dummy method meant to comply with the multi-channel.
0048     In fact it calls the GeneratePoint method without random numbers.
0049   */
0050   /*!
0051     To generate a massive weight. The idea is to invert the generation of
0052     massive vectors, i.e. we start with massive vectors and force them
0053     on a zero-mass shell by rescaling and boosting all momenta by common 
0054     factors, such that both four momentum conservation and mass shell 
0055     conditions are fulfilled.
0056   */
0057   /*!
0058     To generate a massive point. The idea is to start from a massless point
0059     given by ordinary RAMBO::GeneratePoint and then to force them
0060     on their mass shell by rescaling and boosting all momenta by common 
0061     factors, such that both four momentum conservation and mass shell 
0062     conditions are fulfilled.
0063   */
0064 }
0065 
0066 #endif