ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Generators
Pythia8_i
src
UserProcesses
Sigma2qqbar2lStarlBar.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
// Single excited lepton production - similar to original pythia8 code,
6
// but polarization of final state is reversed [to match Calchep distributions
7
8
#include "
Pythia8_i/UserProcessFactory.h
"
9
10
#include <iostream>
11
#include <vector>
12
13
namespace
Pythia8
{
14
class
Sigma2qqbar2lStarlBar
;
15
class
Sigma2qqbar2nueStarnueBar
;
16
class
Sigma2qqbar2numuStarnumuBar
;
17
class
Sigma2qqbar2nutauStarnutauBar
;
18
class
Sigma2qqbar2eStareBar
;
19
class
Sigma2qqbar2muStarmuBar
;
20
class
Sigma2qqbar2tauStartauBar
;
21
}
22
23
// This one line registers this process with the factory
24
// An instance of this process can be created with
25
// UserProcessFactory::create("qqbar2lStarlBar")
26
Pythia8_UserProcess::UserProcessFactory::Creator<Pythia8::Sigma2qqbar2nueStarnueBar>
qqbar2nueStarnueBarCreator
(
"qqbar2nueStarnueBar"
);
27
Pythia8_UserProcess::UserProcessFactory::Creator<Pythia8::Sigma2qqbar2numuStarnumuBar>
qqbar2numuStarnumuBarCreator
(
"qqbar2numuStarnumuBar"
);
28
Pythia8_UserProcess::UserProcessFactory::Creator<Pythia8::Sigma2qqbar2nutauStarnutauBar>
qqbar2nutauStarnutauBarCreator
(
"qqbar2nutauStarnutauBar"
);
29
Pythia8_UserProcess::UserProcessFactory::Creator<Pythia8::Sigma2qqbar2eStareBar>
qqbar2eStareBarCreator
(
"qqbar2eStareBar"
);
30
Pythia8_UserProcess::UserProcessFactory::Creator<Pythia8::Sigma2qqbar2muStarmuBar>
qqbar2muStarmuBarCreator
(
"qqbar2muStarmuBar"
);
31
Pythia8_UserProcess::UserProcessFactory::Creator<Pythia8::Sigma2qqbar2tauStartauBar>
qqbar2tauStartauBarCreator
(
"qqbar2tauStartauBar"
);
32
33
namespace
Pythia8
{
34
35
//**************************************************************************
36
37
// Sigma2qqbar2lStarlBar class.
38
// Cross section for q qbar -> lStar lBar
39
40
class
Sigma2qqbar2lStarlBar
:
public
Sigma2Process {
41
42
public
:
43
//Constructor.
44
Sigma2qqbar2lStarlBar
(
int
idlIn) :
idl
(idlIn),
45
idRes
(0),
codeSave
(0),
46
Lambda
(0.),
preFac
(0.),
openFracPos
(0.),
openFracNeg
(0.),
sigma
(0.),
m2ResTimes4
(0.){};
47
48
//*********
49
50
// Initialize process.
51
52
void
initProc
() {
53
54
// Set up process properties from the chosen lepton flavour.
55
idRes
= 4000000 +
idl
;
56
codeSave
= 4060 +
idl
;
57
if
(
idl
== 11)
nameSave
=
"q qbar -> e^*+- e^-+"
;
58
else
if
(
idl
== 12)
nameSave
=
"q qbar -> nu_e^* nu_ebar"
;
59
else
if
(
idl
== 13)
nameSave
=
"q qbar -> mu^*+- mu^-+"
;
60
else
if
(
idl
== 14)
nameSave
=
"q qbar -> nu_mu^* nu_mubar"
;
61
else
if
(
idl
== 15)
nameSave
=
"q qbar -> tau^*+- tau^-+"
;
62
else
nameSave
=
"q qbar -> nu_tau^* nu_taubar"
;
63
64
// Secondary open width fractions.
65
openFracPos
= particleDataPtr->resOpenFrac(
idRes
);
66
openFracNeg
= particleDataPtr->resOpenFrac(-
idRes
);
67
68
// Locally stored properties and couplings.
69
Lambda
= settingsPtr->parm(
"ExcitedFermion:Lambda"
);
70
preFac
= (
M_PI
/ pow4(
Lambda
)) * (
openFracPos
+
openFracNeg
) / 3.;
// orig pythia
71
//preFac = (M_PI / pow4(Lambda)) * (openFracPos + openFracNeg) / 6.;
72
73
}
74
75
//*********
76
// Evaluate sigmaHat(sHat).
77
virtual
double
sigmaHat
() {
return
sigma
;}
78
79
80
// Evaluate sigmaHat(sHat), part independent of incoming flavour.
81
82
void
sigmaKin
() {
83
84
// later this gets multiplied further with sH*(1-s3/sH)
85
86
sigma
=
preFac
* (-uH) * (sH + tH) / sH2;
// orig pythia
87
//sigma = preFac * (2. + s3/sH) *(1 - s3/sH) ;
88
//Baur sigma = preFac * ( 1 + 1./3.*(sH - s3)/(sH+s3) ) * (1 - s3/sH) * (1 + s3/sH);
89
}
90
91
//*********
92
93
// Select identity, colour and anticolour.
94
95
void
setIdColAcol
() {
96
97
// Flavours: either lepton or antilepton may be excited.
98
if
(rndmPtr->flat() * (
openFracPos
+
openFracNeg
) <
openFracPos
) {
99
setId( id1, id2,
idRes
, -
idl
);
100
if
(id1 < 0) swapTU =
true
;
101
}
else
{
102
setId( id1, id2, -
idRes
,
idl
);
103
if
(id1 > 0) swapTU =
true
;
104
}
105
106
// Colour flow trivial.
107
if
(id1 > 0) setColAcol( 1, 0, 0, 1, 0, 0, 0, 0);
108
else
setColAcol( 0, 1, 1, 0, 0, 0, 0, 0);
109
110
}
111
112
//**************************************************************************
113
114
double
weightDecay
(
Event
&
process
,
int
iResBeg,
115
int
iResEnd) {
116
117
// l* should sit in entry 5. and 6 Sequential Z/W decay assumed isotropic.
118
if
(iResBeg != 5 && iResEnd != 5 && iResBeg != 6 && iResEnd != 6 )
return
1.;
119
120
// Phase space factors.
121
double
mr1 =
pow2
(
process
[7].m() /
process
[5].m());
122
double
mr2 =
pow2
(
process
[8].m() /
process
[5].m());
123
124
// Reconstruct decay angle in l* CoM frame.
125
int
idAbs3 =
process
[7].idAbs();
126
Vec4 pLStarCom = (idAbs3 < 20) ?
process
[8].p() :
process
[7].p();
127
//Vec4 pLStarCom = (idAbs3 < 20) ? process[7].p() : process[8].p(); // orig pythia
128
pLStarCom.bstback(
process
[5].p());
129
double
cosThe = costheta(pLStarCom,
process
[5].p());
130
double
wt = 1.;
131
132
// Decay, l* -> l + gamma/Z^0/W^+-).
133
int
idBoson = (idAbs3 < 20) ?
process
[8].idAbs() :
process
[7].idAbs();
134
if
(idBoson == 22) {
135
wt = 0.5 * (1. + cosThe);
136
}
else
if
(idBoson == 23 || idBoson == 24) {
137
double
mrB = (idAbs3 < 20) ? mr2 : mr1;
138
double
kTrm = 0.5 * (mrB * (1. - cosThe));
139
wt = (1. + cosThe + kTrm) / (2 + mrB);
140
}
141
142
// Done.
143
return
wt;
144
}
145
146
// Info on the subprocess.
147
virtual
std::string
name
()
const
{
return
nameSave
;}
148
virtual
int
code
()
const
{
return
codeSave
;}
149
virtual
std::string
inFlux
()
const
{
return
"qqbarSame"
;}
150
virtual
int
id3Mass
()
const
{
return
std::abs(
idRes
);}
151
152
//virtual bool convertM2() const {return false;} //true is only suitable for resonance production pp->A->ll
153
//virtual bool convert2mb() const {return true;}
154
155
// Parameters set at initialization or for current kinematics.
156
int
idl
,
idRes
,
codeSave
;
157
std::string
nameSave
;
158
double
Lambda
,
preFac
,
openFracPos
,
openFracNeg
,
sigma
;
159
double
m2ResTimes4
;
160
};
161
//**************************************************************************
162
class
Sigma2qqbar2nueStarnueBar
:
public
Sigma2qqbar2lStarlBar
{
163
public
:
164
Sigma2qqbar2nueStarnueBar
() :
Sigma2qqbar2lStarlBar
(12) {}
165
};
166
class
Sigma2qqbar2numuStarnumuBar
:
public
Sigma2qqbar2lStarlBar
{
167
public
:
168
Sigma2qqbar2numuStarnumuBar
() :
Sigma2qqbar2lStarlBar
(14) {}
169
};
170
class
Sigma2qqbar2nutauStarnutauBar
:
public
Sigma2qqbar2lStarlBar
{
171
public
:
172
Sigma2qqbar2nutauStarnutauBar
() :
Sigma2qqbar2lStarlBar
(16) {}
173
};
174
class
Sigma2qqbar2eStareBar
:
public
Sigma2qqbar2lStarlBar
{
175
public
:
176
Sigma2qqbar2eStareBar
() :
Sigma2qqbar2lStarlBar
(11) {}
177
};
178
class
Sigma2qqbar2muStarmuBar
:
public
Sigma2qqbar2lStarlBar
{
179
public
:
180
Sigma2qqbar2muStarmuBar
() :
Sigma2qqbar2lStarlBar
(13) {}
181
};
182
class
Sigma2qqbar2tauStartauBar
:
public
Sigma2qqbar2lStarlBar
{
183
public
:
184
Sigma2qqbar2tauStartauBar
() :
Sigma2qqbar2lStarlBar
(15) {}
185
};
186
187
}
M_PI
#define M_PI
Definition
ActiveFraction.h:14
qqbar2nueStarnueBarCreator
Pythia8_UserProcess::UserProcessFactory::Creator< Pythia8::Sigma2qqbar2nueStarnueBar > qqbar2nueStarnueBarCreator("qqbar2nueStarnueBar")
qqbar2nutauStarnutauBarCreator
Pythia8_UserProcess::UserProcessFactory::Creator< Pythia8::Sigma2qqbar2nutauStarnutauBar > qqbar2nutauStarnutauBarCreator("qqbar2nutauStarnutauBar")
qqbar2eStareBarCreator
Pythia8_UserProcess::UserProcessFactory::Creator< Pythia8::Sigma2qqbar2eStareBar > qqbar2eStareBarCreator("qqbar2eStareBar")
qqbar2numuStarnumuBarCreator
Pythia8_UserProcess::UserProcessFactory::Creator< Pythia8::Sigma2qqbar2numuStarnumuBar > qqbar2numuStarnumuBarCreator("qqbar2numuStarnumuBar")
qqbar2muStarmuBarCreator
Pythia8_UserProcess::UserProcessFactory::Creator< Pythia8::Sigma2qqbar2muStarmuBar > qqbar2muStarmuBarCreator("qqbar2muStarmuBar")
qqbar2tauStartauBarCreator
Pythia8_UserProcess::UserProcessFactory::Creator< Pythia8::Sigma2qqbar2tauStartauBar > qqbar2tauStartauBarCreator("qqbar2tauStartauBar")
pow2
static const std::map< unsigned int, unsigned int > pow2
Definition
TriggerProcessor.cxx:23
UserProcessFactory.h
Pythia8::Sigma2qqbar2eStareBar
Definition
Sigma2qqbar2lStarlBar.cxx:174
Pythia8::Sigma2qqbar2eStareBar::Sigma2qqbar2eStareBar
Sigma2qqbar2eStareBar()
Definition
Sigma2qqbar2lStarlBar.cxx:176
Pythia8::Sigma2qqbar2lStarlBar
Definition
Sigma2qqbar2lStarlBar.cxx:40
Pythia8::Sigma2qqbar2lStarlBar::openFracPos
double openFracPos
Definition
Sigma2qqbar2lStarlBar.cxx:158
Pythia8::Sigma2qqbar2lStarlBar::sigmaKin
void sigmaKin()
Definition
Sigma2qqbar2lStarlBar.cxx:82
Pythia8::Sigma2qqbar2lStarlBar::codeSave
int codeSave
Definition
Sigma2qqbar2lStarlBar.cxx:156
Pythia8::Sigma2qqbar2lStarlBar::inFlux
virtual std::string inFlux() const
Definition
Sigma2qqbar2lStarlBar.cxx:149
Pythia8::Sigma2qqbar2lStarlBar::Lambda
double Lambda
Definition
Sigma2qqbar2lStarlBar.cxx:158
Pythia8::Sigma2qqbar2lStarlBar::openFracNeg
double openFracNeg
Definition
Sigma2qqbar2lStarlBar.cxx:158
Pythia8::Sigma2qqbar2lStarlBar::name
virtual std::string name() const
Definition
Sigma2qqbar2lStarlBar.cxx:147
Pythia8::Sigma2qqbar2lStarlBar::preFac
double preFac
Definition
Sigma2qqbar2lStarlBar.cxx:158
Pythia8::Sigma2qqbar2lStarlBar::idl
int idl
Definition
Sigma2qqbar2lStarlBar.cxx:156
Pythia8::Sigma2qqbar2lStarlBar::m2ResTimes4
double m2ResTimes4
Definition
Sigma2qqbar2lStarlBar.cxx:159
Pythia8::Sigma2qqbar2lStarlBar::sigma
double sigma
Definition
Sigma2qqbar2lStarlBar.cxx:158
Pythia8::Sigma2qqbar2lStarlBar::setIdColAcol
void setIdColAcol()
Definition
Sigma2qqbar2lStarlBar.cxx:95
Pythia8::Sigma2qqbar2lStarlBar::Sigma2qqbar2lStarlBar
Sigma2qqbar2lStarlBar(int idlIn)
Definition
Sigma2qqbar2lStarlBar.cxx:44
Pythia8::Sigma2qqbar2lStarlBar::id3Mass
virtual int id3Mass() const
Definition
Sigma2qqbar2lStarlBar.cxx:150
Pythia8::Sigma2qqbar2lStarlBar::code
virtual int code() const
Definition
Sigma2qqbar2lStarlBar.cxx:148
Pythia8::Sigma2qqbar2lStarlBar::initProc
void initProc()
Definition
Sigma2qqbar2lStarlBar.cxx:52
Pythia8::Sigma2qqbar2lStarlBar::nameSave
std::string nameSave
Definition
Sigma2qqbar2lStarlBar.cxx:157
Pythia8::Sigma2qqbar2lStarlBar::weightDecay
double weightDecay(Event &process, int iResBeg, int iResEnd)
Definition
Sigma2qqbar2lStarlBar.cxx:114
Pythia8::Sigma2qqbar2lStarlBar::idRes
int idRes
Definition
Sigma2qqbar2lStarlBar.cxx:156
Pythia8::Sigma2qqbar2lStarlBar::sigmaHat
virtual double sigmaHat()
Definition
Sigma2qqbar2lStarlBar.cxx:77
Pythia8::Sigma2qqbar2muStarmuBar
Definition
Sigma2qqbar2lStarlBar.cxx:178
Pythia8::Sigma2qqbar2muStarmuBar::Sigma2qqbar2muStarmuBar
Sigma2qqbar2muStarmuBar()
Definition
Sigma2qqbar2lStarlBar.cxx:180
Pythia8::Sigma2qqbar2nueStarnueBar
Definition
Sigma2qqbar2lStarlBar.cxx:162
Pythia8::Sigma2qqbar2nueStarnueBar::Sigma2qqbar2nueStarnueBar
Sigma2qqbar2nueStarnueBar()
Definition
Sigma2qqbar2lStarlBar.cxx:164
Pythia8::Sigma2qqbar2numuStarnumuBar
Definition
Sigma2qqbar2lStarlBar.cxx:166
Pythia8::Sigma2qqbar2numuStarnumuBar::Sigma2qqbar2numuStarnumuBar
Sigma2qqbar2numuStarnumuBar()
Definition
Sigma2qqbar2lStarlBar.cxx:168
Pythia8::Sigma2qqbar2nutauStarnutauBar
Definition
Sigma2qqbar2lStarlBar.cxx:170
Pythia8::Sigma2qqbar2nutauStarnutauBar::Sigma2qqbar2nutauStarnutauBar
Sigma2qqbar2nutauStarnutauBar()
Definition
Sigma2qqbar2lStarlBar.cxx:172
Pythia8::Sigma2qqbar2tauStartauBar
Definition
Sigma2qqbar2lStarlBar.cxx:182
Pythia8::Sigma2qqbar2tauStartauBar::Sigma2qqbar2tauStartauBar
Sigma2qqbar2tauStartauBar()
Definition
Sigma2qqbar2lStarlBar.cxx:184
Pythia8_UserProcess::UserProcessFactory::Creator
Definition
UserProcessFactory.h:38
process
const std::string process
Definition
fbtTestBasics.cxx:76
Pythia8
Author: James Monk (jmonk@cern.ch).
Definition
IPythia8Custom.h:10
Event
Definition
trigbs_orderedMerge.cxx:42
Generated on
for ATLAS Offline Software by
1.17.0