Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef HADRONS_PS_Library_HD_PS_Base_H
0002 #define HADRONS_PS_Library_HD_PS_Base_H
0003 
0004 #include "PHASIC++/Channels/Single_Channel.H"
0005 #include "ATOOLS/Phys/Flavour.H"
0006 #include "ATOOLS/Math/Vector.H"
0007 #include <string>
0008 #include "HADRONS++/Main/Tools.H"
0009 #include "ATOOLS/Org/Scoped_Settings.H"
0010 
0011 namespace HADRONS {
0012 
0013   struct ChannelInformation
0014   {
0015     std::string name;                // name of integrator
0016     int nRes;                        // number of resonances
0017     std::string res1, res2, res3;    // resonances
0018     int a,b,c,d;                    // index for outgoing particles
0019   };
0020 
0021   class HD_Channel_Selector {
0022     static bool DecomposeChannel( std::string name, ChannelInformation & ci );
0023   public:
0024     static PHASIC::Single_Channel*
0025     GetChannel(int nin, int nout, const ATOOLS::Flavour * flavs,
0026                std::string name, ATOOLS::Scoped_Settings& s,
0027                const ATOOLS::Mass_Selector* ms);
0028   };
0029   
0030   /*!
0031     \file HD_PS_Base.H
0032     \brief Declares the classes HADRONS::HD_Channel_Selector and HADRONS::ChannelInformation.
0033 
0034     This file can be found in the directory \c PS_Library.
0035   */
0036 
0037   /*!
0038     \class HD_Channel_Selector
0039     \brief Tool to select an integration channel
0040   */
0041   /*!
0042     \fn HD_Channel_Selector::GetChannel(int nin, int nout, const ATOOLS::Flavour * flavs, std::string name, GeneralModel & md )
0043     \brief Returns pointer on a PS generator
0044 
0045     Input number <var>nin</var> must be 1 and the output number <var>nout</var>
0046     greater than or equal to 2.
0047     The argument <var>name</var> corresponds to the name of the integrator such as
0048     - Isotropic (Rambo)
0049     - Dalitz_<var>prop</var>_<var>ij</var>
0050     - TwoResonances_<var>prop1</var>_<var>k</var>_<var>prop2</var>_<var>ij</var>
0051     - ...
0052     .
0053     At first the name is decomposed by HD_Channel_Selector::DecomposeChannel and stored as
0054     ChannelInformation. Depending in the information in ChannelInformation it returns
0055     a pointer on the corresponding PS integrator class such as
0056     - Rambo
0057     - Dalitz
0058     - TwoResonances
0059     - ...
0060     .
0061   */    
0062   /*!
0063     \fn HD_Channel_Selector::DecomposeChannel( string name, ChannelInformation & ci )
0064     \brief Reads name and extract the information
0065 
0066     This method extracts the required information from the name <var>name</var> and stores
0067     them in the ChannelInformation class variable <var>ci</var>.
0068     */
0069 
0070   /*!
0071     \class ChannelInformation
0072     \brief Auxilliary class for setting the correct integrator
0073 
0074     This class is a mere bookkeeping class for all information that is extracted from the name
0075     of the integrator:
0076     - which are the propagators
0077     - which particles are external legs
0078     - ...
0079     .
0080     It can cope with the following integrators
0081     <TABLE>
0082     <TR> <TD>full name</TD> <TD></TD> <TD>Isotropic</TD>
0083         <TD>Dalitz_<var>prop</var>_<var>ij</var></TD>
0084         <TD>TwoResonances_<var>prop1</var>_<var>k</var>_<var>prop2</var>_<var>ij</var></TD> </TR>
0085     <TR> <TD>diagram</TD> <TD></TD> <TD></TD> <TD>\f$prop \to i+j\f$</TD> 
0086         <TD>\f$prop_1 \to k+ prop_2;\: prop_2 \to i+j\f$</TD> </TR>
0087     <TR> <TD>type</TD> <TD>name</TD> <TD>Isotropic</TD> <TD>Dalitz</TD> <TD>TwoResonances</TD> </TR>
0088     <TR> <TD>number of resonances</TD> <TD>nRes</TD> <TD>0</TD> <TD>1</TD> <TD>2</TD> </TR>
0089     <TR> <TD>resonance 1</TD> <TD>res1</TD> <TD>-</TD> <TD><var>prop</var></TD> <TD><var>prop1</var></TD> </TR>
0090     <TR> <TD>resonance 2</TD> <TD>res2</TD> <TD>-</TD> <TD>-</TD> <TD><var>prop2</var></TD> </TR>
0091     <TR> <TD>resonance 3</TD> <TD>res3</TD> <TD>-</TD> <TD>-</TD> <TD>-</TD> </TR>
0092     <TR> <TD>1st leg</TD> <TD>a</TD> <TD>-</TD> <TD><var>i</var></TD> <TD><var>k</var></TD> </TR>
0093     <TR> <TD>2nd leg</TD> <TD>b</TD> <TD>-</TD> <TD><var>j</var></TD> <TD><var>i</var></TD> </TR>
0094     <TR> <TD>3rd leg</TD> <TD>c</TD> <TD>-</TD> <TD>-</TD> <TD><var>j</var></TD> </TR>
0095     <TR> <TD>4th leg</TD> <TD>d</TD> <TD>-</TD> <TD>-</TD> <TD>-</TD> </TR>
0096     </TABLE>
0097     */
0098   /*!
0099     \var ChannelInformation::name
0100     Type of the integrator:
0101     - \c Isotripic
0102     - \c Dalitz
0103     - \c TwoResonances
0104     .
0105     */
0106   /*!
0107     \var ChannelInformation::nRes
0108     Number of the resonances (internal propagators)
0109     */
0110   /*!
0111     \var ChannelInformation::res1
0112     Name of the resonance 1
0113     */
0114   /*!
0115     \var ChannelInformation::res2
0116     Name of the resonance 2
0117     */
0118   /*!
0119     \var ChannelInformation::res3
0120     Name of the resonance 3
0121     */
0122   /*!
0123     \var ChannelInformation::a
0124     Number of the particle in the 1st leg
0125     */
0126   /*!
0127     \var ChannelInformation::b
0128     Number of the particle in the 2nd leg
0129     */
0130   /*!
0131     \var ChannelInformation::c
0132     Number of the particle in the 3rd leg
0133     */
0134   /*!
0135     \var ChannelInformation::d
0136     Number of the particle in the 4th leg
0137     */
0138     
0139 } // end of namespace
0140 
0141 
0142 #endif