Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef HADRONS_Main_Hadron_Decay_Table_H
0002 #define HADRONS_Main_Hadron_Decay_Table_H
0003 
0004 #include "PHASIC++/Decays/Decay_Table.H"
0005 #include "HADRONS++/Main/Tools.H"
0006 #include "ATOOLS/Org/Scoped_Settings.H"
0007 
0008 namespace ATOOLS {
0009   class Blob;
0010 }
0011 
0012 namespace HADRONS {
0013 
0014   class Hadron_Decay_Channel;
0015   class Mixing_Handler;
0016 
0017   /** 
0018    * Building on the general class Decay_Table this class implements the
0019    * features specific for hadron decay tables, i.e. reading decay tables from
0020    * files.
0021    */
0022   class Hadron_Decay_Table : public PHASIC::Decay_Table {
0023     /// Pointer to the mixing handler. Needed for rate asymmetries.
0024     Mixing_Handler* p_mixinghandler;
0025     double m_flavwidth;
0026 
0027   public:
0028     /** 
0029      * Sets up the decay table structure, but doesn't fill it yet.
0030      * 
0031      * @param decayer The decay particle flavour.
0032      * @param ms 
0033      */
0034     Hadron_Decay_Table(ATOOLS::Flavour decayer, 
0035                const ATOOLS::Mass_Selector* ms, 
0036                        Mixing_Handler* mh);
0037     ~Hadron_Decay_Table();
0038 
0039     /** 
0040      * Wrapper function.
0041      */
0042     inline Hadron_Decay_Channel* Select() {
0043       return (Hadron_Decay_Channel*) Decay_Table::Select();
0044     }
0045 
0046     /** 
0047      * Wrapper function.
0048      */
0049     inline Hadron_Decay_Channel* at(const size_t i) {
0050       return (Hadron_Decay_Channel*) Decay_Table::at(i);
0051     }
0052 
0053     /** 
0054      * Adds all decay channels and their branching ratios from the decay table
0055      * file to the decay table and initialises them with their settings
0056      * 
0057      * @param s Settings block from HADRON_DECAYS:Channels:\<pdgid\>
0058      */
0059     void Read(ATOOLS::Scoped_Settings s, GeneralModel& startmd);
0060 
0061     /** 
0062      * Outputs the Latex lines for a hadron decay table (to be embedded in a
0063      * decay map Latex output)
0064      * 
0065      * @param f Stream to write to.
0066      */
0067     void LatexOutput(std::ostream& f);
0068 
0069     /** 
0070      * Redefinition of Decay_Channel::Select to take into account possible
0071      * CP rate asymmetries due to mixing, and to require partonic decay channels
0072      * if a partonic decay has been rejected after fragmentation because it
0073      * produced an exclusive decay channel.
0074      * 
0075      * @param blob Decay blob for which to select the channel.
0076      * 
0077      * @return Decay_Channel selected according to branching ratios.
0078      */
0079     PHASIC::Decay_Channel* Select(ATOOLS::Blob* blob);
0080 
0081     //@{
0082     /** Getter/setter method */
0083     inline void SetMixingHandler(Mixing_Handler* m) { p_mixinghandler=m; }
0084     //@}
0085   };
0086 
0087 
0088 }
0089 
0090 
0091 #endif