herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
PDT
SMHiggsMassGenerator.h
1
// -*- C++ -*-
2
//
3
// SMHiggsMassGenerator.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_SMHiggsMassGenerator_H
10
#define HERWIG_SMHiggsMassGenerator_H
11
//
12
// This is the declaration of the SMHiggsMassGenerator class.
13
//
14
15
#include "GenericMassGenerator.h"
16
#include "GenericWidthGenerator.h"
17
18
namespace
Herwig
{
19
20
using namespace
ThePEG
;
21
29
class
SMHiggsMassGenerator
:
public
GenericMassGenerator
{
30
31
public
:
32
36
SMHiggsMassGenerator
() :
_shape
(1) {}
37
44
virtual
double
weight
(Energy q,
int
shape)
const
{
45
Energy2 q2 =
sqr
(q);
46
Energy2 mass2 =
sqr
(
nominalMass
());
47
Energy2 mwidth=
nominalMass
()*
nominalWidth
();
48
return
BreitWignerWeight
(q,shape)*(
sqr
(mass2-q2)+
sqr
(mwidth))/mwidth;
49
}
50
56
bool
accept
(
const
ParticleData
& part)
const
;
57
61
virtual
void
dataBaseOutput
(ofstream &,
bool
);
62
69
void
persistentOutput
(
PersistentOStream
& os)
const
;
70
76
void
persistentInput
(
PersistentIStream
& is,
int
version);
78
85
static
void
Init
();
86
87
protected
:
88
95
virtual
InvEnergy2
BreitWignerWeight
(Energy q,
int
shape)
const
{
96
useMe
();
97
pair<Energy,Energy> widths = shape!=2 ?
_hwidth
->width(q,*
particle
()) :
98
make_pair(
nominalWidth
(),
nominalWidth
());
99
Energy2 q2 =
sqr
(q);
100
Energy4 sq=
sqr
(q2-
sqr
(
nominalMass
()));
101
Energy2 num = widths.first*q;
102
double
fact = 1.;
103
if
(
_shape
==1) fact *= pow<4,1>(
nominalMass
()/q);
104
if
( shape==3) num=GeV2;
105
return
num*fact/
Constants::pi
/(sq+
sqr
(widths.second*q)*fact);
106
}
107
108
protected
:
109
116
virtual
IBPtr
clone
()
const
{
return
new_ptr(*
this
); }
117
122
virtual
IBPtr
fullclone
()
const
{
return
new_ptr(*
this
); }
124
125
protected
:
126
134
virtual
void
doinit
();
136
137
private
:
138
143
SMHiggsMassGenerator
&
operator=
(
const
SMHiggsMassGenerator
&) =
delete
;
144
145
private
:
146
150
unsigned
int
_shape
;
151
155
GenericWidthGeneratorPtr
_hwidth
;
156
157
};
158
159
}
160
161
#endif
/* HERWIG_SMHiggsMassGenerator_H */
Herwig::GenericMassGenerator
The GenericMassGenerator class is a simple class for the generation of particle masses in Herwig.
Definition:
GenericMassGenerator.h:56
Herwig::GenericMassGenerator::nominalMass
Energy nominalMass() const
Default mass.
Definition:
GenericMassGenerator.h:210
Herwig::GenericMassGenerator::nominalWidth
Energy nominalWidth() const
Default Width.
Definition:
GenericMassGenerator.h:215
Herwig::GenericMassGenerator::particle
tcPDPtr particle() const
Accesss to the particle.
Definition:
GenericMassGenerator.h:294
Herwig::SMHiggsMassGenerator
The SMHiggsMassGenerator class implements the generation of the Higgs boson mass according to the pre...
Definition:
SMHiggsMassGenerator.h:29
Herwig::SMHiggsMassGenerator::weight
virtual double weight(Energy q, int shape) const
Weight for the factor for an off-shell mass.
Definition:
SMHiggsMassGenerator.h:44
Herwig::SMHiggsMassGenerator::SMHiggsMassGenerator
SMHiggsMassGenerator()
The default constructor.
Definition:
SMHiggsMassGenerator.h:36
Herwig::SMHiggsMassGenerator::doinit
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
Herwig::SMHiggsMassGenerator::clone
virtual IBPtr clone() const
Make a simple clone of this object.
Definition:
SMHiggsMassGenerator.h:116
Herwig::SMHiggsMassGenerator::operator=
SMHiggsMassGenerator & operator=(const SMHiggsMassGenerator &)=delete
The assignment operator is private and must never be called.
Herwig::SMHiggsMassGenerator::Init
static void Init()
The standard Init function used to initialize the interfaces.
Herwig::SMHiggsMassGenerator::fullclone
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition:
SMHiggsMassGenerator.h:122
Herwig::SMHiggsMassGenerator::accept
bool accept(const ParticleData &part) const
Return true if this mass generator can handle the given particle type.
Herwig::SMHiggsMassGenerator::_shape
unsigned int _shape
Option for the line-shape.
Definition:
SMHiggsMassGenerator.h:150
Herwig::SMHiggsMassGenerator::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::SMHiggsMassGenerator::_hwidth
GenericWidthGeneratorPtr _hwidth
The width generator.
Definition:
SMHiggsMassGenerator.h:155
Herwig::SMHiggsMassGenerator::dataBaseOutput
virtual void dataBaseOutput(ofstream &, bool)
output for the database
Herwig::SMHiggsMassGenerator::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::SMHiggsMassGenerator::BreitWignerWeight
virtual InvEnergy2 BreitWignerWeight(Energy q, int shape) const
Weight for the factor for an off-shell mass.
Definition:
SMHiggsMassGenerator.h:95
ThePEG::Interfaced::useMe
void useMe() const
ThePEG::ParticleData
ThePEG::PersistentIStream
ThePEG::PersistentOStream
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
ThePEG::Constants::pi
constexpr double pi
ThePEG
ThePEG::IBPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::sqr
constexpr auto sqr(const T &x) -> decltype(x *x)
Generated on Thu Jun 20 2024 17:50:53 for Herwig by
1.9.6