|
|
|||
File indexing completed on 2026-08-06 09:23:59
0001 // -*- C++ -*- 0002 #ifndef HERWIG_SemiLeptonicBaryonDecayer_H 0003 #define HERWIG_SemiLeptonicBaryonDecayer_H 0004 // 0005 // This is the declaration of the SemiLeptonicBaryonDecayer class. 0006 // 0007 #include "Herwig/Decay/DecayIntegrator.h" 0008 #include "Herwig/Decay/WeakCurrents/LeptonNeutrinoCurrent.h" 0009 #include "Herwig/Decay/FormFactors/BaryonFormFactor.h" 0010 #include "Herwig/Decay/PhaseSpaceMode.h" 0011 #include "ThePEG/Helicity/LorentzRSSpinorBar.h" 0012 0013 namespace Herwig { 0014 using namespace ThePEG; 0015 0016 /** \ingroup Decay 0017 * 0018 * The <code>SemiLeptonicBaryonDecayer</code> class is designed for the 0019 * semi-leptonic decay of the baryons. It combine the form-factors from a 0020 * class inheriting from the BaryonFormFactor class and the leptonic current. 0021 * 0022 * The decays of spin-\f$\frac12\f$ baryons to spin-\f$\frac12\f$ and 0023 * spin-\f$\frac32\f$ baryons are currently supported. The only other decays 0024 * which seem to occur in nature is the semi-leptonic decay of the \f$\Omega^-\f$ 0025 * which is \f$\frac32\to\frac12\f$. 0026 * 0027 * @see BaryonFormFactor. 0028 * 0029 */ 0030 class SemiLeptonicBaryonDecayer: public DecayIntegrator { 0031 0032 public: 0033 0034 /** 0035 * Default constructor. 0036 */ 0037 SemiLeptonicBaryonDecayer(); 0038 0039 /** 0040 * Check if this decayer can perfom the decay for a particular mode. 0041 * @param parent The decaying particle 0042 * @param children The decay products 0043 */ 0044 virtual bool accept(tcPDPtr parent, const tPDVector & children) const; 0045 0046 /** 0047 * Which of the possible decays is required 0048 * @param cc Is this mode the charge conjugate 0049 * @param parent The decaying particle 0050 * @param children The decay products 0051 */ 0052 virtual int modeNumber(bool & cc, tcPDPtr parent, 0053 const tPDVector & children) const; 0054 0055 /** 0056 * Return the matrix element squared for a given mode and phase-space channel. 0057 * @param ichan The channel we are calculating the matrix element for. 0058 * @param part The decaying Particle. 0059 * @param outgoing The particles produced in the decay 0060 * @param momenta The momenta of the particles produced in the decay 0061 * @param meopt Option for the calculation of the matrix element 0062 * @return The matrix element squared for the phase-space configuration. 0063 */ 0064 double me2(const int ichan,const Particle & part, 0065 const tPDVector & outgoing, 0066 const vector<Lorentz5Momentum> & momenta, 0067 MEOption meopt) const; 0068 0069 /** 0070 * Construct the SpinInfos for the particles produced in the decay 0071 */ 0072 virtual void constructSpinInfo(const Particle & part, 0073 ParticleVector outgoing) const; 0074 0075 /** 0076 * Output the setup information for the particle database 0077 * @param os The stream to output the information to 0078 * @param header Whether or not to output the information for MySQL 0079 */ 0080 virtual void dataBaseOutput(ofstream & os,bool header) const; 0081 0082 public: 0083 0084 /** @name Functions used by the persistent I/O system. */ 0085 //@{ 0086 /** 0087 * Function used to write out object persistently. 0088 * @param os the persistent output stream written to. 0089 */ 0090 void persistentOutput(PersistentOStream & os) const; 0091 0092 /** 0093 * Function used to read in object persistently. 0094 * @param is the persistent input stream read from. 0095 * @param version the version number of the object when written. 0096 */ 0097 void persistentInput(PersistentIStream & is, int version); 0098 //@} 0099 0100 /** 0101 * Standard Init function used to initialize the interfaces. 0102 */ 0103 static void Init(); 0104 0105 protected: 0106 0107 /** @name Clone Methods. */ 0108 //@{ 0109 /** 0110 * Make a simple clone of this object. 0111 * @return a pointer to the new object. 0112 */ 0113 virtual IBPtr clone() const {return new_ptr(*this);} 0114 0115 /** Make a clone of this object, possibly modifying the cloned object 0116 * to make it sane. 0117 * @return a pointer to the new object. 0118 */ 0119 virtual IBPtr fullclone() const {return new_ptr(*this);} 0120 //@} 0121 0122 protected: 0123 0124 /** @name Standard Interfaced functions. */ 0125 //@{ 0126 /** 0127 * Initialize this object after the setup phase before saving and 0128 * EventGenerator to disk. 0129 * @throws InitException if object could not be initialized properly. 0130 */ 0131 virtual void doinit(); 0132 0133 /** 0134 * Initialize this object to the begining of the run phase. 0135 */ 0136 virtual void doinitrun(); 0137 //@} 0138 0139 protected: 0140 0141 /** 0142 * Matrix element for \f$\frac12\to\frac12\f$. 0143 * @param part The decaying Particle. 0144 * @param outgoing The particles produced in the decay 0145 * @param momenta The momenta of the particles produced in the decay 0146 * @param meopt Option for the calculation of the matrix element 0147 * @return The matrix element squared for the phase-space configuration. 0148 */ 0149 double halfHalf(const Particle & part, 0150 const tPDVector & outgoing, 0151 const vector<Lorentz5Momentum> & momenta, 0152 MEOption meopt) const; 0153 0154 /** 0155 * Matrix element for \f$\frac12\to\frac32\f$. 0156 * @param part The decaying Particle. 0157 * @param outgoing The particles produced in the decay 0158 * @param momenta The momenta of the particles produced in the decay 0159 * @param meopt Option for the calculation of the matrix element 0160 * @return The matrix element squared for the phase-space configuration. 0161 */ 0162 double halfThreeHalf(const Particle & part, 0163 const tPDVector & outgoing, 0164 const vector<Lorentz5Momentum> & momenta, 0165 MEOption meopt) const; 0166 0167 private: 0168 0169 /** 0170 * Private and non-existent assignment operator. 0171 */ 0172 SemiLeptonicBaryonDecayer & operator=(const SemiLeptonicBaryonDecayer &) = delete; 0173 0174 private: 0175 0176 /** 0177 * The current for the leptons 0178 */ 0179 LeptonNeutrinoCurrentPtr _current; 0180 0181 /** 0182 * form-factor 0183 */ 0184 BaryonFormFactorPtr _form; 0185 0186 /** 0187 * the maximum weight 0188 */ 0189 vector<double> _maxwgt; 0190 0191 /** 0192 * mapping of the mode to the form-factor 0193 */ 0194 vector<int> _modemap; 0195 0196 /** 0197 * Spin density matrix 0198 */ 0199 mutable RhoDMatrix _rho; 0200 0201 /** 0202 * Spin-\f$\frac12\f$ spinors 0203 */ 0204 mutable vector<LorentzSpinor<SqrtEnergy> > _inHalf; 0205 0206 /** 0207 * Spin-\f$\frac12\f$ barred spinors 0208 */ 0209 mutable vector<LorentzSpinorBar<SqrtEnergy> > _inHalfBar; 0210 0211 /** 0212 * Spin-\f$\frac32\f$ spinors 0213 */ 0214 mutable vector<LorentzRSSpinor<SqrtEnergy> > _inThreeHalf; 0215 0216 /** 0217 * Spin-\f$\frac32\f$ barred spinors 0218 */ 0219 mutable vector<LorentzRSSpinorBar<SqrtEnergy> > _inThreeHalfBar; 0220 0221 /** 0222 * Constants for the mapping of the leptonic vector 0223 */ 0224 mutable vector<unsigned int> _constants; 0225 0226 /** 0227 * Spins of the particles 0228 */ 0229 mutable vector<PDT::Spin> _ispin; 0230 0231 /** 0232 * Location of the outgoing baryon 0233 */ 0234 mutable unsigned int _ibar; 0235 }; 0236 0237 } 0238 0239 0240 #endif /* HERWIG_SemiLeptonicBaryonDecayer_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|