herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
UEDBase.h
1 // -*- C++ -*-
2 //
3 // UEDBase.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4 // Copyright (C) 2002-2019 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 
205  UEDBase & operator=(const UEDBase &) = delete;
206 
207 private:
208 
213 
217  Energy theInvRadius;
218 
222  double theLambdaR;
223 
227  Energy theMbarH;
228 
233 
238 
242  vector<IDMassPair> theMasses;
243 
247  Energy theVeV;
248 
253 
258 
263 
269  AbstractFFVVertexPtr theF1F1Z0Vertex;
270 
274  AbstractFFVVertexPtr theF1F1G0Vertex;
275 
279  AbstractFFVVertexPtr theF1F0G1Vertex;
280 
284  AbstractVVVVertexPtr theG1G1G0Vertex;
285 
289  AbstractVVVVVertexPtr theG0G0G1G1Vertex;
290 
294  AbstractFFVVertexPtr theF1F1P0Vertex;
295 
299  AbstractFFVVertexPtr theF1F1W0Vertex;
300 
304  AbstractFFVVertexPtr theF1F0W1Vertex;
305 
309  AbstractFFSVertexPtr theF1F0H1Vertex;
310 
314  AbstractVSSVertexPtr theP0H1H1Vertex;
315 
319  AbstractVSSVertexPtr theZ0H1H1Vertex;
320 
324  AbstractVSSVertexPtr theW0A1H1Vertex;
325 
329  AbstractVSSVertexPtr theZ0A1h1Vertex;
330 
334  AbstractVVVVertexPtr theW0W1W1Vertex;
336 };
337 
338 
339 }
340 
341 #endif /* HERWIG_UEDBase_H */
AbstractFFSVertexPtr theF1F0H1Vertex
The .
Definition: UEDBase.h:309
AbstractFFVVertexPtr theF1F1Z0Vertex
The .
Definition: UEDBase.h:269
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:274
AbstractVSSVertexPtr theZ0A1h1Vertex
The .
Definition: UEDBase.h:329
AbstractVSSVertexPtr theZ0H1H1Vertex
The .
Definition: UEDBase.h:319
AbstractFFVVertexPtr theF1F1P0Vertex
The .
Definition: UEDBase.h:294
bool theRadCorr
Whether to calculate the radiative corrections to the KK masses.
Definition: UEDBase.h:212
AbstractFFVVertexPtr theF1F0W1Vertex
The .
Definition: UEDBase.h:304
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
AbstractVVVVertexPtr theG1G1G0Vertex
The vertex.
Definition: UEDBase.h:284
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:242
Energy theMbarH
The boundary mass term for the Higgs.
Definition: UEDBase.h:227
Energy theVeV
The value of the vacuum expectation value of the higgs field.
Definition: UEDBase.h:247
bool fixedCouplings_
Use fixed couplings for the mass calculation.
Definition: UEDBase.h:257
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:217
AbstractFFVVertexPtr theF1F0G1Vertex
The .
Definition: UEDBase.h:279
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:289
AbstractVSSVertexPtr theP0H1H1Vertex
The .
Definition: UEDBase.h:314
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:334
double theLambdaR
The value of .
Definition: UEDBase.h:222
bool includeGaugeMixing_
Include gauge boson mixing.
Definition: UEDBase.h:262
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:299
AbstractVSSVertexPtr theW0A1H1Vertex
The .
Definition: UEDBase.h:324
-*- C++ -*-
WAMap theMixingAngles
The values of .
Definition: UEDBase.h:232
bool includeSMMass_
Include SM masses in calculation of KK masses.
Definition: UEDBase.h:252
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:237