]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PYTHIA8/pythia8175/include/SigmaCompositeness.h
Update to 8.175
[u/mrichter/AliRoot.git] / PYTHIA8 / pythia8175 / include / SigmaCompositeness.h
1 // SigmaCompositeness.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2013 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 "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