Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef Decay_Map_h
0002 #define Decay_Map_h
0003 
0004 #include "ATOOLS/Phys/Flavour.H"
0005 #include "PHASIC++/Decays/Decay_Table.H"
0006 #include "PHASIC++/Decays/Decay_Channel.H"
0007 
0008 namespace ATOOLS {
0009   class Mass_Selector;
0010 }
0011 
0012 namespace PHASIC {
0013 
0014   class FlavourComp {
0015     const ATOOLS::Mass_Selector* p_ms;
0016   public:
0017     FlavourComp(const ATOOLS::Mass_Selector* ms) : p_ms(ms) {}
0018     bool operator()(const ATOOLS::Flavour& f1, const ATOOLS::Flavour& f2) const;
0019   };
0020 
0021   class Decay_Map : 
0022     public std::map<ATOOLS::Flavour, Decay_Table *, FlavourComp> {
0023   protected:
0024     /**
0025      * The Mass_Selector knows which type of mass is to be used for all decays
0026      * associated with this decay map. This can be the HadMass() if the decays
0027      * belong to the non-perturbative regime of the event, or the Mass() if
0028      * they belong to the perturbative part. 
0029      */
0030     const ATOOLS::Mass_Selector* p_ms;
0031 
0032   public :
0033     /**
0034      * @param ms Mass_Selector, cf. p_ms
0035      * 
0036      * Constructor
0037      */
0038     Decay_Map(const ATOOLS::Mass_Selector* ms);
0039     virtual ~Decay_Map();
0040 
0041     /**
0042      * @param decayer The decaying particle flavour.
0043      * 
0044      * @return Whether this decay map contains decay table(s) for this flavour
0045      */
0046     bool Knows(const ATOOLS::Flavour& decayer);
0047 
0048     /**
0049      * @param decayer The decaying particle flavour.
0050      * 
0051      * @return The currently active decay table.
0052      *
0053      * This takes into account that multiple tables can exist for a Flavour
0054      * of which the n'th will be chosen for the n'th particle of that Flavour
0055      * in this event. (cf. Decay_Map::m_counters)
0056      */
0057     virtual Decay_Table* FindDecay(const ATOOLS::Flavour& decayer);
0058 
0059     /**
0060      * Resets the counters (cf. Decay_Map::m_counters) for flavour types.
0061      * Typically used at the end of one event.
0062      */
0063     void ResetCounters();
0064 
0065     friend std::ostream &operator<<(std::ostream &os, const Decay_Map &dm);
0066   };
0067 }
0068 
0069 #endif