|
|
|||
File indexing completed on 2026-08-06 09:24:01
0001 // -*- C++ -*- 0002 #ifndef HERWIG_StoFFFFDecayer_H 0003 #define HERWIG_StoFFFFDecayer_H 0004 // 0005 // This is the declaration of the StoFFFFDecayer class. 0006 // 0007 0008 #include "GeneralFourBodyDecayer.h" 0009 #include "ThePEG/Helicity/Vertex/AbstractSSSVertex.h" 0010 #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" 0011 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" 0012 #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h" 0013 #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h" 0014 0015 namespace Herwig { 0016 0017 using namespace ThePEG; 0018 0019 /** 0020 * Here is the documentation of the StoFFFFDecayer class. 0021 * 0022 * @see \ref StoFFFFDecayerInterfaces "The interfaces" 0023 * defined for StoFFFFDecayer. 0024 */ 0025 class StoFFFFDecayer: public GeneralFourBodyDecayer { 0026 0027 public: 0028 0029 /** 0030 * Return the matrix element squared for a given mode and phase-space channel. 0031 * @param ichan The channel we are calculating the matrix element for. 0032 * @param part The decaying Particle. 0033 * @param outgoing The particles produced in the decay 0034 * @param momenta The momenta of the particles produced in the decay 0035 * @param meopt Option for the calculation of the matrix element 0036 * @return The matrix element squared for the phase-space configuration. 0037 */ 0038 double me2(const int ichan,const Particle & part, 0039 const tPDVector & outgoing, 0040 const vector<Lorentz5Momentum> & momenta, 0041 MEOption meopt) const; 0042 0043 /** 0044 * Construct the SpinInfos for the particles produced in the decay 0045 */ 0046 virtual void constructSpinInfo(const Particle & part, 0047 ParticleVector outgoing) const; 0048 0049 public: 0050 0051 /** @name Functions used by the persistent I/O system. */ 0052 //@{ 0053 /** 0054 * Function used to write out object persistently. 0055 * @param os the persistent output stream written to. 0056 */ 0057 void persistentOutput(PersistentOStream & os) const; 0058 0059 /** 0060 * Function used to read in object persistently. 0061 * @param is the persistent input stream read from. 0062 * @param version the version number of the object when written. 0063 */ 0064 void persistentInput(PersistentIStream & is, int version); 0065 //@} 0066 0067 /** 0068 * The standard Init function used to initialize the interfaces. 0069 * Called exactly once for each class by the class description system 0070 * before the main function starts or 0071 * when this class is dynamically loaded. 0072 */ 0073 static void Init(); 0074 0075 protected: 0076 0077 /** @name Clone Methods. */ 0078 //@{ 0079 /** 0080 * Make a simple clone of this object. 0081 * @return a pointer to the new object. 0082 */ 0083 virtual IBPtr clone() const; 0084 0085 /** Make a clone of this object, possibly modifying the cloned object 0086 * to make it sane. 0087 * @return a pointer to the new object. 0088 */ 0089 virtual IBPtr fullclone() const; 0090 //@} 0091 0092 protected: 0093 0094 /** @name Standard Interfaced functions. */ 0095 //@{ 0096 /** 0097 * Initialize this object after the setup phase before saving an 0098 * EventGenerator to disk. 0099 * @throws InitException if object could not be initialized properly. 0100 */ 0101 virtual void doinit(); 0102 //@} 0103 0104 private: 0105 0106 /** 0107 * The assignment operator is private and must never be called. 0108 * In fact, it should not even be implemented. 0109 */ 0110 StoFFFFDecayer & operator=(const StoFFFFDecayer &) = delete; 0111 0112 private: 0113 0114 /** 0115 * Signs for NO 0116 */ 0117 vector<double> sign_; 0118 0119 /** 0120 * Potential vertices for the first step 0121 */ 0122 //@{ 0123 /** 0124 * VVS Vertex 0125 */ 0126 vector<AbstractVVSVertexPtr> firstVVS_; 0127 0128 /** 0129 * VSS Vertex 0130 */ 0131 vector<AbstractVSSVertexPtr> firstVSS_; 0132 0133 /** 0134 * SSS Vertex 0135 */ 0136 vector<AbstractSSSVertexPtr> firstSSS_; 0137 0138 /** 0139 * FFS Vertex 0140 */ 0141 vector<AbstractFFSVertexPtr> firstFFS_; 0142 //@} 0143 0144 /** 0145 * Potential vertices for the second step 0146 */ 0147 //@{ 0148 /** 0149 * FFV Vertex 0150 */ 0151 vector<AbstractFFVVertexPtr> secondFFV_; 0152 0153 /** 0154 * FFS Vertex 0155 */ 0156 vector<AbstractFFSVertexPtr> secondFFS_; 0157 //@} 0158 0159 /** 0160 * Potential vertices for the third step 0161 */ 0162 //@{ 0163 /** 0164 * FFV Vertex 0165 */ 0166 vector<AbstractFFVVertexPtr> thirdFFV_; 0167 0168 /** 0169 * FFS Vertex 0170 */ 0171 vector<AbstractFFSVertexPtr> thirdFFS_; 0172 //@} 0173 0174 /** 0175 * Spin density matrix 0176 */ 0177 mutable RhoDMatrix rho_; 0178 0179 /** 0180 * Scalar wavefunction 0181 */ 0182 mutable ScalarWaveFunction swave_; 0183 0184 /** 0185 * Spinors for outgoing particles 0186 */ 0187 mutable pair<vector<SpinorWaveFunction>,vector<SpinorBarWaveFunction> > outwave_[4]; 0188 0189 }; 0190 0191 } 0192 0193 #endif /* HERWIG_StoFFFFDecayer_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|