1 | // main26.cc is a part of the PYTHIA event generator. |
---|
2 | // Copyright (C) 2012 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 | // This is a test program for the extra dimensions processes. |
---|
7 | // Author: Stefan Ask (Stefan DOT Ask AT cern DOT ch) |
---|
8 | // Documentation: S. Ask et al., arXiv:0809.4750 and arXiv:0912.4233 |
---|
9 | |
---|
10 | #include "Pythia.h" |
---|
11 | |
---|
12 | using namespace Pythia8; |
---|
13 | |
---|
14 | // The main program. |
---|
15 | int main() { |
---|
16 | |
---|
17 | // Test cases |
---|
18 | // 1 = Jet + G (real G emission) |
---|
19 | // 2 = Jet + U (real U emission) |
---|
20 | // 3 = Z + G (real G emission) |
---|
21 | // 4 = Z + U (real U emission) |
---|
22 | // 5 = gamma gamma (LED G* exchange) |
---|
23 | // 6 = l lbar (LED U* exchange). |
---|
24 | // Note: charged leptons only! |
---|
25 | // 7 = Z_KK/gamma_KK (TEV ED resonance) |
---|
26 | // 8 = G* (RS resonance, SM on the TeV brane) |
---|
27 | // 9 = kk-gluon* (RS resonance) |
---|
28 | int nTest = 1; |
---|
29 | |
---|
30 | // Number of events to generate. Max number of errors. |
---|
31 | int nEvent = 1000; |
---|
32 | int nAbort = 50; |
---|
33 | |
---|
34 | // Pythia generator. |
---|
35 | Pythia pythia; |
---|
36 | |
---|
37 | // PYTHIA paramters: |
---|
38 | pythia.readString("PhaseSpace:showViolation = off"); |
---|
39 | |
---|
40 | // Test case parameters |
---|
41 | if (nTest == 1) { |
---|
42 | pythia.readString("ExtraDimensionsLED:monojet = on"); |
---|
43 | pythia.readString("ExtraDimensionsLED:n = 4"); |
---|
44 | pythia.readString("ExtraDimensionsLED:MD = 4000."); |
---|
45 | pythia.readString("ExtraDimensionsLED:CutOffmode = 3"); |
---|
46 | pythia.readString("ExtraDimensionsLED:t = 2"); |
---|
47 | pythia.readString("5000039:m0 = 2500."); |
---|
48 | pythia.readString("5000039:mWidth = 1500."); |
---|
49 | pythia.readString("5000039:mMin = 1."); |
---|
50 | pythia.readString("5000039:mMax = 13990."); |
---|
51 | pythia.readString("PhaseSpace:pTHatMin = 700."); |
---|
52 | } else if (nTest == 2){ |
---|
53 | pythia.readString("ExtraDimensionsUnpart:gg2Ug = off"); |
---|
54 | pythia.readString("ExtraDimensionsUnpart:qg2Uq = on"); |
---|
55 | pythia.readString("ExtraDimensionsUnpart:qqbar2Ug = on"); |
---|
56 | pythia.readString("ExtraDimensionsUnpart:spinU = 1"); |
---|
57 | pythia.readString("ExtraDimensionsUnpart:dU = 1.2"); |
---|
58 | pythia.readString("ExtraDimensionsUnpart:LambdaU = 1000"); |
---|
59 | pythia.readString("ExtraDimensionsUnpart:lambda = 1.0"); |
---|
60 | pythia.readString("ExtraDimensionsUnpart:CutOffmode = 0"); |
---|
61 | pythia.readString("5000039:m0 = 300."); |
---|
62 | pythia.readString("5000039:mWidth = 500."); |
---|
63 | pythia.readString("5000039:mMin = 1."); |
---|
64 | pythia.readString("5000039:mMax = 13990."); |
---|
65 | pythia.readString("PhaseSpace:pTHatMin = 700."); |
---|
66 | } else if (nTest == 3){ |
---|
67 | pythia.readString("ExtraDimensionsLED:ffbar2GZ = on"); |
---|
68 | pythia.readString("ExtraDimensionsLED:n = 6"); |
---|
69 | pythia.readString("ExtraDimensionsLED:MD = 2000."); |
---|
70 | pythia.readString("ExtraDimensionsLED:CutOffmode = 1"); |
---|
71 | pythia.readString("5000039:m0 = 3000."); |
---|
72 | pythia.readString("5000039:mWidth = 1500."); |
---|
73 | pythia.readString("5000039:mMin = 1."); |
---|
74 | pythia.readString("5000039:mMax = 13990."); |
---|
75 | pythia.readString("PhaseSpace:pTHatMin = 50."); |
---|
76 | } else if (nTest == 4){ |
---|
77 | pythia.readString("ExtraDimensionsUnpart:ffbar2UZ = on"); |
---|
78 | pythia.readString("ExtraDimensionsUnpart:spinU = 1"); |
---|
79 | pythia.readString("ExtraDimensionsUnpart:dU = 2.0"); |
---|
80 | pythia.readString("ExtraDimensionsUnpart:LambdaU = 1000"); |
---|
81 | pythia.readString("ExtraDimensionsUnpart:lambda = 1.000"); |
---|
82 | pythia.readString("ExtraDimensionsUnpart:CutOffmode = 0"); |
---|
83 | pythia.readString("5000039:m0 = 500."); |
---|
84 | pythia.readString("5000039:mWidth = 1000."); |
---|
85 | pythia.readString("5000039:mMin = 1."); |
---|
86 | pythia.readString("5000039:mMax = 13990."); |
---|
87 | pythia.readString("PhaseSpace:pTHatMin = 50."); |
---|
88 | } else if (nTest == 5){ |
---|
89 | pythia.readString("ExtraDimensionsLED:ffbar2gammagamma = on"); |
---|
90 | pythia.readString("ExtraDimensionsLED:gg2gammagamma = on"); |
---|
91 | pythia.readString("ExtraDimensionsLED:LambdaT = 3300."); |
---|
92 | pythia.readString("PhaseSpace:mHatMin = 800."); |
---|
93 | } else if (nTest == 6){ |
---|
94 | pythia.readString("ExtraDimensionsUnpart:ffbar2llbar = on"); |
---|
95 | pythia.readString("ExtraDimensionsUnpart:gg2llbar = off"); |
---|
96 | pythia.readString("ExtraDimensionsUnpart:spinU = 1"); |
---|
97 | pythia.readString("ExtraDimensionsUnpart:dU = 1.3"); |
---|
98 | pythia.readString("ExtraDimensionsUnpart:LambdaU = 1000"); |
---|
99 | pythia.readString("ExtraDimensionsUnpart:lambda = 1.0"); |
---|
100 | pythia.readString("ExtraDimensionsUnpart:gXX = 0"); |
---|
101 | pythia.readString("ExtraDimensionsUnpart:gXY = 0"); |
---|
102 | pythia.readString("PhaseSpace:mHatMin = 300."); |
---|
103 | } else if (nTest == 7){ |
---|
104 | pythia.readString("ExtraDimensionsTEV:ffbar2mu+mu- = on"); |
---|
105 | pythia.readString("ExtraDimensionsTEV:gmZmode = 3"); |
---|
106 | pythia.readString("ExtraDimensionsTEV:nMax = 100"); |
---|
107 | pythia.readString("ExtraDimensionsTEV:mStar = 4000"); |
---|
108 | pythia.readString("PhaseSpace:mHatMin = 1000"); |
---|
109 | pythia.readString("PhaseSpace:mHatMax = 6000"); |
---|
110 | pythia.readString("5000023:isResonance = false"); |
---|
111 | } else if (nTest == 8){ |
---|
112 | pythia.readString("ExtraDimensionsG*:all = on"); |
---|
113 | } else if (nTest == 9){ |
---|
114 | pythia.readString("ExtraDimensionsG*:qqbar2KKgluon* = on"); |
---|
115 | pythia.readString("ExtraDimensionsG*:KKintMode = 2"); |
---|
116 | pythia.readString("ExtraDimensionsG*:KKgqR = -0.2"); |
---|
117 | pythia.readString("ExtraDimensionsG*:KKgqL = -0.2"); |
---|
118 | pythia.readString("ExtraDimensionsG*:KKgbR = -0.2"); |
---|
119 | pythia.readString("ExtraDimensionsG*:KKgbL = 1.0"); |
---|
120 | pythia.readString("ExtraDimensionsG*:KKgtR = 5.0"); |
---|
121 | pythia.readString("ExtraDimensionsG*:KKgtL = 1.0"); |
---|
122 | pythia.readString("5100021:m0 = 2000"); |
---|
123 | } |
---|
124 | |
---|
125 | // Switch off sophisticated tau treatment: not yet matched to SUSY. |
---|
126 | pythia.readString("ParticleDecays:sophisticatedTau = 0"); |
---|
127 | |
---|
128 | // Initialization for LHC. |
---|
129 | pythia.readString("Beams:eCM = 14000."); |
---|
130 | pythia.init(); |
---|
131 | |
---|
132 | // Validation histograms |
---|
133 | Hist hEtjet("dN/dETjet: monojet check", 100, 0., 7000.); |
---|
134 | Hist hMass("dN/m: graviton mass spectrum", 100, 0., 7000.); |
---|
135 | |
---|
136 | // Begin event loop. |
---|
137 | int iAbort = 0; |
---|
138 | for (int iEvent = 0; iEvent < nEvent; ++iEvent) { |
---|
139 | |
---|
140 | // Generate events. Quit if many failures. |
---|
141 | if (!pythia.next()) { |
---|
142 | if (++iAbort < nAbort) continue; |
---|
143 | std::cout << " Event generation aborted prematurely, owing to error!\n"; |
---|
144 | break; |
---|
145 | } |
---|
146 | |
---|
147 | // Checked particle index |
---|
148 | int tmp_monojet = -1; |
---|
149 | |
---|
150 | // Particle loop |
---|
151 | for (int iPart = 0; iPart < pythia.event.size(); ++iPart) { |
---|
152 | |
---|
153 | // From hard process (inital = 21, interm.=22, final=23 state) |
---|
154 | if (pythia.event[iPart].statusAbs() == 22) { |
---|
155 | |
---|
156 | // Find Z_KK/gamma_KK or kk-gluon |
---|
157 | if( pythia.event[iPart].idAbs() == 5000023 |
---|
158 | || pythia.event[iPart].idAbs() == 5100021 |
---|
159 | || pythia.event[iPart].idAbs() == 5100039){ |
---|
160 | hMass.fill( pythia.event[iPart].m() ); |
---|
161 | } |
---|
162 | |
---|
163 | } else if ( pythia.event[iPart].statusAbs() == 23 ) { |
---|
164 | |
---|
165 | // Find graviton/unparticle |
---|
166 | if( pythia.event[iPart].idAbs() == 5000039){ |
---|
167 | hMass.fill( pythia.event[iPart].m() ); |
---|
168 | } |
---|
169 | |
---|
170 | // Find mono-jets |
---|
171 | if (nTest == 1 || nTest == 2) { |
---|
172 | if ( pythia.event[iPart].idAbs() <= 6 |
---|
173 | || pythia.event[iPart].idAbs() == 21 ){ |
---|
174 | if (tmp_monojet >= 0) { |
---|
175 | std::cout << "More than one (hard process) mono-jet ! \n"; |
---|
176 | } else { |
---|
177 | tmp_monojet = iPart; |
---|
178 | } |
---|
179 | } |
---|
180 | } |
---|
181 | |
---|
182 | } |
---|
183 | } |
---|
184 | |
---|
185 | // Validation mono-jet wrt G.Giudice et al. paper [hep-ph/9811291v2] |
---|
186 | if (tmp_monojet >= 0) { |
---|
187 | double tmp_eta = pythia.event[tmp_monojet].eta(); |
---|
188 | double tmp_et = pythia.event[tmp_monojet].eT(); |
---|
189 | double tmp_et_cut = 1000; |
---|
190 | if ( tmp_et >= tmp_et_cut && abs(tmp_eta) < 3 ) { |
---|
191 | hEtjet.fill( fabs(tmp_et) ); |
---|
192 | } |
---|
193 | } |
---|
194 | |
---|
195 | } |
---|
196 | |
---|
197 | // Final statistics. |
---|
198 | pythia.stat(); |
---|
199 | cout << hMass << hEtjet; |
---|
200 | |
---|
201 | return 0; |
---|
202 | } |
---|