Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef AHADIC_Tools_Double_Transitions_H
0002 #define AHADIC_Tools_Double_Transitions_H
0003 
0004 #include "AHADIC++/Tools/Single_Transitions.H"
0005 
0006 
0007 namespace AHADIC {
0008   class Flavour_Pair_Sorting_Mass {
0009   public :
0010     bool operator() (const Flavour_Pair & flpair1,
0011              const Flavour_Pair & flpair2) const {
0012       if ((flpair1.first==flpair2.first &&
0013            flpair1.second==flpair2.second)) return false;
0014       if (ATOOLS::IsEqual(flpair1.first.HadMass()+flpair1.second.HadMass(),
0015               flpair2.first.HadMass()+flpair2.second.HadMass())) {
0016     if (flpair1.first.Kfcode()>flpair2.first.Kfcode()) return false;
0017       }
0018       if (flpair1.first.HadMass()+flpair1.second.HadMass()<
0019       flpair2.first.HadMass()+flpair2.second.HadMass()) return false;
0020       return true;
0021     }
0022   };
0023 
0024   typedef std::map<Flavour_Pair,double,
0025            Flavour_Pair_Sorting_Mass>         Double_Transition_List;
0026 
0027   typedef std::map<Flavour_Pair,
0028            Double_Transition_List *>          Double_Transition_Map;
0029   
0030   class Double_Transitions {
0031   private:
0032     Double_Transition_Map m_transitions;
0033     double m_wtthres;
0034     double m_charm_strange_modifier, m_beauty_strange_modifier;
0035     double m_charm_baryon_modifier, m_beauty_baryon_modifier;
0036 
0037     void FillMap(Single_Transitions * singles);
0038     void Normalise();
0039   public:
0040     Double_Transitions(Single_Transitions * singles);
0041     ~Double_Transitions();
0042     
0043     Flavour_Pair             GetLightestTransition(const Flavour_Pair & flavs);
0044     Flavour_Pair             GetHeaviestTransition(const Flavour_Pair & flavs);
0045     double                   GetLightestMass(const Flavour_Pair & flavs);
0046     double                   GetHeaviestMass(const Flavour_Pair & flavs);
0047     Double_Transition_Map  * GetTransitions() { return &m_transitions; }
0048     Double_Transition_List * operator[](const Flavour_Pair & flavs);
0049     void                     Print(const bool& full=false);
0050   };
0051 }
0052 #endif