StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
main26.cc
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 }