|
|
|||
File indexing completed on 2026-08-06 09:24:01
0001 // -*- C++ -*- 0002 #ifndef HERWIG_FtoFVVDecayer_H 0003 #define HERWIG_FtoFVVDecayer_H 0004 // 0005 // This is the declaration of the FtoFVVDecayer class. 0006 // 0007 0008 #include "GeneralThreeBodyDecayer.h" 0009 #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" 0010 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" 0011 #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h" 0012 #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h" 0013 #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" 0014 #include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h" 0015 0016 namespace Herwig { 0017 using namespace ThePEG; 0018 0019 /** 0020 * The FtoFVVDecayer class provides the general matrix elements for the 0021 * decay of a fermion to a fermion and two vector bosons. 0022 * 0023 * @see \ref FtoFVVDecayerInterfaces "The interfaces" 0024 * defined for FtoFVVDecayer. 0025 */ 0026 class FtoFVVDecayer: public GeneralThreeBodyDecayer { 0027 0028 public: 0029 0030 /** 0031 * Return the matrix element squared for a given mode and phase-space channel. 0032 * @param ichan The channel we are calculating the matrix element for. 0033 * @param part The decaying Particle. 0034 * @param outgoing The particles produced in the decay 0035 * @param momenta The momenta of the particles produced in the decay 0036 * @param meopt Option for the calculation of the matrix element 0037 * @return The matrix element squared for the phase-space configuration. 0038 */ 0039 double me2(const int ichan,const Particle & part, 0040 const tPDVector & outgoing, 0041 const vector<Lorentz5Momentum> & momenta, 0042 MEOption meopt) const; 0043 0044 /** 0045 * Construct the SpinInfos for the particles produced in the decay 0046 */ 0047 virtual void constructSpinInfo(const Particle & part, 0048 ParticleVector outgoing) const; 0049 0050 /** 0051 * Method to return an object to calculate the 3 (or higher body) partial width 0052 * @param dm The DecayMode 0053 * @return A pointer to a WidthCalculatorBase object capable of calculating the width 0054 */ 0055 virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const; 0056 0057 public: 0058 0059 /** @name Functions used by the persistent I/O system. */ 0060 //@{ 0061 /** 0062 * Function used to write out object persistently. 0063 * @param os the persistent output stream written to. 0064 */ 0065 void persistentOutput(PersistentOStream & os) const; 0066 0067 /** 0068 * Function used to read in object persistently. 0069 * @param is the persistent input stream read from. 0070 * @param version the version number of the object when written. 0071 */ 0072 void persistentInput(PersistentIStream & is, int version); 0073 //@} 0074 0075 /** 0076 * The standard Init function used to initialize the interfaces. 0077 * Called exactly once for each class by the class description system 0078 * before the main function starts or 0079 * when this class is dynamically loaded. 0080 */ 0081 static void Init(); 0082 0083 protected: 0084 0085 /** @name Clone Methods. */ 0086 //@{ 0087 /** 0088 * Make a simple clone of this object. 0089 * @return a pointer to the new object. 0090 */ 0091 virtual IBPtr clone() const; 0092 0093 /** Make a clone of this object, possibly modifying the cloned object 0094 * to make it sane. 0095 * @return a pointer to the new object. 0096 */ 0097 virtual IBPtr fullclone() const; 0098 //@} 0099 0100 protected: 0101 0102 /** 0103 * Set up the diagrams etc 0104 */ 0105 virtual void setupDiagrams(bool checkKinematics); 0106 0107 private: 0108 0109 /** 0110 * The assignment operator is private and must never be called. 0111 * In fact, it should not even be implemented. 0112 */ 0113 FtoFVVDecayer & operator=(const FtoFVVDecayer &) = delete; 0114 0115 private: 0116 0117 /** 0118 * Store the vector of scalar intermediates 0119 */ 0120 vector<pair<AbstractFFSVertexPtr, AbstractVVSVertexPtr> > sca_; 0121 0122 /** 0123 * Store the vector for fermion intermediates 0124 */ 0125 vector<pair<AbstractFFVVertexPtr, AbstractFFVVertexPtr> > fer_; 0126 0127 /** 0128 * Store the vector for gauge boson intermediates 0129 */ 0130 vector<pair<AbstractFFVVertexPtr, AbstractVVVVertexPtr> > vec_; 0131 0132 /** 0133 * Store the vector of tensor intermediates 0134 */ 0135 vector<pair<AbstractFFTVertexPtr, AbstractVVTVertexPtr> > ten_; 0136 0137 /** 0138 * Spin density matrix 0139 */ 0140 mutable RhoDMatrix rho_; 0141 0142 /** 0143 * Spinor wavefunctions 0144 */ 0145 mutable vector<SpinorWaveFunction> fwave_; 0146 0147 /** 0148 * Barred spinor wavefunctions 0149 */ 0150 mutable vector<SpinorBarWaveFunction> fbwave_; 0151 0152 /** 0153 * Vector wavefunctions 0154 */ 0155 mutable pair<vector<VectorWaveFunction>, vector<VectorWaveFunction> > vwave_; 0156 }; 0157 0158 } 0159 0160 #endif /* HERWIG_FtoFVVDecayer_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|