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.3 by dasu, Thu Feb 10 14:15:45 2011 UTC vs.
Revision 1.14 by dasu, Fri Feb 25 17:10:39 2011 UTC

# Line 14 | Line 14 | using namespace std;
14   using namespace Pythia8;
15  
16   #include "UltraFastSim.h"
17 + #include "UFSDataStore.h"
18  
19   int main(int argc, char **argv) {
20    // Generator. Process selection. LHC initialization. Histogram.
# Line 23 | Line 24 | int main(int argc, char **argv) {
24    int meanPileupEventCount = 0;
25    if(argc < 3 || argc > 5)
26      {
27 <      cerr << "Command syntax: " << argv[0] << " BBH[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
28 <      cerr << "Command syntax: " << argv[0] << " BBA[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
29 <      cerr << "or              " << argv[0] << " ZLL[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
30 <      cerr << "or              " << argv[0] << " ZMM[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
31 <      cerr << "or              " << argv[0] << " TLN[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
32 <      cerr << "or              " << argv[0] << " WLN[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
27 >      cerr << "Command syntax: " << argv[0] << " ZHmmbb[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
28 >      cerr << "or              " << argv[0] << " ZHeebb[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
29 >      cerr << "or              " << argv[0] << " ZZmmbb[...]" << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
30 >      cerr << "or              " << argv[0] << " BBHmh[...] " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
31 >      cerr << "or              " << argv[0] << " BBAmh[...] " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
32 >      cerr << "or              " << argv[0] << " Zee[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
33 >      cerr << "or              " << argv[0] << " Zmm[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
34 >      cerr << "or              " << argv[0] << " Zeh[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
35 >      cerr << "or              " << argv[0] << " Zmh[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
36 >      cerr << "or              " << argv[0] << " Zhh[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
37 >      cerr << "or              " << argv[0] << " Wen[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
38 >      cerr << "or              " << argv[0] << " Wmn[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
39 >      cerr << "or              " << argv[0] << " Ten[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
40 >      cerr << "or              " << argv[0] << " Tmn[...]   " << " <nEvents> [RandomSeed] [meanPileupEventCount]" << endl;
41 >      cerr << "In above e-electron, m-muon, h-hadronic tau. n-neutrino" << endl;
42        exit(1);
43      }
44    else {
45      nEvents = atoi(argv[2]);
46      if(argc >= 4) runNumber = atoi(argv[3]);
47      if(argc >= 5) meanPileupEventCount = atoi(argv[4]);
48 <    if(strncmp(argv[1], "ZLL", 3) == 0)
48 >    if(strncmp(argv[1], "Zee", 3) == 0)
49        {
50          pythia.readString("WeakSingleBoson:ffbar2gmZ = on");
51          pythia.readString("PhaseSpace:mHatMin = 60.");    
52          pythia.readString("PhaseSpace:mHatMax = -1");    
53 <        pythia.readString("23:onMode = 0");       // Z decays to leptons only
54 <        pythia.readString("23:onIfAny = 11 13 15");
45 <        pythia.readString("15:onMode = 2");       // tau- decays to electrons and muons - second tau decays in all modes
46 <        pythia.readString("15:onIfAny = 11 13");
53 >        pythia.readString("23:onMode = 0");       // Z decays to electrons only
54 >        pythia.readString("23:onIfAny = 11");
55        }
56 <    else if(strncmp(argv[1], "ZMM", 3) == 0)
56 >    else if(strncmp(argv[1], "Zmm", 3) == 0)
57        {
58          pythia.readString("WeakSingleBoson:ffbar2gmZ = on");
59          pythia.readString("PhaseSpace:mHatMin = 60.");    
# Line 53 | Line 61 | int main(int argc, char **argv) {
61          pythia.readString("23:onMode = 0");       // Z decays to muons only
62          pythia.readString("23:onIfAny = 13");
63        }
64 <    else if(strncmp(argv[1], "WLN", 3) == 0)
64 >    else if(strncmp(argv[1], "Zeh", 3) == 0)
65 >      {
66 >        pythia.readString("WeakSingleBoson:ffbar2gmZ = on");
67 >        pythia.readString("PhaseSpace:mHatMin = 60.");    
68 >        pythia.readString("PhaseSpace:mHatMax = -1");    
69 >        pythia.readString("23:onMode = 0");       // Z decays to taus only
70 >        pythia.readString("23:onIfAny = 15");
71 >        pythia.readString("15:onMode = 2");       // tau- decays to electrons - second tau decays in all modes
72 >        pythia.readString("15:onIfAny = 11");
73 >      }
74 >    else if(strncmp(argv[1], "Zmh", 3) == 0)
75 >      {
76 >        pythia.readString("WeakSingleBoson:ffbar2gmZ = on");
77 >        pythia.readString("PhaseSpace:mHatMin = 60.");    
78 >        pythia.readString("PhaseSpace:mHatMax = -1");    
79 >        pythia.readString("23:onMode = 0");       // Z decays to taus only
80 >        pythia.readString("23:onIfAny = 15");
81 >        pythia.readString("15:onMode = 2");       // tau- decays to muons - second tau decays in all modes
82 >        pythia.readString("15:onIfAny = 13");
83 >      }
84 >    else if(strncmp(argv[1], "Zhh", 3) == 0)
85 >      {
86 >        pythia.readString("WeakSingleBoson:ffbar2gmZ = on");
87 >        pythia.readString("PhaseSpace:mHatMin = 60.");    
88 >        pythia.readString("PhaseSpace:mHatMax = -1");    
89 >        pythia.readString("23:onMode = 0");       // Z decays to taus only
90 >        pythia.readString("23:onIfAny = 15");
91 >      }
92 >    else if(strncmp(argv[1], "Wen", 3) == 0)
93        {
94          pythia.readString("WeakSingleBoson:ffbar2W = on");
95 <        pythia.readString("24:onMode = 0");       // W decays to light leptons only
96 <        pythia.readString("24:onIfAny = 11 13");
95 >        pythia.readString("24:onMode = 0");       // W decays to electron
96 >        pythia.readString("24:onIfAny = 11");
97        }
98 <    else if(strncmp(argv[1], "TLN", 3) == 0)
98 >    else if(strncmp(argv[1], "Wmn", 3) == 0)
99 >      {
100 >        pythia.readString("WeakSingleBoson:ffbar2W = on");
101 >        pythia.readString("24:onMode = 0");       // W decays to muon
102 >        pythia.readString("24:onIfAny = 13");
103 >      }
104 >    else if(strncmp(argv[1], "Ten", 3) == 0)
105        {
106          pythia.readString("Top:all = on");
107 <        pythia.readString("24:onMode = 2");       // W+ decays to light leptons only
108 <        pythia.readString("24:onIfAny = 11 13");
107 >        pythia.readString("24:onMode = 2");       // W+ decays to electron
108 >        pythia.readString("24:onIfAny = 11");
109        }
110 <    else if(strncmp(argv[1], "ZH", 2) == 0)
110 >    else if(strncmp(argv[1], "Tmn", 3) == 0)
111 >      {
112 >        pythia.readString("Top:all = on");
113 >        pythia.readString("24:onMode = 2");       // W+ decays to muon
114 >        pythia.readString("24:onIfAny = 13");
115 >      }
116 >    else if(strncmp(argv[1], "ZHmmbb", 6) == 0)
117        {
118          pythia.readString("HiggsSM:ffbar2HZ = on");
119          pythia.readString("25:m0 = 120");
# Line 74 | Line 122 | int main(int argc, char **argv) {
122          pythia.readString("23:onMode = 0");      // Z decays to mu+,mu- only (for trigger)
123          pythia.readString("23:onIfAny = 13");
124        }
125 +    else if(strncmp(argv[1], "ZHeebb", 6) == 0)
126 +      {
127 +        pythia.readString("HiggsSM:ffbar2HZ = on");
128 +        pythia.readString("25:m0 = 120");
129 +        pythia.readString("25:onMode = 0");      // Higgs decays to bbBar only
130 +        pythia.readString("25:onIfAny = 5");
131 +        pythia.readString("23:onMode = 0");      // Z decays to e+,e- only (for trigger)
132 +        pythia.readString("23:onIfAny = 11");
133 +      }
134      else if(strncmp(argv[1], "BB", 2) == 0)
135        {
136          pythia.readString("Higgs:useBSM = on");
80        if(strncmp(argv[1], "BBH", 3) == 0)
81          pythia.readString("HiggsBSM:gg2H2bbbar = on");
82        else
83          pythia.readString("HiggsBSM:gg2A3bbbar = on");
137          pythia.readString("25:m0 = 129");
138          pythia.readString("35:m0 = 499.7");
139          pythia.readString("36:m0 = 500");
140          pythia.readString("37:m0 = 506");
141          pythia.readString("HiggsHchg:tanBeta = 30");
142 <        pythia.readString("35:onMode = 0");      // H2(H_2) decays only to tau-pairs
143 <        pythia.readString("35:onIfAny = 15");
144 <        pythia.readString("36:onMode = 0");      // A0(H_3) decays only to tau-pairs
145 <        pythia.readString("36:onIfAny = 15");
142 >        if(strncmp(argv[1], "BBH", 3) == 0) {
143 >          pythia.readString("HiggsBSM:gg2H2bbbar = on");
144 >          pythia.readString("35:onMode = 0");      // H2(H_2) decays only to tau-pairs
145 >          pythia.readString("35:onIfAny = 15");
146 >        }
147 >        else {
148 >          pythia.readString("HiggsBSM:gg2A3bbbar = on");
149 >          pythia.readString("36:onMode = 0");      // A0(H_3) decays only to tau-pairs
150 >          pythia.readString("36:onIfAny = 15");
151 >        }
152 >        if(strncmp(argv[1], "BBHmh", 5) == 0 ||
153 >           strncmp(argv[1], "BBAmh", 5) == 0) {
154 >          pythia.readString("15:onMode = 2");       // tau- decays to muons - second tau decays in all modes
155 >          pythia.readString("15:onIfAny = 13");
156 >        }
157        }
158 +     else if(strncmp(argv[1], "ZZmmbb", 6) == 0)
159 +       {
160 +         pythia.readString("WeakDoubleBoson:ffbar2gmZgmZ = on");
161 +         pythia.readString("23:onMode = 0");
162 +         pythia.readString("23:onIfAny = 5 13");   // Let the Z decay to bQuarks or muons
163 +       }
164      else
165        {
166          cerr << "Unknown process type " << argv[1] << " - aborting" << endl;
# Line 114 | Line 184 | int main(int argc, char **argv) {
184  
185    // Ultra Fast Simulator
186  
187 <  UltraFastSim ufs(rndmPtr);
187 >  UltraFastSim ufs;
188 >  UFSDataStore dataStore(argv[1], &ufs);
189  
190    // Begin event loop
191    for (int iEvent = 0; iEvent < nEvents; ) {
# Line 122 | Line 193 | int main(int argc, char **argv) {
193      // Generate event. Skip if error. List first one.
194      if (!pythia.next()) continue;
195  
196 +    if(iEvent < 10) pythia.event.list();
197 +
198      // Add pileup
199  
200      int pileupEventCount = 0;
201      if(meanPileupEventCount > 0) pileupEventCount = meanPileupEventCount; // * rmdmPtr->pois(); (not available yet)
202      for (int puEvent = 0; puEvent < pileupEventCount; ) {
203        if(!pileupPythia.next()) continue;
204 +      double vx = rndmPtr->gauss()*2.; // Mean beam spread is 2 mm in x-y and 75 mm in z
205 +      double vy = rndmPtr->gauss()*2.;
206 +      double vz = rndmPtr->gauss()*75.;
207        for(int i = 0; i < pileupPythia.event.size(); i++) {
208          Particle& particle = pileupPythia.event[i];
209 +        particle.xProd(vx+particle.xProd());
210 +        particle.yProd(vy+particle.yProd());
211 +        particle.zProd(vz+particle.zProd());
212          if(particle.status() > 0) {
213            if(particle.isVisible()) {
214              if(particle.pT() > 0.5) {
# Line 143 | Line 222 | int main(int argc, char **argv) {
222  
223      // Ultra fast simulation
224  
225 <    if(!ufs.run(pythia.event))
225 >    if(!ufs.run(pythia.event, rndmPtr))
226        {
227          cerr << "Ultra fast simulation failed - aborting" << endl;
228          exit(1);
229        }
230  
231 <    cout << "Number of Particles = " << ufs.particleList().size() << endl;
232 <    cout << "Number of Gen Elecs = " << ufs.electronList().size() << endl;
233 <    cout << "Number of Gen Muons = " << ufs.muonList().size() << endl;
234 <    cout << "Number of Gen Taus =  " << ufs.genTauList().size() << endl;
235 <    cout << "Number of b Quarks =  " << ufs.bQuarkList().size() << endl;
236 <    cout << "Number of Jets =      " << ufs.sortedJetList().size() << endl;
237 <    cout << "Number of bJets =     " << ufs.bJetList().size() << endl;
238 <    cout << "Number of taus =      " << ufs.tauList().size() << endl;
160 <    cout << endl;
161 <  
231 >    // Store data
232 >
233 >    if(!dataStore.run())
234 >      {
235 >        cerr << "Failed to store data" << endl;
236 >        exit(3);
237 >      }
238 >
239      // End of event loop. Statistics. Histogram. Done.
240  
241      if(!(iEvent % 100)) cout << "Processed event " << iEvent << endl;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines