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_Map_H
0002 #define HADRONS_Main_Hadron_Decay_Map_H
0003 
0004 #include <string>
0005 #include <vector>
0006 #include "ATOOLS/Phys/Flavour.H"
0007 #include "HADRONS++/Main/Tools.H"
0008 #include "PHASIC++/Decays/Decay_Map.H"
0009 
0010 namespace HADRONS {
0011   class Hadron_Decay_Table;
0012   class Mixing_Handler;
0013 
0014   typedef std::multimap<std::string, Hadron_Decay_Table*> SDtMMap;
0015   typedef std::multimap<std::string, Hadron_Decay_Table*>::iterator SDtMMapIt;
0016 
0017   /**
0018    * Building on the general class Decay_Map this class implements the features
0019    * specific for hadron decay maps, e.g. reading decay tables from files.
0020    * Furthermore it manages the global constants defined in HadronConstants.dat.
0021    */
0022   class Hadron_Decay_Map : public PHASIC::Decay_Map {
0023   private:
0024 
0025     /**
0026      * A model that is filled from HadronConstants.dat and used as starting
0027      * point for all decay channel specific models.
0028      */
0029     GeneralModel m_startmd;
0030 
0031     std::multimap<std::string, Hadron_Decay_Table*> m_fixed_tables;
0032     std::vector<Hadron_Decay_Table*> m_fixed_next_tables;
0033 
0034     Mixing_Handler      * p_mixinghandler;
0035 
0036   public: 
0037     /** 
0038      * @param ms The mass selector
0039      */
0040     Hadron_Decay_Map(const ATOOLS::Mass_Selector* ms);
0041     ~Hadron_Decay_Map();
0042     /**
0043      * Reads all decay tables and create their decay channels and initialises them.
0044      */
0045     void Read(ATOOLS::Scoped_Settings& s);
0046     /**
0047      * Reads fixed decay tables from FixedDecays.dat which can later be
0048      * programmatically set to be used for the next decay of a certain decayer,
0049      * typically some kind of signal decay
0050      * (useful within frameworks like LHCb)
0051      */
0052     void ReadFixedTables();
0053     /**
0054      * Reads partonic decay data.
0055      */
0056     void ReadInPartonicDecays(const ATOOLS::Flavour & decflav, ATOOLS::Scoped_Settings& s);
0057     /** 
0058      * 
0059      * @return The global hadron decay parameter model.
0060      */
0061     inline GeneralModel& StartModel() { return m_startmd; }
0062     /**
0063      * Creates a Latex booklet containing all decay tables and information
0064      * about available matrix elements and currents, in hadrons.tex
0065      */
0066     void CreateBooklet();
0067     /**
0068      * Activate a previously read fixed decay table 
0069      */
0070     void FixDecayTables(std::string table_id);
0071     /**
0072      * Deactivate the previously fixed decay table
0073      */
0074     void ClearFixedDecayTables();
0075 
0076     virtual PHASIC::Decay_Table* FindDecay(const ATOOLS::Flavour& decayer);
0077 
0078     //@{
0079     /// Getter/setter method.
0080     inline const Mixing_Handler* MixingHandler() const {return p_mixinghandler;}
0081     inline void SetMixingHandler(Mixing_Handler* mix) { p_mixinghandler = mix; }
0082     //@}
0083   };
0084 
0085   /**
0086      \package HADRONS
0087      The HADRONS package is Sherpa's native hadron and tau decay handler.
0088 
0089      \section decaydata Decaydata files
0090 
0091      All decaytables and information about decay channels is saved in plain
0092      text files located in SHERPA/Run/Decaydata.
0093 
0094      Three different levels of dat-files are used:
0095      - <b>HadronDecays.dat</b>: Stores a list of all available decay tables.
0096      (represented by the Hadron_Decay_Map class).
0097      - <b>Decay table files</b>: Each hadron has its own directory including
0098      a file called Decays.dat which is represented by the
0099      Hadron_Decay_Table class.
0100      - <b>Decay channel files</b>: In the same directory you can find individual
0101      files for each decay channel (represented by the Hadron_Decay_Channel
0102      class).
0103   */
0104 
0105 }
0106 
0107 
0108 #endif