Main Page
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
a
b
c
d
e
f
g
h
i
j
k
l
m
o
p
q
r
s
t
u
v
w
z
Enumerator
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
:
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Properties
_
a
d
e
f
l
m
o
p
s
t
u
v
Related Functions
:
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Package Documentation
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Modules
Pages
GeneratorInterface
Pythia8Interface
plugins
Py8PtGun.cc
Go to the documentation of this file.
1
#include <memory>
2
3
#include "
GeneratorInterface/Core/interface/GeneratorFilter.h
"
4
#include "
GeneratorInterface/ExternalDecays/interface/ExternalDecayDriver.h
"
5
6
#include "
GeneratorInterface/Pythia8Interface/interface/Py8GunBase.h
"
7
8
namespace
gen
{
9
10
class
Py8PtGun
:
public
Py8GunBase
{
11
public
:
12
Py8PtGun
(
edm::ParameterSet
const
&);
13
~Py8PtGun
()
override
{}
14
15
bool
generatePartonsAndHadronize
()
override
;
16
const
char
*
classname
()
const override
;
17
18
private
:
19
// PtGun particle(s) characteristics
20
double
fMinEta
;
21
double
fMaxEta
;
22
double
fMinPt
;
23
double
fMaxPt
;
24
bool
fAddAntiParticle
;
25
};
26
27
// implementation
28
//
29
Py8PtGun::Py8PtGun
(
edm::ParameterSet
const
& ps) :
Py8GunBase
(ps) {
30
// ParameterSet defpset ;
31
edm::ParameterSet
pgun_params = ps.
getParameter
<
edm::ParameterSet
>(
"PGunParameters"
);
// , defpset ) ;
32
fMinEta
= pgun_params.
getParameter
<
double
>(
"MinEta"
);
// ,-2.2);
33
fMaxEta
= pgun_params.
getParameter
<
double
>(
"MaxEta"
);
// , 2.2);
34
fMinPt
= pgun_params.
getParameter
<
double
>(
"MinPt"
);
// , 0.);
35
fMaxPt
= pgun_params.
getParameter
<
double
>(
"MaxPt"
);
// , 0.);
36
fAddAntiParticle
= pgun_params.
getParameter
<
bool
>(
"AddAntiParticle"
);
//, false) ;
37
}
38
39
bool
Py8PtGun::generatePartonsAndHadronize
() {
40
fMasterGen
->event.reset();
41
42
for
(
size_t
i
= 0;
i
<
fPartIDs
.size();
i
++) {
43
int
particleID
=
fPartIDs
[
i
];
// this is PDG - need to convert to Py8 ???
44
45
double
phi = (
fMaxPhi
-
fMinPhi
) *
randomEngine
().
flat
() +
fMinPhi
;
46
double
eta
= (
fMaxEta
-
fMinEta
) *
randomEngine
().
flat
() +
fMinEta
;
47
double
the = 2. * atan(
exp
(-
eta
));
48
49
double
pt
= (
fMaxPt
-
fMinPt
) *
randomEngine
().
flat
() +
fMinPt
;
50
51
double
mass
= (
fMasterGen
->particleData).m0(
particleID
);
52
53
double
pp
=
pt
/
sin
(the);
// sqrt( ee*ee - mass*mass );
54
double
ee =
sqrt
(
pp
*
pp
+
mass
*
mass
);
55
56
double
px
=
pt
*
cos
(phi);
57
double
py
=
pt
*
sin
(phi);
58
double
pz =
pp
*
cos
(the);
59
60
if
(!((
fMasterGen
->particleData).isParticle(
particleID
))) {
61
particleID
=
std::abs
(
particleID
);
62
}
63
if
(1 <=
std::abs
(
particleID
) &&
std::abs
(
particleID
) <= 6)
// quarks
64
(
fMasterGen
->event).
append
(
particleID
, 23, 101, 0,
px
,
py
, pz, ee,
mass
);
65
else
if
(
std::abs
(
particleID
) == 21)
// gluons
66
(
fMasterGen
->event).append(21, 23, 101, 102,
px
,
py
, pz, ee,
mass
);
67
// other
68
else
{
69
(
fMasterGen
->event).
append
(
particleID
, 1, 0, 0,
px
,
py
, pz, ee,
mass
);
70
int
eventSize = (
fMasterGen
->event).
size
() - 1;
71
// -log(flat) = exponential distribution
72
double
tauTmp = -(
fMasterGen
->event)[eventSize].tau0() *
log
(
randomEngine
().flat());
73
(
fMasterGen
->event)[eventSize].
tau
(tauTmp);
74
}
75
76
// Here also need to add anti-particle (if any)
77
// otherwise just add a 2nd particle of the same type
78
// (for example, gamma)
79
//
80
if
(
fAddAntiParticle
) {
81
if
(1 <=
std::abs
(
particleID
) &&
std::abs
(
particleID
) <= 6) {
// quarks
82
(
fMasterGen
->event).
append
(-
particleID
, 23, 0, 101, -
px
, -
py
, -pz, ee,
mass
);
83
}
else
if
(
std::abs
(
particleID
) == 21) {
// gluons
84
(
fMasterGen
->event).
append
(21, 23, 102, 101, -
px
, -
py
, -pz, ee,
mass
);
85
}
else
{
86
if
((
fMasterGen
->particleData).isParticle(-
particleID
)) {
87
(
fMasterGen
->event).
append
(-
particleID
, 1, 0, 0, -
px
, -
py
, -pz, ee,
mass
);
88
}
else
{
89
(
fMasterGen
->event).
append
(
particleID
, 1, 0, 0, -
px
, -
py
, -pz, ee,
mass
);
90
}
91
int
eventSize = (
fMasterGen
->event).
size
() - 1;
92
// -log(flat) = exponential distribution
93
double
tauTmp = -(
fMasterGen
->event)[eventSize].tau0() *
log
(
randomEngine
().flat());
94
(
fMasterGen
->event)[eventSize].
tau
(tauTmp);
95
}
96
}
97
}
98
99
if
(!
fMasterGen
->next())
100
return
false
;
101
evtGenDecay
();
102
103
event
() = std::make_unique<HepMC::GenEvent>();
104
return
toHepMC
.fill_next_event(
fMasterGen
->event,
event
().
get
());
105
}
106
107
const
char
*
Py8PtGun::classname
()
const
{
return
"Py8PtGun"
; }
108
109
typedef
edm::GeneratorFilter<gen::Py8PtGun, gen::ExternalDecayDriver>
Pythia8PtGun
;
110
111
}
// namespace gen
112
113
using
gen::Pythia8PtGun
;
114
DEFINE_FWK_MODULE
(
Pythia8PtGun
);
gen::Py8PtGun::fMinEta
double fMinEta
Definition:
Py8PtGun.cc:20
gen::Py8InterfaceBase::fMasterGen
std::unique_ptr< Pythia8::Pythia > fMasterGen
Definition:
Py8InterfaceBase.h:47
mps_fire.i
i
Definition:
mps_fire.py:428
gen::Py8GunBase::fMinPhi
double fMinPhi
Definition:
Py8GunBase.h:58
gen::Py8PtGun::~Py8PtGun
~Py8PtGun() override
Definition:
Py8PtGun.cc:13
metsig::tau
Definition:
SignAlgoResolutions.h:49
DiDispStaMuonMonitor_cfi.pt
pt
Definition:
DiDispStaMuonMonitor_cfi.py:39
gen::P8RndmEngine::flat
double flat() override
Definition:
P8RndmEngine.cc:7
multPhiCorr_741_25nsDY_cfi.py
py
Definition:
multPhiCorr_741_25nsDY_cfi.py:12
ExternalDecayDriver.h
gen::Py8PtGun::fMaxEta
double fMaxEta
Definition:
Py8PtGun.cc:21
gen::Py8PtGun::fAddAntiParticle
bool fAddAntiParticle
Definition:
Py8PtGun.cc:24
gen::Py8PtGun::fMaxPt
double fMaxPt
Definition:
Py8PtGun.cc:23
funct::sin
Sin< T >::type sin(const T &t)
Definition:
Sin.h:22
EgammaObjectsElectrons_cfi.particleID
particleID
Definition:
EgammaObjectsElectrons_cfi.py:4
funct::cos
Cos< T >::type cos(const T &t)
Definition:
Cos.h:22
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition:
MakerMacros.h:16
edm::GeneratorFilter
Definition:
GeneratorFilter.h:40
gen::Py8GunBase::evtGenDecay
void evtGenDecay()
Definition:
Py8GunBase.cc:144
gen::Py8PtGun::classname
const char * classname() const override
Definition:
Py8PtGun.cc:107
PVValHelper::eta
Definition:
PVValidationHelpers.h:69
mathSSE::sqrt
T sqrt(T t)
Definition:
SSEVec.h:19
gen::Py8PtGun::fMinPt
double fMinPt
Definition:
Py8PtGun.cc:22
gen
Definition:
PythiaDecays.h:13
gen::Py8InterfaceBase::randomEngine
P8RndmEngine & randomEngine()
Definition:
Py8InterfaceBase.h:44
edm::ParameterSet
Definition:
ParameterSet.h:47
GeneratorFilter.h
mps_setup.append
append
Definition:
mps_setup.py:85
gen::Py8GunBase::fPartIDs
std::vector< int > fPartIDs
Definition:
Py8GunBase.h:57
get
#define get
gen::Py8PtGun::generatePartonsAndHadronize
bool generatePartonsAndHadronize() override
Definition:
Py8PtGun.cc:39
multPhiCorr_741_25nsDY_cfi.px
px
Definition:
multPhiCorr_741_25nsDY_cfi.py:10
gen::BaseHadronizer::event
std::unique_ptr< HepMC::GenEvent > & event()
Definition:
BaseHadronizer.h:86
gen::Py8PtGun
Definition:
Py8PtGun.cc:10
gen::Py8PtGun::Py8PtGun
Py8PtGun(edm::ParameterSet const &)
Definition:
Py8PtGun.cc:29
gen::Py8GunBase
Definition:
Py8GunBase.h:40
gen::Py8InterfaceBase::toHepMC
HepMC::Pythia8ToHepMC toHepMC
Definition:
Py8InterfaceBase.h:49
EgHLTOffHistBins_cfi.mass
mass
Definition:
EgHLTOffHistBins_cfi.py:34
gen::Pythia8PtGun
edm::GeneratorFilter< gen::Py8PtGun, gen::ExternalDecayDriver > Pythia8PtGun
Definition:
Py8PtGun.cc:109
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition:
ParameterSet.h:303
dqm-mbProfile.log
log
Definition:
dqm-mbProfile.py:17
funct::abs
Abs< T >::type abs(const T &t)
Definition:
Abs.h:22
createTree.pp
pp
Definition:
createTree.py:17
JetChargeProducer_cfi.exp
exp
Definition:
JetChargeProducer_cfi.py:6
gen::Py8GunBase::fMaxPhi
double fMaxPhi
Definition:
Py8GunBase.h:59
Py8GunBase.h
event
Definition:
event.py:1
findQualityFiles.size
size
Write out results.
Definition:
findQualityFiles.py:443
Generated for CMSSW Reference Manual by
1.8.16