StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
SigmaCompositeness.h
1 // SigmaCompositeness.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2014 Torbjorn Sjostrand.
3 // PYTHIA is licenced under the GNU GPL version 2, see COPYING for details.
4 // Please respect the MCnet Guidelines, see GUIDELINES for details.
5 
6 // Header file for compositiness-process differential cross sections.
7 // Contains classes derived from SigmaProcess via Sigma(1/2)Process.
8 
9 #ifndef Pythia8_SigmaCompositeness_H
10 #define Pythia8_SigmaCompositeness_H
11 
12 #include "Pythia8/SigmaProcess.h"
13 
14 namespace Pythia8 {
15 
16 //==========================================================================
17 
18 // A derived class for q g -> q^* (excited quark state).
19 
20 class Sigma1qg2qStar : public Sigma1Process {
21 
22 public:
23 
24  // Constructor.
25  Sigma1qg2qStar(int idqIn) : idq(idqIn) {}
26 
27  // Initialize process.
28  virtual void initProc();
29 
30  // Calculate flavour-independent parts of cross section.
31  virtual void sigmaKin();
32 
33  // Evaluate sigmaHat(sHat).
34  virtual double sigmaHat();
35 
36  // Select flavour, colour and anticolour.
37  virtual void setIdColAcol();
38 
39  // Evaluate weight for q* decay angles (else inactive).
40  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
41 
42  // Info on the subprocess.
43  virtual string name() const {return nameSave;}
44  virtual int code() const {return codeSave;}
45  virtual string inFlux() const {return "qg";}
46  virtual int resonanceA() const {return idRes;}
47 
48 private:
49 
50  // Parameters set at initialization or for current kinematics.
51  int idq, idRes, codeSave;
52  string nameSave;
53  double mRes, GammaRes, m2Res, GamMRat, Lambda, coupFcol, widthIn, sigBW;
54 
55  // Pointer to properties of the particle species, to access decay channels.
56  ParticleDataEntry* qStarPtr;
57 
58 };
59 
60 //==========================================================================
61 
62 // A derived class for l gamma -> l^* (excited lepton state).
63 
64 class Sigma1lgm2lStar : public Sigma1Process {
65 
66 public:
67 
68  // Constructor.
69  Sigma1lgm2lStar(int idlIn) : idl(idlIn) {}
70 
71  // Initialize process.
72  virtual void initProc();
73 
74  // Calculate flavour-independent parts of cross section.
75  virtual void sigmaKin();
76 
77  // Evaluate sigmaHat(sHat).
78  virtual double sigmaHat();
79 
80  // Select flavour, colour and anticolour.
81  virtual void setIdColAcol();
82 
83  // Evaluate weight for l* decay angles (else inactive).
84  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
85 
86  // Info on the subprocess.
87  virtual string name() const {return nameSave;}
88  virtual int code() const {return codeSave;}
89  virtual string inFlux() const {return "fgm";}
90  virtual int resonanceA() const {return idRes;}
91 
92 private:
93 
94  // Parameters set at initialization or for current kinematics.
95  int idl, idRes, codeSave;
96  string nameSave;
97  double mRes, GammaRes, m2Res, GamMRat, Lambda, coupChg, widthIn, sigBW;
98 
99  // Pointer to properties of the particle species, to access decay channels.
100  ParticleDataEntry* qStarPtr;
101 
102 };
103 
104 //==========================================================================
105 
106 // A derived class for q q' -> q^* q' (excited quark state).
107 
108 class Sigma2qq2qStarq : public Sigma2Process {
109 
110 public:
111 
112  // Constructor.
113  Sigma2qq2qStarq(int idqIn) : idq(idqIn) {}
114 
115  // Initialize process.
116  virtual void initProc();
117 
118  // Calculate flavour-independent parts of cross section.
119  virtual void sigmaKin();
120 
121  // Evaluate sigmaHat(sHat).
122  virtual double sigmaHat();
123 
124  // Select flavour, colour and anticolour.
125  virtual void setIdColAcol();
126 
127  // Evaluate weight for q* decay angles (else inactive).
128  virtual double weightDecay(Event& process, int iResBeg, int iResEnd);
129 
130  // Info on the subprocess.
131  virtual string name() const {return nameSave;}
132  virtual int code() const {return codeSave;}
133  virtual string inFlux() const {return "qq";}
134  virtual int id3Mass() const {return idRes;}
135 
136 private:
137 
138  // Parameters set at initialization or for current kinematics.
139  int idq, idRes, codeSave;
140  string nameSave;
141  double Lambda, preFac, openFracPos, openFracNeg, sigmaA, sigmaB;
142 
143 };
144 
145 //==========================================================================
146 
147 // A derived class for q qbar -> l^* lbar (excited lepton state).
148 
149 class Sigma2qqbar2lStarlbar : public Sigma2Process {
150 
151 public:
152 
153  // Constructor.
154  Sigma2qqbar2lStarlbar(int idlIn) : idl(idlIn) {}
155 
156  // Initialize process.
157  virtual void initProc();
158 
159  // Calculate flavour-independent parts of cross section.
160  virtual void sigmaKin();
161 
162  // Evaluate sigmaHat(sHat).
163  virtual double sigmaHat() {return sigma;}
164 
165  // Select flavour, colour and anticolour.
166  virtual void setIdColAcol();
167 
168  // Evaluate weight for l* decay angles (else inactive).
169  virtual double weightDecay(Event& process, int iResBeg, int iResEnd);
170 
171  // Info on the subprocess.
172  virtual string name() const {return nameSave;}
173  virtual int code() const {return codeSave;}
174  virtual string inFlux() const {return "qqbarSame";}
175  virtual int id3Mass() const {return idRes;}
176 
177 private:
178 
179  // Parameters set at initialization or for current kinematics.
180  int idl, idRes, codeSave;
181  string nameSave;
182  double Lambda, preFac, openFracPos, openFracNeg, sigma;
183 
184 };
185 
186 //==========================================================================
187 
188 // A derived class for q q -> q q (quark contact interactions).
189 // Based on, Sigma2qq2qq (QCD).
190 
191 class Sigma2QCqq2qq : public Sigma2Process {
192 
193 public:
194 
195  // Constructor.
196  Sigma2QCqq2qq(){}
197 
198  // Initialize process.
199  virtual void initProc();
200 
201  // Calculate flavour-independent parts of cross section.
202  virtual void sigmaKin();
203 
204  // Evaluate d(sigmaHat)/d(tHat).
205  virtual double sigmaHat();
206 
207  // Select flavour, colour and anticolour.
208  virtual void setIdColAcol();
209 
210  // Info on the subprocess.
211  virtual string name() const {return "q q(bar)' -> (QC) -> q q(bar)'";}
212  virtual int code() const {return 4201;}
213  virtual string inFlux() const {return "qq";}
214 
215  private:
216 
217  // Values stored for colour flow selection.
218  double sigT, sigU, sigTU, sigST, sigSum, sigQCSTU, sigQCUTS;
219 
220  // Compositeness parameters.
221  double qCLambda2;
222  int qCetaLL, qCetaRR, qCetaLR;
223 
224 };
225 
226 //==========================================================================
227 
228 // A derived class for q qbar -> q' qbar' (quark contact interactions).
229 // Based on, Sigma2qqbar2qqbarNew(QCD).
230 // Note: This process give the same contributions for q == q' and q != q'.
231 
232 class Sigma2QCqqbar2qqbar : public Sigma2Process {
233 
234 public:
235 
236  // Constructor.
237  Sigma2QCqqbar2qqbar(){}
238 
239  // Initialize process.
240  virtual void initProc();
241 
242  // Calculate flavour-independent parts of cross section.
243  virtual void sigmaKin();
244 
245  // Evaluate d(sigmaHat)/d(tHat).
246  virtual double sigmaHat() {return sigma;}
247 
248  // Select flavour, colour and anticolour.
249  virtual void setIdColAcol();
250 
251  // Info on the subprocess.
252  virtual string name() const {return "q qbar -> (QC) -> q' qbar' (uds)";}
253  virtual int code() const {return 4202;}
254  virtual string inFlux() const {return "qqbarSame";}
255 
256  private:
257 
258  // Number of outgoing quark flavours to be considered, given that
259  // matrix elements are calculated in the massless approximation.
260  int qCnQuarkNew;
261 
262  // Values stored for colour flow selection.
263  int idNew;
264  double mNew, m2New, sigS, sigma;
265 
266  // Compositeness parameters.
267  double qCLambda2;
268  int qCetaLL, qCetaRR, qCetaLR;
269 
270 };
271 
272 //==========================================================================
273 
274 // A derived class for f fbar -> l lbar
275 // (contact interactions).
276 // Does not include t-channel contributions relevant for e^+e^- to e^+e^-
277 
278 class Sigma2QCffbar2llbar : public Sigma2Process {
279 
280 public:
281 
282  // Constructor: bool Graviton = true, to use LED graviton settings.
283  Sigma2QCffbar2llbar (int idIn, int codeIn) : idNew(idIn), codeNew(codeIn) {}
284 
285  // Initialize process.
286  virtual void initProc();
287 
288  // Calculate flavour-independent parts of cross section;
289  // first step when inflavours unknown.
290  virtual void sigmaKin();
291 
292  // Evaluate sigmaHat(sHat); second step for given inflavours.
293  virtual double sigmaHat();
294 
295  // Select flavour, colour and anticolour.
296  virtual void setIdColAcol();
297 
298  // Info on the subprocess.
299  virtual string name() const {return nameNew;}
300  virtual int code() const {return codeNew;}
301  virtual string inFlux() const {return "ffbarSame";}
302  virtual bool isSChannel() const {return true;}
303 
304 private:
305 
306  // Process values.
307  string nameNew;
308  int idNew, codeNew;
309  double qCmNew, qCmNew2, qCmZ, qCmZ2, qCGZ, qCGZ2, sigma0;
310 
311  // Compositeness parameters.
312  double qCLambda2;
313  int qCetaLL, qCetaRR, qCetaLR;
314  double qCPropGm, qCrePropZ, qCimPropZ;
315 
316 };
317 
318 //==========================================================================
319 
320 } // end namespace Pythia8
321 
322 #endif // Pythia8_SigmaCompositeness_H
Definition: AgUStep.h:26