|
|
|||
File indexing completed on 2026-08-06 09:24:01
0001 // -*- C++ -*- 0002 #ifndef THEPEG_VVSDecayer_H 0003 #define THEPEG_VVSDecayer_H 0004 // 0005 // This is the declaration of the VVSDecayer class. 0006 // 0007 0008 #include "GeneralTwoBodyDecayer.h" 0009 #include "ThePEG/Helicity/Vertex/Scalar/VVSVertex.h" 0010 #include "ThePEG/Repository/EventGenerator.h" 0011 0012 namespace Herwig { 0013 using namespace ThePEG; 0014 using Helicity::VVSVertexPtr; 0015 0016 /** \ingroup Decay 0017 * The VVSDecayer class implements the decay of a vector to a 0018 * vector and a scalar in a general model. It holds an VVSVertex pointer 0019 * that must be typecast from the VertexBase pointer helid in the 0020 * GeneralTwoBodyDecayer. It implents the virtual functions me2() and 0021 * partialWidth(). 0022 * 0023 * @see \ref VVSDecayerInterfaces "The interfaces" 0024 * defined for VVSDecayer. 0025 */ 0026 class VVSDecayer: public GeneralTwoBodyDecayer { 0027 0028 public: 0029 0030 /** 0031 * The default constructor. 0032 */ 0033 VVSDecayer() {} 0034 0035 /** @name Virtual functions required by the Decayer class. */ 0036 //@{ 0037 /** 0038 * Return the matrix element squared for a given mode and phase-space channel. 0039 * @param ichan The channel we are calculating the matrix element for. 0040 * @param part The decaying Particle. 0041 * @param outgoing The particles produced in the decay 0042 * @param momenta The momenta of the particles produced in the decay 0043 * @param meopt Option for the calculation of the matrix element 0044 * @return The matrix element squared for the phase-space configuration. 0045 */ 0046 double me2(const int ichan,const Particle & part, 0047 const tPDVector & outgoing, 0048 const vector<Lorentz5Momentum> & momenta, 0049 MEOption meopt) const; 0050 0051 /** 0052 * Construct the SpinInfos for the particles produced in the decay 0053 */ 0054 virtual void constructSpinInfo(const Particle & part, 0055 ParticleVector outgoing) const; 0056 0057 /** 0058 * Function to return partial Width 0059 * @param inpart The decaying particle. 0060 * @param outa One of the decay products. 0061 * @param outb The other decay product. 0062 */ 0063 virtual Energy partialWidth(PMPair inpart, PMPair outa, 0064 PMPair outb) const; 0065 0066 /** 0067 * Set the information on the decay 0068 */ 0069 virtual void setDecayInfo(PDPtr incoming, PDPair outgoing, 0070 vector<VertexBasePtr>, 0071 map<ShowerInteraction,VertexBasePtr> &, 0072 const vector<map<ShowerInteraction,VertexBasePtr> > &, 0073 map<ShowerInteraction,VertexBasePtr>); 0074 0075 /** 0076 * Has a POWHEG style correction 0077 */ 0078 virtual POWHEGType hasPOWHEGCorrection() { 0079 POWHEGType output = FSR; 0080 for(auto vertex : vertex_) { 0081 if(vertex->orderInAllCouplings()!=1) { 0082 output = No; 0083 break; 0084 } 0085 } 0086 return output; 0087 } 0088 0089 /** 0090 * Three-body matrix element including additional QCD radiation 0091 */ 0092 virtual double threeBodyME(const int , const Particle & inpart, 0093 const ParticleVector & decay, 0094 ShowerInteraction inter, MEOption meopt); 0095 //@} 0096 0097 public: 0098 0099 /** @name Functions used by the persistent I/O system. */ 0100 //@{ 0101 /** 0102 * Function used to write out object persistently. 0103 * @param os the persistent output stream written to. 0104 */ 0105 void persistentOutput(PersistentOStream & os) const; 0106 0107 /** 0108 * Function used to read in object persistently. 0109 * @param is the persistent input stream read from. 0110 * @param version the version number of the object when written. 0111 */ 0112 void persistentInput(PersistentIStream & is, int version); 0113 //@} 0114 0115 /** 0116 * The standard Init function used to initialize the interfaces. 0117 * Called exactly once for each class by the class description system 0118 * before the main function starts or 0119 * when this class is dynamically loaded. 0120 */ 0121 static void Init(); 0122 0123 protected: 0124 0125 /** @name Clone Methods. */ 0126 //@{ 0127 /** 0128 * Make a simple clone of this object. 0129 * @return a pointer to the new object. 0130 */ 0131 virtual IBPtr clone() const; 0132 0133 /** Make a clone of this object, possibly modifying the cloned object 0134 * to make it sane. 0135 * @return a pointer to the new object. 0136 */ 0137 virtual IBPtr fullclone() const; 0138 //@} 0139 0140 private: 0141 0142 /** 0143 * The assignment operator is private and must never be called. 0144 * In fact, it should not even be implemented. 0145 */ 0146 VVSDecayer & operator=(const VVSDecayer &) = delete; 0147 0148 private: 0149 0150 /** 0151 * Abstract pointer to AbstractVVSVertex 0152 */ 0153 vector<AbstractVVSVertexPtr> vertex_; 0154 0155 /** 0156 * Pointer to the perturbative vertex 0157 */ 0158 vector<VVSVertexPtr> perturbativeVertex_; 0159 0160 /** 0161 * Abstract pointer to AbstractVVVVertex for QCD radiation from incoming vector 0162 */ 0163 map<ShowerInteraction,AbstractVVVVertexPtr> incomingVertex_; 0164 0165 /** 0166 * Abstract pointer to AbstractVVVVertex for QCD radiation from the first outgoing vector 0167 */ 0168 map<ShowerInteraction,AbstractVVVVertexPtr> outgoingVertexV_; 0169 0170 /** 0171 * Abstract pointer to AbstractVVVVertex for QCD radiation from the second outgoing vector 0172 */ 0173 map<ShowerInteraction,AbstractVSSVertexPtr> outgoingVertexS_; 0174 0175 /** 0176 * Spin density matrix 0177 */ 0178 mutable RhoDMatrix rho_; 0179 0180 /** 0181 * Vector wavefunctions 0182 */ 0183 mutable vector<Helicity::VectorWaveFunction> vectors_[2]; 0184 0185 private: 0186 0187 /** 0188 * Members for the POWHEG correction 0189 */ 0190 //@{ 0191 /** 0192 * Spin density matrix for 3 body decay 0193 */ 0194 mutable RhoDMatrix rho3_; 0195 0196 /** 0197 * Vector wavefunctions 0198 */ 0199 mutable vector<Helicity::VectorWaveFunction> vectors3_[2]; 0200 0201 /** 0202 * Vector wavefunction for 3 body decay 0203 */ 0204 mutable vector<Helicity::VectorWaveFunction> gluon_; 0205 //@} 0206 }; 0207 0208 } 0209 0210 #endif /* THEPEG_VVSDecayer_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|