|
|
|||
File indexing completed on 2026-08-06 09:24:05
0001 // -*- C++ -*- 0002 #ifndef Herwig_DecayMatrixElement_H 0003 #define Herwig_DecayMatrixElement_H 0004 // 0005 // This is the declaration of the DecayMatrixElement class. 0006 // 0007 0008 #include "ThePEG/Pointer/ReferenceCounted.h" 0009 #include <ThePEG/Config/ThePEG.h> 0010 #include <ThePEG/Helicity/HelicityDefinitions.h> 0011 #include <ThePEG/EventRecord/RhoDMatrix.h> 0012 #include "DecayMatrixElement.fh" 0013 0014 namespace Herwig { 0015 0016 using namespace ThePEG; 0017 0018 /** 0019 * Here is the documentation of the DecayMatrixElement class. 0020 */ 0021 class DecayMatrixElement: public Pointer::ReferenceCounted { 0022 0023 public: 0024 0025 /** @name Standard constructors and destructors. */ 0026 //@{ 0027 /** 0028 * The default constructor. 0029 */ 0030 DecayMatrixElement(unsigned int ntemp=999, PDT::Spin spin = PDT::SpinUndefined) 0031 : nOut_(ntemp), inSpin_(spin) {} 0032 0033 /** 0034 * The destructor. 0035 */ 0036 virtual ~DecayMatrixElement(); 0037 //@} 0038 0039 public: 0040 0041 /** 0042 * Access to the spins of the particles 0043 */ 0044 //@{ 0045 /** 0046 * Get the spin of the incoming particle. 0047 */ 0048 PDT::Spin inspin() const {return inSpin_;} 0049 0050 /** 0051 * Get the spins of the outgoing particles. 0052 */ 0053 const vector<PDT::Spin> & outspin() const {return outSpin_;} 0054 //@} 0055 0056 /** 0057 * Get the number of outgoing particles 0058 */ 0059 unsigned int nOut() const {return nOut_;} 0060 0061 /** 0062 * Spin Density matrices 0063 */ 0064 //@{ 0065 /** 0066 * Calculate the decay matrix for this decay. 0067 * @param rhoout The \f$D\f$ matrix for this decay. 0068 */ 0069 virtual RhoDMatrix calculateDMatrix(const vector<RhoDMatrix> & rhoout) const = 0; 0070 0071 /** 0072 * Calculate the \f$\rho\f$ matrix for a given outgoing particle. 0073 * @param ipart The outgoing particle the \f$\rho\f$ matrix is needed for 0074 * @param rhoin The \f$\rho\f$ matrix for the decaying particle. 0075 * @param rhoout he \f$D\f$ matrices for the other decay products. 0076 */ 0077 virtual RhoDMatrix calculateRhoMatrix(int ipart,const RhoDMatrix & rhoin, 0078 const vector<RhoDMatrix> & rhoout) const = 0; 0079 0080 /** 0081 * Contract the matrix element with the \f$\rho\f$ matrix of the 0082 * incoming particle. The spins of the decay products are summed over. 0083 * @param rhoin The \f$\rho\f$ matrix for the decaying particle. 0084 */ 0085 virtual Complex contract(const RhoDMatrix & rhoin) const = 0; 0086 0087 // /** 0088 // * Contract the matrix element with the \f$\rho\f$ matrix of the 0089 // * incoming particle. The spins of the decay products are summed over. 0090 // * @param con The conjugate matrix elemetn for the contraction 0091 // * @param rhoin The \f$\rho\f$ matrix for the decaying particle. 0092 // */ 0093 // Complex contract(const DecayMatrixElement & con, 0094 // const RhoDMatrix & rhoin); 0095 //@} 0096 0097 public: 0098 0099 /** 0100 * Access to the individual helicity components. 0101 */ 0102 //@{ 0103 /** 0104 * Get the helicity components for a two body decay 0105 * @param inhel The helicity of the decaying particle. 0106 * @param outhel1 The helicity of the first decay product. 0107 * @param outhel2 The helicity of the second decay product. 0108 */ 0109 virtual Complex operator () (unsigned int inhel,unsigned int outhel1, 0110 unsigned int outhel2) const = 0; 0111 0112 /** 0113 * Set the helicity components for a two body decay 0114 * @param inhel The helicity of the decaying particle. 0115 * @param outhel1 The helicity of the first decay product. 0116 * @param outhel2 The helicity of the second decay product. 0117 */ 0118 virtual Complex & operator () (unsigned int inhel,unsigned int outhel1, 0119 unsigned int outhel2) = 0; 0120 0121 /** 0122 * Get the helicity components for a three body decay 0123 * @param inhel The helicity of the decaying particle. 0124 * @param outhel1 The helicity of the first decay product. 0125 * @param outhel2 The helicity of the second decay product. 0126 * @param outhel3 The helicity of the third decay product. 0127 */ 0128 virtual Complex operator () (unsigned int inhel,unsigned int outhel1, 0129 unsigned int outhel2,unsigned int outhel3) const = 0; 0130 0131 /** 0132 * Set the helicity components for a three body decay 0133 * @param inhel The helicity of the decaying particle. 0134 * @param outhel1 The helicity of the first decay product. 0135 * @param outhel2 The helicity of the second decay product. 0136 * @param outhel3 The helicity of the third decay product. 0137 */ 0138 virtual Complex & operator () (unsigned int inhel,unsigned int outhel1, 0139 unsigned int outhel2,unsigned int outhel3) = 0; 0140 0141 /** 0142 * Get the helicity components for a four body decay 0143 * @param inhel The helicity of the decaying particle. 0144 * @param outhel1 The helicity of the first decay product. 0145 * @param outhel2 The helicity of the second decay product. 0146 * @param outhel3 The helicity of the third decay product. 0147 * @param outhel4 The helicity of the fourth decay product. 0148 */ 0149 virtual Complex operator () (unsigned int inhel,unsigned int outhel1, 0150 unsigned int outhel2,unsigned int outhel3, 0151 unsigned int outhel4) const = 0; 0152 0153 /** 0154 * Set the helicity components for a four body decay 0155 * @param inhel The helicity of the decaying particle. 0156 * @param outhel1 The helicity of the first decay product. 0157 * @param outhel2 The helicity of the second decay product. 0158 * @param outhel3 The helicity of the third decay product. 0159 * @param outhel4 The helicity of the fourth decay product. 0160 */ 0161 virtual Complex & operator () (unsigned int inhel,unsigned int outhel1, 0162 unsigned int outhel2,unsigned int outhel3, 0163 unsigned int outhel4) = 0; 0164 0165 /** 0166 * Get the helicity components for a five body decay 0167 * @param inhel The helicity of the decaying particle. 0168 * @param outhel1 The helicity of the first decay product. 0169 * @param outhel2 The helicity of the second decay product. 0170 * @param outhel3 The helicity of the third decay product. 0171 * @param outhel4 The helicity of the fourth decay product. 0172 * @param outhel5 The helicity of the fifth decay product. 0173 */ 0174 virtual Complex operator () (unsigned int inhel,unsigned int outhel1, 0175 unsigned int outhel2,unsigned int outhel3, 0176 unsigned int outhel4,unsigned int outhel5) const = 0; 0177 0178 /** 0179 * Set the helicity components for a five body decay 0180 * @param inhel The helicity of the decaying particle. 0181 * @param outhel1 The helicity of the first decay product. 0182 * @param outhel2 The helicity of the second decay product. 0183 * @param outhel3 The helicity of the third decay product. 0184 * @param outhel4 The helicity of the fourth decay product. 0185 * @param outhel5 The helicity of the fifth decay product. 0186 */ 0187 virtual Complex & operator () (unsigned int inhel,unsigned int outhel1, 0188 unsigned int outhel2,unsigned int outhel3, 0189 unsigned int outhel4,unsigned int outhel5) = 0; 0190 0191 /** 0192 * Get the helicity components for a six body decay 0193 * @param inhel The helicity of the decaying particle. 0194 * @param outhel1 The helicity of the first decay product. 0195 * @param outhel2 The helicity of the second decay product. 0196 * @param outhel3 The helicity of the third decay product. 0197 * @param outhel4 The helicity of the fourth decay product. 0198 * @param outhel5 The helicity of the fifth decay product. 0199 * @param outhel6 The helicity of the sixth decay product. 0200 */ 0201 virtual Complex operator () (unsigned int inhel,unsigned int outhel1, 0202 unsigned int outhel2,unsigned int outhel3, 0203 unsigned int outhel4,unsigned int outhel5, 0204 unsigned int outhel6) const = 0; 0205 0206 /** 0207 * Set the helicity components for a six body decay 0208 * @param inhel The helicity of the decaying particle. 0209 * @param outhel1 The helicity of the first decay product. 0210 * @param outhel2 The helicity of the second decay product. 0211 * @param outhel3 The helicity of the third decay product. 0212 * @param outhel4 The helicity of the fourth decay product. 0213 * @param outhel5 The helicity of the fifth decay product. 0214 * @param outhel6 The helicity of the sixth decay product. 0215 */ 0216 virtual Complex & operator () (unsigned int inhel,unsigned int outhel1, 0217 unsigned int outhel2,unsigned int outhel3, 0218 unsigned int outhel4,unsigned int outhel5, 0219 unsigned int outhel6) = 0; 0220 0221 /** 0222 * Get the helicity components for an \f$n\f$-body decay. 0223 * @param in The helicities of the external particles. 0224 */ 0225 virtual Complex operator () (const vector<unsigned int> & in) const = 0; 0226 0227 /** 0228 * Set the helicity components for an \f$n\f$-body decay. 0229 * @param in The helicities of the external particles. 0230 */ 0231 virtual Complex & operator () (const vector<unsigned int> & in) = 0; 0232 //@} 0233 0234 /** 0235 * Member to zero all the elements for the matrix element 0236 */ 0237 virtual void zero() = 0; 0238 0239 private: 0240 0241 /** 0242 * The assignment operator is private and must never be called. 0243 * In fact, it should not even be implemented. 0244 */ 0245 DecayMatrixElement & operator=(const DecayMatrixElement &) = delete; 0246 0247 protected: 0248 0249 /** 0250 * Get the spins of the outgoing particles. 0251 */ 0252 vector<PDT::Spin> & outspin() {return outSpin_;} 0253 0254 private: 0255 0256 /** 0257 * Number of outgoing particles. 0258 */ 0259 unsigned int nOut_; 0260 0261 /** 0262 * Spin of the incoming particle as 2s+1. 0263 */ 0264 PDT::Spin inSpin_; 0265 0266 /** 0267 * Spins of the outgoing particles. 0268 */ 0269 vector<PDT::Spin> outSpin_; 0270 0271 }; 0272 0273 } 0274 0275 #endif /* Herwig_DecayMatrixElement_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|