ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/dasu/UltraFastSim/generateData.cc
(Generate patch)

Comparing UserCode/dasu/UltraFastSim/generateData.cc (file contents):
Revision 1.1 by dasu, Wed Feb 9 05:39:29 2011 UTC vs.
Revision 1.12 by mmhl, Thu Feb 24 20:17:12 2011 UTC

# Line 13 | Line 13 | using namespace std;
13   #include "Pythia.h"
14   using namespace Pythia8;
15  
16 + #include "TROOT.h"
17 + #include "TFile.h"
18 +
19   #include "UltraFastSim.h"
20 + #include "bbHAnalysis.h"
21 + //#include "ZHAnalysis.h"
22 + #include "bbHAnalysis.cc"
23 + //#include "ZHAnalysis.cc"
24  
25   int main(int argc, char **argv) {
26    // Generator. Process selection. LHC initialization. Histogram.
# Line 23 | Line 30 | int main(int argc, char **argv) {
30    int meanPileupEventCount = 0;
31    if(argc < 3 || argc > 5)
32      {
33 <      cerr << "Command syntax: " << argv[0] << " BBA[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
34 <      cerr << "or              " << argv[0] << " ZLL[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
35 <      cerr << "or              " << argv[0] << " TLN[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
36 <      cerr << "or              " << argv[0] << " WLN[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
33 >      cerr << "Command syntax: " << argv[0] << " ZHmmbb[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
34 >      cerr << "or              " << argv[0] << " ZHeebb[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
35 >      cerr << "or              " << argv[0] << " ZZmmbb[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
36 >      cerr << "or              " << argv[0] << " BBHmh[...] " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
37 >      cerr << "or              " << argv[0] << " BBAmh[...] " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
38 >      cerr << "or              " << argv[0] << " Zee[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
39 >      cerr << "or              " << argv[0] << " Zmm[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
40 >      cerr << "or              " << argv[0] << " Zeh[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
41 >      cerr << "or              " << argv[0] << " Zmh[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
42 >      cerr << "or              " << argv[0] << " Zhh[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
43 >      cerr << "or              " << argv[0] << " Wen[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
44 >      cerr << "or              " << argv[0] << " Wmn[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
45 >      cerr << "or              " << argv[0] << " Ten[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
46 >      cerr << "or              " << argv[0] << " Tmn[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
47 >      cerr << "In above e-electron, m-muon, h-hadronic tau. n-neutrino" << endl;
48        exit(1);
49      }
50    else {
51      nEvents = atoi(argv[2]);
52      if(argc >= 4) runNumber = atoi(argv[3]);
53      if(argc >= 5) meanPileupEventCount = atoi(argv[4]);
54 <    if(strncmp(argv[1], "ZLL", 3) == 0)
54 >    if(strncmp(argv[1], "Zee", 3) == 0)
55 >      {
56 >        pythia.readString("WeakSingleBoson:ffbar2gmZ = on");
57 >        pythia.readString("PhaseSpace:mHatMin = 60.");    
58 >        pythia.readString("PhaseSpace:mHatMax = -1");    
59 >        pythia.readString("23:onMode = 0");       // Z decays to electrons only
60 >        pythia.readString("23:onIfAny = 11");
61 >      }
62 >    else if(strncmp(argv[1], "Zmm", 3) == 0)
63        {
64          pythia.readString("WeakSingleBoson:ffbar2gmZ = on");
65          pythia.readString("PhaseSpace:mHatMin = 60.");    
66          pythia.readString("PhaseSpace:mHatMax = -1");    
67 <        pythia.readString("23:onMode = 0");       // Z decays to leptons only
68 <        pythia.readString("23:onIfAny = 11 13 15");
43 <        pythia.readString("15:onMode = 2");       // tau- decays to electrons and muons - second tau decays in all modes
44 <        pythia.readString("15:onIfAny = 11 13");
67 >        pythia.readString("23:onMode = 0");       // Z decays to muons only
68 >        pythia.readString("23:onIfAny = 13");
69        }
70 <    else if(strncmp(argv[1], "WLN", 3) == 0)
70 >    else if(strncmp(argv[1], "Zeh", 3) == 0)
71 >      {
72 >        pythia.readString("WeakSingleBoson:ffbar2gmZ = on");
73 >        pythia.readString("PhaseSpace:mHatMin = 60.");    
74 >        pythia.readString("PhaseSpace:mHatMax = -1");    
75 >        pythia.readString("23:onMode = 0");       // Z decays to taus only
76 >        pythia.readString("23:onIfAny = 15");
77 >        pythia.readString("15:onMode = 2");       // tau- decays to electrons - second tau decays in all modes
78 >        pythia.readString("15:onIfAny = 11");
79 >      }
80 >    else if(strncmp(argv[1], "Zmh", 3) == 0)
81 >      {
82 >        pythia.readString("WeakSingleBoson:ffbar2gmZ = on");
83 >        pythia.readString("PhaseSpace:mHatMin = 60.");    
84 >        pythia.readString("PhaseSpace:mHatMax = -1");    
85 >        pythia.readString("23:onMode = 0");       // Z decays to taus only
86 >        pythia.readString("23:onIfAny = 15");
87 >        pythia.readString("15:onMode = 2");       // tau- decays to muons - second tau decays in all modes
88 >        pythia.readString("15:onIfAny = 13");
89 >      }
90 >    else if(strncmp(argv[1], "Zhh", 3) == 0)
91 >      {
92 >        pythia.readString("WeakSingleBoson:ffbar2gmZ = on");
93 >        pythia.readString("PhaseSpace:mHatMin = 60.");    
94 >        pythia.readString("PhaseSpace:mHatMax = -1");    
95 >        pythia.readString("23:onMode = 0");       // Z decays to taus only
96 >        pythia.readString("23:onIfAny = 15");
97 >      }
98 >    else if(strncmp(argv[1], "Wen", 3) == 0)
99        {
100          pythia.readString("WeakSingleBoson:ffbar2W = on");
101 <        pythia.readString("24:onMode = 0");       // W decays to light leptons only
102 <        pythia.readString("24:onIfAny = 11 13");
101 >        pythia.readString("24:onMode = 0");       // W decays to electron
102 >        pythia.readString("24:onIfAny = 11");
103        }
104 <    else if(strncmp(argv[1], "TLN", 3) == 0)
104 >    else if(strncmp(argv[1], "Wmn", 3) == 0)
105 >      {
106 >        pythia.readString("WeakSingleBoson:ffbar2W = on");
107 >        pythia.readString("24:onMode = 0");       // W decays to muon
108 >        pythia.readString("24:onIfAny = 13");
109 >      }
110 >    else if(strncmp(argv[1], "Ten", 3) == 0)
111 >      {
112 >        pythia.readString("Top:all = on");
113 >        pythia.readString("24:onMode = 2");       // W+ decays to electron
114 >        pythia.readString("24:onIfAny = 11");
115 >      }
116 >    else if(strncmp(argv[1], "Tmn", 3) == 0)
117        {
118          pythia.readString("Top:all = on");
119 <        pythia.readString("24:onMode = 2");       // W+ decays to light leptons only
120 <        pythia.readString("24:onIfAny = 11 13");
119 >        pythia.readString("24:onMode = 2");       // W+ decays to muon
120 >        pythia.readString("24:onIfAny = 13");
121 >      }
122 >    else if(strncmp(argv[1], "ZHmmbb", 6) == 0)
123 >      {
124 >        pythia.readString("HiggsSM:ffbar2HZ = on");
125 >        pythia.readString("25:m0 = 120");
126 >        pythia.readString("25:onMode = 0");      // Higgs decays to bbBar only
127 >        pythia.readString("25:onIfAny = 5");
128 >        pythia.readString("23:onMode = 0");      // Z decays to mu+,mu- only (for trigger)
129 >        pythia.readString("23:onIfAny = 13");
130        }
131 <    else if(strncmp(argv[1], "BBA", 3) == 0)
131 >    else if(strncmp(argv[1], "ZHeebb", 6) == 0)
132 >      {
133 >        pythia.readString("HiggsSM:ffbar2HZ = on");
134 >        pythia.readString("25:m0 = 120");
135 >        pythia.readString("25:onMode = 0");      // Higgs decays to bbBar only
136 >        pythia.readString("25:onIfAny = 5");
137 >        pythia.readString("23:onMode = 0");      // Z decays to e+,e- only (for trigger)
138 >        pythia.readString("23:onIfAny = 11");
139 >      }
140 >    else if(strncmp(argv[1], "BB", 2) == 0)
141        {
142          pythia.readString("Higgs:useBSM = on");
143 <        pythia.readString("HiggsBSM:gg2A3bbbar = on");
144 <        pythia.readString("36:onMode = 0");      // A0(H_3) decays only to tau-pairs
145 <        pythia.readString("36:onIfAny = 15");
143 >        pythia.readString("25:m0 = 129");
144 >        pythia.readString("35:m0 = 499.7");
145 >        pythia.readString("36:m0 = 500");
146 >        pythia.readString("37:m0 = 506");
147 >        pythia.readString("HiggsHchg:tanBeta = 30");
148 >        if(strncmp(argv[1], "BBH", 3) == 0) {
149 >          pythia.readString("HiggsBSM:gg2H2bbbar = on");
150 >          pythia.readString("35:onMode = 0");      // H2(H_2) decays only to tau-pairs
151 >          pythia.readString("35:onIfAny = 15");
152 >        }
153 >        else {
154 >          pythia.readString("HiggsBSM:gg2A3bbbar = on");
155 >          pythia.readString("36:onMode = 0");      // A0(H_3) decays only to tau-pairs
156 >          pythia.readString("36:onIfAny = 15");
157 >        }
158 >        if(strncmp(argv[1], "BBHmh", 5) == 0 ||
159 >           strncmp(argv[1], "BBAmh", 5) == 0) {
160 >          pythia.readString("15:onMode = 2");       // tau- decays to muons - second tau decays in all modes
161 >          pythia.readString("15:onIfAny = 13");
162 >        }
163        }
164 +     else if(strncmp(argv[1], "ZZmmbb", 6) == 0)
165 +       {
166 +         pythia.readString("WeakDoubleBoson:ffbar2gmZgmZ = on");
167 +         pythia.readString("23:onMode = 0");
168 +         pythia.readString("23:onIfAny = 5 13");   // Let the Z decay to bQuarks or muons
169 +       }
170      else
171        {
172          cerr << "Unknown process type " << argv[1] << " - aborting" << endl;
# Line 69 | Line 174 | int main(int argc, char **argv) {
174        }
175    }
176  
177 +  string name(argv[1]);
178 +  name += ".root";
179 +  TFile *outFile = TFile::Open(name.c_str(), "recreate");
180 +
181    // Initialize pythia
182  
183    pythia.init( 2212, 2212, 14000.);
# Line 86 | Line 195 | int main(int argc, char **argv) {
195    // Ultra Fast Simulator
196  
197    UltraFastSim ufs(rndmPtr);
198 +  bbHAnalysis bbH(outFile, &pythia, &ufs, true);
199 +  //ZHAnalysis ZH; // outFile, &pythia, &ufs, true);
200 +  //ZH.BookTree();
201  
202    // Begin event loop
203    for (int iEvent = 0; iEvent < nEvents; ) {
# Line 93 | Line 205 | int main(int argc, char **argv) {
205      // Generate event. Skip if error. List first one.
206      if (!pythia.next()) continue;
207  
208 +    if(iEvent < 10) pythia.event.list();
209 +
210      // Add pileup
211  
212      int pileupEventCount = 0;
213      if(meanPileupEventCount > 0) pileupEventCount = meanPileupEventCount; // * rmdmPtr->pois(); (not available yet)
214      for (int puEvent = 0; puEvent < pileupEventCount; ) {
215        if(!pileupPythia.next()) continue;
216 +      double vx = rndmPtr->gauss()*2.; // Mean beam spread is 2 mm in x-y and 75 mm in z
217 +      double vy = rndmPtr->gauss()*2.;
218 +      double vz = rndmPtr->gauss()*75.;
219        for(int i = 0; i < pileupPythia.event.size(); i++) {
220          Particle& particle = pileupPythia.event[i];
221 +        particle.xProd(vx+particle.xProd());
222 +        particle.yProd(vy+particle.yProd());
223 +        particle.zProd(vz+particle.zProd());
224          if(particle.status() > 0) {
225            if(particle.isVisible()) {
226              if(particle.pT() > 0.5) {
# Line 120 | Line 240 | int main(int argc, char **argv) {
240          exit(1);
241        }
242  
243 +    // Run bbHAnalysis
244 +
245 +    if(!bbH.run())
246 +      {
247 +        cerr << "bbH Analysis failed - aborting" << endl;
248 +        exit(2);
249 +      }
250 +
251 +    // Run ZHAnalysis
252 +
253 +    /* if(!ZH.Run(&ufs))
254 +      {
255 +        cerr << "ZH Analysis failed - aborting" << endl;
256 +        exit(3);
257 +      }
258 +    */
259      // End of event loop. Statistics. Histogram. Done.
260  
261      if(!(iEvent % 100)) cout << "Processed event " << iEvent << endl;
# Line 132 | Line 268 | int main(int argc, char **argv) {
268    pythia.statistics();
269    pileupPythia.statistics();
270  
271 +  bbH.end();
272 +
273 +  outFile->cd();
274 +  outFile->Write();
275 +  outFile->Close();
276 +
277    return 0;
278  
279   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines