Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef AMEGIC_Main_Pol_Info_H
0002 #define AMEGIC_Main_Pol_Info_H
0003 
0004 #define Explicit_Pols
0005 
0006 #include "ATOOLS/Phys/Flavour.H"
0007 //syntax for polarised particles: (in processes.dat)
0008 //
0009 //    degree of polarisation (0.=unpolarized,1.=fully polarized) (only 1 or 0 for outgoing)
0010 //                        | l for linear
0011 //                        | | polarization angle
0012 //                        | | |
0013 //   Bosons:   linear:   (.8l45)
0014 //                        |
0015 //                        | +/-/0(for massive bosons)
0016 //                        |  |
0017 //             circular: (.8c+)
0018 //                        |
0019 //                        | +/-
0020 //                        |  |
0021 //   Fermion helicities: (.8h+) (up to now only ok for massless)
0022 
0023 namespace AMEGIC {
0024 
0025   class mt {
0026   public:
0027     enum momtype{  mom    = 10,  //external momentum
0028            prop   = 11,  //propagator
0029            cmprop = 12,  //center of momentum propagator
0030            p_p    = 1,   //polarisation +1 (circular)
0031            p_m    =-1,   //             -1 (circular)
0032            p_l    = 0,   //             longitudinal
0033            p_s    = 2,   //             scalar
0034            p_si   = 7,   //             massless scalar
0035            p_l0   = 3,   //             linear with direction
0036            p_l1   = 4,   //             linear, perpendicular to p_l0
0037            p_lh   = 5,   //             horizontaly (linear)
0038            p_lp   = 6,   //             perpendicular (linear)
0039            p_none = 8,
0040            p_spec = 9,
0041            
0042            p_t1   = 101,  //dummies for graviton polarization tensors
0043            p_t2   = 102,
0044            p_t3   = 103,
0045            p_t4   = 104,
0046            p_t5   = 105
0047     };
0048   };
0049   /*!
0050     \class mt
0051     \brief Types for explicit 4-vectors.
0052 
0053     This class specifies the types for explicit 4-vectors in AMEGIC::Momfunc. 
0054     They are used to label the arguments in AMEGIC::Basic_Func and derived classes. 
0055 
0056     The following types are defined:
0057     - mom:         momentum of an external particle  
0058     - prop:        momentum for a propagator
0059     - cmprop:      momentum for a propagator, where the spacial part is identical 0
0060     - p_p/p_m:     circular polarization vectors (+/-)
0061     - p_l:         longitudinal polarization
0062     - p_s/p_si:    scalar polarization for massive/massless off-shell vector boson
0063     - p_l0/p_l1:   linear polarization vectors with a direction (defined in AMEGIC::Pol_Info::angle)
0064     - p_lh/p_lp:   linear polarization vectors with fixed direction
0065     - p_t1-p_t5:   dummies for polarization tensors of external spin-2 particles, will be replaced in AMEGIC::Single_Amplitude_Base::Single_ZvalueTensor(Zfunc* z,std::vector<int>*,std::vector<int>*,int) by combinations of polarization vectors
0066 
0067     For the calculation of these vectors see AMEGIC::Basic_Sfuncs::Calc_Momlist().
0068   */
0069     
0070   class Pol_Info{
0071   public:
0072     //Polarisation type: 'c'=circular 'l'=linear 'h'=helicity 't'=tensor
0073     char pol_type;
0074     //direction for linear polarisation
0075     double angle;
0076     int      num;
0077     int    * type;
0078     double * factor;
0079     double m_pol1, m_pol2;
0080     void Init(int);
0081     friend std::ostream & operator<<(std::ostream &, Pol_Info &);
0082   public:
0083     Pol_Info();
0084     Pol_Info(const ATOOLS::Flavour &);
0085     Pol_Info(const Pol_Info &);
0086     Pol_Info& operator=(const Pol_Info &);
0087    ~Pol_Info();
0088 
0089     void SetPol(char);
0090     char GetPol();
0091     char GetPolarisationType() { return pol_type; }
0092     int  DoFNumber() { return num; }
0093     int    Polarisation(const int i) { return type[i]; }
0094     double Degree(const int i)       { return factor[i]; }
0095   };
0096 
0097   std::ostream & operator<<(std::ostream &, Pol_Info &);
0098 
0099   /*!
0100     \class Pol_Info
0101     \brief Container for everything about the polarization state of external particles.
0102 
0103     This class is a container to transfer the polarization state information from 
0104     AMEGIC::Amegic::ReadProcesses(std::string) to the construction of the helicity states
0105     in AMEGIC::Helicity.
0106   */
0107   /*!
0108     \var char Pol_Info::pol_type
0109     Type of the polarization state.
0110     Possible values:
0111     - c for circular (vector boson)
0112     - l for linear (vector boson)
0113     - h for fermion helicities
0114     - t for tensor (spin-2 particles)    
0115   */
0116   /*!
0117     \var double Pol_Info::angle
0118     angle for linear polarization vectors of type mt::p_l0 and mt::p_l1
0119   */
0120   /*!
0121     \var int Pol_Info::num
0122     number of polarization vectors (tensors) to calculate a given polarization state
0123     Possible values:
0124     - 1 for totally polarized beams/final states
0125     - 2 for partially polarized/unpolarized massless vector bosons
0126     - 3 for partially polarized/unpolarized massive vector bosons
0127     - 5 for massive spin-2 tensors 
0128   */
0129   /*!
0130     \var int* Pol_Info::type
0131     Array of num AMEGIC::mt::momtype 
0132   */
0133   /*!
0134     \var double * Pol_Info::factor
0135     The weight of each polarization vector for the right partial polarization
0136   */  
0137 
0138 
0139   class Tensor_Struc{                //defines the spin2 tensors
0140   public:
0141     void GetPolCombos(int, std::vector<std::vector<int> >*, std::vector<int>*);
0142     double GetTfactor(int);
0143   };
0144   /*!
0145     \class Tensor_Struc
0146     \brief Defines tensors for external spin-2 particles 
0147 
0148     This class defines the 5 polarization tensors for a massive external spin-2 particle
0149     in terms of (outer) products of two polarization vectors.
0150 
0151     Polarization tensors are defined as follows:
0152     - AMEGIC::mt::p_t1 \f$\epsilon_{\mu}^{+}\epsilon_{\nu}^{+}\f$
0153     - AMEGIC::mt::p_t2 \f$\sqrt{2}\,\epsilon_{\mu}^{+}\epsilon_{\nu}^{0}\f$
0154     - AMEGIC::mt::p_t3 \f$\sqrt{\frac{2}{3}}\left(\epsilon_{\mu}^{+}\epsilon_{\nu}^{-}-\epsilon_{\mu}^{0}\epsilon_{\nu}^{0}\right)\f$
0155     - AMEGIC::mt::p_t4 \f$\sqrt{2}\,\epsilon_{\mu}^{-}\epsilon_{\nu}^{0}\f$
0156     - AMEGIC::mt::p_t5 \f$\epsilon_{\mu}^{-}\epsilon_{\nu}^{-}\f$
0157   */
0158   /*!
0159     \fn void Tensor_Struc::GetPolCombos(int, vector<vector<int> >*, vector<int>*)
0160     Gives a list of polarization vectors and relative signs to define a polarization tensor.
0161   */
0162   /*!
0163     \fn double Tensor_Struc::GetTfactor(int) 
0164     Returns a normalization factor for each polarization tensor.
0165   */
0166 }
0167 #endif
0168