|
|
|||
File indexing completed on 2026-08-06 09:24:04
0001 // -*- C++ -*- 0002 #ifndef Herwig_VectorMeson2SpinThreeHalfBaryonsDecayer_H 0003 #define Herwig_VectorMeson2SpinThreeHalfBaryonsDecayer_H 0004 // 0005 // This is the declaration of the VectorMeson2SpinThreeHalfBaryonsDecayer class. 0006 // 0007 0008 #include "Herwig/Decay/DecayIntegrator.h" 0009 #include "Herwig/Decay/PhaseSpaceMode.h" 0010 #include "ThePEG/Helicity/LorentzPolarizationVector.h" 0011 #include "ThePEG/Helicity/LorentzSpinorBar.h" 0012 #include "ThePEG/Helicity/LorentzRSSpinorBar.h" 0013 0014 namespace Herwig { 0015 0016 using namespace ThePEG; 0017 0018 /** \ingroup Decay 0019 * 0020 * The <code>VectorMeson2SpinThreeHalfBaryonsDecayer</code> class is designed for the decay 0021 * of a vector meson to a baryon-antibaryon pair. 0022 * 0023 * In this case the matrix element is taken to have the form 0024 * \f[\mathcal{M} = e_g \epsilon_\mu \bar{u}(p_f) \left[\gamma^\mu \right]u(p_{\bar{f}}).\f] 0025 * 0026 * The incoming vector mesons together with their decay products and the coupling 0027 * \f$e_g\f$, \f$G_E\f$ and the phase \f$\phi_E\f$ can be specified using the interfaces for the class. 0028 * The maximum weights 0029 * for the decays can be calculated using the Initialize interface of the 0030 * DecayIntegrator class or specified using the interface. 0031 * 0032 * The incoming and outgoing particles, couplings and maximum weights for 0033 * many of the common \f$V\to f\bar{f}\f$ decays are specified in the default 0034 * constructor. 0035 * 0036 * @see DecayIntegrator 0037 * @see \ref VectorMeson2SpinThreeHalfBaryonsDecayerInterfaces "The interfaces" 0038 * defined for VectorMeson2SpinThreeHalfBaryonsDecayer. 0039 * 0040 */ 0041 class VectorMeson2SpinThreeHalfBaryonsDecayer: public DecayIntegrator { 0042 0043 public: 0044 0045 /** 0046 * The default constructor. 0047 */ 0048 VectorMeson2SpinThreeHalfBaryonsDecayer() {} 0049 0050 /** 0051 * Which of the possible decays is required 0052 * @param cc Is this mode the charge conjugate 0053 * @param parent The decaying particle 0054 * @param children The decay products 0055 */ 0056 virtual int modeNumber(bool & cc, tcPDPtr parent, 0057 const tPDVector & children) const; 0058 0059 /** 0060 * Return the matrix element squared for a given mode and phase-space channel. 0061 * @param ichan The channel we are calculating the matrix element for. 0062 * @param part The decaying Particle. 0063 * @param outgoing The particles produced in the decay 0064 * @param momenta The momenta of the particles produced in the decay 0065 * @param meopt Option for the calculation of the matrix element 0066 * @return The matrix element squared for the phase-space configuration. 0067 */ 0068 double me2(const int ichan,const Particle & part, 0069 const tPDVector & outgoing, 0070 const vector<Lorentz5Momentum> & momenta, 0071 MEOption meopt) const; 0072 0073 /** 0074 * Construct the SpinInfos for the particles produced in the decay 0075 */ 0076 virtual void constructSpinInfo(const Particle & part, 0077 ParticleVector outgoing) const; 0078 0079 /** 0080 * Output the setup information for the particle database 0081 * @param os The stream to output the information to 0082 * @param header Whether or not to output the information for MySQL 0083 */ 0084 virtual void dataBaseOutput(ofstream & os,bool header) const; 0085 0086 public: 0087 0088 /** @name Functions used by the persistent I/O system. */ 0089 //@{ 0090 /** 0091 * Function used to write out object persistently. 0092 * @param os the persistent output stream written to. 0093 */ 0094 void persistentOutput(PersistentOStream & os) const; 0095 0096 /** 0097 * Function used to read in object persistently. 0098 * @param is the persistent input stream read from. 0099 * @param version the version number of the object when written. 0100 */ 0101 void persistentInput(PersistentIStream & is, int version); 0102 //@} 0103 0104 /** 0105 * The standard Init function used to initialize the interfaces. 0106 * Called exactly once for each class by the class description system 0107 * before the main function starts or 0108 * when this class is dynamically loaded. 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; 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; 0127 //@} 0128 0129 protected: 0130 0131 /** @name Standard Interfaced functions. */ 0132 //@{ 0133 /** 0134 * Initialize this object after the setup phase before saving and 0135 * EventGenerator to disk. 0136 * @throws InitException if object could not be initialized properly. 0137 */ 0138 virtual void doinit(); 0139 0140 /** 0141 * Initialize this object to the begining of the run phase. 0142 */ 0143 virtual void doinitrun(); 0144 //@} 0145 0146 private: 0147 0148 /** 0149 * The assignment operator is private and must never be called. 0150 * In fact, it should not even be implemented. 0151 */ 0152 VectorMeson2SpinThreeHalfBaryonsDecayer & operator=(const VectorMeson2SpinThreeHalfBaryonsDecayer &) = 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 * \f$G_M\f$ coupling 0165 */ 0166 vector<double> gm_; 0167 0168 /** 0169 * \f$G_E\f$ coupling 0170 */ 0171 vector<double> ge_; 0172 0173 /** 0174 * Relative phase of \f$G_E\f$/\f$G_M\f$ 0175 */ 0176 vector<double> phi_; 0177 0178 /** 0179 * the PDG codes for the incoming particles 0180 */ 0181 vector<int> incoming_; 0182 0183 /** 0184 * the PDG codes for the outgoing fermion 0185 */ 0186 vector<pair<long,long> > outgoing_; 0187 0188 /** 0189 * maximum weight for a decay 0190 */ 0191 vector<double> maxweight_; 0192 0193 /** 0194 * Spin density matrix 0195 */ 0196 mutable RhoDMatrix rho_; 0197 0198 /** 0199 * Polarization vectors for the decaying particle 0200 */ 0201 mutable vector<Helicity::LorentzPolarizationVector> vectors_; 0202 0203 /** 0204 * Spinors for the decay products 0205 */ 0206 mutable vector<Helicity::LorentzSpinor <SqrtEnergy> > wave_; 0207 0208 /** 0209 * barred spinors for the decay products 0210 */ 0211 mutable vector<Helicity::LorentzSpinorBar<SqrtEnergy> > wavebar_; 0212 0213 /** 0214 * Spinors for the decay products 0215 */ 0216 mutable vector<Helicity::LorentzRSSpinor <SqrtEnergy> > wave2_; 0217 0218 /** 0219 * barred spinors for the decay products 0220 */ 0221 mutable vector<Helicity::LorentzRSSpinorBar<SqrtEnergy> > wave2bar_; 0222 }; 0223 0224 } 0225 0226 #endif /* Herwig_VectorMeson2SpinThreeHalfBaryonsDecayer_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|