Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef AHADIC_Tools_Hadronisation_Parameters_H
0002 #define AHADIC_Tools_Hadronisation_Parameters_H
0003 
0004 #include "AHADIC++/Tools/Constituents.H"
0005 #include "AHADIC++/Tools/Double_Transitions.H"
0006 #include "AHADIC++/Tools/Single_Transitions.H"
0007 #include "ATOOLS/Math/Vector.H"
0008 
0009 #include <map>
0010 #include <string>
0011 #include <cassert>
0012 
0013 namespace AHADIC {
0014   static ATOOLS::Vec4D s_AxisP(1.,0.,0.,1.);
0015   static ATOOLS::Vec4D s_AxisM(1.,0.,0.,-1.);
0016 
0017   struct control {
0018   public:
0019     static long int s_AHAparticles;
0020     static long int s_AHAclusters;
0021   };
0022 
0023   class Hadronisation_Parameters {
0024   private:
0025     int                  m_shower;
0026     double               m_offset;
0027     Constituents       * p_constituents;
0028     Single_Transitions * p_stransitions;
0029     Double_Transitions * p_dtransitions;
0030     
0031     std::map<std::string,int>    m_switchmap;
0032     std::map<std::string,double> m_parametermap;
0033     
0034     void ReadParameters();
0035     void ReadGeneralSwitches();
0036     void ReadPoppingParameters();
0037     void ReadMesonWeights();
0038     void ReadSplittingParameters();
0039     void ReadClusterToMesonPSParameters();
0040   public:
0041     Hadronisation_Parameters();
0042     ~Hadronisation_Parameters();
0043 
0044     void Init(std::string);
0045     const double Get(std::string keyword) const;
0046     const int    Switch(std::string keyword) const;
0047 
0048     Constituents          * GetConstituents()       { return p_constituents; }
0049     //All_Hadron_Multiplets * GetMultiplets()         { return p_multiplets; }
0050     Single_Transitions    * GetSingleTransitions()  { return p_stransitions; }
0051     Double_Transitions    * GetDoubleTransitions()  { return p_dtransitions; }
0052     
0053     bool AdjustMomenta(const int,ATOOLS::Vec4D *,const double *);  
0054   };
0055 
0056   extern Hadronisation_Parameters * hadpars;
0057 
0058   inline double Lambda(const double & ma2,const double & mb2,
0059                const double & mc2,const double & kt2=0.)  {
0060     assert(ATOOLS::sqr(ma2-mb2-(mc2+kt2))>4.*mb2*(mc2*kt2));
0061     return sqrt(ATOOLS::sqr(ma2-mb2-(mc2+kt2))-4.*mb2*(mc2+kt2))/(2.*ma2);
0062   };
0063 }
0064 
0065 #endif