1 | #include "SigmaSgluonPairs.h" |
---|
2 | |
---|
3 | Sigma2qqbar2sgluonsgluonBar::Sigma2qqbar2sgluonsgluonBar(){ |
---|
4 | std::cout << "ERROR YOU SHOULD NOT HAVE LANDED HERE: Sigma2qqbar2sgluonsgluonBar::Sigma2qqbar2sgluonsgluonBar() " << std::endl; |
---|
5 | } |
---|
6 | Sigma2qqbar2sgluonsgluonBar::Sigma2qqbar2sgluonsgluonBar(int idResonanceIn) : Sigma2SgluonSgluonBase(idResonanceIn) { |
---|
7 | } |
---|
8 | Sigma2qqbar2sgluonsgluonBar::~Sigma2qqbar2sgluonsgluonBar(){ |
---|
9 | } |
---|
10 | // Initialize process. |
---|
11 | |
---|
12 | void Sigma2qqbar2sgluonsgluonBar::initProc() { |
---|
13 | |
---|
14 | // Set pointer to particle properties and decay table. |
---|
15 | m_particlePtr = particleDataPtr->particleDataEntryPtr(m_idsgluon); |
---|
16 | |
---|
17 | } |
---|
18 | |
---|
19 | //-------------------------------------------------------------------------- |
---|
20 | |
---|
21 | double Sigma2qqbar2sgluonsgluonBar::sigmaHat() { |
---|
22 | return m_sigma; |
---|
23 | } |
---|
24 | // Info on the subprocess. |
---|
25 | string Sigma2qqbar2sgluonsgluonBar::name() const { |
---|
26 | return "q qbar -> sgluon sgluonBar"; |
---|
27 | } |
---|
28 | int Sigma2qqbar2sgluonsgluonBar::code() const { |
---|
29 | return 10400; |
---|
30 | } |
---|
31 | string Sigma2qqbar2sgluonsgluonBar::inFlux() const { |
---|
32 | return "qqbarSame"; |
---|
33 | } |
---|
34 | int Sigma2qqbar2sgluonsgluonBar::resonanceA() const { |
---|
35 | return m_idsgluon; |
---|
36 | } |
---|
37 | |
---|
38 | int Sigma2qqbar2sgluonsgluonBar::id3Mass() const { |
---|
39 | return abs(m_idsgluon); |
---|
40 | } |
---|
41 | int Sigma2qqbar2sgluonsgluonBar::id4Mass() const { |
---|
42 | return abs(m_idsgluonBar); |
---|
43 | } |
---|
44 | |
---|
45 | // Evaluate sigmaHat(sHat); first step when inflavours unknown. |
---|
46 | |
---|
47 | void 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 | |
---|
73 | double 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 | |
---|
89 | void 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 | |
---|
100 | Sigma2gg2sgluonsgluonBar::Sigma2gg2sgluonsgluonBar(){ |
---|
101 | std::cout << "ERROR YOU SHOULD NOT HAVE LANDED HERE: Sigma2gg2sgluonsgluonBar::Sigma2gg2sgluonsgluonBar() " << std::endl; |
---|
102 | } |
---|
103 | Sigma2gg2sgluonsgluonBar::Sigma2gg2sgluonsgluonBar(int idResonanceIn) : Sigma2SgluonSgluonBase(idResonanceIn) { |
---|
104 | } |
---|
105 | Sigma2gg2sgluonsgluonBar::~Sigma2gg2sgluonsgluonBar(){ |
---|
106 | } |
---|
107 | // Here we have gg -> sgluon sgluonBar |
---|
108 | double Sigma2gg2sgluonsgluonBar::sigmaHat() { |
---|
109 | return m_sigma; |
---|
110 | } |
---|
111 | string Sigma2gg2sgluonsgluonBar::name() const { |
---|
112 | return "g g -> sgluon sgluonBar"; |
---|
113 | } |
---|
114 | int Sigma2gg2sgluonsgluonBar::code() const { |
---|
115 | return 10401; |
---|
116 | } |
---|
117 | string Sigma2gg2sgluonsgluonBar::inFlux() const { |
---|
118 | return "gg"; |
---|
119 | } |
---|
120 | int Sigma2gg2sgluonsgluonBar::resonanceA() const { |
---|
121 | return m_idsgluon; |
---|
122 | } |
---|
123 | int Sigma2gg2sgluonsgluonBar::id3Mass() const { |
---|
124 | return abs(m_idsgluon); |
---|
125 | } |
---|
126 | int Sigma2gg2sgluonsgluonBar::id4Mass() const { |
---|
127 | return abs(m_idsgluonBar); |
---|
128 | } |
---|
129 | |
---|
130 | |
---|
131 | // Initialize process. |
---|
132 | |
---|
133 | void 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 | |
---|
144 | void 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 | |
---|
172 | double 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 | |
---|
203 | void 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 | |
---|