|
|
|||
File indexing completed on 2026-08-06 09:24:20
0001 // -*- C++ -*- 0002 // 0003 // UEDBase.h is a part of Herwig - A multi-purpose Monte Carlo event generator 0004 // Copyright (C) 2002-2019 The Herwig Collaboration 0005 // 0006 // Herwig is licenced under version 3 of the GPL, see COPYING for details. 0007 // Please respect the MCnet academic guidelines, see GUIDELINES for details. 0008 // 0009 #ifndef HERWIG_UEDBase_H 0010 #define HERWIG_UEDBase_H 0011 // 0012 // This is the declaration of the UEDBase class. 0013 // 0014 0015 #include "Herwig/Models/General/BSMModel.h" 0016 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" 0017 #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" 0018 #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" 0019 #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h" 0020 0021 #include "UEDBase.fh" 0022 0023 namespace Herwig { 0024 using namespace ThePEG; 0025 0026 /** 0027 * This class serves as a base class for all UED models. It stores the 0028 * values of the inverse radius and the product \f$\Lambda R \f$ and has functions 0029 * to calculate the radiative corrections to the nth level KK excitations. 0030 * 0031 * To use this class for n > 1 simply inherit off it, calculate the necessary masses 0032 * using the provided functions for the new excitations and add the 0033 * appropriate vertices. 0034 * 0035 * @see \ref UEDBaseInterfaces "The interfaces" 0036 * defined for UEDBase. 0037 */ 0038 class UEDBase: public BSMModel { 0039 0040 public: 0041 0042 /** Typedef for ID-Mass pair. */ 0043 typedef pair<long, Energy> IDMassPair; 0044 0045 /** Typedef for unsigned int/double map to store Weinburg angles.*/ 0046 typedef map<unsigned int, double> WAMap; 0047 0048 public: 0049 0050 /** 0051 * The default constructor. 0052 */ 0053 UEDBase(); 0054 0055 /** @name Functions used by the persistent I/O system. */ 0056 //@{ 0057 /** 0058 * Function used to write out object persistently. 0059 * @param os the persistent output stream written to. 0060 */ 0061 void persistentOutput(PersistentOStream & os) const; 0062 0063 /** 0064 * Function used to read in object persistently. 0065 * @param is the persistent input stream read from. 0066 * @param version the version number of the object when written. 0067 */ 0068 void persistentInput(PersistentIStream & is, int version); 0069 //@} 0070 0071 /** 0072 * The standard Init function used to initialize the interfaces. 0073 * Called exactly once for each class by the class description system 0074 * before the main function starts or 0075 * when this class is dynamically loaded. 0076 */ 0077 static void Init(); 0078 0079 public: 0080 0081 /** @name Public Access Functions.*/ 0082 //@{ 0083 /** 0084 * Return the compactification radius 0085 */ 0086 InvEnergy compactRadius() const { 0087 return 1./theInvRadius; 0088 } 0089 0090 /** 0091 * Return the Weinburg mixing angle for any level. 0092 */ 0093 double sinThetaN(const unsigned int n) const; 0094 0095 /** 0096 * Return the Weinburg mixing angle for \f$n = 1\f$ 0097 */ 0098 double sinThetaOne() const { 0099 return theSinThetaOne; 0100 } 0101 //@} 0102 0103 protected: 0104 0105 /** 0106 * Add a new ID,mass pair to the mass storage 0107 * @param elem The element to add in to storage 0108 */ 0109 void addMassElement(IDMassPair elem) { 0110 theMasses.push_back(elem); 0111 } 0112 0113 /** 0114 * Add a new mixing angle to the storage 0115 * @param n The level 0116 * @param val The value 0117 */ 0118 void addMixingAngle(const unsigned int n, 0119 const double val) { 0120 theMixingAngles.insert(make_pair(n, val)); 0121 } 0122 0123 private: 0124 0125 /** @name Utility Functions for calculating masses. */ 0126 //@{ 0127 /** 0128 * Calculate the radiative corrections to the masses of the KK excitations 0129 * @param n The KK-level for which to calculate the masses. 0130 */ 0131 void calculateKKMasses(const unsigned int n); 0132 0133 /** 0134 * Calculate the radiative corrections to the spin-0 and spin-1 0135 * masses of the KK excitations 0136 * @param n The KK-level for which to calculate the masses. 0137 */ 0138 void bosonMasses(const unsigned int n); 0139 0140 /** 0141 * Calculate the radiative corrections to the spin-1/2 0142 * masses of the KK excitations. 0143 * @param n The KK-level for which to calculate the masses. 0144 */ 0145 void fermionMasses(const unsigned int n); 0146 0147 /** 0148 * Reset the mass of the ParticleData object 0149 *@param id The id of the particles mass to reset 0150 *@param value The new mass 0151 */ 0152 void resetMass(long id, Energy value); 0153 0154 /** 0155 * Calculate the Weinburg Mixing angle for the appropriate level. 0156 * @param n The KK-level for which to calculate the mixing angle. 0157 */ 0158 double calculateMixingAngle(const unsigned int n); 0159 //@} 0160 0161 /** 0162 * Write out a spectrum file ordered in mass (name can be set by an interface). 0163 */ 0164 void writeSpectrum(); 0165 0166 /** 0167 * A predicate for sorting the list of masses. 0168 */ 0169 static bool lowerMass(const pair<long, Energy> & p1, 0170 const pair<long, Energy> & p2) { 0171 return p1.second < p2.second; 0172 } 0173 0174 protected: 0175 0176 /** @name Clone Methods. */ 0177 //@{ 0178 /** 0179 * Make a simple clone of this object. 0180 * @return a pointer to the new object. 0181 */ 0182 virtual IBPtr clone() const {return new_ptr(*this);} 0183 0184 /** Make a clone of this object, possibly modifying the cloned object 0185 * to make it sane. 0186 * @return a pointer to the new object. 0187 */ 0188 virtual IBPtr fullclone() const {return new_ptr(*this);} 0189 //@} 0190 0191 0192 protected: 0193 0194 /** @name Standard Interfaced functions. */ 0195 //@{ 0196 virtual void doinit(); 0197 //@} 0198 0199 private: 0200 0201 /** 0202 * The assignment operator is private and must never be called. 0203 * In fact, it should not even be implemented. 0204 */ 0205 UEDBase & operator=(const UEDBase &) = delete; 0206 0207 private: 0208 0209 /** 0210 * Whether to calculate the radiative corrections to the KK masses 0211 */ 0212 bool theRadCorr; 0213 0214 /** 0215 * Store the radius of the compactified dimension. 0216 */ 0217 Energy theInvRadius; 0218 0219 /** 0220 * The value of \f$\Lambda R \f$. 0221 */ 0222 double theLambdaR; 0223 0224 /** 0225 * The boundary mass term for the Higgs. 0226 */ 0227 Energy theMbarH; 0228 0229 /** 0230 * The values of \f$\sin\theta_N\f$ 0231 */ 0232 WAMap theMixingAngles; 0233 0234 /** 0235 * Store \f$\sin\theta_1\f$ for faster access 0236 */ 0237 double theSinThetaOne; 0238 0239 /** 0240 * Store the masses of the new particles 0241 */ 0242 vector<IDMassPair> theMasses; 0243 0244 /** 0245 * The value of the vacuum expectation value of the higgs field. 0246 */ 0247 Energy theVeV; 0248 0249 /** 0250 * Include SM masses in calculation of KK masses 0251 */ 0252 bool includeSMMass_; 0253 0254 /** 0255 * Use fixed couplings for the mass calculation 0256 */ 0257 bool fixedCouplings_; 0258 0259 /** 0260 * Include gauge boson mixing 0261 */ 0262 bool includeGaugeMixing_; 0263 0264 /** @name The level 1 UED vertices. */ 0265 //@{ 0266 /** 0267 * The \f$\bar{f}^{(1)}f^{(1)}Z^{(0)}\f$ 0268 */ 0269 AbstractFFVVertexPtr theF1F1Z0Vertex; 0270 0271 /** 0272 * The \f$\bar{f}^{(1)}f^{(1)}g^{(0)}\f$ 0273 */ 0274 AbstractFFVVertexPtr theF1F1G0Vertex; 0275 0276 /** 0277 * The \f$\bar{f}^{(1)}f^{(0)}g^{(1)}\f$ 0278 */ 0279 AbstractFFVVertexPtr theF1F0G1Vertex; 0280 0281 /** 0282 * The \f$g^{(1)}g^{(1)}g\f$ vertex 0283 */ 0284 AbstractVVVVertexPtr theG1G1G0Vertex; 0285 0286 /** 0287 * The \f$g\,g\,g^{(1)},g^{(1)}\f$ vertex 0288 */ 0289 AbstractVVVVVertexPtr theG0G0G1G1Vertex; 0290 0291 /** 0292 * The \f$\bar{f}^{(1)}f^{(1)}\gamma\f$ 0293 */ 0294 AbstractFFVVertexPtr theF1F1P0Vertex; 0295 0296 /** 0297 * The \f$\bar{f}^{(1)}f^{(1)}W\f$ 0298 */ 0299 AbstractFFVVertexPtr theF1F1W0Vertex; 0300 0301 /** 0302 * The \f$\bar{f}^{(1)}f^{(0)}W^{(1)}\f$ 0303 */ 0304 AbstractFFVVertexPtr theF1F0W1Vertex; 0305 0306 /** 0307 * The \f$\bar{f}^{(1)}f^{(0)}H^{(1)}\f$ 0308 */ 0309 AbstractFFSVertexPtr theF1F0H1Vertex; 0310 0311 /** 0312 * The \f$ A^\mu_{(0)}H^+_{(1)}H-_{(1)}\f$ 0313 */ 0314 AbstractVSSVertexPtr theP0H1H1Vertex; 0315 0316 /** 0317 * The \f$ Z^\mu_{(0)}H^+_{(1)}H-_{(1)}\f$ 0318 */ 0319 AbstractVSSVertexPtr theZ0H1H1Vertex; 0320 0321 /** 0322 * The \f$ W^\pm_{\mu(0)}A_{(1)}H^\mp_{(1)}\f$ 0323 */ 0324 AbstractVSSVertexPtr theW0A1H1Vertex; 0325 0326 /** 0327 * The \f$ Z^\mu_{\mu(0)}A_{(1)}h_{(1)}\f$ 0328 */ 0329 AbstractVSSVertexPtr theZ0A1h1Vertex; 0330 0331 /** 0332 * The \f$W^{(1)}Z^{(1)}W_{(0)}\f$ vertex 0333 */ 0334 AbstractVVVVertexPtr theW0W1W1Vertex; 0335 //@} 0336 }; 0337 0338 0339 } 0340 0341 #endif /* HERWIG_UEDBase_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|