44 |
|
int runNumber = 0; |
45 |
|
int meanPileupEventCount = 0; |
46 |
|
float cmEnergy = 14000.; |
47 |
+ |
bool cutOnMET = false; |
48 |
|
if(argc < 3 || argc > 6) |
49 |
|
{ |
50 |
|
cerr << "Command syntax: " << argv[0] << " ZHmmbb[...]" << " <nEvents> [RandomSeed] [meanPileupEventcount] [cmEnergy]" << endl; |
57 |
|
cerr << "or " << argv[0] << " ZZeenn[...]" << " <nEvents> [RandomSeed] [meanPileupEventcount] [cmEnergy]" << endl; |
58 |
|
cerr << "or " << argv[0] << " BBHmh[...] " << " <nEvents> [RandomSeed] [meanPileupEventcount] [cmEnergy]" << endl; |
59 |
|
cerr << "or " << argv[0] << " BBAmh[...] " << " <nEvents> [RandomSeed] [meanPileupEventcount] [cmEnergy]" << endl; |
60 |
+ |
cerr << "or " << argv[0] << " VBFHXX[..] " << " <nEvents> [RandomSeed] [meanPileupEventcount] [cmEnergy]" << endl; |
61 |
|
cerr << "or " << argv[0] << " Zee[...] " << " <nEvents> [RandomSeed] [meanPileupEventcount] [cmEnergy]" << endl; |
62 |
|
cerr << "or " << argv[0] << " Zmm[...] " << " <nEvents> [RandomSeed] [meanPileupEventcount] [cmEnergy]" << endl; |
63 |
|
cerr << "or " << argv[0] << " Zeh[...] " << " <nEvents> [RandomSeed] [meanPileupEventcount] [cmEnergy]" << endl; |
64 |
|
cerr << "or " << argv[0] << " Zmh[...] " << " <nEvents> [RandomSeed] [meanPileupEventcount] [cmEnergy]" << endl; |
65 |
|
cerr << "or " << argv[0] << " Zhh[...] " << " <nEvents> [RandomSeed] [meanPileupEventcount] [cmEnergy]" << endl; |
66 |
+ |
cerr << "or " << argv[0] << " Znn[...] " << " <nEvents> [RandomSeed] [meanPileupEventcount] [cmEnergy]" << endl; |
67 |
|
cerr << "or " << argv[0] << " Wen[...] " << " <nEvents> [RandomSeed] [meanPileupEventcount] [cmEnergy]" << endl; |
68 |
|
cerr << "or " << argv[0] << " Wmn[...] " << " <nEvents> [RandomSeed] [meanPileupEventcount] [cmEnergy]" << endl; |
69 |
|
cerr << "or " << argv[0] << " Ten[...] " << " <nEvents> [RandomSeed] [meanPileupEventcount] [cmEnergy]" << endl; |
72 |
|
cerr << "or " << argv[0] << " QED[...] " << " <nEvents> [RandomSeed] [meanPileupEventcount] [cmEnergy]" << endl; |
73 |
|
cerr << "or " << argv[0] << " EWK[...] " << " <nEvents> [RandomSeed] [meanPileupEventcount] [cmEnergy]" << endl; |
74 |
|
cerr << "or " << argv[0] << " Top[...] " << " <nEvents> [RandomSeed] [meanPileupEventcount] [cmEnergy]" << endl; |
75 |
+ |
cerr << "or " << argv[0] << " QCDMET[...]" << " <nEvents> [RandomSeed] [meanPileupEventcount] [cmEnergy]" << endl; |
76 |
+ |
cerr << "or " << argv[0] << " ZnnMET[...]" << " <nEvents> [RandomSeed] [meanPileupEventcount] [cmEnergy]" << endl; |
77 |
|
cerr << "In above e-electron, m-muon, h-hadronic tau. n-neutrino" << endl; |
78 |
|
cerr << "QCD, QED, EWK and Top do not specify the decays -- they are useful for generic BG production" << endl; |
79 |
+ |
cerr << "QCDMET has MET > 50 GeV to make efficient to study QCD MET BG" << endl; |
80 |
+ |
cerr << "ZnnMET has MET > 50 GeV to make efficient to study Znn MET BG" << endl; |
81 |
|
exit(1); |
82 |
|
} |
83 |
|
else { |
101 |
|
pythia.readString("23:onMode = 0"); // Z decays to muons only |
102 |
|
pythia.readString("23:onIfAny = 13"); |
103 |
|
} |
104 |
+ |
else if(strncmp(argv[1], "Znn", 3) == 0) |
105 |
+ |
{ |
106 |
+ |
pythia.readString("WeakSingleBoson:ffbar2gmZ = on"); |
107 |
+ |
pythia.readString("PhaseSpace:mHatMin = 60."); |
108 |
+ |
pythia.readString("PhaseSpace:mHatMax = -1"); |
109 |
+ |
pythia.readString("23:onMode = 0"); // Z decays to neutrinos only |
110 |
+ |
pythia.readString("23:onIfAny = 12, 14, 16"); |
111 |
+ |
if(strncmp(argv[1], "ZnnMET", 6) == 0) { |
112 |
+ |
cutOnMET = true; |
113 |
+ |
} |
114 |
+ |
} |
115 |
|
else if(strncmp(argv[1], "Zeh", 3) == 0) |
116 |
|
{ |
117 |
|
pythia.readString("WeakSingleBoson:ffbar2gmZ = on"); |
251 |
|
else if(strncmp(argv[1], "QCD", 3) == 0) |
252 |
|
{ |
253 |
|
pythia.readString("HardQCD:all = on"); |
254 |
< |
pythia.readString("PhaseSpace:pTHatMin = 50."); |
254 |
> |
pythia.readString("PhaseSpace:pTHatMin = 50."); |
255 |
> |
if(strncmp(argv[1], "QCDMET", 6) == 0) { |
256 |
> |
cutOnMET = true; |
257 |
> |
} |
258 |
|
} |
259 |
|
else if(strcmp(argv[1], "QED") == 0) |
260 |
|
{ |
273 |
|
{ |
274 |
|
pythia.readString("Top:all = on"); |
275 |
|
} |
276 |
+ |
else if(strncmp(argv[1], "VBFHXX", 6) == 0) |
277 |
+ |
{ |
278 |
+ |
pythia.readString("HiggsSM:ff2Hff(t:ZZ) = on"); |
279 |
+ |
pythia.readString("HiggsSM:ff2Hff(t:WW) = on"); |
280 |
+ |
pythia.readString("25:m0 = 120"); |
281 |
+ |
pythia.readString("25:mayDecay = false"); // Higgs does not decay -- becomes invisible |
282 |
+ |
pythia.readString("25:isVisible = false"); |
283 |
+ |
} |
284 |
|
else |
285 |
|
{ |
286 |
|
cerr << "Unknown process type " << argv[1] << " - aborting" << endl; |
350 |
|
exit(1); |
351 |
|
} |
352 |
|
|
353 |
+ |
// If necessary, check MET and decide to store or not |
354 |
+ |
|
355 |
+ |
bool doStore = true; |
356 |
+ |
if(cutOnMET) { |
357 |
+ |
double MET = ufs.getMET().Pt(); |
358 |
+ |
if(MET < 50.) { |
359 |
+ |
doStore = false; |
360 |
+ |
} |
361 |
+ |
} |
362 |
|
// Store data |
363 |
|
|
364 |
< |
if(!dataStore.run()) |
364 |
> |
if(doStore && !dataStore.run()) |
365 |
|
{ |
366 |
|
cerr << "Failed to store data" << endl; |
367 |
|
exit(3); |