18 #include "FWCore/Framework/interface/Frameworkfwd.h" 19 #include "FWCore/Framework/interface/EDAnalyzer.h" 20 #include "FWCore/Framework/interface/Event.h" 21 #include "FWCore/Framework/interface/MakerMacros.h" 22 #include "FWCore/ParameterSet/interface/ParameterSet.h" 25 #include "SimDataFormats/GeneratorProducts/interface/GenEventInfoProduct.h" 26 #include "SimDataFormats/GeneratorProducts/interface/GenLumiInfoHeader.h" 27 #include "DataFormats/HepMCCandidate/interface/GenParticle.h" 28 #include "DataFormats/TrackReco/interface/Track.h" 30 #include "DataFormats/PatCandidates/interface/PFIsolation.h" 43 isData = iEvent.isRealData();
47 baby.run() = iEvent.id().run();
48 baby.event() = iEvent.id().event();
49 baby.lumiblock() = iEvent.luminosityBlock();
52 if (debug) cout<<
"INFO: Checking JSON..."<<endl;
53 baby.json4p0() = baby.run() <= 275125;
54 baby.json12p9() = baby.run() <= 276811;
56 baby.json4p0() = baby.json12p9() =
true;
61 if (debug) cout<<
"INFO: Processing trigger info..."<<endl;
63 edm::Handle<edm::TriggerResults> triggerBits;
64 iEvent.getByToken(tok_trigResults_hlt_,triggerBits);
65 edm::Handle<pat::PackedTriggerPrescales> triggerPrescales;
66 iEvent.getByToken(tok_patTrig_,triggerPrescales);
68 if(triggerBits.isValid() && triggerPrescales.isValid()){
69 const edm::TriggerNames &names = iEvent.triggerNames(*triggerBits);
71 triggerFired = writeTriggers(names, triggerBits, triggerPrescales);
75 if(!triggerFired &&
isData) {
81 if (debug) cout<<
"INFO: Writing vertices..."<<endl;
82 edm::Handle<reco::VertexCollection> vtx;
83 iEvent.getByToken(tok_primVertex_, vtx);
84 edm::Handle<std::vector< PileupSummaryInfo > > pu_info;
86 iEvent.getByToken(tok_addPileup_, pu_info);
87 if(!pu_info.isValid()) iEvent.getByToken(tok_slimAddPileup_, pu_info);
89 writeVertices(vtx, pu_info);
92 if (debug) cout<<
"INFO: Writing leptons..."<<endl;
94 edm::Handle<pat::PackedCandidateCollection> pfcands;
95 iEvent.getByToken(tok_packPFCands_, pfcands);
98 edm::Handle<double> rhoEventCentral_h;
99 iEvent.getByToken(tok_rhoFastJet_centralNeutral_, rhoEventCentral_h);
100 double rhoEventCentral =
static_cast<double>(*rhoEventCentral_h);
102 vCands sig_leps, veto_leps, sig_mus, veto_mus, sig_els, veto_els;
104 edm::Handle<pat::MuonCollection> allmuons;
105 iEvent.getByToken(tok_muons_, allmuons);
106 sig_mus = writeMuons(allmuons, pfcands, vtx, veto_mus, all_mus, rhoEventCentral);
107 edm::Handle<pat::ElectronCollection> allelectrons;
108 iEvent.getByToken(tok_electrons_, allelectrons);
110 sig_els = writeElectrons(allelectrons, pfcands, vtx, veto_els, all_els, rhoEventCentral);
112 writeDiLep(sig_mus, sig_els, veto_mus, veto_els);
116 sig_leps.insert(sig_leps.end(), sig_els.begin(), sig_els.end());
117 writeLeptons(sig_leps);
119 veto_leps = veto_mus;
120 veto_leps.insert(veto_leps.end(), veto_els.begin(), veto_els.end());
127 if (debug) cout<<
"INFO: Writing photons..."<<endl;
129 edm::Handle<double> rhoEvent_h;
130 iEvent.getByToken(tok_rhoFastJet_all_, rhoEvent_h);
131 edm::Handle<reco::BeamSpot> beamspot;
132 iEvent.getByToken(tok_offBeamSpot_, beamspot);
133 edm::Handle<pat::PhotonCollection> allphotons;
134 iEvent.getByToken(tok_photons_, allphotons);
135 edm::Handle<vector<reco::Conversion> > conversions;
136 iEvent.getByToken(tok_reducedEgamma_conver_, conversions);
137 photons = writePhotons(allphotons, allelectrons, conversions, beamspot, *rhoEvent_h);
140 if (debug) cout<<
"INFO: Applying JECs..."<<endl;
141 edm::Handle<pat::JetCollection> alljets;
142 iEvent.getByToken(tok_jets_, alljets);
143 edm::Handle<edm::View<reco::GenJet> > genjets;
144 iEvent.getByToken(tok_genJets_, genjets) ;
145 jetTool->getJetCorrections(genjets, alljets, *rhoEvent_h);
148 if (debug) cout<<
"INFO: Writing MET..."<<endl;
149 edm::Handle<pat::METCollection> mets;
150 edm::Handle<pat::METCollection> mets_nohf;
151 edm::Handle<pat::METCollection> mets_puppi;
153 iEvent.getByToken(tok_met_noHF_, mets_nohf);
155 iEvent.getByToken(tok_met_, mets);
157 iEvent.getByToken(tok_met_Puppi_, mets_puppi);
158 iEvent.getByToken(tok_met_, mets);
165 writeMET(mets, mets_nohf, mets_puppi);
168 if (debug) cout<<
"INFO: Calculating track veto..."<<endl;
170 if (eventTool->hasGoodPV(vtx)){
172 tks = lepTool->getIsoTracks(pfcands, baby.met(), baby.met_phi());
173 baby.ntks() = tks.size();
176 writeTks(pfcands,vtx,rhoEventCentral);
180 if (debug) cout<<
"INFO: Writing jets..."<<endl;
181 vector<LVector> all_baby_jets;
182 vector<unsigned> all_baby_jets_idx;
183 vector<double> jetsMuonEnergyFrac;
184 vector<vector<LVector> > sys_jets;
185 all_baby_jets = writeJets(alljets, all_baby_jets_idx, genjets, sig_leps, veto_leps, photons, tks, sys_jets, jetsMuonEnergyFrac);
188 if (
addBTagWeights) writeBTagWeights(alljets, all_baby_jets, all_baby_jets_idx);
189 writeHiggVars(all_baby_jets, baby.jets_csv(), baby.jets_h1(), baby.jets_h2(),
190 baby.jets_islep(), baby.nbl(), baby.nbm(), baby.nbt(),
191 baby.hig_am(), baby.hig_dm(), baby.hig_drmax(), baby.hig_bin(), baby.mct());
192 writeHiggVars(all_baby_jets, baby.jets_csvd(), baby.jets_h1d(), baby.jets_h2d(),
193 baby.jets_islep(), baby.nbdl(), baby.nbdm(), baby.nbdt(),
194 baby.higd_am(), baby.higd_dm(), baby.higd_drmax(), baby.higd_bin(), baby.mctd());
195 writeBBVars(all_baby_jets, sig_leps);
206 for (
unsigned isys(0); isys<
kSysLast; isys++){
207 bool cluster_leps =
false;
208 baby.sys_mj14_nolep().push_back(jetTool->getSysMJ(1.4, sys_jets[isys], baby.jets_islep(), jetTool->JetPtCut, cluster_leps));
210 baby.sys_mj12().push_back(jetTool->getSysMJ(1.2, sys_jets[isys], baby.jets_islep(), jetTool->JetPtCut, cluster_leps));
211 baby.sys_mj14().push_back(jetTool->getSysMJ(1.4, sys_jets[isys], baby.jets_islep(), jetTool->JetPtCut, cluster_leps));
213 int dummy_int(0); vector<bool> dummy_v;
float dummy_flt(0);
214 baby.sys_higd_am().resize(kSysLast, 0);
215 baby.sys_higd_dm().resize(kSysLast, 0);
216 baby.sys_higd_drmax().resize(kSysLast, 0);
217 writeHiggVars(sys_jets[isys], baby.jets_csvd(), dummy_v, dummy_v,
218 baby.jets_islep(), dummy_int, dummy_int, dummy_int,
219 baby.sys_higd_am()[isys], baby.sys_higd_dm()[isys],
220 baby.sys_higd_drmax()[isys], dummy_int, dummy_flt,
doSystematics);
226 if (debug) cout<<
"INFO: Calculating mT..."<<endl;
227 if(sig_leps.size()>0){
228 float wx = baby.met()*cos(baby.met_phi()) + sig_leps[0]->px();
229 float wy = baby.met()*sin(baby.met_phi()) + sig_leps[0]->py();
230 float wphi = atan2(wy, wx);
231 baby.dphi_wlep() = deltaPhi(wphi, sig_leps[0]->phi());
233 baby.mt() =
getMT(baby.met(), baby.met_phi(), sig_leps[0]->pt(), sig_leps[0]->phi());
234 baby.mt_nohf() =
getMT(baby.met_nohf(), baby.met_nohf_phi(), sig_leps[0]->pt(), sig_leps[0]->phi());
238 baby.sys_met().resize(
kSysLast,-999.);
239 baby.sys_mt().resize(
kSysLast,-999.);
240 for (
unsigned isys(0); isys<
kSysLast; isys++) {
241 float sys_met_phi(0.);
242 jetTool->getMETWithJEC(mets, baby.sys_met()[isys], sys_met_phi, isys);
243 if (sig_leps.size()>0)
244 baby.sys_mt()[isys] =
getMT(baby.sys_met()[isys], sys_met_phi, sig_leps[0]->pt(), sig_leps[0]->phi());
249 if (debug) cout<<
"INFO: Writing filters..."<<endl;
250 edm::Handle<edm::TriggerResults> filterBits;
251 iEvent.getByToken(tok_trigResults_pat_,filterBits);
254 if(!filterBits.isValid() &&
isData)
255 iEvent.getByToken(tok_trigResults_reco_,filterBits);
256 if(filterBits.isValid()){
257 const edm::TriggerNames &fnames = iEvent.triggerNames(*filterBits);
259 writeFilters(fnames, filterBits, vtx, jetsMuonEnergyFrac);
264 if (debug) cout<<
"INFO: Writing HLT objects..."<<endl;
265 edm::Handle<pat::TriggerObjectStandAloneCollection> triggerObjects;
266 iEvent.getByToken(tok_selectedPatTrig_,triggerObjects);
268 if(triggerBits.isValid() && triggerPrescales.isValid()){
269 const edm::TriggerNames &names = iEvent.triggerNames(*triggerBits);
270 writeHLTObjects(names, triggerObjects, all_mus, all_els, photons, iEvent);
275 if (debug) cout<<
"INFO: Writing MC particles..."<<endl;
276 edm::Handle<reco::GenParticleCollection> genParticles;
277 iEvent.getByToken(tok_pruneGenPart_, genParticles);
278 writeMC(genParticles, all_mus, all_els, photons);
279 writeIFSR(genParticles, all_baby_jets);
283 if (debug) cout<<
"INFO: Calculating MET rebalancing..."<<endl;
284 baby.jetmismeas() =
false;
286 double temp_met = baby.met();
287 double temp_met_phi = baby.met_phi();
288 rebalancedMET(temp_met, temp_met_phi);
289 baby.met_rebal() = temp_met;
290 baby.mt_rebal() =
getMT(temp_met, temp_met_phi, sig_leps[0]->pt(), sig_leps[0]->phi());
291 if(baby.met_rebal()/baby.met()<0.2 && baby.mt_rebal()<150) baby.jetmismeas()=
true;
294 baby.mt_rebal() = baby.mt();
295 baby.met_rebal() = baby.met();
299 if (debug) cout<<
"INFO: Retrieving hard scatter info..."<<endl;
300 edm::Handle<LHEEventProduct> lhe_info;
301 baby.stitch() = baby.stitch_ht() = baby.stitch_met() =
true;
302 if (
outname.Contains(
"SMS-") &&
outname.Contains(
"PUSpring16Fast")) {
303 baby.mgluino() = mprod_;
306 iEvent.getByToken(tok_extLHEProducer_, lhe_info);
307 if(!lhe_info.isValid()) iEvent.getByToken(tok_source_, lhe_info);
308 if(lhe_info.isValid()) writeGenInfo(lhe_info);
309 if((
outname.Contains(
"TTJets_SingleLeptFromT_Tune") ||
310 outname.Contains(
"TTJets_SingleLeptFromTbar_Tune") ||
311 outname.Contains(
"TTJets_DiLept_Tune"))
312 &&
outname.Contains(
"madgraphMLM")) {
313 if (baby.ht_isr_me()>600) {
314 baby.stitch() =
false;
315 baby.stitch_ht() =
false;
317 if (baby.met_tru()>150) {
318 baby.stitch_met() =
false;
321 if((
outname.Contains(
"DYJetsToLL_M-50_TuneCUETP8M") && baby.ht_isr_me()>70)
322 || (
outname.Contains(
"WJetsToLNu_TuneCUETP8M1") && baby.ht_isr_me()>70)){
323 baby.stitch() =
false;
324 baby.stitch_ht() =
false;
325 baby.stitch_met() =
false;
327 if(
outname.Contains(
"TTJets_Tune") &&
outname.Contains(
"madgraphMLM")){
328 if(baby.ntruleps()!=0) {
330 baby.stitch_met()=
false;
332 if(baby.ht_isr_me()>600) baby.stitch_ht()=
false;
334 if(
outname.Contains(
"DYJetsToLL_M-50_TuneCUETP8M1_13TeV-amcatnloFXFX")){
335 if (baby.ptll_me()>50) {
344 edm::Handle<GenEventInfoProduct> gen_event_info;
345 iEvent.getByToken(tok_generator_, gen_event_info);
347 writeWeights(sig_leps, gen_event_info, lhe_info);
369 void bmaker_full::writeMET(edm::Handle<pat::METCollection> mets, edm::Handle<pat::METCollection> mets_nohf, edm::Handle<pat::METCollection> mets_puppi){
370 jetTool->getMETWithJEC(mets, baby.met(), baby.met_phi(),
kSysLast);
371 jetTool->getMETRaw(mets, baby.met_raw(), baby.met_raw_phi());
379 baby.met_puppi() = mets_puppi->at(0).pt();
380 baby.met_phi_puppi() = mets_puppi->at(0).phi();
383 baby.met_mini() = mets->at(0).pt();
384 baby.met_mini_phi() = mets->at(0).phi();
385 baby.met_calo() = mets->at(0).caloMETPt();
386 baby.met_calo_phi() = mets->at(0).caloMETPhi();
387 if(mets_nohf.isValid()){
388 baby.met_nohf() = mets_nohf->at(0).pt();
389 baby.met_nohf_phi() = mets_nohf->at(0).phi();
392 baby.met_tru() = mets->at(0).genMET()->pt();
393 baby.met_tru_phi() = mets->at(0).genMET()->phi();
395 if(isnan(baby.met())) {
396 cout<<
"MET is NaN. Perhaps you are running on old miniAOD with a new release. Setting MET to zero."<<endl;
403 vector<unsigned> &all_baby_jets_idx,
404 edm::Handle<edm::View <reco::GenJet> > genjets,
406 vector<vector<LVector> > &sys_jets,
407 vector<double> &jetsMuonEnergyFrac){
408 vector<LVector> all_baby_jets;
410 LVector jetsys_p4, jetsys_nob_p4, jetsys_nobd_p4;
411 baby.njets() = 0; baby.nbl() = 0; baby.nbm() = 0; baby.nbt() = 0;
412 baby.nbdl() = 0; baby.nbdm() = 0; baby.nbdt() = 0;
413 baby.nbdfl() = 0; baby.nbdfm() = 0; baby.nbdft() = 0;
414 baby.ht() = 0.; baby.st() = 0.; baby.ht_hlt() = 0.;
415 baby.njets_ra2() = 0; baby.njets_clean() = 0; baby.nbm_ra2() = 0; baby.ht_ra2() = 0.; baby.ht_clean() = 0.;
416 baby.pass_jets() =
true; baby.pass_jets_nohf() =
true; baby.pass_jets_tight() =
true;
417 baby.pass_jets_ra2() =
true; baby.pass_jets_tight_ra2() =
true; baby.pass_fsjets()=
true;
423 sys_jets.resize(
kSysLast, vector<LVector>());
425 float mht_px(0.), mht_py(0.), mht_clean_px(0.), mht_clean_py(0.);
426 for (
size_t ijet(0); ijet < alljets->size(); ijet++) {
427 const pat::Jet &jet = (*alljets)[ijet];
428 if(fabs(jet.eta()) > 5)
continue;
430 LVector jetp4(jetTool->corrJet[ijet]);
431 float csv(jet.bDiscriminator(
"pfCombinedInclusiveSecondaryVertexV2BJetTags"));
432 float csvd(-999.), csvdf(-999.);
433 TString cmssw_rel = getenv(
"CMSSW_BASE");
434 if (cmssw_rel.Contains(
"CMSSW_8"))
435 csvd = jet.bDiscriminator(
"deepFlavourJetTags:probb")+jet.bDiscriminator(
"deepFlavourJetTags:probbb");
437 csvd = jet.bDiscriminator(
"pfDeepCSVJetTags:probb")+jet.bDiscriminator(
"pfDeepCSVJetTags:probbb");
438 csvdf = jet.bDiscriminator(
"pfDeepFlavourJetTags:probb")+jet.bDiscriminator(
"pfDeepFlavourJetTags:problepb")
439 +jet.bDiscriminator(
"pfDeepFlavourJetTags:probbb");
442 bool isLep = jetTool->leptonInJet(jet, sig_leps);
443 bool looseID = jetTool->idJet(jet, jetTool->kLoose);
444 bool tightID = jetTool->idJet(jet, jetTool->kTight);
445 bool goodPtEta = jetp4.pt() > jetTool->JetPtCut && fabs(jet.eta()) <= jetTool->JetEtaCut;
447 if(jetp4.pt() > 20. && fabs(jet.eta()) < 2.5 && !jetTool->matchesGenJet(jet,genjets) && jet.chargedHadronEnergyFraction() < 0.1) baby.pass_fsjets()=
false;
452 if(jetp4.pt() > jetTool->JetPtCut && !isLep) {
453 if(goodPtEta && !looseID) baby.pass_jets_nohf() =
false;
454 if(!looseID) baby.pass_jets() =
false;
455 if(!tightID) baby.pass_jets_tight() =
false;
460 if((looseID && goodPtEta) || isLep) {
461 all_baby_jets.push_back(jetp4);
462 all_baby_jets_idx.push_back(ijet);
463 baby.jets_pt().push_back(jetp4.pt());
464 baby.jets_eta().push_back(jet.eta());
465 baby.jets_phi().push_back(jet.phi());
466 baby.jets_m().push_back(jetp4.mass());
467 baby.jets_islep().push_back(isLep);
468 jetsMuonEnergyFrac.push_back(jet.muonEnergyFraction());
469 baby.jets_gen_pt().push_back(
isData ? 0. : jetTool->genJetPt[ijet]);
470 baby.jets_pflavor().push_back(jet.partonFlavour());
471 baby.jets_hflavor().push_back(jet.hadronFlavour());
472 baby.jets_ntrub().push_back(0);
473 baby.jets_ntruc().push_back(0);
474 baby.jets_gs_index().push_back(-1);
475 baby.jets_csv().push_back(csv);
476 baby.jets_csvd().push_back(csvd);
477 baby.jets_csvdf().push_back(csvdf);
479 if(!isLep && goodPtEta){
480 jetsys_p4 += jet.p4();
482 baby.ht() += jetp4.pt();
483 baby.st() += jetp4.pt();
484 if(csv > jetTool->CSVLoose) baby.nbl()++;
485 if(csv > jetTool->CSVMedium) baby.nbm()++;
486 else jetsys_nob_p4 += jet.p4();
487 if(csv > jetTool->CSVTight) baby.nbt()++;
489 if(csvd > jetTool->DeepCSVLoose) baby.nbdl()++;
490 if(csvd > jetTool->DeepCSVMedium) baby.nbdm()++;
491 else jetsys_nobd_p4 += jet.p4();
492 if(csvd > jetTool->DeepCSVTight) baby.nbdt()++;
494 if(csvdf > jetTool->DeepFlavourLoose) baby.nbdfl()++;
495 if(csvdf > jetTool->DeepFlavourMedium) baby.nbdfm()++;
496 if(csvdf > jetTool->DeepFlavourTight) baby.nbdft()++;
502 if(jetp4.pt() > jetTool->JetHLTPtCut && fabs(jet.eta()) <= jetTool->JetHLTEtaCut) baby.ht_hlt() += jetp4.pt();
506 bool isLep_ra2 = jetTool->jetMatched(jet, veto_leps);
507 bool isPhoton = jetTool->jetMatched(jet, photons);
508 bool isIsoTrack = jetTool->jetMatched(jet, tks);
509 bool applyId_ra2 = !isLep_ra2 && !isPhoton && !isIsoTrack;
510 bool goodJet_ra2 = (looseID || !applyId_ra2);
511 bool tightJet_ra2 = (tightID || !applyId_ra2);
513 if(jetp4.pt() > jetTool->JetPtCut) {
514 if(!goodJet_ra2) baby.pass_jets_ra2() =
false;
515 if(!tightJet_ra2) baby.pass_jets_tight_ra2() =
false;
518 if(goodPtEta && goodJet_ra2) {
520 baby.ht_ra2() += jetp4.pt();
521 jets_ra2.push_back(dynamic_cast<const reco::Candidate *>(&jet));
522 if(csv > jetTool->CSVMedium) baby.nbm_ra2()++;
523 if(!isLep_ra2 && !isPhoton) {
524 baby.njets_clean()++;
525 baby.ht_clean() += jetp4.pt();
528 if(goodJet_ra2 && jetp4.pt() > jetTool->JetPtCut && fabs(jet.eta()) <= jetTool->JetMHTEtaCut){
531 if(!isLep_ra2 && !isPhoton) {
532 mht_clean_px -= jet.px();
533 mht_clean_py -= jet.py();
540 for (
unsigned isys(0); isys<
kSysLast; isys++){
541 jetp4 = jetTool->corrJet[ijet];
542 if (isys ==
kSysJER) jetp4 *= (1 + jetTool->jerUnc[ijet]);
543 else if (isys ==
kSysJECUp) jetp4 *= (1 + jetTool->jecUnc[ijet]);
544 else if (isys ==
kSysJECDn) jetp4 *= (1 - jetTool->jecUnc[ijet]);
547 if(jetp4.pt() > jetTool->JetPtCut && !isLep && !looseID) baby.sys_pass()[isys] =
false;
550 if((looseID && goodPtEta) || isLep) sys_jets[isys].push_back(jetp4);
552 if(looseID && jetp4.pt() > jetTool->JetPtCut && fabs(jet.eta()) <= jetTool->JetEtaCut) {
554 baby.sys_njets()[isys]++;
555 baby.sys_ht()[isys] += jetp4.pt();
556 baby.sys_st()[isys] += jetp4.pt();
557 if(csv > jetTool->CSVMedium) baby.sys_nbm()[isys]++;
558 if(csvd > jetTool->DeepCSVLoose) baby.sys_nbdl()[isys]++;
559 if(csvd > jetTool->DeepCSVMedium) baby.sys_nbdm()[isys]++;
560 if(csvd > jetTool->DeepCSVTight) baby.sys_nbdt()[isys]++;
567 for (
size_t ilep(0); ilep<sig_leps.size(); ilep++){
568 baby.st() += sig_leps[ilep]->pt();
570 for (
unsigned isys(0); isys<
kSysLast; isys++){
571 baby.sys_st()[isys] += sig_leps[ilep]->pt();
575 if(!
isData) baby.ht_tru() = jetTool->trueHT(genjets);
577 baby.mht() = hypot(mht_px, mht_py);
578 baby.mht_phi() = atan2(mht_py, mht_px);
579 baby.mht_clean() = hypot(mht_clean_px, mht_clean_py);
580 baby.mht_clean_phi() = atan2(mht_clean_py, mht_clean_px);
581 baby.low_dphi() = jetTool->isLowDphi(jets_ra2, baby.mht_phi(), baby.dphi1(), baby.dphi2(), baby.dphi3(), baby.dphi4());
584 baby.jetsys_pt() = jetsys_p4.pt();
585 baby.jetsys_eta() = jetsys_p4.eta();
586 baby.jetsys_phi() = jetsys_p4.phi();
587 baby.jetsys_m() = jetsys_p4.mass();
588 baby.jetsys_nob_pt() = jetsys_nob_p4.pt();
589 baby.jetsys_nob_eta() = jetsys_nob_p4.eta();
590 baby.jetsys_nob_phi() = jetsys_nob_p4.phi();
591 baby.jetsys_nob_m() = jetsys_nob_p4.mass();
592 baby.jetsys_nobd_pt() = jetsys_nobd_p4.pt();
593 baby.jetsys_nobd_eta() = jetsys_nobd_p4.eta();
594 baby.jetsys_nobd_phi() = jetsys_nobd_p4.phi();
595 baby.jetsys_nobd_m() = jetsys_nobd_p4.mass();
597 if(
isFastSim) baby.pass_fsmet() = eventTool->passFSMET(alljets, genjets);
598 else baby.pass_fsmet() =
true;
600 return all_baby_jets;
604 std::vector<reco::Candidate::LorentzVector> &all_baby_jets,
605 std::vector<unsigned> &all_baby_jet_idx){
607 baby.w_btag() = baby.w_btag_loose() = baby.w_btag_tight() = baby.w_bhig() = 1.;
608 baby.w_btag_deep() = baby.w_btag_loose_deep() = baby.w_btag_tight_deep() = baby.w_bhig_deep() = 1.;
610 baby.w_btag_proc() = baby.w_btag_loose_proc() = baby.w_btag_tight_proc() = baby.w_bhig_proc() = 1.;
611 baby.w_btag_deep_proc() = baby.w_btag_loose_deep_proc() = baby.w_btag_tight_deep_proc() = baby.w_bhig_deep_proc() = 1.;
613 baby.sys_bctag().resize(2, 1.); baby.sys_udsgtag().resize(2, 1.);
614 baby.sys_bctag_deep().resize(2, 1.); baby.sys_udsgtag_deep().resize(2, 1.);
615 baby.sys_bctag_loose().resize(2, 1.); baby.sys_udsgtag_loose().resize(2, 1.);
616 baby.sys_bctag_loose_deep().resize(2, 1.); baby.sys_udsgtag_loose_deep().resize(2, 1.);
617 baby.sys_bctag_tight().resize(2, 1.); baby.sys_udsgtag_tight().resize(2, 1.);
618 baby.sys_bctag_tight_deep().resize(2, 1.); baby.sys_udsgtag_tight_deep().resize(2, 1.);
619 baby.sys_bchig().resize(2, 1.); baby.sys_udsghig().resize(2, 1.);
620 baby.sys_bchig_deep().resize(2, 1.); baby.sys_udsghig_deep().resize(2, 1.);
622 baby.sys_bctag_proc().resize(2, 1.); baby.sys_udsgtag_proc().resize(2, 1.);
623 baby.sys_bctag_deep_proc().resize(2, 1.); baby.sys_udsgtag_deep_proc().resize(2, 1.);
624 baby.sys_bctag_loose_proc().resize(2, 1.); baby.sys_udsgtag_loose_proc().resize(2, 1.);
625 baby.sys_bctag_loose_deep_proc().resize(2, 1.); baby.sys_udsgtag_loose_deep_proc().resize(2, 1.);
626 baby.sys_bctag_tight_proc().resize(2, 1.); baby.sys_udsgtag_tight_proc().resize(2, 1.);
627 baby.sys_bctag_tight_deep_proc().resize(2, 1.); baby.sys_udsgtag_tight_deep_proc().resize(2, 1.);
628 baby.sys_bchig_proc().resize(2, 1.); baby.sys_udsghig_proc().resize(2, 1.);
629 baby.sys_bchig_deep_proc().resize(2, 1.); baby.sys_udsghig_deep_proc().resize(2, 1.);
631 baby.sys_fs_bctag().resize(2, 1.); baby.sys_fs_udsgtag().resize(2, 1.);
632 baby.sys_fs_bctag_deep().resize(2, 1.); baby.sys_fs_udsgtag_deep().resize(2, 1.);
633 baby.sys_fs_bchig().resize(2, 1.); baby.sys_fs_udsghig().resize(2, 1.);
634 baby.sys_fs_bchig_deep().resize(2, 1.); baby.sys_fs_udsghig_deep().resize(2, 1.);
638 for (
size_t ijet(0); ijet < all_baby_jet_idx.size(); ijet++) {
639 const pat::Jet &jet = (*alljets)[all_baby_jet_idx[ijet]];
640 LVector &jetp4 = all_baby_jets[ijet];
641 const vector<BTagEntry::OperatingPoint> all_ops = {BTagEntry::OP_LOOSE, BTagEntry::OP_MEDIUM, BTagEntry::OP_TIGHT};
642 if(!baby.jets_islep()[ijet]){
643 const string ctr(
"central"), vup(
"up"), vdn(
"down");
645 baby.w_btag() *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, ctr, ctr,
false);
646 baby.w_btag_loose() *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_LOOSE, ctr, ctr,
false);
647 baby.w_btag_tight() *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_TIGHT, ctr, ctr,
false);
648 baby.w_bhig() *= jetTool->jetBTagWeight(jet, jetp4, all_ops, ctr, ctr,
false);
650 baby.w_btag_deep() *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, ctr, ctr,
true);
651 baby.w_btag_loose_deep() *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_LOOSE, ctr, ctr,
true);
652 baby.w_btag_tight_deep() *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_TIGHT, ctr, ctr,
true);
653 baby.w_bhig_deep() *= jetTool->jetBTagWeight(jet, jetp4, all_ops, ctr, ctr,
true);
656 baby.w_btag_proc() *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, ctr, ctr,
false,
true);
657 baby.w_btag_loose_proc() *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_LOOSE, ctr, ctr,
false,
true);
658 baby.w_btag_tight_proc() *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_TIGHT, ctr, ctr,
false,
true);
659 baby.w_bhig_proc() *= jetTool->jetBTagWeight(jet, jetp4, all_ops, ctr, ctr,
false,
true);
661 baby.w_btag_deep_proc() *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, ctr, ctr,
true,
true);
662 baby.w_btag_loose_deep_proc() *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_LOOSE, ctr, ctr,
true,
true);
663 baby.w_btag_tight_deep_proc() *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_TIGHT, ctr, ctr,
true,
true);
664 baby.w_bhig_deep_proc() *= jetTool->jetBTagWeight(jet, jetp4, all_ops, ctr, ctr,
true,
true);
668 baby.sys_bctag()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, vup, ctr,
false);
669 baby.sys_bctag()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, vdn, ctr,
false);
670 baby.sys_udsgtag()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, ctr, vup,
false);
671 baby.sys_udsgtag()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, ctr, vdn,
false);
672 baby.sys_bctag_deep()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, vup, ctr,
true);
673 baby.sys_bctag_deep()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, vdn, ctr,
true);
674 baby.sys_udsgtag_deep()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, ctr, vup,
true);
675 baby.sys_udsgtag_deep()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, ctr, vdn,
true);
676 baby.sys_bctag_loose()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_LOOSE, vup, ctr,
false);
677 baby.sys_bctag_loose()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_LOOSE, vdn, ctr,
false);
678 baby.sys_udsgtag_loose()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_LOOSE, ctr, vup,
false);
679 baby.sys_udsgtag_loose()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_LOOSE, ctr, vdn,
false);
680 baby.sys_bctag_loose_deep()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_LOOSE, vup, ctr,
true);
681 baby.sys_bctag_loose_deep()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_LOOSE, vdn, ctr,
true);
682 baby.sys_udsgtag_loose_deep()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_LOOSE, ctr, vup,
true);
683 baby.sys_udsgtag_loose_deep()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_LOOSE, ctr, vdn,
true);
684 baby.sys_bctag_tight()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_TIGHT, vup, ctr,
false);
685 baby.sys_bctag_tight()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_TIGHT, vdn, ctr,
false);
686 baby.sys_udsgtag_tight()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_TIGHT, ctr, vup,
false);
687 baby.sys_udsgtag_tight()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_TIGHT, ctr, vdn,
false);
688 baby.sys_bctag_tight_deep()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_TIGHT, vup, ctr,
true);
689 baby.sys_bctag_tight_deep()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_TIGHT, vdn, ctr,
true);
690 baby.sys_udsgtag_tight_deep()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_TIGHT, ctr, vup,
true);
691 baby.sys_udsgtag_tight_deep()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_TIGHT, ctr, vdn,
true);
692 baby.sys_bchig()[0] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, vup, ctr,
false);
693 baby.sys_bchig()[1] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, vdn, ctr,
false);
694 baby.sys_udsghig()[0] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, ctr, vup,
false);
695 baby.sys_udsghig()[1] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, ctr, vdn,
false);
696 baby.sys_bchig_deep()[0] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, vup, ctr,
true);
697 baby.sys_bchig_deep()[1] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, vdn, ctr,
true);
698 baby.sys_udsghig_deep()[0] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, ctr, vup,
true);
699 baby.sys_udsghig_deep()[1] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, ctr, vdn,
true);
701 baby.sys_bctag_proc()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, vup, ctr,
false,
true);
702 baby.sys_bctag_proc()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, vdn, ctr,
false,
true);
703 baby.sys_udsgtag_proc()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, ctr, vup,
false,
true);
704 baby.sys_udsgtag_proc()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, ctr, vdn,
false,
true);
705 baby.sys_bctag_deep_proc()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, vup, ctr,
true,
true);
706 baby.sys_bctag_deep_proc()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, vdn, ctr,
true,
true);
707 baby.sys_udsgtag_deep_proc()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, ctr, vup,
true,
true);
708 baby.sys_udsgtag_deep_proc()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, ctr, vdn,
true,
true);
709 baby.sys_bctag_loose_proc()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_LOOSE, vup, ctr,
false,
true);
710 baby.sys_bctag_loose_proc()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_LOOSE, vdn, ctr,
false,
true);
711 baby.sys_udsgtag_loose_proc()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_LOOSE, ctr, vup,
false,
true);
712 baby.sys_udsgtag_loose_proc()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_LOOSE, ctr, vdn,
false,
true);
713 baby.sys_bctag_loose_deep_proc()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_LOOSE, vup, ctr,
true,
true);
714 baby.sys_bctag_loose_deep_proc()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_LOOSE, vdn, ctr,
true,
true);
715 baby.sys_udsgtag_loose_deep_proc()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_LOOSE, ctr, vup,
true,
true);
716 baby.sys_udsgtag_loose_deep_proc()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_LOOSE, ctr, vdn,
true,
true);
717 baby.sys_bctag_tight_proc()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_TIGHT, vup, ctr,
false,
true);
718 baby.sys_bctag_tight_proc()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_TIGHT, vdn, ctr,
false,
true);
719 baby.sys_udsgtag_tight_proc()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_TIGHT, ctr, vup,
false,
true);
720 baby.sys_udsgtag_tight_proc()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_TIGHT, ctr, vdn,
false,
true);
721 baby.sys_bctag_tight_deep_proc()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_TIGHT, vup, ctr,
true,
true);
722 baby.sys_bctag_tight_deep_proc()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_TIGHT, vdn, ctr,
true,
true);
723 baby.sys_udsgtag_tight_deep_proc()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_TIGHT, ctr, vup,
true,
true);
724 baby.sys_udsgtag_tight_deep_proc()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_TIGHT, ctr, vdn,
true,
true);
725 baby.sys_bchig_proc()[0] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, vup, ctr,
false,
true);
726 baby.sys_bchig_proc()[1] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, vdn, ctr,
false,
true);
727 baby.sys_udsghig_proc()[0] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, ctr, vup,
false,
true);
728 baby.sys_udsghig_proc()[1] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, ctr, vdn,
false,
true);
729 baby.sys_bchig_deep_proc()[0] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, vup, ctr,
true,
true);
730 baby.sys_bchig_deep_proc()[1] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, vdn, ctr,
true,
true);
731 baby.sys_udsghig_deep_proc()[0] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, ctr, vup,
true,
true);
732 baby.sys_udsghig_deep_proc()[1] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, ctr, vdn,
true,
true);
735 baby.sys_fs_bctag()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, ctr, ctr, vup, ctr,
false);
736 baby.sys_fs_bctag()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, ctr, ctr, vdn, ctr,
false);
737 baby.sys_fs_udsgtag()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, ctr, ctr, ctr, vup,
false);
738 baby.sys_fs_udsgtag()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, ctr, ctr, ctr, vdn,
false);
739 baby.sys_fs_bctag_deep()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, ctr, ctr, vup, ctr,
true);
740 baby.sys_fs_bctag_deep()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, ctr, ctr, vdn, ctr,
true);
741 baby.sys_fs_udsgtag_deep()[0] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, ctr, ctr, ctr, vup,
true);
742 baby.sys_fs_udsgtag_deep()[1] *= jetTool->jetBTagWeight(jet, jetp4, BTagEntry::OP_MEDIUM, ctr, ctr, ctr, vdn,
true);
743 baby.sys_fs_bchig()[0] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, ctr, ctr, vup, ctr,
false);
744 baby.sys_fs_bchig()[1] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, ctr, ctr, vdn, ctr,
false);
745 baby.sys_fs_udsghig()[0] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, ctr, ctr, ctr, vup,
false);
746 baby.sys_fs_udsghig()[1] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, ctr, ctr, ctr, vdn,
false);
747 baby.sys_fs_bchig_deep()[0] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, ctr, ctr, vup, ctr,
true);
748 baby.sys_fs_bchig_deep()[1] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, ctr, ctr, vdn, ctr,
true);
749 baby.sys_fs_udsghig_deep()[0] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, ctr, ctr, ctr, vup,
true);
750 baby.sys_fs_udsghig_deep()[1] *= jetTool->jetBTagWeight(jet, jetp4, all_ops, ctr, ctr, ctr, vdn,
true);
758 vector<bool> &baby_jets_h1, vector<bool> &baby_jets_h2,
759 vector<bool> &baby_jets_islep,
int &baby_nbl,
int &baby_nbm,
int &baby_nbt,
760 float &baby_hig_am,
float &baby_hig_dm,
float &baby_hig_drmax,
761 int &baby_hig_bin,
float &baby_mct,
bool isSystemtic){
762 vector<int> hi_csv(5,-1);
763 for (
size_t ijet(0); ijet < baby_jets_csv.size(); ijet++) {
765 baby_jets_h1.push_back(
false);
766 baby_jets_h2.push_back(
false);
771 if (baby_jets_islep[ijet] || baby_jets_p4[ijet].pt()<=jetTool->JetPtCut || fabs(baby_jets_p4[ijet].eta())>jetTool->JetEtaCut)
continue;
774 float csv = baby_jets_csv[ijet];
775 for(
size_t ind(0);
ind<hi_csv.size();
ind++){
777 if(hi_csv[
ind]>=0) icsv = baby_jets_csv[hi_csv[
ind]];
778 if(hi_csv[
ind]==-1 || csv > icsv){
779 for(
size_t ind2(hi_csv.size()-1); ind2>=
ind+1; ind2--) hi_csv[ind2] = hi_csv[ind2-1];
789 unsigned hi_csv_size = 4;
790 if (hi_csv[4]>=0) hi_csv_size = 5;
791 vector<vector<LVector> > hig_p4;
792 for(
size_t row=0; row<hi_csv_size; row++){
793 hig_p4.push_back(vector<LVector>());
795 LVector jetp4(baby_jets_p4[hi_csv[row]]);
796 hig_p4.back().push_back(jetp4);
797 if(row!=
col) hig_p4.back().back() += hig_p4[
col][
col];
801 size_t nCSVs = hi_csv.size();
803 vector<int> hig_ind(4,0);
805 for(
size_t ind0=0; ind0<nCSVs; ind0++){
806 for(
size_t ind1=0; ind1<ind0; ind1++){
807 for(
size_t ind2=ind0+1; ind2<nCSVs; ind2++){
808 if(ind2==ind1)
continue;
809 for(
size_t ind3=0; ind3<ind2; ind3++){
810 if(ind3==ind0 || ind3==ind1)
continue;
811 float thisDm = fabs(hig_p4[ind0][ind1].mass() - hig_p4[ind2][ind3].mass());
813 hig_ind[0] = ind0; hig_ind[1] = ind1; hig_ind[2] = ind2; hig_ind[3] = ind3;
822 baby_jets_h1[hi_csv[hig_ind[0]]] =
true; baby_jets_h1[hi_csv[hig_ind[1]]] =
true;
823 baby_jets_h2[hi_csv[hig_ind[2]]] =
true; baby_jets_h2[hi_csv[hig_ind[3]]] =
true;
826 LVector hig1 = hig_p4[hig_ind[0]][hig_ind[1]], hig2 = hig_p4[hig_ind[2]][hig_ind[3]];
827 baby_hig_dm = fabs(hig1.mass() - hig2.mass());
828 baby_hig_am = (hig1.mass() + hig2.mass())/2.;
829 baby_hig_drmax = max(deltaR(baby_jets_p4[hi_csv[hig_ind[0]]], baby_jets_p4[hi_csv[hig_ind[1]]]),
830 deltaR(baby_jets_p4[hi_csv[hig_ind[2]]], baby_jets_p4[hi_csv[hig_ind[3]]]));
835 if(baby_hig_dm<=40) {
836 if (baby_hig_am>100 && baby_hig_am<140) baby_hig_bin = 2;
837 else if (baby_hig_am<=200) baby_hig_bin = 1;
838 else baby_hig_bin = 0;
839 }
else baby_hig_bin = 0;
845 if(baby_nbl>=4) baby_hig_bin += 10;
850 else if (hi_csv[1]>=0 && !isSystemtic){
851 baby_jets_h1[hi_csv[0]] =
true;
852 baby_jets_h1[hi_csv[1]] =
true;
855 if (hi_csv[1]>=0 && !isSystemtic){
856 LVector pb1 = baby_jets_p4[hi_csv[0]], pb2 = baby_jets_p4[hi_csv[1]];
857 baby_mct = sqrt(2*pb1.pt()*pb2.pt() * (1+cos(deltaPhi(pb1.phi(), pb2.phi()))) );
866 baby.bb_highcsv_idx() = -1;
867 jetTool->fillDeltaRbb(baby.dr_bb(),baby.bb_pt(),baby.bb_m(),baby.bb_jet_idx1(),baby.bb_jet_idx2(), baby.bb_gs_idx(), baby.bb_gs_flavor(),all_baby_jets, baby.jets_csv(), baby.jets_islep(),baby.jets_pt(),branks,baby.bb_highcsv_idx());
870 baby.bb_highcsv_idx_deep() = -1;
871 jetTool->fillDeltaRbb(baby.dr_bb_deep(),baby.bb_pt_deep(),baby.bb_m_deep(),baby.bb_jet_idx1_deep(),baby.bb_jet_idx2_deep(), baby.bb_gs_idx_deep(), baby.bb_gs_flavor_deep(),all_baby_jets, baby.jets_csvd(), baby.jets_islep(),baby.jets_pt(),deepbranks,baby.bb_highcsv_idx_deep(),
true);
873 if(baby.nbm() >= 2 && sig_leps.size()>0){
874 const auto &jet1 = all_baby_jets.at(branks.at(0));
875 const auto &jet2 = all_baby_jets.at(branks.at(1));
876 double px = baby.met()*cos(baby.met_phi())+sig_leps.at(0)->px();
877 double py = baby.met()*sin(baby.met_phi())+sig_leps.at(0)->py();
878 baby.mt2() =
getMT2(jet1.mass(), jet1.pt(), jet1.phi(),
879 jet2.mass(), jet2.pt(), jet2.phi(),
880 hypot(px, py), atan2(py, px));
881 baby.mt2_0mass() =
getMT2(0., jet1.pt(), jet1.phi(),
882 0., jet2.pt(), jet2.phi(),
883 hypot(px, py), atan2(py, px));
890 vector<float> fdummy;
893 bool cluster_leps =
false;
894 jetTool->clusterFatJets(intdummy, baby.mj14_nolep(), fdummy, fdummy, fdummy,
895 fdummy, idummy, baby.jets_fjet14_nolep_index(),
896 baby, 1.4, jetTool->JetPtCut, cluster_leps);
899 fdummy.clear(); idummy.clear();
903 jetTool->clusterFatJets(baby.nfjets08(), baby.mj08(),
904 baby.fjets08_pt(), baby.fjets08_eta(),
905 baby.fjets08_phi(), baby.fjets08_m(),
906 baby.fjets08_nconst(), baby.jets_fjet08_index(),
907 baby, 0.8, jetTool->JetPtCut, cluster_leps);
909 fdummy.clear(); idummy.clear();
910 jetTool->clusterFatJets(intdummy, baby.mj12(), fdummy, fdummy, fdummy,
911 fdummy, idummy, baby.jets_fjet12_index(),
912 baby, 1.2, jetTool->JetPtCut, cluster_leps);
914 fdummy.clear(); idummy.clear();
915 jetTool->clusterFatJets(baby.nfjets14(), baby.mj14(),
916 baby.fjets14_pt(), baby.fjets14_eta(),
917 baby.fjets14_phi(), baby.fjets14_m(),
918 baby.fjets14_nconst(), baby.jets_fjet14_index(),
919 baby, 1.4, jetTool->JetPtCut, cluster_leps);
983 edm::Handle<pat::PackedCandidateCollection> pfcands,
984 edm::Handle<reco::VertexCollection> vtx,
985 vCands &veto_mus,
vCands &all_mus,
double rhoEventCentral){
987 veto_mus.clear(); all_mus.clear();
988 baby.nmus() = 0; baby.nvmus() = 0;
990 set<unsigned> badmu_idx, badmu_dupl_idx;
992 badmu_idx = lepTool->badGlobalMuonSelector(vtx, muons,
false);
993 badmu_dupl_idx = lepTool->badGlobalMuonSelector(vtx, muons,
true);
996 for (
unsigned ilep(0); ilep < muons->size(); ilep++) {
997 const pat::Muon &lep = (*muons)[ilep];
1003 if(
isData && !lep.isPFMuon() && lep.userInt(
"muonsCleaned:oldPF")) demoted =
true;
1005 bool isBadMu(
false), isBadDuplMu(
false);
1006 if (badmu_idx.find(ilep)!=badmu_idx.end()) isBadMu =
true;
1007 if (badmu_dupl_idx.find(ilep)!=badmu_dupl_idx.end()) isBadDuplMu =
true;
1009 bool isBadTrackerMuon(
false);
1010 if (lep.pt()>10 && lep.isPFMuon() && lep.isTrackerMuon() && lep.numberOfMatchedStations()>0) {
1011 if (lep.innerTrack().isNonnull()) {
1012 bool goodQualityTrack = (lep.innerTrack()->numberOfValidHits()>=10) || (lep.innerTrack()->numberOfValidHits()>=7 && lep.innerTrack()->numberOfLostHits()==0);
1013 if (!goodQualityTrack) isBadTrackerMuon =
true;
1015 isBadTrackerMuon =
true;
1020 bool save_mu = lepTool->isVetoMuon(lep, vtx, -99.) || isBadMu || isBadDuplMu || isBadTrackerMuon || demoted;
1021 if(!save_mu)
continue;
1028 double lep_iso(lepTool->getPFIsolation(pfcands, dynamic_cast<const reco::Candidate *>(&lep), 0.05, 0.2, 10., rhoEventCentral,
false));
1029 double lep_reliso(lepTool->getRelIsolation(lep, rhoEventCentral));
1030 double dz(0.), d0(0.);
1031 lepTool->vertexMuon(lep, vtx, dz, d0);
1033 baby.mus_bad().push_back(isBadMu);
1034 baby.mus_bad_dupl().push_back(isBadDuplMu);
1035 baby.mus_bad_trkmu().push_back(isBadTrackerMuon);
1036 baby.mus_demoted().push_back(demoted);
1037 baby.mus_pt().push_back(lep.pt());
1038 baby.mus_eta().push_back(lep.eta());
1039 baby.mus_phi().push_back(lep.phi());
1040 baby.mus_dz().push_back(dz);
1041 baby.mus_d0().push_back(d0);
1042 baby.mus_charge().push_back(lep.charge());
1043 baby.mus_sigid().push_back(lepTool->idMuon(lep, vtx, lepTool->kMedium));
1044 baby.mus_tight().push_back(lepTool->idMuon(lep, vtx, lepTool->kTight));
1045 baby.mus_miniso().push_back(lep_iso);
1046 baby.mus_reliso().push_back(lep_reliso);
1047 baby.mus_tm().push_back(
false);
1048 baby.mus_inz().push_back(
false);
1049 baby.mus_inzv().push_back(
false);
1050 baby.mus_vvvl().push_back(
false);
1051 baby.mus_isomu18().push_back(
false);
1052 baby.mus_mu50().push_back(
false);
1053 baby.mus_mu8().push_back(
false);
1054 if (lep.track().isNonnull()){
1055 baby.mus_trk_quality().push_back(lep.innerTrack()->quality(reco::TrackBase::highPurity));
1056 baby.mus_pterr().push_back(lep.innerTrack()->ptError());
1057 baby.mus_trk_nholes_in().push_back(lep.innerTrack()->hitPattern().numberOfLostHits(reco::HitPattern::MISSING_INNER_HITS));
1058 baby.mus_trk_nholes_out().push_back(lep.innerTrack()->hitPattern().numberOfLostHits(reco::HitPattern::MISSING_OUTER_HITS));
1059 baby.mus_trk_algo().push_back(lep.innerTrack()->algo());
1061 baby.mus_trk_quality().push_back(-99999);
1062 baby.mus_pterr().push_back(-99999);
1063 baby.mus_trk_nholes_in().push_back(-99999);
1064 baby.mus_trk_nholes_out().push_back(-99999);
1065 baby.mus_trk_algo().push_back(-99999);
1067 baby.mus_em_e().push_back(lep.calEnergy().em);
1068 baby.mus_had_e().push_back(lep.calEnergy().had);
1069 all_mus.push_back(dynamic_cast<const reco::Candidate *>(&lep));
1071 if(lepTool->isVetoMuon(lep, vtx, lep_iso)) {
1073 veto_mus.push_back(dynamic_cast<const reco::Candidate *>(&lep));
1075 if(lepTool->isSignalMuon(lep, vtx, lep_iso)) {
1077 sig_mus.push_back(dynamic_cast<const reco::Candidate *>(&lep));
1078 baby.mus_sig().push_back(
true);
1079 }
else baby.mus_sig().push_back(
false);
1087 edm::Handle<pat::PackedCandidateCollection> pfcands,
1088 edm::Handle<reco::VertexCollection> vtx,
1089 vCands &veto_els,
vCands &all_els,
double rhoEventCentral){
1091 veto_els.clear(); all_els.clear();
1092 baby.nels() = 0; baby.nvels() = 0;
1093 for (
size_t ilep(0); ilep < electrons->size(); ilep++) {
1094 const pat::Electron &lep = (*electrons)[ilep];
1095 if(!lepTool->isVetoElectron(lep, vtx, -99.))
continue;
1102 double lep_iso(lepTool->getPFIsolation(pfcands, dynamic_cast<const reco::Candidate *>(&lep), 0.05, 0.2, 10., rhoEventCentral,
false));
1103 double lep_reliso(lepTool->getRelIsolation(lep, rhoEventCentral));
1104 double dz(0.), d0(0.);
1105 lepTool->vertexElectron(lep, vtx, dz, d0);
1107 baby.els_pt().push_back(lep.pt());
1109 baby.els_scpt().push_back(lep.superCluster()->energy()*sin(lep.superClusterPosition().theta()));
1110 baby.els_sceta().push_back(lep.superCluster()->eta());
1111 baby.els_eta().push_back(lep.eta());
1112 baby.els_phi().push_back(lep.phi());
1113 baby.els_dz().push_back(dz);
1114 baby.els_d0().push_back(d0);
1115 baby.els_ip3d().push_back(lep.ip3d());
1116 baby.els_charge().push_back(lep.charge());
1117 baby.els_sigid().push_back(lepTool->idElectron(lep, vtx, lepTool->kMedium));
1118 baby.els_ispf().push_back(lep.numberOfSourceCandidatePtrs()==2 && abs(lep.sourceCandidatePtr(1)->pdgId())==11);
1119 baby.els_tight().push_back(lepTool->idElectron(lep, vtx, lepTool->kTight));
1120 baby.els_miniso().push_back(lep_iso);
1121 baby.els_reliso().push_back(lep_reliso);
1122 baby.els_tm().push_back(
false);
1123 baby.els_inz().push_back(
false);
1124 baby.els_inzv().push_back(
false);
1125 baby.els_vvvl().push_back(
false);
1126 baby.els_ele23().push_back(
false);
1127 baby.els_ele105().push_back(
false);
1128 baby.els_ele8().push_back(
false);
1129 baby.els_hovere().push_back(lep.hadronicOverEm());
1130 baby.els_eoverp().push_back(lep.eSuperClusterOverP());
1131 baby.els_em_e().push_back(lep.ecalEnergy());
1132 baby.els_deta_sctrk().push_back(lep.deltaEtaSuperClusterTrackAtVtx());
1133 baby.els_dphi_sctrk().push_back(lep.deltaPhiSuperClusterTrackAtVtx());
1134 if (lep.gsfTrack().isNonnull()){
1135 baby.els_trk_pt().push_back(lep.gsfTrack()->pt());
1136 baby.els_trk_pterr().push_back(lep.gsfTrack()->ptError());
1137 baby.els_trk_nholes().push_back(lep.gsfTrack()->hitPattern().numberOfLostHits(reco::HitPattern::MISSING_INNER_HITS));
1139 baby.els_trk_pt().push_back(-99999);
1140 baby.els_trk_pterr().push_back(-99999);
1141 baby.els_trk_nholes().push_back(-99999);
1143 all_els.push_back(dynamic_cast<const reco::Candidate *>(&lep));
1145 if(lepTool->isVetoElectron(lep, vtx, lep_iso)){
1147 veto_els.push_back(dynamic_cast<const reco::Candidate *>(&lep));
1149 if(lepTool->isSignalElectron(lep, vtx, lep_iso)) {
1151 sig_els.push_back(dynamic_cast<const reco::Candidate *>(&lep));
1152 baby.els_sig().push_back(
true);
1153 }
else baby.els_sig().push_back(
false);
1160 baby.nleps() = baby.nmus() + baby.nels();
1161 baby.nvleps() = baby.nvmus() + baby.nvels();
1162 sort(leptons.begin(), leptons.end(),
greaterPt);
1163 for(
size_t ind(0);
ind < leptons.size();
ind++) {
1164 baby.leps_pt().push_back(leptons[
ind]->pt());
1165 baby.leps_eta().push_back(leptons[
ind]->eta());
1166 baby.leps_phi().push_back(leptons[
ind]->phi());
1167 baby.leps_id().push_back(leptons[
ind]->pdgId());
1171 void bmaker_full::writeTks(edm::Handle<pat::PackedCandidateCollection> pfcands,edm::Handle<reco::VertexCollection> vtx,
double rhoEventCentral ){
1172 if(baby.leps_id().size()>0){
1174 vector<float> relisos;
1176 ra4tks = lepTool->getRA4IsoTracks(pfcands, baby.met(), baby.met_phi(),rhoEventCentral,isos,relisos,baby.leps_id().at(0));
1180 for(
unsigned i=0;i<ra4tks.size();i++){
1181 baby.tks_pt().push_back(ra4tks.at(i)->pt());
1182 baby.tks_eta().push_back(ra4tks.at(i)->eta());
1183 baby.tks_phi().push_back(ra4tks.at(i)->phi());
1184 baby.tks_d0().push_back( sqrt(pow(ra4tks.at(i)->vx()-vtx->at(0).x(),2) + pow(vtx->at(0).y()-ra4tks.at(i)->vy(),2)));
1185 baby.tks_dz().push_back(ra4tks.at(i)->vz()-vtx->at(0).z());
1186 baby.tks_pdg().push_back(ra4tks.at(i)->pdgId());
1187 baby.tks_miniso().push_back(isos.at(i));
1188 baby.tks_reliso().push_back(relisos.at(i));
1189 baby.tks_tm().push_back(
false);
1191 baby.tks_mt2().push_back(
getMT2(baby.leps_pt().at(0),baby.leps_phi().at(0),baby.tks_pt().back(),baby.tks_phi().back(),baby.met(),baby.met_phi()));
1192 baby.tks_mt().push_back(
getMT(baby.tks_pt().back(),baby.tks_phi().back(),baby.met(),baby.met_phi()));
1194 if(fabs(baby.tks_pdg().back())==211 && baby.tks_pt().back()>15. && baby.tks_miniso().back()<0.1 && baby.tks_mt2().back()<60 && baby.tks_dz().back()<0.07 && baby.tks_d0().back()<0.05 ) nveto++;
1195 else if (fabs(baby.tks_pdg().back())==13 && baby.tks_pt().back()>10. && baby.tks_miniso().back()<0.2 && baby.tks_mt2().back()<80 && baby.tks_dz().back()<0.07 && baby.tks_d0().back()<0.05) nveto++;
1196 else if (fabs(baby.tks_pdg().back())==11 && baby.tks_pt().back()>10. && baby.tks_miniso().back()<0.2 && baby.tks_mt2().back()<80 && baby.tks_dz().back()<0.07 && baby.tks_d0().back()<0.05) nveto++;
1229 for(
size_t lep1(0); lep1 < leptons.size(); lep1++){
1230 for(
size_t lep2(lep1+1); lep2 < leptons.size(); lep2++){
1231 if(leptons[lep1]->charge()*leptons[lep2]->charge()<0){
1232 LVector z_p4(leptons[lep1]->p4());
1233 z_p4 += leptons[lep2]->p4();
1234 (baby.*ll_m)() = z_p4.mass();
1235 (baby.*ll_pt)() = z_p4.pt();
1236 (baby.*ll_eta)() = z_p4.eta();
1237 (baby.*ll_phi)() = z_p4.phi();
1238 float pt1(leptons[lep1]->pt()), pt2(leptons[lep2]->pt());
1239 (baby.*ll_pt1)() = max(pt1, pt2);
1240 (baby.*ll_pt2)() = min(pt1, pt2);
1241 for(
size_t ilep(0); ilep < (baby.*l_pt)().size(); ilep++){
1242 if(fabs(pt1 - (baby.*l_pt)()[ilep]) < 1e-7) (baby.*l_inz)()[ilep] =
true;
1243 if(fabs(pt2 - (baby.*l_pt)()[ilep]) < 1e-7) (baby.*l_inz)()[ilep] =
true;
1255 for(
size_t lep1(0); lep1 < leptons1.size(); lep1++){
1256 for(
size_t lep2(0); lep2 < leptons2.size(); lep2++){
1257 if(leptons1[lep1]->charge()*leptons2[lep2]->charge()<0){
1258 LVector z_p4(leptons1[lep1]->p4());
1259 z_p4 += leptons2[lep2]->p4();
1260 (baby.*ll_m)() = z_p4.mass();
1261 (baby.*ll_pt)() = z_p4.pt();
1262 (baby.*ll_eta)() = z_p4.eta();
1263 (baby.*ll_phi)() = z_p4.phi();
1264 float pt1(leptons1[lep1]->pt()), pt2(leptons2[lep2]->pt());
1265 (baby.*ll_pt1)() = pt1;
1266 (baby.*ll_pt2)() = pt2;
1276 edm::Handle<std::vector<pat::Electron> > &electrons,
1277 edm::Handle<reco::ConversionCollection> &conversions,
1278 edm::Handle<reco::BeamSpot> &beamspot,
double rho){
1282 for (
size_t ind(0);
ind < allphotons->size();
ind++) {
1283 const pat::Photon &photon = (*allphotons)[
ind];
1285 if(photon.pt() < 50)
continue;
1286 if(!photonTool->idPhoton(photon, electrons, conversions, beamspot, rho))
continue;
1287 if(photon.pt() > photonTool->PhotonPtCut) baby.nph()++;
1288 baby.ph_pt().push_back(photon.pt());
1289 baby.ph_eta().push_back(photon.eta());
1290 baby.ph_phi().push_back(photon.phi());
1291 baby.ph_tm().push_back(
false);
1292 baby.ph_ph90().push_back(
false);
1294 photons.push_back(dynamic_cast<const reco::Candidate *>(&photon));
1301 edm::Handle<edm::TriggerResults> triggerBits,
1302 edm::Handle<pat::PackedTriggerPrescales> triggerPrescales){
1304 baby.trig().resize(trig_name.size(),
false);
1305 baby.trig_prescale().resize(trig_name.size(), -1.);
1306 for (
size_t itrig(0); itrig < triggerBits->size(); itrig++) {
1307 for(
size_t itn(0); itn < trig_name.size(); itn++){
1308 if(names.triggerName(itrig).find(trig_name[itn])!=string::npos){
1309 baby.trig()[itn] = triggerBits->accept(itrig);
1310 baby.trig_prescale()[itn] = triggerPrescales->getPrescaleForIndex(itrig);
1311 if(baby.trig()[itn]) keep =
true;
1316 vector<TString> trigs_ra4({
"HLT_PFHT500_PFMET100_PFMHT100_IDTight_v",
"HLT_Mu15_IsoVVVL_PFHT450_v",
1317 "HLT_Ele15_IsoVVVL_PFHT450_v",
"HLT_PFMET120_PFMHT120_IDTight_v",
1318 "HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_v",
"HLT_IsoMu24_v",
"HLT_Mu50_v",
1319 "HLT_Ele115_CaloIdVT_GsfTrkIdT_v",
"HLT_Ele27_WPTight_Gsf_v",
1320 "HLT_Ele28_eta2p1_WPTight_Gsf_HT150_v"});
1321 vector<TString> trigs_met({
"HLT_PFHT500_PFMET100_PFMHT100_IDTight_v",
"HLT_PFMET120_PFMHT120_IDTight_v",
1322 "HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_v"});
1323 vector<TString> trigs_vvvl({
"HLT_Mu15_IsoVVVL_PFHT350_v",
"HLT_Mu15_IsoVVVL_PFHT400_v",
"HLT_Mu50_IsoVVVL_PFHT400_v",
1324 "HLT_Ele15_IsoVVVL_PFHT350_v",
"HLT_Ele15_IsoVVVL_PFHT400_v",
"HLT_Ele50_IsoVVVL_PFHT400_v"});
1325 vector<TString> trigs_lep({
"HLT_IsoMu24_v",
"HLT_Mu50_v",
"HLT_Ele115_CaloIdVT_GsfTrkIdT_v",
"HLT_Ele28_eta2p1_WPTight_Gsf_HT150_v"});
1326 baby.trig_ra4() =
false;
1327 baby.trig_met() =
false;
1328 baby.trig_vvvl() =
false;
1329 baby.trig_lep() =
false;
1330 for(
size_t itn(0); itn < trig_name.size(); itn++){
1331 for(
size_t ira4(0); ira4 < trigs_ra4.size(); ira4++)
1332 if(trig_name[itn].
Contains(trigs_ra4[ira4])) baby.trig_ra4() = (baby.trig_ra4() || baby.trig()[itn]);
1333 for(
size_t imet(0); imet < trigs_met.size(); imet++)
1334 if(trig_name[itn].
Contains(trigs_met[imet])) baby.trig_met() = (baby.trig_met() || baby.trig()[itn]);
1335 for(
size_t ivvvl(0); ivvvl < trigs_vvvl.size(); ivvvl++)
1336 if(trig_name[itn].
Contains(trigs_vvvl[ivvvl])) baby.trig_vvvl() = (baby.trig_vvvl() || baby.trig()[itn]);
1337 for(
size_t ilep(0); ilep < trigs_lep.size(); ilep++)
1338 if(trig_name[itn].
Contains(trigs_lep[ilep])) baby.trig_lep() = (baby.trig_lep() || baby.trig()[itn]);
1344 edm::Handle<pat::TriggerObjectStandAloneCollection> triggerObjects,
1346 baby.nmus_vvvl() = 0; baby.nmus_isomu18() = 0;
1347 baby.nels_vvvl() = 0; baby.nels_ele23() = 0;
1348 const float relptThreshold(1), drThreshold(0.3);
1349 edm::Handle<edm::TriggerResults> triggerBits;
1350 iEvent.getByToken(tok_trigResults_hlt_,triggerBits);
1351 for (pat::TriggerObjectStandAlone obj : *triggerObjects) {
1352 obj.unpackFilterLabels(iEvent, *triggerBits);
1353 obj.unpackPathNames(names);
1354 TString name(obj.collection());
1355 float objpt(obj.pt());
1356 if(name==
"hltPFMETProducer::HLT") baby.onmet() = objpt;
1357 if(name==
"hltPFHT::HLT") baby.onht() = objpt;
1359 if(name==
"hltL3MuonCandidates::HLT"){
1360 bool vvvl(obj.hasFilterLabel(
"hltL3MuVVVLIsoFIlter"));
1361 bool isomu18(obj.hasFilterLabel(
"hltL3crIsoL1sMu16L1f0L2f10QL3f18QL3trkIsoFiltered0p09") );
1362 bool mu50(obj.hasFilterLabel(
"hltL3fL1sMu16orMu25L1f0L2f10QL3Filtered50Q"));
1363 bool mu8(obj.hasFilterLabel(
"hltDoubleMu8Mass8L3Filtered"));
1366 baby.mus_vvvl_pt().push_back(objpt);
1367 baby.mus_vvvl_eta().push_back(obj.eta());
1368 baby.mus_vvvl_phi().push_back(obj.phi());
1370 if(isomu18) baby.nmus_isomu18()++;
1371 if(vvvl && baby.onmu_vvvl()<objpt) baby.onmu_vvvl() = objpt;
1372 if(isomu18 && baby.onmu_isomu18()<objpt) baby.onmu_isomu18() = objpt;
1373 if(mu50 && baby.onmu_mu50()<objpt) baby.onmu_mu50() = objpt;
1374 if(mu8 && baby.onmu_mu8()<objpt) baby.onmu_mu8() = objpt;
1377 if(vvvl || isomu18 || mu50 || mu8){
1378 for(
size_t ind(0);
ind < all_mus.size();
ind++) {
1379 double dr(deltaR(obj, *(all_mus[
ind])));
1382 if(dr > drThreshold)
continue;
1389 baby.mus_vvvl()[minind] = vvvl;
1390 baby.mus_isomu18()[minind] = isomu18;
1391 baby.mus_mu50()[minind] = mu50;
1392 baby.mus_mu8()[minind] = mu8;
1396 if(name==
"hltEgammaCandidates::HLT" || name==
"hltDoubleEle8HLTPixelMatchElectronProducer::HLT"){
1397 bool vvvl(obj.hasFilterLabel(
"hltEle15VVVLGsfTrackIsoFilter"));
1398 bool ele23(obj.hasFilterLabel(
"hltEle23WPLooseGsfTrackIsoFilter") );
1399 bool ele105(obj.hasFilterLabel(
"hltEle105CaloIdVTGsfTrkIdTGsfDphiFilter"));
1400 bool ele8(obj.hasFilterLabel(
"hltDoubleEle8Mass8Filter"));
1403 baby.els_vvvl_pt().push_back(objpt);
1404 baby.els_vvvl_eta().push_back(obj.eta());
1405 baby.els_vvvl_phi().push_back(obj.phi());
1407 if(ele23) baby.nels_ele23()++;
1408 if(vvvl && baby.onel_vvvl()<objpt) baby.onel_vvvl() = objpt;
1409 if(ele23 && baby.onel_ele23()<objpt) baby.onel_ele23() = objpt;
1410 if(ele105 && baby.onel_ele105()<objpt) baby.onel_ele105() = objpt;
1411 if(ele8 && baby.onel_ele8()<objpt) baby.onel_ele8() = objpt;
1412 if(vvvl || ele23 || ele105 || ele8){
1415 for(
size_t ind(0);
ind < all_els.size();
ind++) {
1416 double dr(deltaR(obj, *(all_els[
ind])));
1417 double drelpt(fabs((all_els[ind]->pt() - objpt)/objpt));
1418 if(dr > drThreshold || drelpt > relptThreshold)
continue;
1425 baby.els_vvvl()[minind] = vvvl;
1426 baby.els_ele23()[minind] = ele23;
1427 baby.els_ele105()[minind] = ele105;
1428 baby.els_ele8()[minind] = ele8;
1431 bool ph90(obj.hasFilterLabel(
"hltEG90L1SingleEG40HEFilter"));
1432 if(ph90 && baby.onph_ph90()<objpt) baby.onph_ph90() = objpt;
1436 for(
size_t ind(0);
ind < photons.size();
ind++) {
1437 double dr(deltaR(obj, *(photons[
ind])));
1438 double drelpt(fabs((photons[ind]->pt() - objpt)/objpt));
1439 if(dr > drThreshold || drelpt > relptThreshold)
continue;
1446 baby.ph_ph90()[minind] = ph90;
1456 edm::Handle<edm::TriggerResults> filterBits,
1457 edm::Handle<reco::VertexCollection> vtx,
1458 vector<double> jetsMuonEnergyFrac){
1459 baby.pass_goodv() =
true; baby.pass_cschalo() =
true; baby.pass_eebadsc() =
true;
1460 baby.pass_hbhe() =
true; baby.pass_hbheiso() =
true; baby.pass_ecaldeadcell() =
true;
1461 baby.pass_badpfmu() =
true; baby.pass_badchhad() =
true; baby.pass_badcalib() =
true;
1462 baby.pass_ra2_badmu() =
true;
1463 for (
size_t i(0); i < filterBits->size(); ++i) {
1464 string name = fnames.triggerName(i);
1465 bool pass =
static_cast<bool>(filterBits->accept(i));
1466 if (name==
"Flag_goodVertices") baby.pass_goodv() = pass;
1467 else if (name==
"Flag_globalTightHalo2016Filter") baby.pass_cschalo() = pass;
1468 else if (name==
"Flag_HBHENoiseFilter") baby.pass_hbhe() = pass;
1469 else if (name==
"Flag_HBHENoiseIsoFilter") baby.pass_hbheiso() = pass;
1470 else if (name==
"Flag_EcalDeadCellTriggerPrimitiveFilter") baby.pass_ecaldeadcell() = pass;
1472 else if (name==
"Flag_BadPFMuonFilter") baby.pass_badpfmu() = pass;
1473 else if (name==
"BadChargedCandidateFilter") baby.pass_badchhad() = !pass;
1475 else if (name==
"Flag_ecalBadCalibFilter") baby.pass_badcalib() = pass;
1478 baby.pass() = baby.pass_goodv() && baby.pass_ecaldeadcell() &&
1479 baby.pass_hbhe() && baby.pass_hbheiso() &&
1480 baby.pass_badpfmu() && baby.pass_badchhad() && baby.pass_badcalib() &&
1481 baby.pass_jets() && baby.pass_fsmet() && baby.pass_fsjets();
1483 baby.pass_ra2() = baby.pass_goodv() && baby.pass_ecaldeadcell() &&
1484 baby.pass_hbhe() && baby.pass_hbheiso() &&
1485 baby.pass_badpfmu() && baby.pass_badchhad() && baby.pass_badcalib() &&
1486 baby.pass_jets_ra2() && baby.pass_fsmet() && baby.pass_fsjets();
1488 baby.pass_nohf() = baby.pass_goodv() && baby.pass_ecaldeadcell() &&
1489 baby.pass_hbhe() && baby.pass_hbheiso() &&
1490 baby.pass_badpfmu() && baby.pass_badchhad() && baby.pass_badcalib() &&
1491 baby.pass_jets_nohf() && baby.pass_fsmet() && baby.pass_fsjets();
1497 if(
isData){ baby.pass() = baby.pass() && baby.pass_eebadsc();
1498 baby.pass_ra2() = baby.pass_ra2() && baby.pass_eebadsc();
1499 baby.pass_nohf() = baby.pass_nohf() && baby.pass_eebadsc();
1503 if(!
isFastSim){ baby.pass() = baby.pass() && baby.pass_cschalo();
1504 baby.pass_ra2() = baby.pass_ra2() && baby.pass_cschalo();
1505 baby.pass_nohf() = baby.pass_nohf() && baby.pass_cschalo();
1509 for (
size_t ijet(0); ijet < baby.jets_pt().size(); ijet++){
1510 if (abs(baby.jets_eta()[ijet])>2.4 || baby.jets_pt()[ijet]<200.)
continue;
1511 if (baby.jets_islep()[ijet])
continue;
1512 if (jetsMuonEnergyFrac[ijet]<=0.5)
continue;
1513 if (abs(
dPhi(baby.jets_phi()[ijet],baby.met_phi()))<(3.14159-0.4))
continue;
1514 baby.pass_ra2_badmu() =
false;
1519 for (
unsigned isys(0); isys<
kSysLast; isys++){
1521 baby.sys_pass()[isys] = baby.sys_pass()[isys] && baby.pass_goodv() && baby.pass_eebadsc() && baby.pass_cschalo() && baby.pass_hbhe() && baby.pass_hbheiso() && baby.pass_ecaldeadcell();
1527 edm::Handle<std::vector< PileupSummaryInfo > > pu_info){
1528 baby.npv() = vtx->size();
1529 if(pu_info.isValid()){
1530 for(
size_t bc(0); bc<pu_info->size(); ++bc){
1531 if(pu_info->at(bc).getBunchCrossing()==0){
1532 baby.ntrupv() = pu_info->at(bc).getPU_NumInteractions();
1533 baby.ntrupv_mean() = pu_info->at(bc).getTrueNumInteractions();
1541 baby.nisr_me()=0; baby.ht_isr_me()=0.; baby.ptll_me()=0.;
1542 float px1(0.), px2(0.), py1(0.), py2(0.);
1543 unsigned nme_leps(0);
1544 for (
unsigned int icount = 0 ; icount < (
unsigned int)lhe_info->hepeup().NUP; icount++ ) {
1545 unsigned int pdgid = abs(lhe_info->hepeup().IDUP[icount]);
1546 int status = lhe_info->hepeup().ISTUP[icount];
1547 int mom1_idx = lhe_info->hepeup().MOTHUP[icount].first;
1548 int mom2_idx = lhe_info->hepeup().MOTHUP[icount].second;
1549 int mom1id = mom1_idx==0 ? 0 : abs(lhe_info->hepeup().IDUP[mom1_idx-1]);
1550 int mom2id = mom2_idx==0 ? 0 : abs(lhe_info->hepeup().IDUP[mom2_idx-1]);
1551 float px = (lhe_info->hepeup().PUP[icount])[0];
1552 float py = (lhe_info->hepeup().PUP[icount])[1];
1553 float pt = sqrt(px*px+py*py);
1556 if(status==1 && (pdgid<6 || pdgid==21) && mom1id!=6 && mom2id!=6 && mom1id!=24 && mom2id!=24
1557 && mom1id!=23 && mom2id!=23 && mom1id!=25 && mom2id!=25) {
1559 baby.ht_isr_me() += pt;
1562 if(status==1 && (pdgid==11 || pdgid==13 || pdgid==15)) {
1565 }
else if (nme_leps==1){
1567 }
else cout<<
"Found more than two leptons in ME"<<endl;
1572 baby.ptll_me() = sqrt(pow(px1+px2,2)+pow(py1+py2,2));
1575 if (
outname.Contains(
"SMS-") &&
outname.Contains(
"PUSpring16Fast")){
1576 typedef std::vector<std::string>::const_iterator comments_const_iterator;
1578 comments_const_iterator c_begin = lhe_info->comments_begin();
1579 comments_const_iterator c_end = lhe_info->comments_end();
1581 TString model_params;
1582 for(comments_const_iterator cit=c_begin; cit!=c_end; ++cit) {
1583 size_t found = (*cit).find(
"model");
1584 if(found != std::string::npos) {
1586 model_params = *cit;
1590 mcTool->getMassPoints(model_params,baby.mgluino(),baby.mlsp());
1595 vector<reco::Candidate::LorentzVector> &all_baby_jets){
1596 bool verbose =
false;
1597 baby.jets_isisr().resize(all_baby_jets.size(),
false);
1599 for (
size_t ijet(0); ijet<all_baby_jets.size(); ijet++){
1600 if (baby.jets_islep()[ijet] || all_baby_jets[ijet].pt()<=jetTool->JetPtCut)
continue;
1603 for (
size_t imc(0); imc < genParticles->size(); imc++) {
1605 const reco::GenParticle &mc = (*genParticles)[imc];
1606 if (mc.status()!=23 || abs(mc.pdgId())>5)
continue;
1607 int momid = abs(mc.mother()->pdgId());
1608 if(!(momid==6 || momid==23 || momid==24 || momid==25 || momid>1e6))
continue;
1610 for (
size_t idau(0); idau < mc.numberOfDaughters(); idau++) {
1611 float dR = deltaR(all_baby_jets[ijet], mc.daughter(idau)->p4());
1613 if (verbose) cout<<
"Jet: ("<<all_baby_jets[ijet].pt()<<
", "<<all_baby_jets[ijet].eta()<<
", "<<all_baby_jets[ijet].phi()
1614 <<
"), MC: ("<<mc.daughter(idau)->pt()<<
", "<<mc.daughter(idau)->eta()<<
", "<<mc.daughter(idau)->phi()<<
"), ID "<<mc.daughter(idau)->pdgId()<<
". dR "<<dR <<endl;
1622 baby.jets_isisr()[ijet] =
true;
1631 float metw_tru_x(0.), metw_tru_y(0.);
1632 float lep_tru_pt(0.), lep_tru_phi(0.);
1633 baby.ntruleps()=0; baby.ntrumus()=0; baby.ntruels()=0; baby.ntrutaush()=0; baby.ntrutausl()=0;
1635 baby.fromGS()=
false;
1636 baby.m_tt()=0; baby.top_pt()=0; baby.antitop_pt()=0;
1637 vector<float> top_pt;
1639 int antitopIndex=-1;
1640 const size_t bsmid(1000000);
1643 vector<pair<int, const reco::GenParticle *> > indices;
1645 for (
size_t imc(0); imc < genParticles->size(); imc++) {
1646 const reco::GenParticle &mc = (*genParticles)[imc];
1647 size_t id = abs(mc.pdgId());
1648 bool isLast = mcTool->isLast(mc,
id);
1649 bool isFirst =
true;
1650 const reco::GenParticle *mcMom =
static_cast<const reco::GenParticle *
>(mc.mother());
1652 if(mcMom->pdgId() == mc.pdgId()) isFirst =
false;
1655 const reco::GenParticle *mom =
nullptr;
1656 size_t momid = abs(mcTool->mom(mc, mom));
1658 bool isNewPhysics(
id>=bsmid);
1659 bool isGluino(
id==1000021);
1660 bool isNeutralino(
id==1000023 ||
id==1000025);
1664 bool bTopOrBSM(
id==5 && (momid==6 || momid>=bsmid));
1665 bool nuFromZ((
id==12 ||
id==14 ||
id==16) && momid==23);
1666 bool eFromTopZ(
id==11 && (momid==24 || momid==23));
1667 bool muFromTopZ(
id==13 && (momid==24 || momid==23));
1668 bool tauFromTopZ(
id==15 && (momid==24 || momid==23));
1669 bool fromTau(mcTool->fromTau(mc));
1670 bool fromWOrWTau(mcTool->fromWOrWTau(mc));
1671 bool chgPionFromTau(
id==211 && momid==15 && fromWOrWTau);
1672 bool eFromTopZtau(
id==11 && (momid==24 || momid==23 || fromTau ));
1673 bool muFromTopZtau(
id==13 && (momid==24 || momid==23 || fromTau ));
1674 bool fromHiggs(momid==25);
1675 bool fromTop(momid==6);
1676 bool mg_me = mc.status()==23;
1679 bool from_gs =
false;
1680 if(isFirst && (
id==4 ||
id==5) && mcTool->isFromGSP(dynamic_cast<const reco::Candidate*>(&mc))) from_gs =
true;
1681 if(from_gs && !baby.fromGS()) baby.fromGS() =
true;
1685 for(
size_t idau(0); idau < mc.numberOfDaughters(); idau++) {
1686 int dauid(abs(mc.daughter(idau)->pdgId()));
1687 if(dauid == 4 || dauid==5) {
1688 if(mcTool->isFromGSP(mc.daughter(idau))){
1698 if((isLast && (isTop || isNewPhysics || isZ || isH))
1699 || (isFirst && (fromHiggs || isW || bTopOrBSM || eFromTopZ || muFromTopZ
1700 || tauFromTopZ || nuFromZ || fromWOrWTau || fromTop))
1701 || mg_me || from_gs){
1708 for(
size_t ind(0);
ind < baby.jets_pt().size();
ind++) {
1709 double dr =
dR(baby.jets_phi()[
ind],mc.phi(),baby.jets_eta()[
ind],mc.eta());
1710 double dij = pow(max(baby.jets_pt()[
ind],
static_cast<float>(mc.pt())),-2)*dr*pow(0.4,-2);
1711 if(dij<mind && dr < 0.4){
1717 baby.mc_status().push_back(mc.status());
1718 baby.mc_id().push_back(mc.pdgId());
1719 baby.mc_pt().push_back(mc.pt());
1720 baby.mc_eta().push_back(mc.eta());
1721 baby.mc_phi().push_back(mc.phi());
1722 baby.mc_mass().push_back(mc.mass());
1723 baby.mc_mom().push_back(mcTool->mom(mc,mom));
1724 baby.mc_gs().push_back(from_gs);
1725 baby.mc_gs_dau_jetmatch().push_back(-1);
1726 baby.mc_gs_dau_dr().push_back(-1.);
1727 baby.mc_jetidx().push_back(minjetidx);
1728 baby.mc_num_dau().push_back(mc.numberOfDaughters());
1731 baby.mc_momidx().push_back(mcTool->getMomIndex(mc,indices));
1732 indices.push_back(pair<int, const reco::GenParticle *>(Nsaved, &mc));
1739 if(
id==5) baby.jets_ntrub()[minjetidx]++;
1740 if(
id==4) baby.jets_ntruc()[minjetidx]++;
1741 if(from_gs && (
id==4||
id==5)) baby.jets_gs_index()[minjetidx]= baby.mc_momidx().back();
1749 if(isTop) mc.pdgId()>0 ? topIndex=imc : antitopIndex=imc;
1753 || (isGluino && (
outname.Contains(
"SMS") ||
outname.Contains(
"RPV")))
1754 || (isZ &&
outname.Contains(
"DY"))) isr_p4 -= mc.p4();
1756 if(isNeutralino &&
outname.Contains(
"TChiHH")) isr_p4 -= mc.p4();
1759 top_pt.push_back(mc.pt());
1763 if(muFromTopZ) baby.ntrumus()++;
1764 if(eFromTopZ) baby.ntruels()++;
1766 const reco::GenParticle *tauDaughter(0);
1767 if(mcTool->decaysTo(mc, 11, tauDaughter) || mcTool->decaysTo(mc, 13, tauDaughter)){
1769 }
else baby.ntrutaush()++;
1774 const float relptThreshold(0.3), drThreshold(0.1);
1775 float relptThres(2.), drThres(0.15);
1777 if(eFromTopZtau|| muFromTopZtau || chgPionFromTau){
1781 for(
size_t ind(0);
ind < baby.leps_pt().size();
ind++) {
1782 double dr =
dR(baby.leps_phi()[
ind],mc.phi(),baby.leps_eta()[
ind],mc.eta());
1784 double drelpt(fabs((baby.leps_pt()[
ind] - mc.pt())/mc.pt()));
1785 if(dr > drThres || drelpt > relptThres)
continue;
1795 double min_dr(999.);
1797 for(
size_t ind(0);
ind < baby.tks_pt().size();
ind++) {
1798 double dr =
dR(baby.tks_phi()[
ind],mc.phi(),baby.tks_eta()[
ind],mc.eta());
1799 double drelpt(fabs((baby.tks_pt()[
ind] - mc.pt())/mc.pt()));
1800 if(dr > drThreshold || drelpt > relptThres)
continue;
1807 baby.tks_tm()[minindex] =
true;
1815 if(
id==11 && fromWOrWTau){
1818 for(
size_t ind(0);
ind < all_els.size();
ind++) {
1819 double dr(deltaR(mc, *(all_els[
ind])));
1820 double drelpt(fabs((all_els[ind]->pt() - mc.pt())/mc.pt()));
1821 if(dr > drThreshold || drelpt > relptThreshold)
continue;
1828 baby.els_tm()[minind] =
true;
1829 if(baby.els_sig()[minind]) baby.nleps_tm()++;
1831 if(lep_tru_pt < mc.pt()){
1832 lep_tru_pt = mc.pt();
1833 lep_tru_phi = mc.phi();
1836 if(
id==13 && fromWOrWTau){
1839 for(
size_t ind(0);
ind < all_mus.size();
ind++) {
1840 double dr(deltaR(mc, *(all_mus[
ind])));
1841 double drelpt(fabs((all_mus[ind]->pt() - mc.pt())/mc.pt()));
1842 if(dr > drThreshold || drelpt > relptThreshold)
continue;
1849 baby.mus_tm()[minind] =
true;
1850 if(baby.mus_sig()[minind]) baby.nleps_tm()++;
1852 if(lep_tru_pt < mc.pt()){
1853 lep_tru_pt = mc.pt();
1854 lep_tru_phi = mc.phi();
1860 for(
size_t ind(0);
ind < photons.size();
ind++) {
1861 double dr(deltaR(mc, *(photons[
ind])));
1862 double drelpt(fabs((photons[ind]->pt() - mc.pt())/mc.pt()));
1863 if(dr > drThreshold || drelpt > relptThreshold)
continue;
1869 if(minind >= 0) baby.ph_tm()[minind] =
true;
1873 if((
id==12 ||
id==14 ||
id==16 ||
id==18 ||
id==1000012 ||
id==1000014 ||
id==1000016
1874 ||
id==1000022 ||
id==1000023 ||
id==1000025 ||
id==1000035 ||
id==1000039) &&
1877 metw_tru_x += mc.px();
1878 metw_tru_y += mc.py();
1884 if(topIndex>=0 && antitopIndex>=0) {
1885 reco::Candidate::LorentzVector topP4 = genParticles->at(topIndex).p4();
1886 reco::Candidate::LorentzVector antitopP4 = genParticles->at(antitopIndex).p4();
1887 reco::Candidate::LorentzVector ttbarP4 = topP4+antitopP4;
1888 baby.m_tt()=ttbarP4.mass();
1889 baby.top_pt()=topP4.pt();
1890 baby.antitop_pt()=antitopP4.pt();
1894 for(
size_t ind(0);
ind < baby.mc_pt().size();
ind++) {
1895 if(baby.mc_gs()[
ind] && baby.mc_id()[
ind]==21){
1898 vector<int> q_pair_idx;
1899 for(
size_t indd(0); indd < baby.mc_pt().size(); indd++) {
1900 if(static_cast<size_t>(baby.mc_momidx()[indd])==
ind) q_pair_idx.push_back(indd);
1902 if(q_pair_idx.size()!=2)
continue;
1906 baby.mc_gs_dau_dr()[
ind]=
dR(baby.mc_phi()[q_pair_idx[0]], baby.mc_phi()[q_pair_idx[1]],baby.mc_eta()[q_pair_idx[0]], baby.mc_eta()[q_pair_idx[1]]);
1916 if(baby.mc_jetidx()[q_pair_idx[0]]<0 && baby.mc_jetidx()[q_pair_idx[1]]<0) baby.mc_gs_dau_jetmatch()[
ind]=0;
1917 else if(baby.mc_jetidx()[q_pair_idx[0]]<0 || baby.mc_jetidx()[q_pair_idx[1]]<0) baby.mc_gs_dau_jetmatch()[
ind]=1;
1918 else if(baby.mc_jetidx()[q_pair_idx[0]] == baby.mc_jetidx()[q_pair_idx[1]] ) baby.mc_gs_dau_jetmatch()[
ind]=2;
1919 else baby.mc_gs_dau_jetmatch()[
ind]=3;
1924 for(
size_t indbb(0);indbb<baby.dr_bb().size();indbb++){
1926 if(((baby.mc_jetidx()[q_pair_idx[0]]==baby.bb_jet_idx1()[indbb]) && (baby.mc_jetidx()[q_pair_idx[1]]==baby.bb_jet_idx2()[indbb])) ||((baby.mc_jetidx()[q_pair_idx[0]]==baby.bb_jet_idx2()[indbb]) && (baby.mc_jetidx()[q_pair_idx[1]]==baby.bb_jet_idx1()[indbb]))){
1927 baby.bb_gs_idx()[indbb]=
ind;
1928 baby.bb_gs_flavor()[indbb]=baby.mc_id()[q_pair_idx[0]];
1933 for(
size_t indbb(0);indbb<baby.dr_bb_deep().size();indbb++){
1935 if(((baby.mc_jetidx()[q_pair_idx[0]]==baby.bb_jet_idx1_deep()[indbb]) && (baby.mc_jetidx()[q_pair_idx[1]]==baby.bb_jet_idx2_deep()[indbb])) ||((baby.mc_jetidx()[q_pair_idx[0]]==baby.bb_jet_idx2_deep()[indbb]) && (baby.mc_jetidx()[q_pair_idx[1]]==baby.bb_jet_idx1_deep()[indbb]))){
1936 baby.bb_gs_idx_deep()[indbb]=
ind;
1937 baby.bb_gs_flavor_deep()[indbb]=baby.mc_id()[q_pair_idx[0]];
1943 baby.ntruleps() = baby.ntrumus()+baby.ntruels()+baby.ntrutaush()+baby.ntrutausl();
1944 baby.isr_tru_pt() = isr_p4.pt();
1945 baby.isr_tru_eta() = isr_p4.eta();
1946 baby.isr_tru_phi() = isr_p4.phi();
1948 if((
outname.Contains(
"TTJets") ||
outname.Contains(
"TT_") ||
outname.Contains(
"TTTo")) && top_pt.size() == 2) baby.w_toppt() = weightTool->topPtWeight(top_pt.at(0),top_pt.at(1));
1949 else baby.w_toppt() = 1.;
1951 baby.met_tru_nuw() = hypot(metw_tru_x, metw_tru_y);
1952 baby.met_tru_nuw_phi() = atan2(metw_tru_y, metw_tru_x);
1954 baby.mt_tru() =
getMT(baby.met_tru(), baby.met_tru_phi(), lep_tru_pt, lep_tru_phi);
1955 baby.mt_tru_nuw() =
getMT(baby.met_tru_nuw(), baby.met_tru_nuw_phi(), lep_tru_pt, lep_tru_phi);
1961 for(
unsigned int iJet=0; iJet<baby.jets_pt().size(); iJet++) {
1963 double rescalingFactor=calculateRescalingFactor(iJet);
1965 double newMET=calculateRebalancedMET(iJet, rescalingFactor, newMETPhi);
1968 minMETPhi=newMETPhi;
1978 const double scaleCutoff=1;
1980 TVector3 jet, metVector;
1981 jet.SetPtEtaPhi(baby.jets_pt().at(jetIdx), baby.jets_eta().at(jetIdx), baby.jets_phi().at(jetIdx));
1982 metVector.SetPtEtaPhi(baby.met(), 0, baby.met_phi());
1984 double denominator = -jet.Px()*jet.Px()-jet.Py()*jet.Py();
1985 double numerator = jet.Px()*metVector.Px()+jet.Py()*metVector.Py();
1987 double rescalingFactor=1e6;
1988 if(denominator!=0) rescalingFactor = numerator/denominator;
1989 if(fabs(rescalingFactor)>scaleCutoff) rescalingFactor=scaleCutoff*rescalingFactor/fabs(rescalingFactor);
1992 if(rescalingFactor>0) rescalingFactor=0;
1994 return rescalingFactor;
1999 TVector3 jet, metVector;
2000 jet.SetPtEtaPhi(baby.jets_pt().at(jetIdx), baby.jets_eta().at(jetIdx), baby.jets_phi().at(jetIdx));
2001 metVector.SetPtEtaPhi(baby.met(), 0, baby.met_phi());
2003 double sumPx = metVector.Px()+mu*jet.Px();
2004 double sumPy = metVector.Py()+mu*jet.Py();
2006 METPhi=atan(sumPy/sumPx);
2008 return sqrt(sumPx*sumPx+sumPy*sumPy);
2012 edm::Handle<LHEEventProduct> &lhe_info){
2013 if (debug) cout<<
"INFO: Filling weights..."<<endl;
2017 baby.eff_trig() = baby.w_btag() = baby.w_btag_loose() = baby.w_btag_tight() = baby.w_pu() = baby.w_pu() = baby.w_lep() = baby.w_fs_lep() = baby.w_toppt() = 1.;
2018 baby.eff_jetid() = baby.w_lumi() = baby.weight() = baby.weight_rpv() = 1.;
2024 baby.w_lumi() =
xsec*luminosity / (
static_cast<double>(nevents_sample)*(1-2*fneg));
2025 if (gen_event_info->weight() < 0) baby.w_lumi() *= -1.;
2028 baby.w_pu() = weightTool->pileupWeight(baby.ntrupv_mean(),0);
2029 baby.sys_pu().resize(2, 1.);
2030 baby.sys_pu()[0] = weightTool->pileupWeight(baby.ntrupv_mean(), 1);
2031 baby.sys_pu()[1] = weightTool->pileupWeight(baby.ntrupv_mean(), -1);
2034 pair<double, double> sf_err = lepTool->getScaleFactor(sig_leps);
2035 double sf = sf_err.first;
2036 double unc = sf_err.second;
2038 baby.sys_lep().resize(2, 1.);
2039 baby.sys_lep().at(0) = sf+unc;
2040 baby.sys_lep().at(1) = sf-unc;
2043 baby.sys_fs_lep().resize(2, 1.);
2045 pair<double, double> sf_err_fs = lepTool->getScaleFactorFs(sig_leps);
2046 double sf_fs = sf_err_fs.first;
2047 double unc_fs = sf_err_fs.second;
2048 baby.w_fs_lep() = sf_fs;
2049 baby.sys_fs_lep()[0] = sf_fs+unc_fs;
2050 baby.sys_fs_lep()[1] = sf_fs-unc_fs;
2051 }
else baby.w_fs_lep() = 1.;
2054 baby.eff_trig() = weightTool->triggerEfficiency(baby.nmus(), baby.nels(), baby.met(), baby.sys_trig());
2058 else baby.eff_jetid() = 1.;
2062 baby.weight() = baby.w_lumi() * baby.w_lep() * baby.w_fs_lep() * baby.w_btag()
2064 baby.weight_rpv() = baby.w_lumi() * baby.w_lep() * baby.w_fs_lep() * baby.w_btag()
2065 * baby.w_pu() * baby.eff_jetid();
2068 if(lhe_info.isValid()) weightTool->getTheoryWeights(lhe_info);
2077 weightTool->getPDFWeights(baby.sys_pdf(), baby.w_pdf());
2080 baby.w_isr() = 1.; baby.sys_isr().resize(2,1.);
2081 if (baby.type()/1000==1 || (baby.type()/1000>=100 && !
outname.Contains(
"TChi"))){
2082 const float isr_norm_tt = 1.117;
2083 float isr_wgt = -999.;
2084 if (baby.nisr()==0) isr_wgt = 1.;
2085 else if (baby.nisr()==1) isr_wgt = 0.882;
2086 else if (baby.nisr()==2) isr_wgt = 0.792;
2087 else if (baby.nisr()==3) isr_wgt = 0.702;
2088 else if (baby.nisr()==4) isr_wgt = 0.648;
2089 else if (baby.nisr()==5) isr_wgt = 0.601;
2090 else if (baby.nisr()>=6) isr_wgt = 0.515;
2091 baby.w_isr() = isr_wgt*isr_norm_tt;
2093 float absolute_unc = (1-isr_wgt)/2.;
2094 baby.sys_isr()[0] = isr_norm_tt*(isr_wgt+absolute_unc);
2095 baby.sys_isr()[1] = isr_norm_tt*(isr_wgt-absolute_unc);
2096 }
else if (
outname.Contains(
"TChi")) {
2098 if (baby.isr_tru_pt()<=50) isr_wgt = 1.;
2099 else if (baby.isr_tru_pt()<=100) isr_wgt = 1.052;
2100 else if (baby.isr_tru_pt()<=150) isr_wgt = 1.179;
2101 else if (baby.isr_tru_pt()<=200) isr_wgt = 1.150;
2102 else if (baby.isr_tru_pt()<=300) isr_wgt = 1.057;
2103 else if (baby.isr_tru_pt()<=400) isr_wgt = 1.000;
2104 else if (baby.isr_tru_pt()<=600) isr_wgt = 0.912;
2105 else isr_wgt = 0.783;
2106 baby.w_isr() = isr_wgt;
2108 if (isr_wgt>1) baby.sys_isr()[0] = 1+2*(isr_wgt-1);
2109 else baby.sys_isr()[0] = 1-2*(1-isr_wgt);
2110 baby.sys_isr()[1] = 1.;
2124 outname(TString(iConfig.getParameter<string>(
"outputFile"))),
2125 inputfiles(iConfig.getParameter<vector<string> >(
"inputFiles")),
2126 jsonfile(iConfig.getParameter<string>(
"json")),
2128 jec_label(iConfig.getParameter<string>(
"jec")),
2129 met_label(iConfig.getParameter<edm::InputTag>(
"met")),
2130 met_nohf_label(iConfig.getParameter<edm::InputTag>(
"met_nohf")),
2131 jets_label(iConfig.getParameter<edm::InputTag>(
"jets")),
2132 nevents_sample(iConfig.getParameter<unsigned int>(
"nEventsSample")),
2136 isFastSim(iConfig.getParameter<bool>(
"isFastSim")),
2138 debug(iConfig.getParameter<bool>(
"debugMode")),
2141 tok_trigResults_hlt_(consumes<edm::TriggerResults>(edm::InputTag(
"TriggerResults",
"",
"HLT"))),
2142 tok_patTrig_(consumes<pat::PackedTriggerPrescales>(edm::InputTag(
"patTrigger"))),
2143 tok_primVertex_(consumes<
reco::VertexCollection>(edm::InputTag(
"offlineSlimmedPrimaryVertices"))),
2144 tok_addPileup_(consumes<
std::vector< PileupSummaryInfo > >(edm::InputTag(
"addPileupInfo"))),
2145 tok_slimAddPileup_(consumes<
std::vector< PileupSummaryInfo > >(edm::InputTag(
"slimmedAddPileupInfo"))),
2146 tok_packPFCands_(consumes<pat::PackedCandidateCollection>(edm::InputTag(
"packedPFCandidates"))),
2147 tok_rhoFastJet_centralNeutral_(consumes<double>(edm::InputTag(
"fixedGridRhoFastjetCentralNeutral"))),
2148 tok_muons_(consumes<pat::MuonCollection>(edm::InputTag(
"slimmedMuons"))),
2149 tok_electrons_(consumes<pat::ElectronCollection>(edm::InputTag(
"slimmedElectrons"))),
2150 tok_rhoFastJet_all_(consumes<double>(edm::InputTag(
"fixedGridRhoFastjetAll"))),
2151 tok_offBeamSpot_(consumes<
reco::BeamSpot>(edm::InputTag(
"offlineBeamSpot"))),
2152 tok_photons_(consumes<pat::PhotonCollection>(edm::InputTag(
"slimmedPhotons"))),
2153 tok_reducedEgamma_conver_(consumes<vector<
reco::Conversion> >(edm::InputTag(
"reducedEgamma",
"reducedConversions"))),
2154 tok_jets_(consumes<pat::JetCollection>(jets_label)),
2155 tok_genJets_(consumes<edm::View<
reco::GenJet> >(edm::InputTag(
"slimmedGenJets"))),
2156 tok_met_(consumes<pat::METCollection>(met_label)),
2157 tok_met_noHF_(consumes<pat::METCollection>(met_nohf_label)),
2158 tok_met_Puppi_(consumes<pat::METCollection>(edm::InputTag(
"slimmedMETsPuppi"))),
2159 tok_HBHENoiseFilter_(consumes<bool>(edm::InputTag(
"HBHENoiseFilterResultProducer",
"HBHENoiseFilterResult"))),
2160 tok_HBHEIsoNoiseFilter_(consumes<bool>(edm::InputTag(
"HBHENoiseFilterResultProducer",
"HBHEIsoNoiseFilterResult"))),
2161 tok_trigResults_reco_(consumes<edm::TriggerResults>(edm::InputTag(
"TriggerResults",
"",
"RECO"))),
2162 tok_trigResults_pat_(consumes<edm::TriggerResults>(edm::InputTag(
"TriggerResults",
"",
"PAT"))),
2163 tok_selectedPatTrig_(consumes<pat::TriggerObjectStandAloneCollection>(edm::InputTag(
"slimmedPatTrigger"))),
2164 tok_pruneGenPart_(consumes<
reco::GenParticleCollection>(edm::InputTag(
"prunedGenParticles"))),
2165 tok_extLHEProducer_(consumes<LHEEventProduct>(edm::InputTag(
"externalLHEProducer"))),
2166 tok_source_(consumes<LHEEventProduct>(edm::InputTag(
"source"))),
2167 tok_generator_(consumes<GenEventInfoProduct>(edm::InputTag(
"generator"))),
2168 tok_genlumiheader_(consumes<GenLumiInfoHeader,edm::InLumi>(edm::InputTag(
"generator")))
2211 if(
outname.Contains(
"Run201")){
2213 trig_name.push_back(
"HLT_PFHT500_PFMET100_PFMHT100_IDTight_v");
2214 trig_name.push_back(
"HLT_Mu15_IsoVVVL_PFHT450_PFMET50_v");
2215 trig_name.push_back(
"HLT_Mu15_IsoVVVL_PFHT600_v");
2216 trig_name.push_back(
"HLT_Mu15_IsoVVVL_PFHT450_v");
2217 trig_name.push_back(
"HLT_Mu15_IsoVVVL_PFHT450_CaloBTagCSV_4p5_v");
2218 trig_name.push_back(
"HLT_Ele15_IsoVVVL_PFHT450_PFMET50_v");
2219 trig_name.push_back(
"HLT_Ele15_IsoVVVL_PFHT600_v");
2220 trig_name.push_back(
"HLT_Ele15_IsoVVVL_PFHT450_v");
2221 trig_name.push_back(
"HLT_Ele15_IsoVVVL_PFHT450_CaloBTagCSV_4p5_v");
2222 trig_name.push_back(
"HLT_PFMET120_PFMHT120_IDTight_v");
2223 trig_name.push_back(
"HLT_PFMET120_PFMHT120_IDTight_PFHT60_v");
2225 trig_name.push_back(
"HLT_PFMET120_PFMHT120_IDTight_HFCleaned_v");
2226 trig_name.push_back(
"HLT_PFMET120_PFMHT120_IDTight_PFHT60_HFCleaned_v");
2227 trig_name.push_back(
"HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_PFHT60_v");
2228 trig_name.push_back(
"HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_HFCleaned_v");
2229 trig_name.push_back(
"HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_v");
2230 trig_name.push_back(
"HLT_PFHT700_PFMET85_PFMHT85_IDTight_v");
2231 trig_name.push_back(
"HLT_PFHT800_PFMET75_PFMHT75_IDTight_v");
2237 trig_name.push_back(
"HLT_Mu50_IsoVVVL_PFHT450_v");
2238 trig_name.push_back(
"HLT_Ele35_WPTight_Gsf_v");
2239 trig_name.push_back(
"HLT_Ele115_CaloIdVT_GsfTrkIdT_v");
2240 trig_name.push_back(
"HLT_Ele300_CaloIdVT_GsfTrkIdT_v");
2241 trig_name.push_back(
"HLT_Ele27_WPTight_Gsf_v");
2242 trig_name.push_back(
"HLT_Ele28_eta2p1_WPTight_Gsf_HT150_v");
2243 trig_name.push_back(
"HLT_Ele30_eta2p1_WPTight_Gsf_CentralPFJet35_EleCleaned_v");
2244 trig_name.push_back(
"HLT_Ele38_WPTight_Gsf_v");
2245 trig_name.push_back(
"HLT_Ele50_IsoVVVL_PFHT450_v");
2248 trig_name.push_back(
"HLT_Photon300_NoHE_v");
2249 trig_name.push_back(
"HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_v");
2250 trig_name.push_back(
"HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v");
2251 trig_name.push_back(
"HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_v");
2252 trig_name.push_back(
"HLT_DoubleEle33_CaloIdL_MW_v");
2253 trig_name.push_back(
"HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_DZ_PFHT350_v");
2254 trig_name.push_back(
"HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT350_v");
2266 trig_name.push_back(
"HLT_AK8PFJet500_v");
2267 trig_name.push_back(
"HLT_AK8PFJet360_TrimMass30_v");
2269 trig_name.push_back(
"HLT_PFMET250_HBHECleaned_v");
2270 }
else if(
outname.Contains(
"Run2016")){
2271 trig_name.push_back(
"HLT_PFHT300_PFMET100_v");
2272 trig_name.push_back(
"HLT_Mu15_IsoVVVL_PFHT350_PFMET50_v");
2273 trig_name.push_back(
"HLT_Mu15_IsoVVVL_PFHT600_v");
2274 trig_name.push_back(
"HLT_Mu15_IsoVVVL_PFHT400_v");
2275 trig_name.push_back(
"HLT_Mu15_IsoVVVL_PFHT350_v");
2276 trig_name.push_back(
"HLT_Ele15_IsoVVVL_PFHT350_PFMET50_v");
2277 trig_name.push_back(
"HLT_Ele15_IsoVVVL_PFHT600_v");
2278 trig_name.push_back(
"HLT_Ele15_IsoVVVL_PFHT400_v");
2279 trig_name.push_back(
"HLT_Ele15_IsoVVVL_PFHT350_v");
2280 trig_name.push_back(
"HLT_DoubleMu8_Mass8_PFHT300_v");
2281 trig_name.push_back(
"HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT300_v");
2285 trig_name.push_back(
"HLT_PFMET100_PFMHT100_IDTight_v");
2286 trig_name.push_back(
"HLT_PFMET110_PFMHT110_IDTight_v");
2287 trig_name.push_back(
"HLT_PFMETNoMu110_PFMHTNoMu110_IDTight_v");
2288 trig_name.push_back(
"HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_v");
2289 trig_name.push_back(
"HLT_Mu45_eta2p1_v");
2295 trig_name.push_back(
"HLT_Ele27_eta2p1_WPLoose_Gsf_v");
2296 trig_name.push_back(
"HLT_Ele25_eta2p1_WPTight_Gsf_v");
2297 trig_name.push_back(
"HLT_Ele105_CaloIdVT_GsfTrkIdT_v");
2298 trig_name.push_back(
"HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL_DZ_v");
2300 trig_name.push_back(
"HLT_Photon90_CaloIdL_PFHT500_v");
2301 trig_name.push_back(
"HLT_PFMET90_PFMHT90_IDTight_v");
2302 trig_name.push_back(
"HLT_Ele23_WPLoose_Gsf_v");
2303 trig_name.push_back(
"HLT_PFMET120_PFMHT120_IDTight_v");
2305 trig_name.push_back(
"HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_v");
2307 trig_name.push_back(
"HLT_PFMETNoMu100_PFMHTNoMu100_IDTight_v");
2308 trig_name.push_back(
"HLT_Mu50_IsoVVVL_PFHT400_v");
2309 trig_name.push_back(
"HLT_Mu15_IsoVVVL_BTagCSV_p067_PFHT400_v");
2310 trig_name.push_back(
"HLT_Ele50_IsoVVVL_PFHT400_v");
2311 trig_name.push_back(
"HLT_Ele15_IsoVVVL_BTagCSV_p067_PFHT400_v");
2312 trig_name.push_back(
"HLT_Mu15_IsoVVVL_PFHT400_PFMET50_v");
2313 trig_name.push_back(
"HLT_Ele15_IsoVVVL_PFHT400_PFMET50_v");
2314 trig_name.push_back(
"HLT_Ele27_WPTight_Gsf_v");
2316 trig_name.push_back(
"HLT_Ele115_CaloIdVT_GsfTrkIdT_v");
2317 trig_name.push_back(
"HLT_IsoMu22_eta2p1_v");
2318 trig_name.push_back(
"HLT_PFHT300_PFMET110_v");
2319 trig_name.push_back(
"HLT_PFHT200_DiPFJetAve90_PFAlphaT0p63_v");
2320 trig_name.push_back(
"HLT_PFHT250_DiPFJetAve90_PFAlphaT0p58_v");
2321 trig_name.push_back(
"HLT_PFHT300_DiPFJetAve90_PFAlphaT0p54_v");
2333 trig_name.push_back(
"HLT_AK8PFJet450_v");
2335 trig_name.push_back(
"HLT_PFHT350_PFMET100_");
2336 trig_name.push_back(
"HLT_Mu15_IsoVVVL_PFHT350_PFMET50_v");
2337 trig_name.push_back(
"HLT_Mu15_IsoVVVL_PFHT600_v");
2338 trig_name.push_back(
"HLT_Mu15_IsoVVVL_BTagCSV0p72_PFHT400_v");
2339 trig_name.push_back(
"HLT_Mu15_IsoVVVL_PFHT350_v");
2340 trig_name.push_back(
"HLT_Ele15_IsoVVVL_PFHT350_PFMET50_v");
2341 trig_name.push_back(
"HLT_Ele15_IsoVVVL_PFHT600_v");
2342 trig_name.push_back(
"HLT_Ele15_IsoVVVL_BTagCSV0p72_PFHT400_v");
2343 trig_name.push_back(
"HLT_Ele15_IsoVVVL_PFHT350_v");
2344 trig_name.push_back(
"HLT_DoubleMu8_Mass8_PFHT300_v");
2345 trig_name.push_back(
"HLT_DoubleEle8_CaloIdM_TrackIdM_Mass8_PFHT300_v");
2348 trig_name.push_back(
"HLT_PFMET120_JetIdCleaned_Mu5_v");
2349 trig_name.push_back(
"HLT_PFMET170_JetIdCleaned_v");
2350 trig_name.push_back(
"HLT_DoubleIsoMu17_eta2p1_v");
2351 trig_name.push_back(
"HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_v");
2354 trig_name.push_back(
"HLT_IsoMu24_eta2p1_v");
2357 trig_name.push_back(
"HLT_Ele27_eta2p1_WPLoose_Gsf_v");
2358 trig_name.push_back(
"HLT_Ele23_WPLoose_Gsf_v");
2359 trig_name.push_back(
"HLT_Ele105_CaloIdVT_GsfTrkIdT_v");
2360 trig_name.push_back(
"HLT_DoubleEle33_CaloIdL_GsfTrkIdVL_v");
2361 trig_name.push_back(
"HLT_DoubleEle24_22_eta2p1_WPLoose_Gsf_v");
2362 trig_name.push_back(
"HLT_Photon90_CaloIdL_PFHT500_v");
2363 trig_name.push_back(
"HLT_PFMETNoMu90_JetIdCleaned_PFMHTNoMu90_IDTight_v");
2366 trig_name.push_back(
"HLT_PFMET90_PFMHT90_IDTight_v7");
2367 trig_name.push_back(
"HLT_PFMET100_PFMHT100_IDTight_v7");
2368 trig_name.push_back(
"HLT_PFMET110_PFMHT110_IDTight_v7");
2369 trig_name.push_back(
"HLT_PFMET120_PFMHT120_IDTight_v7");
2370 trig_name.push_back(
"HLT_PFMETNoMu90_PFMHTNoMu90_IDTight_v7");
2371 trig_name.push_back(
"HLT_PFMETNoMu100_PFMHTNoMu100_IDTight_v7");
2372 trig_name.push_back(
"HLT_PFMETNoMu110_PFMHTNoMu110_IDTight_v7");
2373 trig_name.push_back(
"HLT_PFMETNoMu120_PFMHTNoMu120_IDTight_v7");
2384 string commit_s =
execute(
"git rev-parse HEAD");
2385 while(!commit_s.empty() && commit_s.at(commit_s.length()-1) ==
'\n') commit_s.erase(commit_s.length()-1);
2386 TString commit = commit_s;
2388 TString root_version = gROOT->GetVersion();
2389 TString root_tutorial_dir = gROOT->GetTutorialsDir();
2390 TString user(getenv(
"ORIGIN_USER"));
2391 if (user==
"") user = getenv(
"USER");
2392 TString
cmssw(getenv(
"CMSSW_BASE"));
2396 struct tm * timeinfo = localtime(&curTime);
2397 strftime(time_c,100,
"%Y-%m-%d %H:%M:%S",timeinfo);
2398 TString date(time_c);
2399 int seconds(floor(difftime(curTime,
startTime)+0.5));
2401 vector<TString> sys_names;
2407 TTree treeglobal(
"treeglobal",
"treeglobal");
2409 treeglobal.Branch(
"nev_file", &
nevents);
2410 treeglobal.Branch(
"runtime_seconds", &seconds);
2411 treeglobal.Branch(
"git_commit", &commit);
2413 treeglobal.Branch(
"baby_type", &type);
2414 treeglobal.Branch(
"root_version", &root_version);
2415 treeglobal.Branch(
"root_tutorial_dir", &root_tutorial_dir);
2416 treeglobal.Branch(
"trig_names", &
trig_name);
2417 treeglobal.Branch(
"sys_names", &sys_names);
2418 treeglobal.Branch(
"xsec", &
xsec);
2419 treeglobal.Branch(
"user", &user);
2420 treeglobal.Branch(
"cmssw", &cmssw);
2422 treeglobal.Branch(
"json", &
jsonfile);
2423 treeglobal.Branch(
"date", &date);
2424 treeglobal.Branch(
"inputfiles", &
inputfiles);
2427 treeglobal.SetDirectory(
outfile);
2432 int minutes((seconds/60)%60), hours(seconds/3600);
2433 TString runtime(
"");
2434 if(hours<10) runtime +=
"0";
2435 runtime += hours; runtime +=
":";
2436 if(minutes<10) runtime +=
"0";
2437 runtime += minutes; runtime +=
":";
2438 if((seconds%60)<10) runtime +=
"0";
2439 runtime += seconds%60;
2440 float hertz(
nevents); hertz /= seconds;
2441 cout<<endl<<
"BABYMAKER: Written "<<
nevents<<
" events in "<<
outname<<
". It took "<<seconds<<
" seconds to run ("<<runtime<<
"), " 2443 cout<<
"BABYMAKER: *********** List of input files ***********"<<endl;
2462 cout<<endl<<
"BABYMAKER: Took "<<
roundNumber(difftime(curTime,
startTime),1)<<
" seconds for set up and run first event" 2470 float seconds(difftime(curTime,
startTime));
2471 cout<<
"BABYMAKER: Run "<<iEvent.id().run()<<
", Event "<< setw(8)<<iEvent.id().event()
2472 <<
", LumiSection "<< setw(5)<< iEvent.luminosityBlock()
2473 <<
". Ran "<<setw(7)<<
nevents<<
" events in "<<setw(7)<<seconds<<
" seconds -> " 2506 if (
outname.Contains(
"PUSpring16Fast") &&
outname.Contains(
"SMS-")){
2507 edm::Handle<GenLumiInfoHeader> gen_header;
2509 string model = gen_header->configDescription();
2528 edm::ParameterSetDescription desc;
2530 descriptions.addDefault(desc);
float const & elel_pt2() const
float fractionNegWeights(const TString &file)
float const & mumuv_pt1() const
float const & mumu_pt1() const
float const & elmu_w() const
std::vector< float > const & mus_pt() const
float const & elelv_w() const
float const & mumuv_m() const
float const & elel_phi() const
std::vector< bool > const & mus_inz() const
std::vector< bool > const & els_inz() const
float crossSection(const TString &file)
void writeWeights(const vCands &sig_leps, edm::Handle< GenEventInfoProduct > &gen_event_info, edm::Handle< LHEEventProduct > &lhe_info)
bool writeTriggers(const edm::TriggerNames &names, edm::Handle< edm::TriggerResults > triggerBits, edm::Handle< pat::PackedTriggerPrescales > triggerPrescales)
void writeHLTObjects(const edm::TriggerNames &names, edm::Handle< pat::TriggerObjectStandAloneCollection > triggerObjects, vCands &all_mus, vCands &all_els, vCands &photons, const edm::Event &)
float const & elmu_pt2() const
void setDiLepMass(vCands leptons, baby_float ll_m, baby_float ll_pt1, baby_float ll_pt2, baby_float ll_pt, baby_float ll_eta, baby_float ll_phi, baby_vfloat l_pt, baby_vbool l_inz, baby_float ll_w)
float const & elel_m() const
float const & elelv_pt() const
bmaker_full(const edm::ParameterSet &)
virtual void beginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
float const & mumu_eta() const
tuple condor_subtime
Setting global tag From https://twiki.cern.ch/twiki/bin/view/CMSPublic/WorkBookJetEnergyCorrections#J...
std::vector< const reco::Candidate * > vCands
weight_tools * weightTool
float const & elelv_pt2() const
std::vector< bool > const & mus_inzv() const
float const & mumuv_w() const
virtual void analyze(const edm::Event &, const edm::EventSetup &) override
isData
If you only want to re-correct and get the proper uncertainties, no reclustering. ...
float const & mumuv_pt() const
float dR(float eta1, float eta2, float phi1, float phi2)
float const & elmu_m() const
void writeDiLep(vCands &sig_mus, vCands &sig_els, vCands &veto_mus, vCands &veto_els)
float const & mumuv_phi() const
void writeMET(edm::Handle< pat::METCollection > mets, edm::Handle< pat::METCollection > mets_nohf, edm::Handle< pat::METCollection > mets_puppi)
float getMT(float pt1, float phi1, float pt2, float phi2)
float const & elelv_pt1() const
vCands writeElectrons(edm::Handle< pat::ElectronCollection > electrons, edm::Handle< pat::PackedCandidateCollection > pfcands, edm::Handle< reco::VertexCollection > vtx, vCands &veto_els, vCands &all_els, double rhoEventCentral)
void rebalancedMET(double &MET, double &METPhi)
float const & mumu_m() const
float const & elmu_pt1() const
void reportTime(const edm::Event &iEvent)
float const & elelv_m() const
float const & mumu_phi() const
float &(baby_base::* baby_float)()
float const & elel_pt() const
bool greaterPt(const reco::Candidate *a, const reco::Candidate *b)
void writeVertices(edm::Handle< reco::VertexCollection > vtx, edm::Handle< std::vector< PileupSummaryInfo > > pu_info)
void writeTks(edm::Handle< pat::PackedCandidateCollection > pfcands, edm::Handle< reco::VertexCollection > vtx, double rhoEventCentral)
std::vector< float > const & els_pt() const
void writeBBVars(std::vector< reco::Candidate::LorentzVector > &all_baby_jets, vCands &sig_leps)
bool Contains(const std::string &text, const std::string &pattern)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
TString roundNumber(double num, int decimals, double denom=1.)
float const & elel_pt1() const
float const & mumuv_pt2() const
float const & mumu_pt2() const
virtual std::string BabyType() const
void setElMuMass(vCands leptons1, vCands leptons2, baby_float ll_m, baby_float ll_pt1, baby_float ll_pt2, baby_float ll_pt, baby_float ll_eta, baby_float ll_phi, baby_float ll_w)
std::vector< bool > &(baby_base::* baby_vbool)()
reco::Candidate::LorentzVector LVector
float const & elmu_eta() const
void writeIFSR(edm::Handle< reco::GenParticleCollection > genParticles, std::vector< reco::Candidate::LorentzVector > &jets)
void writeBTagWeights(edm::Handle< pat::JetCollection > alljets, std::vector< reco::Candidate::LorentzVector > &all_baby_jets, std::vector< unsigned > &all_baby_jet_idx)
float const & mumuv_eta() const
void writeGenInfo(edm::Handle< LHEEventProduct > lhe_info)
virtual void endJob() override
float const & elelv_phi() const
float dPhi(float phi1, float phi2)
std::string execute(const std::string &cmd)
float const & elmu_phi() const
float const & mumu_pt() const
unsigned int nevents_sample
float const & elel_w() const
vCands writePhotons(edm::Handle< pat::PhotonCollection > allphotons, edm::Handle< std::vector< pat::Electron > > &electrons, edm::Handle< reco::ConversionCollection > &conversions, edm::Handle< reco::BeamSpot > &beamspot, double rho)
float getMT2(float pt1, float phi1, float pt2, float phi2, float met, float met_phi)
float const & elel_eta() const
DEFINE_FWK_MODULE(bmaker_full)
std::vector< TString > trig_name
photon_tools * photonTool
virtual void beginJob() override
void writeHiggVars(std::vector< LVector > &baby_jets_p4, std::vector< float > &baby_jets_csv, std::vector< bool > &baby_jets_h1, std::vector< bool > &baby_jets_h2, std::vector< bool > &baby_jets_islep, int &baby_nbl, int &baby_nbm, int &baby_nbt, float &baby_hig_am, float &baby_hig_dm, float &baby_hig_drmax, int &baby_hig_bin, float &baby_mct, bool isSystemtatic=false)
std::vector< float > &(baby_base::* baby_vfloat)()
vCands writeMuons(edm::Handle< pat::MuonCollection > muons, edm::Handle< pat::PackedCandidateCollection > pfcands, edm::Handle< reco::VertexCollection > vtx, vCands &veto_mus, vCands &all_mus, double rhoEventCentral)
std::vector< reco::Candidate::LorentzVector > writeJets(edm::Handle< pat::JetCollection > alljets, std::vector< unsigned > &all_baby_jets_idx, edm::Handle< edm::View< reco::GenJet > > genjets, vCands &sig_leps, vCands &veto_leps, vCands &photons, vCands &tks, std::vector< std::vector< LVector > > &sysjets, std::vector< double > &jetsMuonEnergyFrac)
float const & elelv_eta() const
void writeLeptons(vCands &leptons)
void writeMC(edm::Handle< reco::GenParticleCollection > genParticles, vCands &all_mus, vCands &all_els, vCands &photons)
void writeFilters(const edm::TriggerNames &fnames, edm::Handle< edm::TriggerResults > filterBits, edm::Handle< reco::VertexCollection > vtx, std::vector< double > jetsMuonEnergyFrac)
double calculateRebalancedMET(unsigned int jetIdx, double mu, double &METPhi)
std::vector< bool > const & els_inzv() const
std::vector< std::string > inputfiles
float const & elmu_pt() const
double calculateRescalingFactor(unsigned int jetIdx)
float const & mumu_w() const