herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
SusyBase.h
1 // -*- C++ -*-
2 //
3 // SusyBase.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_SusyBase_H
10 #define HERWIG_SusyBase_H
11 //
12 // This is the declaration of the SusyBase class.
13 //
14 
15 #include "Herwig/Models/General/BSMModel.h"
16 #include "MixingMatrix.h"
17 #include "ThePEG/Utilities/CFileLineReader.h"
18 #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h"
19 #include "ThePEG/Helicity/Vertex/AbstractSSSVertex.h"
20 #include "ThePEG/Helicity/Vertex/AbstractVVSSVertex.h"
21 #include "ThePEG/Helicity/Vertex/AbstractRFSVertex.h"
22 #include "ThePEG/Helicity/Vertex/AbstractRFVVertex.h"
23 #include "SusyBase.fh"
24 
25 namespace Herwig {
26 using namespace ThePEG;
27 
28  /*@name Some convenient typedefs. */
30 
33  typedef map<long, double> ParamMap;
34 
38  typedef map<long,string> StringMap;
40 
51 class SusyBase: public BSMModel {
52 
53 public:
54 
58  SusyBase();
59 
60 public:
61 
67  double tanBeta() const { return tanBeta_; }
68 
72  Energy muParameter() const { return mu_; }
73 
77  const MixingMatrixPtr & neutralinoMix() const {
78  return NMix_;
79  }
80 
84  const MixingMatrixPtr & charginoUMix() const {
85  return UMix_;
86  }
87 
91  const MixingMatrixPtr & charginoVMix() const {
92  return VMix_;
93  }
94 
98  const Complex & gluinoPhase() const {return gluinoPhase_;}
100 
104  bool majoranaNeutrinos() const {return majoranaNeutrinos_;}
105 
106 public:
107 
114  void persistentOutput(PersistentOStream & os) const;
115 
121  void persistentInput(PersistentIStream & is, int version);
123 
130  static void Init();
131 
132 public:
133 
141  const Energy & M1() const {return M1_;}
142 
146  const Energy & M2() const {return M2_;}
147 
151  const Energy & M3() const {return M3_;}
152 
156  const Energy2 & Mh12() const {return mH12_;}
157 
161  const Energy2 & Mh22() const {return mH22_;}
162 
166  const Energy & MeL() const {return meL_;}
167 
171  const Energy & MmuL() const {return mmuL_;}
172 
176  const Energy & MtauL() const {return mtauL_;}
177 
181  const Energy & MeR() const {return meR_;}
182 
186  const Energy & MmuR() const {return mmuR_;}
187 
191  const Energy & MtauR() const {return mtauR_;}
192 
196  const Energy & Mq1L() const {return mq1L_;}
197 
201  const Energy & Mq2L() const {return mq2L_;}
202 
206  const Energy & Mq3L() const {return mq3L_;}
207 
211  const Energy & MdR() const {return mdR_;}
212 
216  const Energy & MuR() const {return muR_;}
217 
221  const Energy & MsR() const {return msR_;}
222 
226  const Energy & McR() const {return mcR_;}
227 
231  const Energy & MbR() const {return mbR_;}
232 
236  const Energy & MtR() const {return mtR_;}
238 
242  const Energy & MPlanck() const {return MPlanck_;}
243 
244 protected:
245 
250  virtual void readSetup(istream & is);
251 
252 private:
253 
262  void readBlock(CFileLineReader & ifs,string name,string line,
263  bool stringBlock);
264 
271  const MixingVector readMatrix(CFileLineReader & ifs, unsigned int & row,
272  unsigned int & col);
273 
274 protected:
275 
279  virtual void createMixingMatrices();
280 
284  virtual void extractParameters(bool checkmodel=true);
285 
293  void createMixingMatrix(MixingMatrixPtr & matrix, string name,
294  const MixingVector & values,
295  MatrixSize size);
296 
300  void resetRepositoryMasses();
301 
306  virtual void adjustMixingMatrix(long id);
308 
316  const map<string,ParamMap> & parameters() const {
317  return parameters_;
318  }
319 
323  const map<string,StringMap> & info() const {
324  return info_;
325  }
326 
330  const map<string,pair<MatrixSize,MixingVector> > & mixings() const {
331  return mixings_;
332  }
334 
338  void neutralinoMix(MixingMatrixPtr nm) { NMix_ = nm; }
339 
343  void charginoUMix(MixingMatrixPtr um) { UMix_ = um; }
344 
348  void charginoVMix(MixingMatrixPtr vm) { VMix_ = vm; }
349 
354  double findValue(const map<string,ParamMap>::const_iterator pit,
355  int iloc, const string & block,
356  const string & name) {
357  ParamMap::const_iterator it = pit->second.find(iloc);
358  if(it!=pit->second.end()) {
359  return it->second;
360  }
361  else {
362  ostringstream message;
363  message << "SusyBase::findValue() Parameter " << name << " = " << iloc
364  << " not found in BLOCK " << block << "\n";
365  if(generator())
366  generator()->logWarning( Exception(message.str(), Exception::warning) );
367  else
368  cerr << message.str();
369  return 0.;
370  }
371  }
372 
373 protected:
374 
381  virtual IBPtr clone() const;
382 
387  virtual IBPtr fullclone() const;
389 
390 protected:
391 
399  virtual void doinit();
401 
402 private:
403 
408  SusyBase & operator=(const SusyBase &) = delete;
409 
410 private:
411 
415  bool readFile_;
416 
420  Energy MPlanck_;
421 
426 
431 
432  /*
433  * Storage of the parameters.
434  */
436 
439  map<string,ParamMap> parameters_;
440 
444  map<string,StringMap> info_;
445 
449  map<string,pair<MatrixSize, MixingVector> > mixings_;
450 
454  double tanBeta_;
455 
459  Energy mu_;
461 
469  Energy M1_;
470 
474  Energy M2_;
475 
479  Energy M3_;
480 
484  Energy2 mH12_;
485 
489  Energy2 mH22_;
490 
494  Energy meL_;
495 
499  Energy mmuL_;
500 
504  Energy mtauL_;
505 
509  Energy meR_;
510 
514  Energy mmuR_;
515 
519  Energy mtauR_;
520 
524  Energy mq1L_;
525 
529  Energy mq2L_;
530 
534  Energy mq3L_;
535 
539  Energy mdR_;
540 
544  Energy muR_;
545 
549  Energy msR_;
550 
554  Energy mcR_;
555 
559  Energy mbR_;
560 
564  Energy mtR_;
566 
571 
583  MixingMatrixPtr NMix_;
584 
588  MixingMatrixPtr UMix_;
589 
593  MixingMatrixPtr VMix_;
595 
601  AbstractVSSVertexPtr WSFSFVertex_;
602 
606  AbstractVVSSVertexPtr WWSFSFVertex_;
607 
611  AbstractFFSVertexPtr NFSFVertex_;
612 
616  AbstractFFSVertexPtr GFSFVertex_;
617 
621  AbstractSSSVertexPtr HSFSFVertex_;
622 
626  AbstractFFSVertexPtr CFSFVertex_;
627 
631  AbstractVSSVertexPtr GSFSFVertex_;
632 
636  AbstractVVSSVertexPtr GGSQSQVertex_;
637 
641  AbstractVVSSVertexPtr WGSQSQVertex_;
642 
646  AbstractFFVVertexPtr GSGSGVertex_;
647 
651  AbstractFFVVertexPtr GNGVertex_;
652 
656  AbstractFFVVertexPtr NNZVertex_;
657 
661  AbstractFFVVertexPtr NNPVertex_;
662 
666  AbstractFFVVertexPtr CCZVertex_;
667 
671  AbstractFFVVertexPtr CNWVertex_;
672 
676  AbstractFFSVertexPtr GOGOHVertex_;
677 
681  AbstractVSSVertexPtr WHHVertex_;
682 
686  AbstractFFSVertexPtr NCTVertex_;
687 
691  AbstractRFVVertexPtr GVNVVertex_;
692 
696  AbstractRFSVertexPtr GVNHVertex_;
697 
701  AbstractRFSVertexPtr GVFSVertex_;
703 
708 };
709 
710 }
711 
712 #endif /* HERWIG_SusyBase_H */
const Energy & MdR() const
Soft breaking mass for the down singlet.
Definition: SusyBase.h:211
bool majoranaNeutrinos_
Treatment of the neutrinos.
Definition: SusyBase.h:430
Energy mtauL_
Soft breaking mass for the third generation lepton doublet.
Definition: SusyBase.h:504
AbstractVVSSVertexPtr WWSFSFVertex_
Pointer to the gauge boson pair sfermion-sfermion vertex.
Definition: SusyBase.h:606
AbstractFFSVertexPtr NFSFVertex_
Pointer to the neutralino-fermion-sfermion vertex.
Definition: SusyBase.h:611
const Energy2 & Mh22() const
The soft breaking mass squared for .
Definition: SusyBase.h:161
Energy mtauR_
Soft breaking mass for the third generation lepton singlet.
Definition: SusyBase.h:519
AbstractFFVVertexPtr CCZVertex_
Pointer to the vertex chargino-chargino-Z vertex.
Definition: SusyBase.h:666
const Energy & MPlanck() const
Planck mass.
Definition: SusyBase.h:242
Energy mdR_
Soft breaking mass for the down singlet.
Definition: SusyBase.h:539
std::complex< double > Complex
map< string, ParamMap > parameters_
Parameter blocks.
Definition: SusyBase.h:439
map< long, double > ParamMap
Map to hold key, parameter pairs.
Definition: SusyBase.h:33
Energy MPlanck_
Planck mass needed in GMSB models.
Definition: SusyBase.h:420
AbstractVSSVertexPtr GSFSFVertex_
Pointer to the gluon-sfermion-sfermion vertex.
Definition: SusyBase.h:631
Energy muParameter() const
Value of parameter.
Definition: SusyBase.h:72
Energy M2_
The bilinear breaking mass term for the wino.
Definition: SusyBase.h:474
const Energy & MmuR() const
Soft breaking mass for the second generation lepton singlet.
Definition: SusyBase.h:186
const map< string, pair< MatrixSize, MixingVector > > & mixings() const
Mixing blocks.
Definition: SusyBase.h:330
AbstractRFSVertexPtr GVFSVertex_
Pointer to the vertex for gravitino-fermion sfermion.
Definition: SusyBase.h:701
AbstractVVSSVertexPtr WGSQSQVertex_
Pointer to the gauge boson-gluon-squark-squark vertex;.
Definition: SusyBase.h:641
Energy M3_
The bilinear breaking mass term for the gluinos.
Definition: SusyBase.h:479
Energy2 mH12_
The soft breaking mass squared for .
Definition: SusyBase.h:484
This class is designed to be a base class for SUSY models.
Definition: SusyBase.h:51
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
const Energy & M2() const
The bilinear breaking mass term for the wino.
Definition: SusyBase.h:146
Energy mmuL_
Soft breaking mass for the second generation lepton doublet.
Definition: SusyBase.h:499
const Energy & MsR() const
Soft breaking mass for the strange singlet.
Definition: SusyBase.h:221
Energy mq2L_
Soft breaking mass for the second generation quark doublet.
Definition: SusyBase.h:529
AbstractSSSVertexPtr HSFSFVertex_
Pointer to the Higgs-sfermion-sfermion vertex.
Definition: SusyBase.h:621
Energy mcR_
Soft breaking mass for the charm singlet.
Definition: SusyBase.h:554
map< string, StringMap > info_
Info blocks.
Definition: SusyBase.h:444
MixingMatrixPtr VMix_
The mixing matrix for the charginos.
Definition: SusyBase.h:593
Energy mbR_
Soft breaking mass for the bottom singlet.
Definition: SusyBase.h:559
const map< string, StringMap > & info() const
Info blocks.
Definition: SusyBase.h:323
Energy mq3L_
Soft breaking mass for the third generation quark doublet.
Definition: SusyBase.h:534
MixingMatrixPtr NMix_
Neutralino and Chargino mixing matrices.
Definition: SusyBase.h:583
bool gravitino_
Whether or not to include gravitino interactions.
Definition: SusyBase.h:425
void charginoUMix(MixingMatrixPtr um)
Reset the U-type chargino mixing matrix.
Definition: SusyBase.h:343
pair< unsigned int, unsigned int > MatrixSize
The size of the matrix.
Definition: MixingMatrix.h:67
const Energy & MmuL() const
Soft breaking mass for the second generation lepton doublet.
Definition: SusyBase.h:171
AbstractFFVVertexPtr CNWVertex_
Pointer to the vertex chargino-neutralino-Z vertex.
Definition: SusyBase.h:671
const Energy & MtauR() const
Soft breaking mass for the third generation lepton singlet.
Definition: SusyBase.h:191
const Energy & MbR() const
Soft breaking mass for the bottom singlet.
Definition: SusyBase.h:231
AbstractFFSVertexPtr GFSFVertex_
Pointer to the gluino-fermion-sfermion coupling.
Definition: SusyBase.h:616
bool readFile_
Whether or not the SLHA file has been read.
Definition: SusyBase.h:415
Complex gluinoPhase_
Phase for the gluino.
Definition: SusyBase.h:570
AbstractFFSVertexPtr NCTVertex_
Pointer to the vertex for flavour changing stop decay.
Definition: SusyBase.h:686
map< string, pair< MatrixSize, MixingVector > > mixings_
Mixing blocks.
Definition: SusyBase.h:449
double findValue(const map< string, ParamMap >::const_iterator pit, int iloc, const string &block, const string &name)
Read a parameter from a block, checking that the entry exists.
Definition: SusyBase.h:354
AbstractRFVVertexPtr GVNVVertex_
Pointer to the vertex for gravitino-neutralino vector boson.
Definition: SusyBase.h:691
const Complex & gluinoPhase() const
The phase for gluino vertices.
Definition: SusyBase.h:98
void neutralinoMix(MixingMatrixPtr nm)
Reset neutralino mixing matrix.
Definition: SusyBase.h:338
Energy M1_
Soft breaking parameters.
Definition: SusyBase.h:469
Energy meL_
Soft breaking mass for the first generation lepton doublet.
Definition: SusyBase.h:494
bool majoranaNeutrinos() const
Treatment of neutrinos.
Definition: SusyBase.h:104
Energy msR_
Soft breaking mass for the strange singlet.
Definition: SusyBase.h:549
Here is the documentation of the BSMModel class.
Definition: BSMModel.h:21
const Energy & Mq3L() const
Soft breaking mass for the third generation quark doublet.
Definition: SusyBase.h:206
const Energy & Mq2L() const
Soft breaking mass for the second generation quark doublet.
Definition: SusyBase.h:201
const Energy & Mq1L() const
Soft breaking mass for the first generation quark doublet.
Definition: SusyBase.h:196
AbstractVSSVertexPtr WHHVertex_
Pointer to the vertex for a gauge boson and higgs.
Definition: SusyBase.h:681
map< long, string > StringMap
Map to hold key, string pairs.
Definition: SusyBase.h:38
const Energy & McR() const
Soft breaking mass for the charm singlet.
Definition: SusyBase.h:226
const MixingMatrixPtr & charginoUMix() const
The U-type chargino mixing matrix.
Definition: SusyBase.h:84
const map< string, ParamMap > & parameters() const
Access to the mixings and parameters for the inheriting classes.
Definition: SusyBase.h:316
const Energy & M1() const
Soft breaking parameters.
Definition: SusyBase.h:141
AbstractFFSVertexPtr GOGOHVertex_
Pointer to the vertex gaugino-gaugino-higgs vertex.
Definition: SusyBase.h:676
AbstractVSSVertexPtr WSFSFVertex_
Pointer to the gauge boson sfermion-sfermion vertex.
Definition: SusyBase.h:601
void charginoVMix(MixingMatrixPtr vm)
Reset the V-type chargino mixing matrix.
Definition: SusyBase.h:348
vector< MixingElement > MixingVector
A vector of mixing elements.
Definition: MixingMatrix.h:62
Energy muR_
Soft breaking mass for the up singlet.
Definition: SusyBase.h:544
double tanBeta() const
Value of .
Definition: SusyBase.h:67
AbstractRFSVertexPtr GVNHVertex_
Pointer to the vertex for gravitino-neutralino Higgs boson.
Definition: SusyBase.h:696
const MixingMatrixPtr & charginoVMix() const
The V-type chargino mixing matrix.
Definition: SusyBase.h:91
const MixingMatrixPtr & neutralinoMix() const
The neutralino mixing matrix.
Definition: SusyBase.h:77
const Energy & MeL() const
Soft breaking mass for the first generation lepton doublet.
Definition: SusyBase.h:166
const Energy & MtauL() const
Soft breaking mass for the third generation lepton doublet.
Definition: SusyBase.h:176
AbstractFFVVertexPtr GNGVertex_
Pointer to the gluino-neutralino-gluon vertex.
Definition: SusyBase.h:651
const Energy2 & Mh12() const
The soft breaking mass squared for .
Definition: SusyBase.h:156
-*- C++ -*-
Energy mtR_
Soft breaking mass for the top singlet.
Definition: SusyBase.h:564
Energy mq1L_
Soft breaking mass for the first generation quark doublet.
Definition: SusyBase.h:524
AbstractFFVVertexPtr GSGSGVertex_
Pointer to the gluon-gluino-gluino vertex.
Definition: SusyBase.h:646
Energy2 mH22_
The soft breaking mass squared for .
Definition: SusyBase.h:489
double tanBeta_
Definition: SusyBase.h:454
const Energy & MtR() const
Soft breaking mass for the top singlet.
Definition: SusyBase.h:236
const Energy & MuR() const
Soft breaking mass for the up singlet.
Definition: SusyBase.h:216
bool allowedToResetSMMasses_
Allow the resetting of Standard Model masses.
Definition: SusyBase.h:707
Energy meR_
Soft breaking mass for the first generation lepton singlet.
Definition: SusyBase.h:509
AbstractFFVVertexPtr NNPVertex_
Pointer to the neutralino-neutralino-photon vertex.
Definition: SusyBase.h:661
AbstractFFSVertexPtr CFSFVertex_
Pointer to the -fermion-sfermion vertex.
Definition: SusyBase.h:626
const Energy & MeR() const
Soft breaking mass for the first generation lepton singlet.
Definition: SusyBase.h:181
const Energy & M3() const
The bilinear breaking mass term for the gluinos.
Definition: SusyBase.h:151
AbstractFFVVertexPtr NNZVertex_
Pointer to the neutralino-neutralino-Z vertex.
Definition: SusyBase.h:656
AbstractVVSSVertexPtr GGSQSQVertex_
Pointer to the gluon-gluon-squark-squark vertex;.
Definition: SusyBase.h:636
MixingMatrixPtr UMix_
The mixing matrix for the charginos.
Definition: SusyBase.h:588
Energy mmuR_
Soft breaking mass for the second generation lepton singlet.
Definition: SusyBase.h:514