53 |
|
doPhotons = iConfig.getParameter<bool>("doPhotons"); |
54 |
|
doMET = iConfig.getParameter<bool>("doMET"); |
55 |
|
doGenInfo = iConfig.getParameter<bool>("doGenInfo"); |
56 |
+ |
doAllGenParticles = iConfig.getParameter<bool>("doAllGenParticles"); |
57 |
+ |
doLumiInfo = iConfig.getParameter<bool>("doLumiInfo"); |
58 |
|
doPV = iConfig.getParameter<bool>("doPV"); |
59 |
|
doTopJets = iConfig.getParameter<bool>("doTopJets"); |
60 |
|
doTrigger = iConfig.getParameter<bool>("doTrigger"); |
66 |
|
tr->Branch("luminosityBlock",&luminosityBlock); |
67 |
|
tr->Branch("isRealData",&isRealData); |
68 |
|
tr->Branch("HBHENoiseFilterResult",&HBHENoiseFilterResult); |
69 |
< |
tr->Branch("beamspot_x0",&beamspot_x0); |
70 |
< |
tr->Branch("beamspot_y0",&beamspot_y0); |
71 |
< |
tr->Branch("beamspot_z0",&beamspot_z0); |
72 |
< |
|
69 |
> |
if(doLumiInfo){ |
70 |
> |
tr->Branch("intgRecLumi",&intgRecLumi); |
71 |
> |
tr->Branch("intgDelLumi",&intgDelLumi); |
72 |
> |
} |
73 |
> |
if(doPV){ |
74 |
> |
tr->Branch("beamspot_x0",&beamspot_x0); |
75 |
> |
tr->Branch("beamspot_y0",&beamspot_y0); |
76 |
> |
tr->Branch("beamspot_z0",&beamspot_z0); |
77 |
> |
} |
78 |
|
if(doElectrons){ |
79 |
|
electron_sources = iConfig.getParameter<std::vector<std::string> >("electron_sources"); |
80 |
|
for(size_t j=0; j< electron_sources.size(); ++j){ |
204 |
|
pvs[j].push_back(pv); |
205 |
|
} |
206 |
|
} |
207 |
+ |
|
208 |
+ |
edm::Handle<reco::BeamSpot> beamSpot; |
209 |
+ |
iEvent.getByLabel(edm::InputTag("offlineBeamSpot"), beamSpot); |
210 |
+ |
const reco::BeamSpot & bsp = *beamSpot; |
211 |
+ |
|
212 |
+ |
beamspot_x0 = bsp.x0(); |
213 |
+ |
beamspot_y0 = bsp.y0(); |
214 |
+ |
beamspot_z0 = bsp.z0(); |
215 |
|
} |
201 |
– |
|
202 |
– |
edm::Handle<reco::BeamSpot> beamSpot; |
203 |
– |
iEvent.getByLabel(edm::InputTag("offlineBeamSpot"), beamSpot); |
204 |
– |
const reco::BeamSpot & bsp = *beamSpot; |
205 |
– |
|
206 |
– |
beamspot_x0 = bsp.x0(); |
207 |
– |
beamspot_y0 = bsp.y0(); |
208 |
– |
beamspot_z0 = bsp.z0(); |
216 |
|
|
217 |
|
// ------------- electrons ------------- |
218 |
|
if(doElectrons){ |
219 |
+ |
|
220 |
+ |
edm::Handle<reco::ConversionCollection> hConversions; |
221 |
+ |
iEvent.getByLabel("allConversions", hConversions); |
222 |
+ |
|
223 |
+ |
edm::Handle<reco::BeamSpot> beamSpot; |
224 |
+ |
iEvent.getByLabel(edm::InputTag("offlineBeamSpot"), beamSpot); |
225 |
+ |
const reco::BeamSpot & bsp = *beamSpot; |
226 |
+ |
|
227 |
|
for(size_t j=0; j< electron_sources.size(); ++j){ |
228 |
|
eles[j].clear(); |
229 |
|
edm::Handle< std::vector<pat::Electron> > ele_handle; |
249 |
|
ele.neutralHadronIso = pat_ele.neutralHadronIso(); |
250 |
|
ele.chargedHadronIso = pat_ele.chargedHadronIso(); |
251 |
|
ele.trackIso = pat_ele.trackIso(); |
252 |
+ |
ele.photonIso = pat_ele.photonIso(); |
253 |
|
ele.puChargedHadronIso = pat_ele.puChargedHadronIso(); |
254 |
|
ele.gsfTrack_trackerExpectedHitsInner_numberOfLostHits = pat_ele.gsfTrack()->trackerExpectedHitsInner().numberOfLostHits(); |
255 |
|
ele.gsfTrack_px= pat_ele.gsfTrack()->px(); |
258 |
|
ele.gsfTrack_vx= pat_ele.gsfTrack()->vx(); |
259 |
|
ele.gsfTrack_vy= pat_ele.gsfTrack()->vy(); |
260 |
|
ele.gsfTrack_vz= pat_ele.gsfTrack()->vz(); |
261 |
+ |
ele.passconversionveto = !ConversionTools::hasMatchedConversion(pat_ele,hConversions,bsp.position()); |
262 |
+ |
ele.dEtaIn=pat_ele.deltaEtaSuperClusterTrackAtVtx(); |
263 |
+ |
ele.dPhiIn=pat_ele.deltaPhiSuperClusterTrackAtVtx(); |
264 |
+ |
ele.sigmaIEtaIEta=pat_ele.sigmaIetaIeta(); |
265 |
+ |
ele.HoverE=pat_ele.hadronicOverEm(); |
266 |
+ |
ele.fbrem=pat_ele.fbrem(); |
267 |
+ |
ele.EoverPIn=pat_ele.eSuperClusterOverP(); |
268 |
+ |
ele.EcalEnergy=pat_ele.ecalEnergy(); |
269 |
+ |
ele.mvaTrigV0=pat_ele.electronID("mvaTrigV0"); |
270 |
+ |
ele.mvaNonTrigV0=pat_ele.electronID("mvaNonTrigV0"); |
271 |
+ |
|
272 |
|
eles[j].push_back(ele); |
273 |
|
} |
274 |
|
} |
300 |
|
mu.neutralHadronIso = pat_mu.neutralHadronIso(); |
301 |
|
mu.chargedHadronIso = pat_mu.chargedHadronIso(); |
302 |
|
mu.trackIso = pat_mu.trackIso(); |
303 |
+ |
mu.photonIso = pat_mu.photonIso(); |
304 |
|
mu.puChargedHadronIso = pat_mu.puChargedHadronIso(); |
305 |
|
mu.isGlobalMuon = pat_mu.isGlobalMuon(); |
306 |
|
mu.isStandAloneMuon = pat_mu.isStandAloneMuon(); |
331 |
|
mu.innerTrack_d0Error = innerTrack->d0Error(); |
332 |
|
mu.innerTrack_numberOfValidHits = innerTrack->numberOfValidHits(); |
333 |
|
mu.innerTrack_numberOfLostHits = innerTrack->numberOfLostHits(); |
334 |
+ |
mu.innerTrack_trackerLayersWithMeasurement = innerTrack->hitPattern().trackerLayersWithMeasurement(); |
335 |
+ |
mu.innerTrack_numberOfValidPixelHits = innerTrack->hitPattern().numberOfValidPixelHits(); |
336 |
|
} |
337 |
|
else{ |
338 |
|
mu.innerTrack_chi2 = 0; |
341 |
|
mu.innerTrack_d0Error = 0; |
342 |
|
mu.innerTrack_numberOfValidHits = 0; |
343 |
|
mu.innerTrack_numberOfLostHits = 0; |
344 |
+ |
mu.innerTrack_trackerLayersWithMeasurement = 0; |
345 |
+ |
mu.innerTrack_numberOfValidPixelHits = 0; |
346 |
|
} |
347 |
|
reco::TrackRef outerTrack = pat_mu.outerTrack(); |
348 |
|
if(!outerTrack.isNull()){ |
388 |
|
tau.eta = pat_tau.eta(); |
389 |
|
tau.phi = pat_tau.phi(); |
390 |
|
tau.energy = pat_tau.energy(); |
391 |
< |
|
391 |
> |
tau.decayModeFinding = pat_tau.tauID("decayModeFinding")>0.5; |
392 |
> |
tau.byVLooseCombinedIsolationDeltaBetaCorr = pat_tau.tauID("byVLooseCombinedIsolationDeltaBetaCorr")>0.5; |
393 |
> |
tau.byLooseCombinedIsolationDeltaBetaCorr = pat_tau.tauID("byLooseCombinedIsolationDeltaBetaCorr")>0.5; |
394 |
> |
tau.byMediumCombinedIsolationDeltaBetaCorr = pat_tau.tauID("byMediumCombinedIsolationDeltaBetaCorr")>0.5; |
395 |
> |
tau.byTightCombinedIsolationDeltaBetaCorr = pat_tau.tauID("byTightCombinedIsolationDeltaBetaCorr")>0.5; |
396 |
> |
tau.againstElectronLoose = pat_tau.tauID("againstElectronLoose")>0.5; |
397 |
> |
tau.againstElectronMedium = pat_tau.tauID("againstElectronMedium")>0.5; |
398 |
> |
tau.againstElectronTight = pat_tau.tauID("againstElectronTight")>0.5; |
399 |
> |
tau.againstElectronMVA = pat_tau.tauID("againstElectronMVA")>0.5; |
400 |
> |
tau.againstMuonLoose = pat_tau.tauID("againstMuonLoose")>0.5; |
401 |
> |
tau.againstMuonMedium = pat_tau.tauID("againstMuonMedium")>0.5; |
402 |
> |
tau.againstMuonTight = pat_tau.tauID("againstMuonTight")>0.5; |
403 |
> |
|
404 |
> |
reco::PFCandidateRef leadPFCand = pat_tau.leadPFCand(); |
405 |
> |
if(!leadPFCand.isNull()){ |
406 |
> |
tau.leadPFCand_px = leadPFCand->px(); |
407 |
> |
tau.leadPFCand_py = leadPFCand->py(); |
408 |
> |
tau.leadPFCand_pz = leadPFCand->pz(); |
409 |
> |
} |
410 |
> |
else{ |
411 |
> |
tau.leadPFCand_px = 0; |
412 |
> |
tau.leadPFCand_py = 0; |
413 |
> |
tau.leadPFCand_pz = 0; |
414 |
> |
} |
415 |
|
taus[j].push_back(tau); |
416 |
|
} |
417 |
|
} |
465 |
|
jecUnc->setJetEta(pat_jet.eta()); |
466 |
|
jecUnc->setJetPt(pat_jet.pt()); |
467 |
|
jet.JEC_uncertainty = jecUnc->getUncertainty(true); |
468 |
+ |
jet.JEC_factor_raw = pat_jet.jecFactor("Uncorrected"); |
469 |
|
|
470 |
|
jet.btag_simpleSecondaryVertexHighEff=pat_jet.bDiscriminator("simpleSecondaryVertexHighEffBJetTags"); |
471 |
|
jet.btag_simpleSecondaryVertexHighPur=pat_jet.bDiscriminator("simpleSecondaryVertexHighPurBJetTags"); |
474 |
|
jet.btag_jetBProbability=pat_jet.bDiscriminator("jetBProbabilityBJetTags"); |
475 |
|
jet.btag_jetProbability=pat_jet.bDiscriminator("jetProbabilityBJetTags"); |
476 |
|
|
477 |
+ |
const reco::GenJet *genj = pat_jet.genJet(); |
478 |
+ |
if(genj){ |
479 |
+ |
jet.genjet_pt = genj->pt(); |
480 |
+ |
jet.genjet_eta = genj->eta(); |
481 |
+ |
jet.genjet_phi = genj->phi(); |
482 |
+ |
jet.genjet_energy = genj->energy(); |
483 |
+ |
} |
484 |
+ |
|
485 |
|
jets[j].push_back(jet); |
486 |
|
} |
487 |
|
} |
528 |
|
jecUnc->setJetEta(pat_topjet.eta()); |
529 |
|
jecUnc->setJetPt(pat_topjet.pt()); |
530 |
|
topjet.JEC_uncertainty = jecUnc->getUncertainty(true); |
531 |
+ |
topjet.JEC_factor_raw = pat_topjet.jecFactor("Uncorrected"); |
532 |
|
|
533 |
|
topjet.btag_simpleSecondaryVertexHighEff=pat_topjet.bDiscriminator("simpleSecondaryVertexHighEffBJetTags"); |
534 |
|
topjet.btag_simpleSecondaryVertexHighPur=pat_topjet.bDiscriminator("simpleSecondaryVertexHighPurBJetTags"); |
537 |
|
topjet.btag_jetBProbability=pat_topjet.bDiscriminator("jetBProbabilityBJetTags"); |
538 |
|
topjet.btag_jetProbability=pat_topjet.bDiscriminator("jetProbabilityBJetTags"); |
539 |
|
|
540 |
+ |
const reco::GenJet *genj = pat_topjet.genJet(); |
541 |
+ |
if(genj){ |
542 |
+ |
topjet.genjet_pt = genj->pt(); |
543 |
+ |
topjet.genjet_eta = genj->eta(); |
544 |
+ |
topjet.genjet_phi = genj->phi(); |
545 |
+ |
topjet.genjet_energy = genj->energy(); |
546 |
+ |
} |
547 |
+ |
|
548 |
|
for (unsigned int k = 0; k < pat_topjet.numberOfDaughters(); k++) { |
549 |
|
Particle subjet_v4; |
550 |
|
subjet_v4.pt = pat_topjet.daughter(k)->p4().pt(); |
649 |
|
std::pair<int, int> pre=hlt_cfg.prescaleValues(iEvent, iSetup, triggerNames_all[i]); |
650 |
|
L1_prescale.push_back(pre.first); |
651 |
|
HLT_prescale.push_back(pre.second); |
652 |
+ |
//std::cout << triggerNames_all[i] << " " << pre.first << " " <<pre.second << " " << hlt_cfg.prescaleValue(iEvent, iSetup, triggerNames_all[i]) << std::endl; |
653 |
|
} |
654 |
|
} |
655 |
|
// for(std::map<std::string, bool>::const_iterator iter = triggerResults.begin(); iter!=triggerResults.end(); iter++){ |
721 |
|
index++; |
722 |
|
|
723 |
|
//write out only top quarks and status 3 particles (works fine only for MadGraph) |
724 |
< |
if(abs(iter->pdgId())==6 || iter->status()==3){ |
724 |
> |
if(abs(iter->pdgId())==6 || iter->status()==3 || doAllGenParticles){ |
725 |
|
GenParticle genp; |
726 |
|
genp.charge = iter->charge();; |
727 |
|
genp.pt = iter->p4().pt(); |
751 |
|
|
752 |
|
} |
753 |
|
|
680 |
– |
|
754 |
|
tr->Fill(); |
755 |
< |
|
755 |
> |
if(doLumiInfo) |
756 |
> |
previouslumiblockwasfilled=true; |
757 |
|
} |
758 |
|
|
759 |
|
|
761 |
|
void |
762 |
|
NtupleWriter::beginJob() |
763 |
|
{ |
764 |
+ |
if(doLumiInfo){ |
765 |
+ |
totalRecLumi=0; |
766 |
+ |
totalDelLumi=0; |
767 |
+ |
previouslumiblockwasfilled=false; |
768 |
+ |
} |
769 |
|
} |
770 |
|
|
771 |
|
// ------------ method called once each job just after ending the event loop ------------ |
799 |
|
void |
800 |
|
NtupleWriter::endRun(edm::Run const&, edm::EventSetup const&) |
801 |
|
{ |
802 |
+ |
if(doLumiInfo) |
803 |
+ |
std::cout << "total integ. luminosity: " << totalDelLumi <<"(del) " << totalRecLumi << "(rec)" << std::endl; |
804 |
|
} |
805 |
|
|
806 |
|
// ------------ method called when starting to processes a luminosity block ------------ |
807 |
|
void |
808 |
< |
NtupleWriter::beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) |
808 |
> |
NtupleWriter::beginLuminosityBlock(edm::LuminosityBlock const& lumi, edm::EventSetup const&) |
809 |
|
{ |
810 |
+ |
if(doLumiInfo){ |
811 |
+ |
edm::Handle<LumiSummary> l; |
812 |
+ |
lumi.getByLabel("lumiProducer", l); |
813 |
+ |
|
814 |
+ |
//add lumi of lumi blocks without any event to next lumiblock |
815 |
+ |
if(previouslumiblockwasfilled){ |
816 |
+ |
intgRecLumi=0; |
817 |
+ |
intgDelLumi=0; |
818 |
+ |
} |
819 |
+ |
previouslumiblockwasfilled=false; |
820 |
+ |
|
821 |
+ |
if (l.isValid()){; |
822 |
+ |
intgRecLumi+=l->intgRecLumi()*6.37; |
823 |
+ |
intgDelLumi+=l->intgDelLumi()*6.37; |
824 |
+ |
totalRecLumi+=l->intgRecLumi()*6.37; |
825 |
+ |
totalDelLumi+=l->intgDelLumi()*6.37; |
826 |
+ |
} |
827 |
+ |
//std::cout << "this lb: " <<l->intgRecLumi()*6.37 <<" " << l->intgDelLumi()*6.37<<std::endl; |
828 |
+ |
//std::cout << "summed: "<< intgRecLumi << " " << intgDelLumi << std::endl; |
829 |
+ |
} |
830 |
|
} |
831 |
|
|
832 |
|
// ------------ method called when ending the processing of a luminosity block ------------ |