herwig is hosted by Hepforge, IPPP Durham
Herwig  7.1.5
UEDBase.h
1 // -*- C++ -*-
2 //
3 // UEDBase.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4 // Copyright (C) 2002-2017 The Herwig Collaboration
5 //
6 // Herwig is licenced under version 3 of the GPL, see COPYING for details.
7 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
8 //
9 #ifndef HERWIG_UEDBase_H
10 #define HERWIG_UEDBase_H
11 //
12 // This is the declaration of the UEDBase class.
13 //
14 
15 #include "Herwig/Models/General/BSMModel.h"
16 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
17 #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h"
18 #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
19 #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h"
20 
21 #include "UEDBase.fh"
22 
23 namespace Herwig {
24 using namespace ThePEG;
25 
38 class UEDBase: public BSMModel {
39 
40 public:
41 
43  typedef pair<long, Energy> IDMassPair;
44 
46  typedef map<unsigned int, double> WAMap;
47 
48 public:
49 
53  UEDBase();
54 
61  void persistentOutput(PersistentOStream & os) const;
62 
68  void persistentInput(PersistentIStream & is, int version);
70 
77  static void Init();
78 
79 public:
80 
86  InvEnergy compactRadius() const {
87  return 1./theInvRadius;
88  }
89 
93  double sinThetaN(const unsigned int n) const;
94 
98  double sinThetaOne() const {
99  return theSinThetaOne;
100  }
102 
103 protected:
104 
109  void addMassElement(IDMassPair elem) {
110  theMasses.push_back(elem);
111  }
112 
118  void addMixingAngle(const unsigned int n,
119  const double val) {
120  theMixingAngles.insert(make_pair(n, val));
121  }
122 
123 private:
124 
131  void calculateKKMasses(const unsigned int n);
132 
138  void bosonMasses(const unsigned int n);
139 
145  void fermionMasses(const unsigned int n);
146 
152  void resetMass(long id, Energy value);
153 
158  double calculateMixingAngle(const unsigned int n);
160 
164  void writeSpectrum();
165 
169  static bool lowerMass(const pair<long, Energy> & p1,
170  const pair<long, Energy> & p2) {
171  return p1.second < p2.second;
172  }
173 
174 protected:
175 
182  virtual IBPtr clone() const {return new_ptr(*this);}
183 
188  virtual IBPtr fullclone() const {return new_ptr(*this);}
190 
191 
192 protected:
193 
196  virtual void doinit();
198 
199 private:
200 
206 
211  UEDBase & operator=(const UEDBase &) = delete;
212 
213 private:
214 
219 
223  Energy theInvRadius;
224 
228  double theLambdaR;
229 
233  Energy theMbarH;
234 
239 
244 
248  vector<IDMassPair> theMasses;
249 
253  Energy theVeV;
254 
259 
264 
269 
275  AbstractFFVVertexPtr theF1F1Z0Vertex;
276 
280  AbstractFFVVertexPtr theF1F1G0Vertex;
281 
285  AbstractFFVVertexPtr theF1F0G1Vertex;
286 
290  AbstractVVVVertexPtr theG1G1G0Vertex;
291 
295  AbstractVVVVVertexPtr theG0G0G1G1Vertex;
296 
300  AbstractFFVVertexPtr theF1F1P0Vertex;
301 
305  AbstractFFVVertexPtr theF1F1W0Vertex;
306 
310  AbstractFFVVertexPtr theF1F0W1Vertex;
311 
315  AbstractFFSVertexPtr theF1F0H1Vertex;
316 
320  AbstractVSSVertexPtr theP0H1H1Vertex;
321 
325  AbstractVSSVertexPtr theZ0H1H1Vertex;
326 
330  AbstractVSSVertexPtr theW0A1H1Vertex;
331 
335  AbstractVSSVertexPtr theZ0A1h1Vertex;
336 
340  AbstractVVVVertexPtr theW0W1W1Vertex;
342 };
343 
344 
345 }
346 
347 #include "ThePEG/Utilities/ClassTraits.h"
348 
349 namespace ThePEG {
350 
355 template <>
356 struct BaseClassTrait<Herwig::UEDBase,1> {
358  typedef Herwig::BSMModel NthBase;
359 };
360 
363 template <>
364 struct ClassTraits<Herwig::UEDBase>
365  : public ClassTraitsBase<Herwig::UEDBase> {
367  static string className() { return "Herwig::UEDBase"; }
375  static string library() { return "HwUED.so"; }
376 };
377 
380 }
381 
382 #endif /* HERWIG_UEDBase_H */
AbstractFFSVertexPtr theF1F0H1Vertex
The .
Definition: UEDBase.h:315
AbstractFFVVertexPtr theF1F1Z0Vertex
The .
Definition: UEDBase.h:275
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: UEDBase.h:188
AbstractFFVVertexPtr theF1F1G0Vertex
The .
Definition: UEDBase.h:280
AbstractVSSVertexPtr theZ0A1h1Vertex
The .
Definition: UEDBase.h:335
AbstractVSSVertexPtr theZ0H1H1Vertex
The .
Definition: UEDBase.h:325
AbstractFFVVertexPtr theF1F1P0Vertex
The .
Definition: UEDBase.h:300
bool theRadCorr
Whether to calculate the radiative corrections to the KK masses.
Definition: UEDBase.h:218
AbstractFFVVertexPtr theF1F0W1Vertex
The .
Definition: UEDBase.h:310
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
AbstractVVVVertexPtr theG1G1G0Vertex
The vertex.
Definition: UEDBase.h:290
double sinThetaOne() const
Return the Weinburg mixing angle for .
Definition: UEDBase.h:98
vector< IDMassPair > theMasses
Store the masses of the new particles.
Definition: UEDBase.h:248
Energy theMbarH
The boundary mass term for the Higgs.
Definition: UEDBase.h:233
Energy theVeV
The value of the vacuum expectation value of the higgs field.
Definition: UEDBase.h:253
bool fixedCouplings_
Use fixed couplings for the mass calculation.
Definition: UEDBase.h:263
This class serves as a base class for all UED models.
Definition: UEDBase.h:38
Energy theInvRadius
Store the radius of the compactified dimension.
Definition: UEDBase.h:223
AbstractFFVVertexPtr theF1F0G1Vertex
The .
Definition: UEDBase.h:285
static ClassDescription< UEDBase > initUEDBase
The static object used to initialize the description of this class.
Definition: UEDBase.h:205
map< unsigned int, double > WAMap
Typedef for unsigned int/double map to store Weinburg angles.
Definition: UEDBase.h:46
pair< long, Energy > IDMassPair
Typedef for ID-Mass pair.
Definition: UEDBase.h:43
Here is the documentation of the BSMModel class.
Definition: BSMModel.h:21
AbstractVVVVVertexPtr theG0G0G1G1Vertex
The vertex.
Definition: UEDBase.h:295
AbstractVSSVertexPtr theP0H1H1Vertex
The .
Definition: UEDBase.h:320
void addMixingAngle(const unsigned int n, const double val)
Add a new mixing angle to the storage.
Definition: UEDBase.h:118
AbstractVVVVertexPtr theW0W1W1Vertex
The vertex.
Definition: UEDBase.h:340
double theLambdaR
The value of .
Definition: UEDBase.h:228
bool includeGaugeMixing_
Include gauge boson mixing.
Definition: UEDBase.h:268
static bool lowerMass(const pair< long, Energy > &p1, const pair< long, Energy > &p2)
A predicate for sorting the list of masses.
Definition: UEDBase.h:169
void addMassElement(IDMassPair elem)
Add a new ID,mass pair to the mass storage.
Definition: UEDBase.h:109
AbstractFFVVertexPtr theF1F1W0Vertex
The .
Definition: UEDBase.h:305
AbstractVSSVertexPtr theW0A1H1Vertex
The .
Definition: UEDBase.h:330
-*- C++ -*-
WAMap theMixingAngles
The values of .
Definition: UEDBase.h:238
bool includeSMMass_
Include SM masses in calculation of KK masses.
Definition: UEDBase.h:258
InvEnergy compactRadius() const
Return the compactification radius.
Definition: UEDBase.h:86
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: UEDBase.h:182
double theSinThetaOne
Store for faster access.
Definition: UEDBase.h:243