- Update to pythia8140
[u/mrichter/AliRoot.git] / PYTHIA8 / pythia8140 / include / SigmaCompositeness.h
1 // SigmaCompositeness.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2010 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 -> q^* (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   // Info on the subprocess.
128   virtual string name()       const {return nameSave;}
129   virtual int    code()       const {return codeSave;}
130   virtual string inFlux()     const {return "qq";}
131   virtual int    id3Mass()    const {return idRes;}
132
133 private:
134
135   // Parameters set at initialization or for current kinematics. 
136   int    idq, idRes, codeSave;
137   string nameSave;
138   double Lambda, preFac, openFracPos, openFracNeg, sigmaA, sigmaB;
139
140 };
141  
142 //==========================================================================
143
144 // A derived class for q qbar -> l^* lbar (excited lepton state).
145
146 class Sigma2qqbar2lStarlbar : public Sigma2Process {
147
148 public:
149
150   // Constructor.
151   Sigma2qqbar2lStarlbar(int idlIn) : idl(idlIn) {}
152
153   // Initialize process. 
154   virtual void initProc(); 
155
156   // Calculate flavour-independent parts of cross section.
157   virtual void sigmaKin();
158
159   // Evaluate sigmaHat(sHat). 
160   virtual double sigmaHat() {return sigma;}
161
162   // Select flavour, colour and anticolour.
163   virtual void setIdColAcol();
164
165   // Info on the subprocess.
166   virtual string name()       const {return nameSave;}
167   virtual int    code()       const {return codeSave;}
168   virtual string inFlux()     const {return "qqbarSame";}
169   virtual int    id3Mass()    const {return idRes;}
170
171 private:
172
173   // Parameters set at initialization or for current kinematics. 
174   int    idl, idRes, codeSave;
175   string nameSave;
176   double Lambda, preFac, openFracPos, openFracNeg, sigma;
177
178 };
179
180 //==========================================================================
181
182 // A derived class for q q -> q q (quark contact interactions).
183 // Based on, Sigma2qq2qq (QCD).
184
185 class Sigma2QCqq2qq : public Sigma2Process {
186
187 public:
188
189   // Constructor.
190   Sigma2QCqq2qq(){}
191
192   // Initialize process. 
193   virtual void initProc(); 
194
195   // Calculate flavour-independent parts of cross section.
196   virtual void sigmaKin();
197
198   // Evaluate d(sigmaHat)/d(tHat). 
199   virtual double sigmaHat();
200
201   // Select flavour, colour and anticolour.
202   virtual void setIdColAcol();
203
204   // Info on the subprocess.
205   virtual string name()   const {return "q q(bar)' -> (QC) -> q q(bar)'";}
206   virtual int    code()   const {return 4201;}
207   virtual string inFlux() const {return "qq";}
208
209  private:
210
211   // Values stored for colour flow selection.
212   double sigT, sigU, sigTU, sigST, sigSum, sigQCSTU, sigQCUTS;
213
214   // Compositeness parameters.
215   double m_Lambda2;
216   int    m_etaLL, m_etaRR, m_etaLR;
217
218 };
219
220 //==========================================================================
221
222 // A derived class for q qbar -> q' qbar' (quark contact interactions).
223 // Based on, Sigma2qqbar2qqbarNew(QCD). 
224 // Note: This process give the same contributions for q == q' and q != q'.
225
226 class Sigma2QCqqbar2qqbar : public Sigma2Process {
227
228 public:
229
230   // Constructor.
231   Sigma2QCqqbar2qqbar(){}
232
233   // Initialize process. 
234   virtual void initProc(); 
235
236   // Calculate flavour-independent parts of cross section.
237   virtual void sigmaKin();
238
239   // Evaluate d(sigmaHat)/d(tHat). 
240   virtual double sigmaHat() {return sigma;}
241
242   // Select flavour, colour and anticolour.
243   virtual void setIdColAcol();
244
245   // Info on the subprocess.
246   virtual string name()   const {return "q qbar -> (QC) -> q' qbar' (uds)";}
247   virtual int    code()   const {return 4202;}
248   virtual string inFlux() const {return "qqbarSame";}
249
250  private:
251
252   // Number of outgoing quark flavours to be considered, given that
253   // matrix elements are calculated in the massless approximation.
254   int    m_nQuarkNew;
255
256   // Values stored for colour flow selection.
257   int    idNew;
258   double mNew, m2New, sigS, sigma;
259
260   // Compositeness parameters.
261   double m_Lambda2;
262   int    m_etaLL, m_etaRR, m_etaLR;
263
264 };
265
266 //==========================================================================
267
268 } // end namespace Pythia8
269
270 #endif // Pythia8_SigmaCompositeness_H