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