#ifndef HADRONS_PS_Library_HD_PS_Base_H #define HADRONS_PS_Library_HD_PS_Base_H #include "PHASIC++/Channels/Single_Channel.H" #include "ATOOLS/Phys/Flavour.H" #include "ATOOLS/Math/Vector.H" #include #include "HADRONS++/Main/Tools.H" #include "ATOOLS/Org/Scoped_Settings.H" namespace HADRONS { struct ChannelInformation { std::string name; // name of integrator int nRes; // number of resonances std::string res1, res2, res3; // resonances int a,b,c,d; // index for outgoing particles }; class HD_Channel_Selector { static bool DecomposeChannel( std::string name, ChannelInformation & ci ); public: static PHASIC::Single_Channel* GetChannel(int nin, int nout, const ATOOLS::Flavour * flavs, std::string name, ATOOLS::Scoped_Settings& s, const ATOOLS::Mass_Selector* ms); }; /*! \file HD_PS_Base.H \brief Declares the classes HADRONS::HD_Channel_Selector and HADRONS::ChannelInformation. This file can be found in the directory \c PS_Library. */ /*! \class HD_Channel_Selector \brief Tool to select an integration channel */ /*! \fn HD_Channel_Selector::GetChannel(int nin, int nout, const ATOOLS::Flavour * flavs, std::string name, GeneralModel & md ) \brief Returns pointer on a PS generator Input number nin must be 1 and the output number nout greater than or equal to 2. The argument name corresponds to the name of the integrator such as - Isotropic (Rambo) - Dalitz_prop_ij - TwoResonances_prop1_k_prop2_ij - ... . At first the name is decomposed by HD_Channel_Selector::DecomposeChannel and stored as ChannelInformation. Depending in the information in ChannelInformation it returns a pointer on the corresponding PS integrator class such as - Rambo - Dalitz - TwoResonances - ... . */ /*! \fn HD_Channel_Selector::DecomposeChannel( string name, ChannelInformation & ci ) \brief Reads name and extract the information This method extracts the required information from the name name and stores them in the ChannelInformation class variable ci. */ /*! \class ChannelInformation \brief Auxilliary class for setting the correct integrator This class is a mere bookkeeping class for all information that is extracted from the name of the integrator: - which are the propagators - which particles are external legs - ... . It can cope with the following integrators
full name Isotropic Dalitz_prop_ij TwoResonances_prop1_k_prop2_ij
diagram \f$prop \to i+j\f$ \f$prop_1 \to k+ prop_2;\: prop_2 \to i+j\f$
type name Isotropic Dalitz TwoResonances
number of resonances nRes 0 1 2
resonance 1 res1 - prop prop1
resonance 2 res2 - - prop2
resonance 3 res3 - - -
1st leg a - i k
2nd leg b - j i
3rd leg c - - j
4th leg d - - -
*/ /*! \var ChannelInformation::name Type of the integrator: - \c Isotripic - \c Dalitz - \c TwoResonances . */ /*! \var ChannelInformation::nRes Number of the resonances (internal propagators) */ /*! \var ChannelInformation::res1 Name of the resonance 1 */ /*! \var ChannelInformation::res2 Name of the resonance 2 */ /*! \var ChannelInformation::res3 Name of the resonance 3 */ /*! \var ChannelInformation::a Number of the particle in the 1st leg */ /*! \var ChannelInformation::b Number of the particle in the 2nd leg */ /*! \var ChannelInformation::c Number of the particle in the 3rd leg */ /*! \var ChannelInformation::d Number of the particle in the 4th leg */ } // end of namespace #endif