|
|
|||
File indexing completed on 2026-08-06 09:24:04
0001 // -*- C++ -*- 0002 // 0003 // LeptonNeutrinoCurrent.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_LeptonNeutrinoCurrent_H 0010 #define HERWIG_LeptonNeutrinoCurrent_H 0011 // 0012 // This is the declaration of the LeptonNeutrinoCurrent class. 0013 // 0014 #include "WeakCurrent.h" 0015 #include "LeptonNeutrinoCurrent.fh" 0016 #include "ThePEG/Helicity/LorentzSpinorBar.h" 0017 0018 namespace Herwig { 0019 using namespace ThePEG; 0020 using ThePEG::Helicity::LorentzPolarizationVector; 0021 0022 /** \ingroup Decay 0023 * 0024 * This class implements the weak decay current for a lepton and a neutrino. 0025 * In this case the current is given by 0026 * \f$J^\mu = \bar{u}(p_\nu)\gamma^\mu(1-\gamma_5)u(p_\ell)\f$ 0027 * where 0028 * - \f$p_\nu\f$ is the momentum of the neutrino, 0029 * - \f$p_\ell\f$ is the momentum of the charged lepton. 0030 * 0031 * @see WeakCurrent. 0032 * 0033 */ 0034 class LeptonNeutrinoCurrent: public WeakCurrent { 0035 0036 public: 0037 0038 /** 0039 * Default constructor 0040 */ 0041 LeptonNeutrinoCurrent() { 0042 // set up the modes in the base class 0043 addDecayMode(11,-12); 0044 addDecayMode(13,-15); 0045 addDecayMode(15,-16); 0046 setInitialModes(3); 0047 } 0048 0049 public: 0050 0051 /** @name Methods for the construction of the phase space integrator. */ 0052 //@{ 0053 /** 0054 * Complete the construction of the decay mode for integration.classes inheriting 0055 * from this one. 0056 * This method is purely virtual and must be implemented in the classes inheriting 0057 * from WeakCurrent. 0058 * @param icharge The total charge of the outgoing particles in the current. 0059 * @param resonance If specified only include terms with this particle 0060 * @param flavour Information on the required flavours of the quarks 0061 * @param imode The mode in the current being asked for. 0062 * @param mode The phase space mode for the integration 0063 * @param iloc The location of the of the first particle from the current in 0064 * the list of outgoing particles. 0065 * @param ires The location of the first intermediate for the current. 0066 * @param phase The prototype phase space channel for the integration. 0067 * @param upp The maximum possible mass the particles in the current are 0068 * allowed to have. 0069 * @return Whether the current was sucessfully constructed. 0070 */ 0071 virtual bool createMode(int icharge, tcPDPtr resonance, 0072 FlavourInfo flavour, 0073 unsigned int imode,PhaseSpaceModePtr mode, 0074 unsigned int iloc,int ires, 0075 PhaseSpaceChannel phase, Energy upp ); 0076 0077 /** 0078 * The particles produced by the current. This just returns the leptons. 0079 * @param icharge The total charge of the particles in the current. 0080 * @param imode The mode for which the particles are being requested 0081 * @param iq The PDG code for the quark 0082 * @param ia The PDG code for the antiquark 0083 * @return The external particles for the current. 0084 */ 0085 virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia); 0086 //@} 0087 0088 /** 0089 * Hadronic current. This method is purely virtual and must be implemented in 0090 * all classes inheriting from this one. 0091 * @param resonance If specified only include terms with this particle 0092 * @param flavour Information on the required flavours of the quarks 0093 * @param imode The mode 0094 * @param ichan The phase-space channel the current is needed for. 0095 * @param scale The invariant mass of the particles in the current. 0096 * @param outgoing The particles produced in the decay 0097 * @param momenta The momenta of the particles produced in the decay 0098 * @param meopt Option for the calculation of the matrix element 0099 * @return The current. 0100 */ 0101 virtual vector<LorentzPolarizationVectorE> 0102 current(tcPDPtr resonance, 0103 FlavourInfo flavour, 0104 const int imode, const int ichan,Energy & scale, 0105 const tPDVector & outgoing, 0106 const vector<Lorentz5Momentum> & momenta, 0107 DecayIntegrator::MEOption meopt) const; 0108 0109 /** 0110 * Construct the SpinInfo for the decay products 0111 */ 0112 void constructSpinInfo(ParticleVector decay) const; 0113 0114 /** 0115 * Accept the decay. Checks that this is one of the allowed modes. 0116 * @param id The id's of the particles in the current. 0117 * @return Can this current have the external particles specified. 0118 */ 0119 virtual bool accept(vector<int> id); 0120 0121 /** 0122 * Returns the decay mode number for a given set of particles in the current. 0123 * @param id The id's of the particles in the current. 0124 * @return The number of the mode 0125 */ 0126 virtual unsigned int decayMode(vector<int> id); 0127 0128 /** 0129 * Output the setup information for the particle database 0130 * @param os The stream to output the information to 0131 * @param header Whether or not to output the information for MySQL 0132 * @param create Whether or not to add a statement creating the object 0133 */ 0134 virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; 0135 0136 public: 0137 0138 /** 0139 * Standard Init function used to initialize the interfaces. 0140 */ 0141 static void Init(); 0142 0143 protected: 0144 0145 /** @name Clone Methods. */ 0146 //@{ 0147 /** 0148 * Make a simple clone of this object. 0149 * @return a pointer to the new object. 0150 */ 0151 virtual IBPtr clone() const {return new_ptr(*this);} 0152 0153 /** Make a clone of this object, possibly modifying the cloned object 0154 * to make it sane. 0155 * @return a pointer to the new object. 0156 */ 0157 virtual IBPtr fullclone() const {return new_ptr(*this);} 0158 //@} 0159 0160 private: 0161 0162 /** 0163 * Private and non-existent assignment operator. 0164 */ 0165 LeptonNeutrinoCurrent & operator=(const LeptonNeutrinoCurrent &) = delete; 0166 0167 private: 0168 0169 /** 0170 * Spinors for the decay products 0171 */ 0172 mutable vector<Helicity::LorentzSpinor <SqrtEnergy> > wave_; 0173 0174 /** 0175 * barred spinors for the decay products 0176 */ 0177 mutable vector<Helicity::LorentzSpinorBar<SqrtEnergy> > wavebar_; 0178 0179 }; 0180 0181 } 0182 0183 0184 #endif /* HERWIG_LeptonNeutrinoCurrent_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|