|
|
|||
File indexing completed on 2026-08-06 09:24:02
0001 // -*- C++ -*- 0002 // 0003 // PScalar4FermionsDecayer.h is a part of Herwig - A multi-purpose Monte Carlo event generator 0004 // Copyright (C) 2002-2019 The Herwig Collaboration 0005 // 0006 // Herwig is licenced under version 3 of the GPL, see COPYING for details. 0007 // Please respect the MCnet academic guidelines, see GUIDELINES for details. 0008 // 0009 #ifndef HERWIG_PScalar4FermionsDecayer_H 0010 #define HERWIG_PScalar4FermionsDecayer_H 0011 // This is the declaration of the PScalar4FermionsDecayer class. 0012 0013 #include "Herwig/Decay/DecayIntegrator.h" 0014 #include "Herwig/Decay/PhaseSpaceMode.h" 0015 #include "ThePEG/Helicity/LorentzSpinorBar.h" 0016 0017 namespace Herwig { 0018 using namespace ThePEG; 0019 0020 /** \ingroup Decay 0021 * 0022 * The <code>PScalar4FermionsDecayer</code> class is designed for the 0023 * decay of the neutral pion to four leptons, in this case electrons. 0024 * The propagator for the off-shell boson is taken to be \f$\frac1{m^2}\f$. There 0025 * is also the option of including a vector meson dominance form-factor. 0026 * 0027 * In this case the matrix element is 0028 * \f[\mathcal{M} = \frac{g}{m^2_{f_1\bar{f_1}}m^2_{f_2\bar{f_2}}} 0029 * \epsilon^{\mu\nu\alpha\beta} 0030 * \bar{u}(p_{f_1})\gamma_\mu v(p_{\bar{f_1}})p_{f_1\bar{f_1}\nu} 0031 * \bar{u}(p_{f_2})\gamma_\alpha v(p_{\bar{f_2}}) p_{f_2\bar{f_2}\beta} 0032 * \f] 0033 * It includes the option of a vector meson dominance (VMD) type form factor 0034 * \f$\frac{-M^2+i\Gamma M}{(m^2_{f\bar{f}}-M^2+i\Gamma M)}\f$. In the case of identical 0035 * fermions in also includes the exchange diagram. 0036 * 0037 * @see DecayIntegrator 0038 * @see PScalarVectorVectorDecayer 0039 * @see PScalarVectorFermionsDecayer 0040 * 0041 * \author Peter Richardson 0042 * 0043 */ 0044 class PScalar4FermionsDecayer: public DecayIntegrator { 0045 0046 public: 0047 0048 /** 0049 * Default constructor. 0050 */ 0051 PScalar4FermionsDecayer(); 0052 0053 /** 0054 * Which of the possible decays is required 0055 * @param cc Is this mode the charge conjugate 0056 * @param parent The decaying particle 0057 * @param children The decay products 0058 */ 0059 virtual int modeNumber(bool & cc, tcPDPtr parent, 0060 const tPDVector & children) const; 0061 0062 /** 0063 * Return the matrix element squared for a given mode and phase-space channel. 0064 * @param ichan The channel we are calculating the matrix element for. 0065 * @param part The decaying Particle. 0066 * @param outgoing The particles produced in the decay 0067 * @param momenta The momenta of the particles produced in the decay 0068 * @param meopt Option for the calculation of the matrix element 0069 * @return The matrix element squared for the phase-space configuration. 0070 */ 0071 double me2(const int ichan,const Particle & part, 0072 const tPDVector & outgoing, 0073 const vector<Lorentz5Momentum> & momenta, 0074 MEOption meopt) const; 0075 0076 /** 0077 * Construct the SpinInfos for the particles produced in the decay 0078 */ 0079 virtual void constructSpinInfo(const Particle & part, 0080 ParticleVector outgoing) const; 0081 0082 /** 0083 * Output the setup information for the particle database 0084 * @param os The stream to output the information to 0085 * @param header Whether or not to output the information for MySQL 0086 */ 0087 virtual void dataBaseOutput(ofstream & os,bool header) const; 0088 0089 public: 0090 0091 /** @name Functions used by the persistent I/O system. */ 0092 //@{ 0093 /** 0094 * Function used to write out object persistently. 0095 * @param os the persistent output stream written to. 0096 */ 0097 void persistentOutput(PersistentOStream & os) const; 0098 0099 /** 0100 * Function used to read in object persistently. 0101 * @param is the persistent input stream read from. 0102 * @param version the version number of the object when written. 0103 */ 0104 void persistentInput(PersistentIStream & is, int version); 0105 //@} 0106 0107 /** 0108 * Standard Init function used to initialize the interfaces. 0109 */ 0110 static void Init(); 0111 0112 protected: 0113 0114 /** @name Clone Methods. */ 0115 //@{ 0116 /** 0117 * Make a simple clone of this object. 0118 * @return a pointer to the new object. 0119 */ 0120 virtual IBPtr clone() const {return new_ptr(*this);} 0121 0122 /** Make a clone of this object, possibly modifying the cloned object 0123 * to make it sane. 0124 * @return a pointer to the new object. 0125 */ 0126 virtual IBPtr fullclone() const {return new_ptr(*this);} 0127 //@} 0128 0129 protected: 0130 0131 /** @name Standard Interfaced functions. */ 0132 //@{ 0133 0134 /** 0135 * Initialize this object after the setup phase before saving and 0136 * EventGenerator to disk. 0137 * @throws InitException if object could not be initialized properly. 0138 */ 0139 virtual void doinit(); 0140 0141 /** 0142 * Initialize this object to the begining of the run phase. 0143 */ 0144 virtual void doinitrun(); 0145 //@} 0146 0147 private: 0148 0149 /** 0150 * Private and non-existent assignment operator. 0151 */ 0152 PScalar4FermionsDecayer & operator=(const PScalar4FermionsDecayer &) = delete; 0153 0154 public: 0155 0156 /** 0157 * Set the parameters for a decay mode 0158 */ 0159 string setUpDecayMode(string arg); 0160 0161 private: 0162 0163 /** 0164 * coupling for a decay 0165 */ 0166 vector<InvEnergy> coupling_; 0167 0168 /** 0169 * the PDG codes for the incoming particle 0170 */ 0171 vector<int> incoming_; 0172 0173 /** 0174 * the PDG codes for the first outgoing fermion 0175 */ 0176 vector<pair<long,long> > outgoing_; 0177 0178 /** 0179 * maximum weight for a decay 0180 */ 0181 vector<double> maxweight_; 0182 0183 /** 0184 * Include the VMD factor 0185 */ 0186 vector<int> includeVMD_; 0187 0188 /** 0189 * PDG code of the particle for the VMD factor 0190 */ 0191 vector<int> VMDid_; 0192 0193 /** 0194 * Mass of the particle for the VMD factor 0195 */ 0196 vector<Energy> VMDmass_; 0197 0198 /** 0199 * Width of the particle for the VMD factor 0200 */ 0201 vector<Energy> VMDwidth_; 0202 0203 /** 0204 * Spin density matrix 0205 */ 0206 mutable RhoDMatrix rho_; 0207 0208 /** 0209 * Spinors for the decay products 0210 */ 0211 mutable vector<Helicity::LorentzSpinor <SqrtEnergy> > wave_[2]; 0212 0213 /** 0214 * Barred spinors for the decay products 0215 */ 0216 mutable vector<Helicity::LorentzSpinorBar<SqrtEnergy> > wavebar_[2]; 0217 }; 0218 0219 } 0220 0221 0222 #endif /* HERWIG_PScalar4FermionsDecayer_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|