Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef HADRONS_PS_Library_Four_Body_PSs_H
0002 #define HADRONS_PS_Library_Four_Body_PSs_H
0003 
0004 #include "PHASIC++/Channels/Single_Channel.H"
0005 #include "ATOOLS/Math/Vector.H"
0006 #include "PHASIC++/Channels/Single_Channel.H"
0007 #include "ATOOLS/Org/Run_Parameter.H"
0008 #include "PHASIC++/Channels/Channel_Elements.H"
0009 #include "PHASIC++/Channels/Vegas.H"
0010 #include "HADRONS++/PS_Library/ResonanceFlavour.H"
0011 #include "PHASIC++/Channels/Rambo.H"
0012 
0013 namespace HADRONS {
0014   class TwoResonances : public PHASIC::Single_Channel {
0015     ATOOLS::Vec4D     m_P;
0016     int               m_i, m_j, m_k, m_dir;
0017     int               m_chnumber;           
0018     SimpleResonanceFlavour  m_prop1, m_prop2;
0019     ATOOLS::Flavour * p_fl;
0020     
0021     ATOOLS::Info_Key m_kI_123_4,m_kI_12_3,m_kI_1_2;
0022     PHASIC::Vegas* p_vegas;
0023     ATOOLS::Integration_Info * p_info;
0024 
0025   public :
0026     TwoResonances(const ATOOLS::Flavour * fl,SimpleResonanceFlavour prop1, 
0027           const int _k,SimpleResonanceFlavour prop2,
0028           const int _i,const int _j );
0029     ~TwoResonances();
0030     void GeneratePoint(ATOOLS::Vec4D * p,PHASIC::Cut_Data * =NULL,
0031                double * _ran=NULL);
0032     void GenerateWeight(ATOOLS::Vec4D * p,PHASIC::Cut_Data * =NULL);
0033     int  ChNumber()                 { return m_chnumber;       }
0034     void SetChNumber(int _chnumber) { m_chnumber = _chnumber;  }
0035     void   AddPoint(double value )  { 
0036       Single_Channel::AddPoint( value );
0037       p_vegas->AddPoint(value, p_rans); 
0038     }
0039     void   Optimize()                { p_vegas->Optimize(); } 
0040     void   EndOptimize()             { p_vegas->EndOptimize(); } 
0041     void   WriteOut(std::string pId) { p_vegas->WriteOut(pId); } 
0042     void   ReadIn(std::string pId)   { p_vegas->ReadIn(pId); } 
0043     void MPISync() {};
0044   }; // end of class
0045 
0046   class IsotropicSpectator : public PHASIC::Single_Channel {
0047     PHASIC::Rambo* m_rambo;
0048     int            m_spectator;
0049     double         m_decayer_mass, m_spectator_mass, m_residual_mass;
0050   public :
0051     IsotropicSpectator(const ATOOLS::Flavour *, int nOut, int spectator,
0052                        const ATOOLS::Mass_Selector* ms);
0053     ~IsotropicSpectator() { delete m_rambo; }
0054     void GeneratePoint(ATOOLS::Vec4D * p,PHASIC::Cut_Data * =NULL,
0055                double * _ran=NULL);
0056     void GenerateWeight(ATOOLS::Vec4D * p,PHASIC::Cut_Data * =NULL);
0057     std::string ChID()    { return std::string("IsotropicSpectator");}
0058     void MPISync() {};
0059   }; // end of class
0060 
0061   /*!
0062     \file Four_Body_PSs.H
0063     \brief Declares the class HADRONS::TwoResonances
0064     
0065     This file can be found in the directory <tt>PS_Library</tt>.
0066   */    
0067   /*!
0068     \class TwoResonances
0069     \brief Tool to handle 4-particle PS with 2 resonances
0070     
0071     This class is a subclass of PHASIC::Single_Channel.
0072     
0073     It is the default integrator for decays of the form with two resonances 
0074     (internal propagators)
0075     \f[ M \to l + res_1; \: res_1 \to k+res_2; \: res_2 \to i+j. \f]
0076   */      
0077   /*!
0078     \fn TwoResonances::TwoResonances ( const ATOOLS::Flavour * fl, 
0079     SimpleResonanceFlavour prop1, const int _k, SimpleResonanceFlavour prop2, 
0080     const int _i, const int _j )
0081     \brief Constructor for the TwoResonances 1 to 4 decay integration channel
0082     
0083     The required information is the structure of the decay, i.e.
0084     \f$M \to l + res_1 \to l + k + res_2 \to l + k + i + j\f$.
0085   */    
0086   /*!
0087     \var TwoResonances::m_P
0088     This is the 4-momentum of the decaying particle. Initially, its value is 
0089     \f$(M,0,0,0)\f$.
0090   */  
0091   /*!
0092     \var TwoResonances::m_i
0093     This corresponds to \f$i\f$.
0094   */    
0095   /*!
0096     \var TwoResonances::m_j
0097     This corresponds to \f$j\f$.
0098   */    
0099   /*!
0100     \var TwoResonances::m_k
0101     This corresponds to \f$k\f$.
0102   */    
0103   /*!
0104     \var TwoResonances::m_dir
0105     This corresponds to \f$l\f$.
0106   */    
0107 
0108 } // end of namespace
0109 
0110 #endif