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.
6 // Header file for compositiness-process differential cross sections.
7 // Contains classes derived from SigmaProcess via Sigma(1/2)Process.
9 #ifndef Pythia8_SigmaCompositeness_H
10 #define Pythia8_SigmaCompositeness_H
12 #include "SigmaProcess.h"
16 //==========================================================================
18 // A derived class for q g -> q^* (excited quark state).
20 class Sigma1qg2qStar : public Sigma1Process {
25 Sigma1qg2qStar(int idqIn) : idq(idqIn) {}
27 // Initialize process.
28 virtual void initProc();
30 // Calculate flavour-independent parts of cross section.
31 virtual void sigmaKin();
33 // Evaluate sigmaHat(sHat).
34 virtual double sigmaHat();
36 // Select flavour, colour and anticolour.
37 virtual void setIdColAcol();
39 // Evaluate weight for q* decay angles (else inactive).
40 virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
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;}
50 // Parameters set at initialization or for current kinematics.
51 int idq, idRes, codeSave;
53 double mRes, GammaRes, m2Res, GamMRat, Lambda, coupFcol, widthIn, sigBW;
55 // Pointer to properties of the particle species, to access decay channels.
56 ParticleDataEntry* qStarPtr;
60 //==========================================================================
62 // A derived class for l gamma -> l^* (excited lepton state).
64 class Sigma1lgm2lStar : public Sigma1Process {
69 Sigma1lgm2lStar(int idlIn) : idl(idlIn) {}
71 // Initialize process.
72 virtual void initProc();
74 // Calculate flavour-independent parts of cross section.
75 virtual void sigmaKin();
77 // Evaluate sigmaHat(sHat).
78 virtual double sigmaHat();
80 // Select flavour, colour and anticolour.
81 virtual void setIdColAcol();
83 // Evaluate weight for l* decay angles (else inactive).
84 virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
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;}
94 // Parameters set at initialization or for current kinematics.
95 int idl, idRes, codeSave;
97 double mRes, GammaRes, m2Res, GamMRat, Lambda, coupChg, widthIn, sigBW;
99 // Pointer to properties of the particle species, to access decay channels.
100 ParticleDataEntry* qStarPtr;
104 //==========================================================================
106 // A derived class for q q' -> q^* q' (excited quark state).
108 class Sigma2qq2qStarq : public Sigma2Process {
113 Sigma2qq2qStarq(int idqIn) : idq(idqIn) {}
115 // Initialize process.
116 virtual void initProc();
118 // Calculate flavour-independent parts of cross section.
119 virtual void sigmaKin();
121 // Evaluate sigmaHat(sHat).
122 virtual double sigmaHat();
124 // Select flavour, colour and anticolour.
125 virtual void setIdColAcol();
127 // Evaluate weight for q* decay angles (else inactive).
128 virtual double weightDecay(Event& process, int iResBeg, int iResEnd);
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;}
138 // Parameters set at initialization or for current kinematics.
139 int idq, idRes, codeSave;
141 double Lambda, preFac, openFracPos, openFracNeg, sigmaA, sigmaB;
145 //==========================================================================
147 // A derived class for q qbar -> l^* lbar (excited lepton state).
149 class Sigma2qqbar2lStarlbar : public Sigma2Process {
154 Sigma2qqbar2lStarlbar(int idlIn) : idl(idlIn) {}
156 // Initialize process.
157 virtual void initProc();
159 // Calculate flavour-independent parts of cross section.
160 virtual void sigmaKin();
162 // Evaluate sigmaHat(sHat).
163 virtual double sigmaHat() {return sigma;}
165 // Select flavour, colour and anticolour.
166 virtual void setIdColAcol();
168 // Evaluate weight for l* decay angles (else inactive).
169 virtual double weightDecay(Event& process, int iResBeg, int iResEnd);
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;}
179 // Parameters set at initialization or for current kinematics.
180 int idl, idRes, codeSave;
182 double Lambda, preFac, openFracPos, openFracNeg, sigma;
186 //==========================================================================
188 // A derived class for q q -> q q (quark contact interactions).
189 // Based on, Sigma2qq2qq (QCD).
191 class Sigma2QCqq2qq : public Sigma2Process {
198 // Initialize process.
199 virtual void initProc();
201 // Calculate flavour-independent parts of cross section.
202 virtual void sigmaKin();
204 // Evaluate d(sigmaHat)/d(tHat).
205 virtual double sigmaHat();
207 // Select flavour, colour and anticolour.
208 virtual void setIdColAcol();
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";}
217 // Values stored for colour flow selection.
218 double sigT, sigU, sigTU, sigST, sigSum, sigQCSTU, sigQCUTS;
220 // Compositeness parameters.
222 int qCetaLL, qCetaRR, qCetaLR;
226 //==========================================================================
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'.
232 class Sigma2QCqqbar2qqbar : public Sigma2Process {
237 Sigma2QCqqbar2qqbar(){}
239 // Initialize process.
240 virtual void initProc();
242 // Calculate flavour-independent parts of cross section.
243 virtual void sigmaKin();
245 // Evaluate d(sigmaHat)/d(tHat).
246 virtual double sigmaHat() {return sigma;}
248 // Select flavour, colour and anticolour.
249 virtual void setIdColAcol();
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";}
258 // Number of outgoing quark flavours to be considered, given that
259 // matrix elements are calculated in the massless approximation.
262 // Values stored for colour flow selection.
264 double mNew, m2New, sigS, sigma;
266 // Compositeness parameters.
268 int qCetaLL, qCetaRR, qCetaLR;
272 //==========================================================================
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^-
278 class Sigma2QCffbar2llbar : public Sigma2Process {
282 // Constructor: bool Graviton = true, to use LED graviton settings.
283 Sigma2QCffbar2llbar (int idIn, int codeIn) : idNew(idIn), codeNew(codeIn) {}
285 // Initialize process.
286 virtual void initProc();
288 // Calculate flavour-independent parts of cross section;
289 // first step when inflavours unknown.
290 virtual void sigmaKin();
292 // Evaluate sigmaHat(sHat); second step for given inflavours.
293 virtual double sigmaHat();
295 // Select flavour, colour and anticolour.
296 virtual void setIdColAcol();
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;}
309 double qCmNew, qCmNew2, qCmZ, qCmZ2, qCGZ, qCGZ2, sigma0;
311 // Compositeness parameters.
313 int qCetaLL, qCetaRR, qCetaLR;
314 double qCPropGm, qCrePropZ, qCimPropZ;
318 //==========================================================================
320 } // end namespace Pythia8
322 #endif // Pythia8_SigmaCompositeness_H