|
|
|||
File indexing completed on 2026-08-06 09:24:17
0001 // -*- C++ -*- 0002 #ifndef HERWIG_VVSLoopVertex_H 0003 #define HERWIG_VVSLoopVertex_H 0004 // // This is the declaration of the VVSLoopVertex class. 0005 // 0006 0007 #include "ThePEG/Helicity/Vertex/Scalar/GeneralVVSVertex.h" 0008 #include "VVSLoopVertex.fh" 0009 0010 namespace Herwig { 0011 using namespace ThePEG; 0012 0013 /** 0014 * The <code>VVSLoopVertex</code> is designed to 0015 * calculate the coefficents for the terms in the 0016 * Passarino-Veltman tensor reduction scheme. A vertex 0017 * class should inherit from this and implement it's own 0018 * setCoupling member from which the VVSLoopVertex 0019 * setCoupling member is called. 0020 */ 0021 class VVSLoopVertex: public Helicity::GeneralVVSVertex { 0022 0023 public: 0024 0025 /** 0026 * The default constructor. 0027 */ 0028 VVSLoopVertex() : masses(0), type(0), couplings(0), Npart_(0), loopToolsInit_(false) { 0029 kinematics(true); 0030 } 0031 0032 /** 0033 * Calculate couplings 0034 *@param q2 Scale at which to evaluate coupling 0035 *@param part1 ParticleData pointer to first particle 0036 *@param part2 ParticleData pointer to first particle 0037 *@param part3 ParticleData pointer to first particle 0038 */ 0039 virtual void setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2, 0040 tcPDPtr part3); 0041 0042 public: 0043 0044 /** @name Functions used by the persistent I/O system. */ 0045 //@{ 0046 /** 0047 * Function used to write out object persistently. 0048 * @param os the persistent output stream written to. 0049 */ 0050 void persistentOutput(PersistentOStream & os) const; 0051 0052 /** 0053 * Function used to read in object persistently. 0054 * @param is the persistent input stream read from. 0055 * @param version the version number of the object when written. 0056 */ 0057 void persistentInput(PersistentIStream & is, int version); 0058 //@} 0059 0060 /** 0061 * The standard Init function used to initialize the interfaces. 0062 * Called exactly once for each class by the class description system 0063 * before the main function starts or 0064 * when this class is dynamically loaded. 0065 */ 0066 static void Init(); 0067 0068 protected: 0069 0070 /** @name Clone Methods. */ 0071 //@{ 0072 /** 0073 * Make a simple clone of this object. 0074 * @return a pointer to the new object. 0075 */ 0076 virtual IBPtr clone() const; 0077 0078 /** Make a clone of this object, possibly modifying the cloned object 0079 * to make it sane. 0080 * @return a pointer to the new object. 0081 */ 0082 virtual IBPtr fullclone() const; 0083 //@} 0084 0085 protected: 0086 0087 /** @name Standard Interfaced functions. */ 0088 //@{ 0089 /** 0090 * Finalize this object. Called in the run phase just after a 0091 * run has ended. Used eg. to write out statistics. 0092 */ 0093 virtual void dofinish(); 0094 //@} 0095 0096 protected: 0097 0098 /** 0099 * Vector of loop masses 0100 */ 0101 vector<Energy> masses; 0102 0103 /** 0104 * Vector of loop types 0105 */ 0106 vector<PDT::Spin> type; 0107 0108 /** 0109 * The left and right couplings for a fermion loop 0110 */ 0111 vector<pair<Complex, Complex> > couplings; 0112 0113 /** 0114 * Set the number of particles in the loop 0115 */ 0116 void setNParticles(unsigned int npart) { Npart_ = npart; } 0117 0118 /** 0119 * Is loopTools initialized 0120 */ 0121 bool loopToolsInitialized() { return loopToolsInit_; } 0122 0123 private: 0124 0125 /** 0126 * The assignment operator is private and must never be called. 0127 * In fact, it should not even be implemented. 0128 */ 0129 VVSLoopVertex & operator=(const VVSLoopVertex &) = delete; 0130 0131 private: 0132 0133 /** 0134 * The number of particles in the loop 0135 */ 0136 unsigned int Npart_; 0137 0138 /** 0139 * Loop tools initialised ? 0140 */ 0141 bool loopToolsInit_; 0142 0143 }; 0144 0145 } 0146 0147 #endif /* HERWIG_VVSLoopVertex_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|