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), idRes(0), codeSave(0),
27 mRes(0), GammaRes(0), m2Res(0), GamMRat(0), Lambda(0), coupFcol(0), widthIn(0), sigBW(0),
30 // Initialize process.
31 virtual void initProc();
33 // Calculate flavour-independent parts of cross section.
34 virtual void sigmaKin();
36 // Evaluate sigmaHat(sHat).
37 virtual double sigmaHat();
39 // Select flavour, colour and anticolour.
40 virtual void setIdColAcol();
42 // Evaluate weight for q* decay angles (else inactive).
43 virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
45 // Info on the subprocess.
46 virtual string name() const {return nameSave;}
47 virtual int code() const {return codeSave;}
48 virtual string inFlux() const {return "qg";}
49 virtual int resonanceA() const {return idRes;}
53 // Parameters set at initialization or for current kinematics.
54 int idq, idRes, codeSave;
56 double mRes, GammaRes, m2Res, GamMRat, Lambda, coupFcol, widthIn, sigBW;
58 // Pointer to properties of the particle species, to access decay channels.
59 ParticleDataEntry* qStarPtr;
63 //==========================================================================
65 // A derived class for l gamma -> l^* (excited lepton state).
67 class Sigma1lgm2lStar : public Sigma1Process {
72 Sigma1lgm2lStar(int idlIn) : idl(idlIn), idRes(0), codeSave(0),
74 mRes(0), GammaRes(0), m2Res(0), GamMRat(0), Lambda(0), coupChg(0), widthIn(0), sigBW(0),
77 // Initialize process.
78 virtual void initProc();
80 // Calculate flavour-independent parts of cross section.
81 virtual void sigmaKin();
83 // Evaluate sigmaHat(sHat).
84 virtual double sigmaHat();
86 // Select flavour, colour and anticolour.
87 virtual void setIdColAcol();
89 // Evaluate weight for l* decay angles (else inactive).
90 virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
92 // Info on the subprocess.
93 virtual string name() const {return nameSave;}
94 virtual int code() const {return codeSave;}
95 virtual string inFlux() const {return "fgm";}
96 virtual int resonanceA() const {return idRes;}
100 // Parameters set at initialization or for current kinematics.
101 int idl, idRes, codeSave;
103 double mRes, GammaRes, m2Res, GamMRat, Lambda, coupChg, widthIn, sigBW;
105 // Pointer to properties of the particle species, to access decay channels.
106 ParticleDataEntry* qStarPtr;
110 //==========================================================================
112 // A derived class for q q' -> q^* q' (excited quark state).
114 class Sigma2qq2qStarq : public Sigma2Process {
119 Sigma2qq2qStarq(int idqIn) : idq(idqIn), idRes(0), codeSave(0),
121 Lambda(0), preFac(0), openFracPos(0), openFracNeg(0), sigmaA(0), sigmaB(0) {}
123 // Initialize process.
124 virtual void initProc();
126 // Calculate flavour-independent parts of cross section.
127 virtual void sigmaKin();
129 // Evaluate sigmaHat(sHat).
130 virtual double sigmaHat();
132 // Select flavour, colour and anticolour.
133 virtual void setIdColAcol();
135 // Evaluate weight for q* decay angles (else inactive).
136 virtual double weightDecay(Event& process, int iResBeg, int iResEnd);
138 // Info on the subprocess.
139 virtual string name() const {return nameSave;}
140 virtual int code() const {return codeSave;}
141 virtual string inFlux() const {return "qq";}
142 virtual int id3Mass() const {return idRes;}
146 // Parameters set at initialization or for current kinematics.
147 int idq, idRes, codeSave;
149 double Lambda, preFac, openFracPos, openFracNeg, sigmaA, sigmaB;
153 //==========================================================================
155 // A derived class for q qbar -> l^* lbar (excited lepton state).
157 class Sigma2qqbar2lStarlbar : public Sigma2Process {
162 Sigma2qqbar2lStarlbar(int idlIn) : idl(idlIn), idRes(0), codeSave(0),
164 Lambda(0), preFac(0), openFracPos(0), openFracNeg(0), sigma(0) {}
166 // Initialize process.
167 virtual void initProc();
169 // Calculate flavour-independent parts of cross section.
170 virtual void sigmaKin();
172 // Evaluate sigmaHat(sHat).
173 virtual double sigmaHat() {return sigma;}
175 // Select flavour, colour and anticolour.
176 virtual void setIdColAcol();
178 // Evaluate weight for l* decay angles (else inactive).
179 virtual double weightDecay(Event& process, int iResBeg, int iResEnd);
181 // Info on the subprocess.
182 virtual string name() const {return nameSave;}
183 virtual int code() const {return codeSave;}
184 virtual string inFlux() const {return "qqbarSame";}
185 virtual int id3Mass() const {return idRes;}
189 // Parameters set at initialization or for current kinematics.
190 int idl, idRes, codeSave;
192 double Lambda, preFac, openFracPos, openFracNeg, sigma;
196 //==========================================================================
198 // A derived class for q q -> q q (quark contact interactions).
199 // Based on, Sigma2qq2qq (QCD).
201 class Sigma2QCqq2qq : public Sigma2Process {
206 Sigma2QCqq2qq() : sigT(0), sigU(0), sigTU(0), sigST(0), sigSum(0), sigQCSTU(0), sigQCUTS(0),
208 qCetaLL(0), qCetaRR(0), qCetaLR(0) {}
210 // Initialize process.
211 virtual void initProc();
213 // Calculate flavour-independent parts of cross section.
214 virtual void sigmaKin();
216 // Evaluate d(sigmaHat)/d(tHat).
217 virtual double sigmaHat();
219 // Select flavour, colour and anticolour.
220 virtual void setIdColAcol();
222 // Info on the subprocess.
223 virtual string name() const {return "q q(bar)' -> (QC) -> q q(bar)'";}
224 virtual int code() const {return 4201;}
225 virtual string inFlux() const {return "qq";}
229 // Values stored for colour flow selection.
230 double sigT, sigU, sigTU, sigST, sigSum, sigQCSTU, sigQCUTS;
232 // Compositeness parameters.
234 int qCetaLL, qCetaRR, qCetaLR;
238 //==========================================================================
240 // A derived class for q qbar -> q' qbar' (quark contact interactions).
241 // Based on, Sigma2qqbar2qqbarNew(QCD).
242 // Note: This process give the same contributions for q == q' and q != q'.
244 class Sigma2QCqqbar2qqbar : public Sigma2Process {
249 Sigma2QCqqbar2qqbar() : qCnQuarkNew(0),
251 mNew(0), m2New(0), sigS(0), sigma(0),
253 qCetaLL(0), qCetaRR(0), qCetaLR(0) {}
255 // Initialize process.
256 virtual void initProc();
258 // Calculate flavour-independent parts of cross section.
259 virtual void sigmaKin();
261 // Evaluate d(sigmaHat)/d(tHat).
262 virtual double sigmaHat() {return sigma;}
264 // Select flavour, colour and anticolour.
265 virtual void setIdColAcol();
267 // Info on the subprocess.
268 virtual string name() const {return "q qbar -> (QC) -> q' qbar' (uds)";}
269 virtual int code() const {return 4202;}
270 virtual string inFlux() const {return "qqbarSame";}
274 // Number of outgoing quark flavours to be considered, given that
275 // matrix elements are calculated in the massless approximation.
278 // Values stored for colour flow selection.
280 double mNew, m2New, sigS, sigma;
282 // Compositeness parameters.
284 int qCetaLL, qCetaRR, qCetaLR;
288 //==========================================================================
290 // A derived class for f fbar -> l lbar
291 // (contact interactions).
292 // Does not include t-channel contributions relevant for e^+e^- to e^+e^-
294 class Sigma2QCffbar2llbar : public Sigma2Process {
298 // Constructor: bool Graviton = true, to use LED graviton settings.
299 Sigma2QCffbar2llbar (int idIn, int codeIn) : nameNew(""), idNew(idIn), codeNew(codeIn),
300 qCmNew(0), qCmNew2(0), qCmZ(0), qCmZ2(0), qCGZ(0), qCGZ2(0), sigma0(0),
302 qCetaLL(0), qCetaRR(0), qCetaLR(0),
303 qCPropGm(0), qCrePropZ(0), qCimPropZ(0) {}
305 // Initialize process.
306 virtual void initProc();
308 // Calculate flavour-independent parts of cross section;
309 // first step when inflavours unknown.
310 virtual void sigmaKin();
312 // Evaluate sigmaHat(sHat); second step for given inflavours.
313 virtual double sigmaHat();
315 // Select flavour, colour and anticolour.
316 virtual void setIdColAcol();
318 // Info on the subprocess.
319 virtual string name() const {return nameNew;}
320 virtual int code() const {return codeNew;}
321 virtual string inFlux() const {return "ffbarSame";}
322 virtual bool isSChannel() const {return true;}
329 double qCmNew, qCmNew2, qCmZ, qCmZ2, qCGZ, qCGZ2, sigma0;
331 // Compositeness parameters.
333 int qCetaLL, qCetaRR, qCetaLR;
334 double qCPropGm, qCrePropZ, qCimPropZ;
338 //==========================================================================
340 } // end namespace Pythia8
342 #endif // Pythia8_SigmaCompositeness_H