source: HiSusy/trunk/Pythia8Sgluon/SigmaSgluonPairs.cxx @ 9

Last change on this file since 9 was 9, checked in by spieker, 9 years ago

bugfix in cr factor

File size: 5.7 KB
Line 
1#include "SigmaSgluonPairs.h"
2
3Sigma2qqbar2sgluonsgluonBar::Sigma2qqbar2sgluonsgluonBar(){
4  std::cout << "ERROR YOU SHOULD NOT HAVE LANDED HERE:  Sigma2qqbar2sgluonsgluonBar::Sigma2qqbar2sgluonsgluonBar() " << std::endl;
5}
6Sigma2qqbar2sgluonsgluonBar::Sigma2qqbar2sgluonsgluonBar(int idResonanceIn) : Sigma2SgluonSgluonBase(idResonanceIn) {
7}
8Sigma2qqbar2sgluonsgluonBar::~Sigma2qqbar2sgluonsgluonBar(){
9}
10// Initialize process.
11 
12void Sigma2qqbar2sgluonsgluonBar::initProc() {
13
14  // Set pointer to particle properties and decay table.
15  m_particlePtr = particleDataPtr->particleDataEntryPtr(m_idsgluon);
16 
17} 
18
19//--------------------------------------------------------------------------
20
21double Sigma2qqbar2sgluonsgluonBar::sigmaHat() {
22  return m_sigma;
23}
24// Info on the subprocess.
25string Sigma2qqbar2sgluonsgluonBar::name()       const {
26  return "q qbar -> sgluon sgluonBar";
27}
28int    Sigma2qqbar2sgluonsgluonBar::code()       const {
29  return 10400;
30}
31string Sigma2qqbar2sgluonsgluonBar::inFlux()     const {
32  return "qqbarSame";
33}
34int    Sigma2qqbar2sgluonsgluonBar::resonanceA() const {
35  return m_idsgluon;
36}
37
38int Sigma2qqbar2sgluonsgluonBar::id3Mass() const {
39  return abs(m_idsgluon);
40}
41int Sigma2qqbar2sgluonsgluonBar::id4Mass() const {
42  return abs(m_idsgluonBar);
43}
44
45// Evaluate sigmaHat(sHat); first step when inflavours unknown.
46
47void Sigma2qqbar2sgluonsgluonBar::sigmaKin() { 
48
49  // here we calculate the cross section independent of flavour
50  m_sigma = 0.;
51
52  // check that sHat > Q2=4*mSgluon**2
53  double sgluonMass = m_particlePtr->m0();
54
55  if ( sH <= 4.*sgluonMass*sgluonMass ) {
56    return;
57  }
58
59  // convert tH to costheta
60  double ctp = 2*tH-2*sgluonMass*sgluonMass+sH;
61  ctp = ctp/(sqrtf(sH*(sH-4*sgluonMass*sgluonMass)));
62  if (fabs(ctp)>1.e0 ) return;
63
64  // Unit is GeV-2
65  m_sigma = dsigmadcostheta(ctp);
66
67  // translate from dsigma/dcostheta to dsigma/dtheta:
68  // dt = s/2 * sqrt(1-4m^2/s) * dcostheta
69  double factor = convFactordsigmadcostheta2dsigmadt(sH,sgluonMass);
70  m_sigma = m_sigma/factor;
71}
72
73double Sigma2qqbar2sgluonsgluonBar::dsigmadcostheta(double ctp) {
74 
75  double sgluonMass = m_particlePtr->m0();
76  double Q2     = sgluonMass*sgluonMass;
77  double alphaS = couplingsPtr->alphaS(Q2);
78
79  double beta=sqrtf(1.e0-4.e0*sgluonMass*sgluonMass/sH);
80
81  double crossSection = (4.*M_PI*alphaS*alphaS)/(9.*sH)*beta*beta*beta;
82  crossSection = crossSection*0.75e0*(1.e0-ctp*ctp);
83
84  return crossSection;
85}
86
87// Select identity, colour and anticolour.
88
89void Sigma2qqbar2sgluonsgluonBar::setIdColAcol() {
90
91  // Flavours trivial.
92  setId( id1, id2, m_idsgluon, m_idsgluonBar);
93
94  // Colour flow topologies. Swap when antiquarks.
95  setColAcol( 1, 0, 0, 2, 1, 3, 3, 2);
96  if (id1 < 0) swapColAcol();
97
98}
99
100Sigma2gg2sgluonsgluonBar::Sigma2gg2sgluonsgluonBar(){
101  std::cout << "ERROR YOU SHOULD NOT HAVE LANDED HERE: Sigma2gg2sgluonsgluonBar::Sigma2gg2sgluonsgluonBar() " << std::endl;
102}
103Sigma2gg2sgluonsgluonBar::Sigma2gg2sgluonsgluonBar(int idResonanceIn) : Sigma2SgluonSgluonBase(idResonanceIn) {
104}
105Sigma2gg2sgluonsgluonBar::~Sigma2gg2sgluonsgluonBar(){
106}
107// Here we have gg -> sgluon sgluonBar
108double Sigma2gg2sgluonsgluonBar::sigmaHat() {
109  return m_sigma;
110}
111string Sigma2gg2sgluonsgluonBar::name()       const {
112  return "g g    -> sgluon sgluonBar";
113}
114int Sigma2gg2sgluonsgluonBar::code()       const {
115  return 10401;
116}
117string Sigma2gg2sgluonsgluonBar::inFlux()     const {
118  return "gg";
119}
120int    Sigma2gg2sgluonsgluonBar::resonanceA() const {
121  return m_idsgluon;
122}
123int Sigma2gg2sgluonsgluonBar::id3Mass() const {
124  return abs(m_idsgluon);
125}
126int Sigma2gg2sgluonsgluonBar::id4Mass() const {
127  return abs(m_idsgluonBar);
128}
129
130
131// Initialize process.
132 
133void Sigma2gg2sgluonsgluonBar::initProc() {
134
135  // Set pointer to particle properties and decay table.
136  m_particlePtr = particleDataPtr->particleDataEntryPtr(m_idsgluon);
137 
138} 
139
140//--------------------------------------------------------------------------
141
142// Evaluate sigmaHat(sHat); first step when inflavours unknown.
143
144void Sigma2gg2sgluonsgluonBar::sigmaKin() { 
145
146  // here we calculate the cross section independent of flavour
147  m_sigma = 0.;
148
149  // check that sHat > Q2=4*mSgluon**2
150  double sgluonMass = m_particlePtr->m0();
151
152  if ( sH <= 4.*sgluonMass*sgluonMass ) {
153    return;
154  }
155
156  double ctp = 2*tH-2*sgluonMass*sgluonMass+sH;
157  ctp = ctp/(sqrtf(sH*(sH-4*sgluonMass*sgluonMass)));
158  if (fabs(ctp)>1.e0 ) return;
159
160  // unit is GeV-2
161  m_sigma = dsigmadcostheta(ctp);
162
163  // translate from dsigma/dcostheta to dsigma/dtheta:
164  // dt = s/2 * sqrt(1-4m^2/s) * dcostheta
165  double factor = convFactordsigmadcostheta2dsigmadt(sH,sgluonMass);
166  m_sigma = m_sigma/factor;
167
168}
169
170//--------------------------------------------------------------------------
171
172double Sigma2gg2sgluonsgluonBar::dsigmadcostheta(double ctp) {
173
174  // process gg -> sigma sigma differential cross section
175
176  double sgluonMass = m_particlePtr->m0();
177  double Q2 = sgluonMass*sgluonMass;
178
179  double alphaS = couplingsPtr->alphaS(Q2);
180             
181  double beta= sqrtf(1.e0-4.e0*sgluonMass*sgluonMass/sH);
182  double beta2 = beta*beta;
183 
184  double crossSection = M_PI*(alphaS*alphaS)*beta/(6.*sH)*(9./8.)*
185    (27.-17.*beta2 - 6.*(1.e0-beta2)*(3.e0+beta2)
186     /(2.e0*beta)*log((1.e0+beta)/(1.e0-beta)));     
187 
188  double ctp2 = ctp*ctp;
189  double stp4 = (1.e0-ctp2)*(1.e0-ctp2);
190 
191  double cr = 1.5e0*((1.e0-beta2)*(1.e0-beta2) + beta2*beta2*stp4)/
192    ((1.e0-beta2*ctp2)*(1.e0-beta2*ctp2)) * (3.e0+beta2*ctp2)/
193    ( 27.e0-17.e0*beta2-6.e0*(1.e0-beta2)*(3.e0+beta2)/
194      (2.e0*beta)*log((1.e0+beta)/(1.e0-beta)));
195
196  crossSection = crossSection*cr;
197
198  return crossSection;
199}
200
201// Select identity, colour and anticolour.
202
203void Sigma2gg2sgluonsgluonBar::setIdColAcol() {
204
205  // Flavours trivial.
206  setId( id1, id2, m_idsgluon, m_idsgluonBar);
207
208  // Colour flow topologies of 4 colour octets
209  setColAcol( 1, 2, 2, 3, 1, 4, 4, 3);
210
211}
212
Note: See TracBrowser for help on using the repository browser.