]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PYTHIA8/pythia8175/examples/main26.cc
Update to 8.175
[u/mrichter/AliRoot.git] / PYTHIA8 / pythia8175 / examples / main26.cc
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 }