ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Generators
Pythia8_i
src
UserResonances
ResonanceExcitedCI.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
// The ResonanceExcited class handles excited-fermion resonances.
6
// This is a copy of existing pythia ResonanceExcited class
7
// with extention to include decays going via contact interactions (4-fermion vertexes)
8
//
9
// author Olya Igonkina, modified by James Monk for Pythia8_i
10
11
#include "
Pythia8_i/UserResonanceFactory.h
"
12
13
namespace
Pythia8
{
14
class
ResonanceExcitedCI
;
15
}
16
17
Pythia8_UserResonance::UserResonanceFactory::Creator<Pythia8::ResonanceExcitedCI>
resonanceExcitedCreator
(
"ExcitedCI"
);
18
19
namespace
Pythia8
{
20
21
class
ResonanceExcitedCI
:
public
ResonanceWidths {
22
23
public
:
24
25
// Constructor.
26
ResonanceExcitedCI
(
int
idResIn):
27
m_lambda
(0.),
m_coupF
(0.),
m_coupFprime
(0.),
m_coupFcol
(0.),
28
m_sin2tW
(0.),
m_cos2tW
(0.){
29
initBasic(idResIn); std::cout <<
" ResonanceExcitedCI constructor\n"
;
30
}
31
32
private
:
33
34
void
initConstants
() {
35
36
// Locally stored properties and couplings.
37
m_lambda
= settingsPtr->parm(
"ExcitedFermion:Lambda"
);
38
m_coupF
= settingsPtr->parm(
"ExcitedFermion:coupF"
);
39
m_coupFprime
= settingsPtr->parm(
"ExcitedFermion:coupFprime"
);
40
m_coupFcol
= settingsPtr->parm(
"ExcitedFermion:coupFcol"
);
41
#ifdef PYTHIA_VERSION_INTEGER
42
#if PYTHIA_VERSION_INTEGER > 8300
43
CoupSM* couplingsPtr = infoPtr->coupSMPtr;
44
#endif
45
#endif
46
m_sin2tW
= couplingsPtr->sin2thetaW();
47
m_cos2tW
= 1. -
m_sin2tW
;
48
49
return
;
50
}
51
52
//--------------------------------------------------------------------------
53
54
// Calculate various common prefactors for the current mass.
55
56
void
calcPreFac
(
bool
) {
57
// Common coupling factors.
58
#ifdef PYTHIA_VERSION_INTEGER
59
#if PYTHIA_VERSION_INTEGER > 8300
60
CoupSM* couplingsPtr = infoPtr->coupSMPtr;
61
#endif
62
#endif
63
alpEM = couplingsPtr->alphaEM(mHat * mHat);
64
alpS = couplingsPtr->alphaS(mHat * mHat);
65
preFac = pow3(mHat) /
pow2
(
m_lambda
);
66
67
return
;
68
}
69
70
//--------------------------------------------------------------------------
71
72
// Calculate width for currently considered channel.
73
74
void
calcWidth
(
bool
) {
75
76
// Check that above threshold.
77
if
(ps == 0.)
return
;
78
79
// f^* -> f g.
80
if
(id1Abs == 21) widNow = preFac * alpS *
pow2
(
m_coupFcol
) / 3.;
81
82
// f^* -> f gamma.
83
else
if
(id1Abs == 22) {
84
double
chgI3 = (id2Abs%2 == 0) ? 0.5 : -0.5;
85
double
chgY = (id2Abs < 9) ? 1. / 6. : -0.5;
86
double
chg = chgI3 *
m_coupF
+ chgY *
m_coupFprime
;
87
widNow = preFac * alpEM *
pow2
(chg) / 4.;
88
}
89
// f^* -> f Z^0.
90
else
if
(id1Abs == 23) {
91
double
chgI3 = (id2Abs%2 == 0) ? 0.5 : -0.5;
92
double
chgY = (id2Abs < 9) ? 1. / 6. : -0.5;
93
double
chg = chgI3 *
m_cos2tW
*
m_coupF
- chgY *
m_sin2tW
*
m_coupFprime
;
94
widNow = preFac * (alpEM *
pow2
(chg) / (8. *
m_sin2tW
*
m_cos2tW
))
95
* ps*ps * (2. + mr1);
96
}
97
98
// f^* -> f' W^+-.
99
else
if
(id1Abs == 24) widNow = preFac * (alpEM *
pow2
(
m_coupF
)
100
/ (16. *
m_sin2tW
)) * ps*ps * (2. + mr1);
101
// idxAbs are sorted according to their abs value ; use idRes
102
103
// f^* -> f f' \bar{f'}
104
else
{
105
//std::cout << " hei! in ResonanceExcitedCI processing F* -> f f'f'bar decays "<< id1Abs <<" "<<id2Abs<<" "<<id3Abs<< "\n";
106
107
if
( id1Abs < 17 && id2Abs < 17 && id3Abs>0 && id3Abs < 17 ){
// f* -> f f'\bar(f'} decay
108
widNow = preFac *
pow2
(mHat) /
pow2
(
m_lambda
) / 96. /
M_PI
;
109
if
( id3Abs < 10 ) widNow *= 3.;
// quarks in final state. id1 is highest pdgId of f, f'
110
if
( id1Abs == id2Abs && id1Abs == id3Abs ){
111
if
( std::abs(idRes)-4000000 < 10 ) widNow *= 4./3.;
112
else
widNow *= 2.;
113
}
114
}
115
}
116
117
return
;
118
}
119
120
// Locally stored properties and couplings.
121
double
m_lambda
,
m_coupF
,
m_coupFprime
,
m_coupFcol
,
m_sin2tW
,
m_cos2tW
;
122
123
};
124
}
M_PI
#define M_PI
Definition
ActiveFraction.h:14
resonanceExcitedCreator
Pythia8_UserResonance::UserResonanceFactory::Creator< Pythia8::ResonanceExcitedCI > resonanceExcitedCreator("ExcitedCI")
pow2
static const std::map< unsigned int, unsigned int > pow2
Definition
TriggerProcessor.cxx:23
UserResonanceFactory.h
Pythia8::ResonanceExcitedCI
Definition
ResonanceExcitedCI.cxx:21
Pythia8::ResonanceExcitedCI::calcPreFac
void calcPreFac(bool)
Definition
ResonanceExcitedCI.cxx:56
Pythia8::ResonanceExcitedCI::m_coupF
double m_coupF
Definition
ResonanceExcitedCI.cxx:121
Pythia8::ResonanceExcitedCI::ResonanceExcitedCI
ResonanceExcitedCI(int idResIn)
Definition
ResonanceExcitedCI.cxx:26
Pythia8::ResonanceExcitedCI::initConstants
void initConstants()
Definition
ResonanceExcitedCI.cxx:34
Pythia8::ResonanceExcitedCI::m_lambda
double m_lambda
Definition
ResonanceExcitedCI.cxx:121
Pythia8::ResonanceExcitedCI::m_coupFcol
double m_coupFcol
Definition
ResonanceExcitedCI.cxx:121
Pythia8::ResonanceExcitedCI::m_coupFprime
double m_coupFprime
Definition
ResonanceExcitedCI.cxx:121
Pythia8::ResonanceExcitedCI::calcWidth
void calcWidth(bool)
Definition
ResonanceExcitedCI.cxx:74
Pythia8::ResonanceExcitedCI::m_cos2tW
double m_cos2tW
Definition
ResonanceExcitedCI.cxx:121
Pythia8::ResonanceExcitedCI::m_sin2tW
double m_sin2tW
Definition
ResonanceExcitedCI.cxx:121
Pythia8_UserResonance::UserResonanceFactory::Creator
Definition
UserResonanceFactory.h:42
Pythia8
Author: James Monk (jmonk@cern.ch).
Definition
IPythia8Custom.h:10
Generated on
for ATLAS Offline Software by
1.17.0