|
|
|||
File indexing completed on 2026-08-06 09:24:07
0001 // -*- C++ -*- 0002 #ifndef HERWIG_MEChargedCurrentDIS_H 0003 #define HERWIG_MEChargedCurrentDIS_H 0004 // 0005 // This is the declaration of the MEChargedCurrentDIS class. 0006 // 0007 0008 #include "DISBase.h" 0009 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh" 0010 #include "Herwig/MatrixElement/ProductionMatrixElement.h" 0011 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" 0012 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" 0013 0014 namespace Herwig { 0015 0016 using namespace ThePEG; 0017 0018 /** 0019 * The MEChargedCurrentDIS class provides the matrix elements for 0020 * charged current DIS. 0021 * 0022 * By default both the incoming and outgong quarks are assumed to be massless 0023 * although the mass of the outgoing quark can be included if required. This 0024 * option should be used if top production is included. 0025 * 0026 * @see \ref MEChargedCurrentDISInterfaces "The interfaces" 0027 * defined for MEChargedCurrentDIS. 0028 */ 0029 class MEChargedCurrentDIS: public DISBase { 0030 0031 public: 0032 0033 /** 0034 * The default constructor. 0035 */ 0036 MEChargedCurrentDIS(); 0037 0038 /** @name Virtual functions required by the MEBase class. */ 0039 //@{ 0040 /** 0041 * Return the order in \f$\alpha_S\f$ in which this matrix 0042 * element is given. 0043 */ 0044 virtual unsigned int orderInAlphaS() const; 0045 0046 /** 0047 * Return the order in \f$\alpha_{EW}\f$ in which this matrix 0048 * element is given. 0049 */ 0050 virtual unsigned int orderInAlphaEW() const; 0051 0052 /** 0053 * The matrix element for the kinematical configuration 0054 * previously provided by the last call to setKinematics(), suitably 0055 * scaled by sHat() to give a dimension-less number. 0056 * @return the matrix element scaled with sHat() to give a 0057 * dimensionless number. 0058 */ 0059 virtual double me2() const; 0060 0061 /** 0062 * Add all possible diagrams with the add() function. 0063 */ 0064 virtual void getDiagrams() const; 0065 0066 /** 0067 * Get diagram selector. With the information previously supplied with the 0068 * setKinematics method, a derived class may optionally 0069 * override this method to weight the given diagrams with their 0070 * (although certainly not physical) relative probabilities. 0071 * @param dv the diagrams to be weighted. 0072 * @return a Selector relating the given diagrams to their weights. 0073 */ 0074 virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; 0075 0076 /** 0077 * Return a Selector with possible colour geometries for the selected 0078 * diagram weighted by their relative probabilities. 0079 * @param diag the diagram chosen. 0080 * @return the possible colour geometries weighted by their 0081 * relative probabilities. 0082 */ 0083 virtual Selector<const ColourLines *> 0084 colourGeometries(tcDiagPtr diag) const; 0085 0086 /** 0087 * Construct the vertex of spin correlations. 0088 */ 0089 virtual void constructVertex(tSubProPtr); 0090 //@} 0091 0092 0093 public: 0094 0095 /** @name Functions used by the persistent I/O system. */ 0096 //@{ 0097 /** 0098 * Function used to write out object persistently. 0099 * @param os the persistent output stream written to. 0100 */ 0101 void persistentOutput(PersistentOStream & os) const; 0102 0103 /** 0104 * Function used to read in object persistently. 0105 * @param is the persistent input stream read from. 0106 * @param version the version number of the object when written. 0107 */ 0108 void persistentInput(PersistentIStream & is, int version); 0109 //@} 0110 0111 /** 0112 * The standard Init function used to initialize the interfaces. 0113 * Called exactly once for each class by the class description system 0114 * before the main function starts or 0115 * when this class is dynamically loaded. 0116 */ 0117 static void Init(); 0118 0119 protected: 0120 0121 /** 0122 * Matrix element for \f$\ell q\to \gamma/Z \to \ell q\f$. 0123 * @param f1 Fermion on lepton line 0124 * @param a1 Anti-fermion on lepton line 0125 * @param f2 Fermion on quark line 0126 * @param a2 Anti-fermion on quark line 0127 * @param lorder The order of particles on the lepton line 0128 * @param qorder The order of particles on the quark line 0129 * @param me Whether or not to calculate the matrix element for spin correlations 0130 */ 0131 double helicityME(vector<SpinorWaveFunction> & f1 , 0132 vector<SpinorWaveFunction> & f2, 0133 vector<SpinorBarWaveFunction> & a1 , 0134 vector<SpinorBarWaveFunction> & a2, 0135 bool lorder, bool qorder, 0136 bool me) const; 0137 0138 /** 0139 * Calculate the coefficient A for the correlations in the hard 0140 * radiation 0141 */ 0142 virtual double A(tcPDPtr lin, tcPDPtr lout, tcPDPtr qin, tcPDPtr qout, 0143 Energy2 scale) const; 0144 0145 protected: 0146 0147 /** @name Clone Methods. */ 0148 //@{ 0149 /** 0150 * Make a simple clone of this object. 0151 * @return a pointer to the new object. 0152 */ 0153 virtual IBPtr clone() const {return new_ptr(*this);} 0154 0155 /** Make a clone of this object, possibly modifying the cloned object 0156 * to make it sane. 0157 * @return a pointer to the new object. 0158 */ 0159 virtual IBPtr fullclone() const {return new_ptr(*this);} 0160 //@} 0161 0162 protected: 0163 0164 /** @name Standard Interfaced functions. */ 0165 //@{ 0166 /** 0167 * Initialize this object after the setup phase before saving an 0168 * EventGenerator to disk. 0169 * @throws InitException if object could not be initialized properly. 0170 */ 0171 virtual void doinit(); 0172 //@} 0173 0174 private: 0175 0176 /** 0177 * The assignment operator is private and must never be called. 0178 * In fact, it should not even be implemented. 0179 */ 0180 MEChargedCurrentDIS & operator=(const MEChargedCurrentDIS &) = delete; 0181 0182 private: 0183 0184 /** 0185 * Pointer to the vertex for the helicity calculations 0186 */ 0187 AbstractFFVVertexPtr _theFFWVertex; 0188 0189 /** 0190 * The allowed flavours of the incoming quarks 0191 */ 0192 unsigned int _maxflavour; 0193 0194 /** 0195 * Option for the mass of the outgoing quarks 0196 */ 0197 unsigned int _massopt; 0198 0199 /** 0200 * Matrix element for spin correlations 0201 */ 0202 ProductionMatrixElement _me; 0203 0204 /** 0205 * Pointers to the intermediates resonances 0206 */ 0207 //@{ 0208 /** 0209 * Pointer to the \f$W^+\f$ 0210 */ 0211 tcPDPtr _wp; 0212 0213 /** 0214 * Pointer to the \f$W^-\f$ 0215 */ 0216 tcPDPtr _wm; 0217 //@} 0218 }; 0219 0220 } 0221 0222 #endif /* HERWIG_MEChargedCurrentDIS_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|