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.2 by dasu, Wed Feb 9 07:20:36 2011 UTC vs.
Revision 1.10 by dasu, Fri Feb 18 05:06:02 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  
23   int main(int argc, char **argv) {
24    // Generator. Process selection. LHC initialization. Histogram.
# Line 23 | Line 28 | int main(int argc, char **argv) {
28    int meanPileupEventCount = 0;
29    if(argc < 3 || argc > 5)
30      {
31 <      cerr << "Command syntax: " << argv[0] << " BBA[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
32 <      cerr << "or              " << argv[0] << " ZLL[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
33 <      cerr << "or              " << argv[0] << " TLN[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
34 <      cerr << "or              " << argv[0] << " WLN[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
31 >      cerr << "Command syntax: " << argv[0] << " ZHmmbb[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
32 >      cerr << "or              " << argv[0] << " ZHeebb[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
33 >      cerr << "or              " << argv[0] << " ZZmmbb[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
34 >      cerr << "or              " << argv[0] << " BBHmh[...] " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
35 >      cerr << "or              " << argv[0] << " BBAmh[...] " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
36 >      cerr << "or              " << argv[0] << " Zee[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
37 >      cerr << "or              " << argv[0] << " Zmm[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
38 >      cerr << "or              " << argv[0] << " Zeh[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
39 >      cerr << "or              " << argv[0] << " Zmh[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
40 >      cerr << "or              " << argv[0] << " Zhh[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
41 >      cerr << "or              " << argv[0] << " Wen[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
42 >      cerr << "or              " << argv[0] << " Wmn[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
43 >      cerr << "or              " << argv[0] << " Ten[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
44 >      cerr << "or              " << argv[0] << " Tmn[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
45 >      cerr << "In above e-electron, m-muon, h-hadronic tau. n-neutrino" << endl;
46        exit(1);
47      }
48    else {
49      nEvents = atoi(argv[2]);
50      if(argc >= 4) runNumber = atoi(argv[3]);
51      if(argc >= 5) meanPileupEventCount = atoi(argv[4]);
52 <    if(strncmp(argv[1], "ZLL", 3) == 0)
52 >    if(strncmp(argv[1], "Zee", 3) == 0)
53 >      {
54 >        pythia.readString("WeakSingleBoson:ffbar2gmZ = on");
55 >        pythia.readString("PhaseSpace:mHatMin = 60.");    
56 >        pythia.readString("PhaseSpace:mHatMax = -1");    
57 >        pythia.readString("23:onMode = 0");       // Z decays to electrons only
58 >        pythia.readString("23:onIfAny = 11");
59 >      }
60 >    else if(strncmp(argv[1], "Zmm", 3) == 0)
61        {
62          pythia.readString("WeakSingleBoson:ffbar2gmZ = on");
63          pythia.readString("PhaseSpace:mHatMin = 60.");    
64          pythia.readString("PhaseSpace:mHatMax = -1");    
65 <        pythia.readString("23:onMode = 0");       // Z decays to leptons only
66 <        pythia.readString("23:onIfAny = 11 13 15");
67 <        pythia.readString("15:onMode = 2");       // tau- decays to electrons and muons - second tau decays in all modes
68 <        pythia.readString("15:onIfAny = 11 13");
65 >        pythia.readString("23:onMode = 0");       // Z decays to muons only
66 >        pythia.readString("23:onIfAny = 13");
67 >      }
68 >    else if(strncmp(argv[1], "Zeh", 3) == 0)
69 >      {
70 >        pythia.readString("WeakSingleBoson:ffbar2gmZ = on");
71 >        pythia.readString("PhaseSpace:mHatMin = 60.");    
72 >        pythia.readString("PhaseSpace:mHatMax = -1");    
73 >        pythia.readString("23:onMode = 0");       // Z decays to taus only
74 >        pythia.readString("23:onIfAny = 15");
75 >        pythia.readString("15:onMode = 2");       // tau- decays to electrons - second tau decays in all modes
76 >        pythia.readString("15:onIfAny = 11");
77 >      }
78 >    else if(strncmp(argv[1], "Zmh", 3) == 0)
79 >      {
80 >        pythia.readString("WeakSingleBoson:ffbar2gmZ = on");
81 >        pythia.readString("PhaseSpace:mHatMin = 60.");    
82 >        pythia.readString("PhaseSpace:mHatMax = -1");    
83 >        pythia.readString("23:onMode = 0");       // Z decays to taus only
84 >        pythia.readString("23:onIfAny = 15");
85 >        pythia.readString("15:onMode = 2");       // tau- decays to muons - second tau decays in all modes
86 >        pythia.readString("15:onIfAny = 13");
87 >      }
88 >    else if(strncmp(argv[1], "Zhh", 3) == 0)
89 >      {
90 >        pythia.readString("WeakSingleBoson:ffbar2gmZ = on");
91 >        pythia.readString("PhaseSpace:mHatMin = 60.");    
92 >        pythia.readString("PhaseSpace:mHatMax = -1");    
93 >        pythia.readString("23:onMode = 0");       // Z decays to taus only
94 >        pythia.readString("23:onIfAny = 15");
95 >      }
96 >    else if(strncmp(argv[1], "Wen", 3) == 0)
97 >      {
98 >        pythia.readString("WeakSingleBoson:ffbar2W = on");
99 >        pythia.readString("24:onMode = 0");       // W decays to electron
100 >        pythia.readString("24:onIfAny = 11");
101        }
102 <    else if(strncmp(argv[1], "WLN", 3) == 0)
102 >    else if(strncmp(argv[1], "Wmn", 3) == 0)
103        {
104          pythia.readString("WeakSingleBoson:ffbar2W = on");
105 <        pythia.readString("24:onMode = 0");       // W decays to light leptons only
106 <        pythia.readString("24:onIfAny = 11 13");
105 >        pythia.readString("24:onMode = 0");       // W decays to muon
106 >        pythia.readString("24:onIfAny = 13");
107 >      }
108 >    else if(strncmp(argv[1], "Ten", 3) == 0)
109 >      {
110 >        pythia.readString("Top:all = on");
111 >        pythia.readString("24:onMode = 2");       // W+ decays to electron
112 >        pythia.readString("24:onIfAny = 11");
113        }
114 <    else if(strncmp(argv[1], "TLN", 3) == 0)
114 >    else if(strncmp(argv[1], "Tmn", 3) == 0)
115        {
116          pythia.readString("Top:all = on");
117 <        pythia.readString("24:onMode = 2");       // W+ decays to light leptons only
118 <        pythia.readString("24:onIfAny = 11 13");
117 >        pythia.readString("24:onMode = 2");       // W+ decays to muon
118 >        pythia.readString("24:onIfAny = 13");
119 >      }
120 >    else if(strncmp(argv[1], "ZHmmbb", 6) == 0)
121 >      {
122 >        pythia.readString("HiggsSM:ffbar2HZ = on");
123 >        pythia.readString("25:m0 = 120");
124 >        pythia.readString("25:onMode = 0");      // Higgs decays to bbBar only
125 >        pythia.readString("25:onIfAny = 5");
126 >        pythia.readString("23:onMode = 0");      // Z decays to mu+,mu- only (for trigger)
127 >        pythia.readString("23:onIfAny = 13");
128        }
129 <    else if(strncmp(argv[1], "BBA", 3) == 0)
129 >    else if(strncmp(argv[1], "ZHeebb", 6) == 0)
130 >      {
131 >        pythia.readString("HiggsSM:ffbar2HZ = on");
132 >        pythia.readString("25:m0 = 120");
133 >        pythia.readString("25:onMode = 0");      // Higgs decays to bbBar only
134 >        pythia.readString("25:onIfAny = 5");
135 >        pythia.readString("23:onMode = 0");      // Z decays to e+,e- only (for trigger)
136 >        pythia.readString("23:onIfAny = 11");
137 >      }
138 >    else if(strncmp(argv[1], "BB", 2) == 0)
139        {
140          pythia.readString("Higgs:useBSM = on");
141 <        pythia.readString("HiggsBSM:gg2A3bbbar = on");
142 <        pythia.readString("36:onMode = 0");      // A0(H_3) decays only to tau-pairs
143 <        pythia.readString("36:onIfAny = 15");
141 >        pythia.readString("25:m0 = 129");
142 >        pythia.readString("35:m0 = 499.7");
143 >        pythia.readString("36:m0 = 500");
144 >        pythia.readString("37:m0 = 506");
145 >        pythia.readString("HiggsHchg:tanBeta = 30");
146 >        if(strncmp(argv[1], "BBH", 3) == 0) {
147 >          pythia.readString("HiggsBSM:gg2H2bbbar = on");
148 >          pythia.readString("35:onMode = 0");      // H2(H_2) decays only to tau-pairs
149 >          pythia.readString("35:onIfAny = 15");
150 >        }
151 >        else {
152 >          pythia.readString("HiggsBSM:gg2A3bbbar = on");
153 >          pythia.readString("36:onMode = 0");      // A0(H_3) decays only to tau-pairs
154 >          pythia.readString("36:onIfAny = 15");
155 >        }
156 >        if(strncmp(argv[1], "BBHmh", 5) == 0 ||
157 >           strncmp(argv[1], "BBAmh", 5) == 0) {
158 >          pythia.readString("15:onMode = 2");       // tau- decays to muons - second tau decays in all modes
159 >          pythia.readString("15:onIfAny = 13");
160 >        }
161        }
162 +     else if(strncmp(argv[1], "ZZmmbb", 6) == 0)
163 +       {
164 +         pythia.readString("WeakDoubleBoson:ffbar2gmZgmZ = on");
165 +         pythia.readString("23:onMode = 0");
166 +         pythia.readString("23:onIfAny = 5 13");   // Let the Z decay to bQuarks or muons
167 +       }
168      else
169        {
170          cerr << "Unknown process type " << argv[1] << " - aborting" << endl;
# Line 69 | Line 172 | int main(int argc, char **argv) {
172        }
173    }
174  
175 +  string name(argv[1]);
176 +  name += ".root";
177 +  TFile *outFile = TFile::Open(name.c_str(), "recreate");
178 +
179    // Initialize pythia
180  
181    pythia.init( 2212, 2212, 14000.);
# Line 86 | Line 193 | int main(int argc, char **argv) {
193    // Ultra Fast Simulator
194  
195    UltraFastSim ufs(rndmPtr);
196 +  bbHAnalysis bbH(outFile, &pythia, &ufs, true);
197 +  ZHAnalysis ZH(outFile, &pythia, &ufs, true);
198  
199    // Begin event loop
200    for (int iEvent = 0; iEvent < nEvents; ) {
# Line 93 | Line 202 | int main(int argc, char **argv) {
202      // Generate event. Skip if error. List first one.
203      if (!pythia.next()) continue;
204  
205 +    if(iEvent < 10) pythia.event.list();
206 +
207      // Add pileup
208  
209      int pileupEventCount = 0;
# Line 120 | Line 231 | int main(int argc, char **argv) {
231          exit(1);
232        }
233  
234 <    cout << "Number of Particles = " << ufs.particleList().size() << endl;
235 <    cout << "Number of Gen Elecs = " << ufs.electronList().size() << endl;
236 <    cout << "Number of Gen Muons = " << ufs.muonList().size() << endl;
237 <    cout << "Number of Gen Taus =  " << ufs.genTauList().size() << endl;
238 <    cout << "Number of b Quarks =  " << ufs.bQuarkList().size() << endl;
239 <    cout << "Number of Jets =      " << ufs.sortedJetList().size() << endl;
240 <    cout << "Number of bJets =     " << ufs.bJetList().size() << endl;
241 <    cout << "Number of taus =      " << ufs.tauList().size() << endl;
242 <    cout << endl;
243 <  
234 >    // Run bbHAnalysis
235 >
236 >    if(!bbH.run())
237 >      {
238 >        cerr << "bbH Analysis failed - aborting" << endl;
239 >        exit(2);
240 >      }
241 >
242 >    // Run ZHAnalysis
243 >
244 >    if(!ZH.run())
245 >      {
246 >        cerr << "ZH Analysis failed - aborting" << endl;
247 >        exit(3);
248 >      }
249 >
250      // End of event loop. Statistics. Histogram. Done.
251  
252      if(!(iEvent % 100)) cout << "Processed event " << iEvent << endl;
# Line 142 | Line 259 | int main(int argc, char **argv) {
259    pythia.statistics();
260    pileupPythia.statistics();
261  
262 +  bbH.end();
263 +  ZH.end();
264 +
265 +  outFile->cd();
266 +  outFile->Write();
267 +  outFile->Close();
268 +
269    return 0;
270  
271   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines