]>
Commit | Line | Data |
---|---|---|
c6b60c38 | 1 | // main26.cc 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. | |
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 | } |