Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef Decay_Table_h
0002 #define Decay_Table_h
0003 
0004 #include "ATOOLS/Phys/Flavour.H"
0005 #include "ATOOLS/Org/Message.H"
0006 #include <set>
0007 
0008 namespace ATOOLS {
0009   class Blob;
0010   class Mass_Selector;
0011 }
0012 
0013 namespace PHASIC {
0014   class Decay_Channel;
0015 
0016   class Decay_Table : public std::vector<Decay_Channel *> {
0017   protected :
0018     /**
0019      * This variable keeps track how many decays
0020      * have already been used in this event from this table.
0021      * It allows to enable/disable some decay channels only for e.g. the
0022      * first/second/... tau decay in the event.
0023      */
0024     size_t m_counter;
0025     /**
0026      * Sum over the decay channel widths (for this decayer's nominal decay table)
0027      */
0028     double                        m_totalwidth;
0029     ATOOLS::Flavour               m_flin;
0030     /**
0031      * The Mass_Selector knows which type of mass is to be used for all decays
0032      * associated with this decay table. This can be the HadMass() if the decays
0033      * belong to the non-perturbative regime of the event, or the Mass() if
0034      * they belong to the perturbative part. 
0035      */
0036     const ATOOLS::Mass_Selector* p_ms;
0037 
0038 
0039   public :
0040     Decay_Table(const ATOOLS::Flavour, const ATOOLS::Mass_Selector* ms);
0041     virtual ~Decay_Table();
0042     void AddDecayChannel(Decay_Channel *);
0043     void RemoveDecayChannel(size_t i);
0044     void UpdateChannelStatuses();
0045     void Output();
0046     void UpdateWidth();
0047     void UpdateWidth(Decay_Channel * dc,const double &width);
0048 
0049     const ATOOLS::Flavour& Flav() const      { return m_flin;      }
0050     const double &  TotalWidth() const       { return m_totalwidth; }
0051     const double    ActiveWidth(const size_t& count) const;
0052     Decay_Channel * GetDecayChannel(const ATOOLS::Flavour_Vector&) const;
0053     void            EraseDecayChannel(const int);
0054     Decay_Channel * Select();
0055     void ResetCounter() { m_counter=0; }
0056 
0057     friend std::ostream &operator<<(std::ostream &os, const Decay_Table &dt);
0058   };
0059 }
0060 
0061 #endif