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.
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 -> q^* (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 // 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;}
135 // Parameters set at initialization or for current kinematics.
136 int idq, idRes, codeSave;
138 double Lambda, preFac, openFracPos, openFracNeg, sigmaA, sigmaB;
142 //==========================================================================
144 // A derived class for q qbar -> l^* lbar (excited lepton state).
146 class Sigma2qqbar2lStarlbar : public Sigma2Process {
151 Sigma2qqbar2lStarlbar(int idlIn) : idl(idlIn) {}
153 // Initialize process.
154 virtual void initProc();
156 // Calculate flavour-independent parts of cross section.
157 virtual void sigmaKin();
159 // Evaluate sigmaHat(sHat).
160 virtual double sigmaHat() {return sigma;}
162 // Select flavour, colour and anticolour.
163 virtual void setIdColAcol();
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;}
173 // Parameters set at initialization or for current kinematics.
174 int idl, idRes, codeSave;
176 double Lambda, preFac, openFracPos, openFracNeg, sigma;
180 //==========================================================================
182 // A derived class for q q -> q q (quark contact interactions).
183 // Based on, Sigma2qq2qq (QCD).
185 class Sigma2QCqq2qq : public Sigma2Process {
192 // Initialize process.
193 virtual void initProc();
195 // Calculate flavour-independent parts of cross section.
196 virtual void sigmaKin();
198 // Evaluate d(sigmaHat)/d(tHat).
199 virtual double sigmaHat();
201 // Select flavour, colour and anticolour.
202 virtual void setIdColAcol();
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";}
211 // Values stored for colour flow selection.
212 double sigT, sigU, sigTU, sigST, sigSum, sigQCSTU, sigQCUTS;
214 // Compositeness parameters.
216 int m_etaLL, m_etaRR, m_etaLR;
220 //==========================================================================
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'.
226 class Sigma2QCqqbar2qqbar : public Sigma2Process {
231 Sigma2QCqqbar2qqbar(){}
233 // Initialize process.
234 virtual void initProc();
236 // Calculate flavour-independent parts of cross section.
237 virtual void sigmaKin();
239 // Evaluate d(sigmaHat)/d(tHat).
240 virtual double sigmaHat() {return sigma;}
242 // Select flavour, colour and anticolour.
243 virtual void setIdColAcol();
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";}
252 // Number of outgoing quark flavours to be considered, given that
253 // matrix elements are calculated in the massless approximation.
256 // Values stored for colour flow selection.
258 double mNew, m2New, sigS, sigma;
260 // Compositeness parameters.
262 int m_etaLL, m_etaRR, m_etaLR;
266 //==========================================================================
268 } // end namespace Pythia8
270 #endif // Pythia8_SigmaCompositeness_H