Skip to content

Commit 8a3a00f

Browse files
committed
fixes, optimisations
1 parent d62d974 commit 8a3a00f

File tree

6 files changed

+45
-159
lines changed

6 files changed

+45
-159
lines changed

AnalysisFW/BuildFile.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,10 @@
88
<use name="DataFormats/HepMCCandidate"/>
99
<use name="DataFormats/TrackCandidate"/>
1010
<use name="DataFormats/HLTReco"/>
11-
<use name="PhysicsTools/UtilAlgos"/>
12-
<use name="PhysicsTools/PatUtils"/>
13-
<use name="PhysicsTools/PatAlgos"/>
1411
<use name="JetMETCorrections/Objects"/>
1512
<use name="FWCore/Framework"/>
1613
<use name="FWCore/PluginManager"/>
1714
<use name="FWCore/ServiceRegistry"/>
18-
<use name="clhep"/>
19-
<use name="root"/>
2015
<use name="HLTrigger/HLTcore"/>
2116
<use name="L1Trigger/GlobalTriggerAnalyzer"/>
2217
<use name="CondFormats/L1TObjects"/>

AnalysisFW/plugins/BuildFile.xml

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<library file="*.cc" name="OpenDataTuples">
1+
<library file="*.cc" name="OpenDataTuplesOptimized">
22
<use name="RecoMET/METAlgorithms"/>
33
<use name="JetMETCorrections/Algorithms"/>
44
<use name="RecoJets/JetAlgorithms"/>
@@ -9,21 +9,16 @@
99
<use name="DataFormats/HepMCCandidate"/>
1010
<use name="DataFormats/TrackCandidate"/>
1111
<use name="DataFormats/HLTReco"/>
12-
<use name="PhysicsTools/UtilAlgos"/>
13-
<use name="PhysicsTools/PatUtils"/>
14-
<use name="PhysicsTools/PatAlgos"/>
1512
<use name="JetMETCorrections/Objects"/>
1613
<use name="FWCore/Framework"/>
1714
<use name="FWCore/PluginManager"/>
1815
<use name="FWCore/ServiceRegistry"/>
19-
<use name="clhep"/>
20-
<use name="root"/>
2116
<use name="HLTrigger/HLTcore"/>
2217
<use name="L1Trigger/GlobalTriggerAnalyzer"/>
2318
<use name="CondFormats/L1TObjects"/>
2419
<use name="CondFormats/DataRecord"/>
2520
<use name="CondFormats/JetMETObjects"/>
26-
<use name="cms-opendata-2011-jets/AnalysisFW"/>
21+
<use name="2011-jet-inclusivecrosssection-ntupleproduction-optimized/AnalysisFW"/>
2722
<flags EDM_PLUGIN="1"/>
2823
</library>
2924

AnalysisFW/plugins/OpenDataTreeProducerOptimized.cc

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
#include <cassert>
1919
#include <TLorentzVector.h>
2020

21-
#include "cms-opendata-2011-jets/AnalysisFW/plugins/OpenDataTreeProducerOptimized.h"
21+
#include "OpenDataTreeProducerOptimized.h"
2222
#include "FWCore/Framework/interface/EventSetup.h"
2323
#include "FWCore/Framework/interface/ESHandle.h"
2424
#include "FWCore/Framework/interface/Frameworkfwd.h"
@@ -49,7 +49,7 @@
4949
#include "CondFormats/JetMETObjects/interface/JetCorrectorParameters.h"
5050
#include "JetMETCorrections/Objects/interface/JetCorrectionsRecord.h"
5151

52-
#include "DataFormats/JetReco/interface/JetTracksAssociation.h"
52+
#include "RecoJets/JetAssociationProducers/src/JetTracksAssociatorAtVertex.h"
5353

5454
OpenDataTreeProducerOptimized::OpenDataTreeProducerOptimized(edm::ParameterSet const &cfg) {
5555
mMinPFPt = cfg.getParameter<double> ("minPFPt");
@@ -273,25 +273,17 @@ void OpenDataTreeProducerOptimized::analyze(edm::Event const &event_obj,
273273
ngen = gen_index;
274274
}
275275

276+
// Vertex Info
277+
Handle<reco::VertexCollection> recVtxs;
278+
event_obj.getByLabel(mOfflineVertices, recVtxs);
276279

277-
// PF AK5 Jets
278-
279-
//edm::Handle< std::vector< pat::Jet > > ak5_handle;
280-
//event_obj.getByLabel(mPFak5JetsName, ak5_handle);
281280

282-
// Copy vector of jets (they are sorted wrt. pT)
283-
//std::vector< pat::Jet > patjets(ak5_handle->begin(), ak5_handle->end());
281+
// PF AK5 Jets
284282

285283
edm::Handle<reco::PFJetCollection> ak5_handle;
286284
event_obj.getByLabel(mPFak5JetsName, ak5_handle);
287-
edm::Handle <edm::View <reco::Jet> > ak5_handle2;
288-
event_obj.getByLabel(mPFak5JetsName, ak5_handle2);
289285
const JetCorrector* corrector_ak5 = JetCorrector::getJetCorrector(mJetCorr_ak5, iSetup);
290286

291-
// Vertex Info
292-
Handle<reco::VertexCollection> recVtxs;
293-
event_obj.getByLabel(mOfflineVertices, recVtxs);
294-
295287
// Jet Track Association (JTA)
296288
edm::Handle <reco::TrackCollection> tracks_h;
297289
event_obj.getByLabel ("generalTracks", tracks_h);
@@ -300,11 +292,14 @@ void OpenDataTreeProducerOptimized::analyze(edm::Event const &event_obj,
300292
std::vector <edm::RefToBase<reco::Jet> > allJets;
301293
allJets.reserve (ak5_handle->size());
302294
for (unsigned i = 0; i < ak5_handle->size(); ++i)
303-
allJets.push_back((ak5_handle2->refAt(i)));
295+
{
296+
edm::RefToBase<reco::Jet> jetRef(edm::Ref<reco::PFJetCollection>(ak5_handle, i));
297+
allJets.push_back(jetRef);
298+
}
304299
std::vector <reco::TrackRef> allTracks;
305300
allTracks.reserve(tracks_h->size());
306301
for (unsigned i = 0; i < tracks_h->size(); ++i)
307-
allTracks.push_back (reco::TrackRef (tracks_h, i));
302+
allTracks.push_back (reco::TrackRef(tracks_h, i));
308303
// run JTA algorithm
309304
JetTracksAssociationDRVertex mAssociator(0.5); // passed argument: 0.5 cone size
310305
mAssociator.produce (&*tracksInJets, allJets, allTracks);
@@ -340,8 +335,7 @@ void OpenDataTreeProducerOptimized::analyze(edm::Event const &event_obj,
340335
const PFJet* i_ak5jet = &corjet;
341336

342337
// Skip the current iteration if jet is not selected
343-
if (!i_ak5jet->isPFJet() ||
344-
fabs(i_ak5jet->y()) > mMaxY ||
338+
if (fabs(i_ak5jet->y()) > mMaxY ||
345339
(i_ak5jet->pt()) < mMinPFPt) {
346340
continue;
347341
}
@@ -368,6 +362,7 @@ void OpenDataTreeProducerOptimized::analyze(edm::Event const &event_obj,
368362
reco::Vertex vertex = (*recVtxs)[ivtx];
369363

370364
// Loop over tracks associated with the vertex
365+
bool flagBreak = false;
371366
if (!(vertex.isFake()) &&
372367
vertex.ndof() >= mGoodVtxNdof &&
373368
fabs(vertex.z()) <= mGoodVtxZ) {
@@ -384,9 +379,13 @@ void OpenDataTreeProducerOptimized::analyze(edm::Event const &event_obj,
384379
}
385380
else {
386381
sumTrkPtBetaStar += (*i_trk)->pt();
387-
}
382+
}
383+
flagBreak = true;
384+
break;
388385
}
389386
}
387+
if(flagBreak)
388+
break;
390389
}
391390
}
392391
}
@@ -431,7 +430,7 @@ void OpenDataTreeProducerOptimized::analyze(edm::Event const &event_obj,
431430
// Variables of the tuple
432431
jet_tightID[ak5_index] = tightID;
433432
jet_area[ak5_index] = i_ak5jet->jetArea();
434-
jet_jes[ak5_index] = 1/i_ak5jet->jecFactor(0); // JEC factor (pfjet is already corrected !!)
433+
jet_jes[ak5_index] = jec; // JEC factor
435434

436435
// p4 is already corrected!
437436
auto p4 = i_ak5jet->p4();
@@ -468,8 +467,13 @@ void OpenDataTreeProducerOptimized::analyze(edm::Event const &event_obj,
468467

469468

470469
// Four leading AK7 Jets
471-
edm::Handle< std::vector< pat::Jet > > ak7_handle;
470+
471+
edm::Handle<reco::PFJetCollection> ak7_handle;
472472
event_obj.getByLabel(mPFak7JetsName, ak7_handle);
473+
const JetCorrector* corrector_ak7 = JetCorrector::getJetCorrector(mJetCorr_ak7, iSetup);
474+
475+
// Index of the selected jet
476+
int ak7_index = 0;
473477

474478
// Jets will be unsorted in pT after applying JEC,
475479
// therefore store corrected jets in a new collection (map): key (double) is pT * -1 (key),
@@ -496,15 +500,14 @@ void OpenDataTreeProducerOptimized::analyze(edm::Event const &event_obj,
496500
const PFJet* i_ak7jet = &corjet;
497501

498502
// Skip the current iteration if jet is not selected
499-
if (!i_ak7jet->isPFJet() ||
500-
fabs(i_ak7jet->y()) > mMaxY ||
503+
if (fabs(i_ak7jet->y()) > mMaxY ||
501504
(i_ak7jet->pt()) < mMinPFPt) {
502505
continue;
503506
}
504507

505508
// Variables of the tuple
506509
jet_area_ak7[ak7_index] = i_ak7jet->jetArea();
507-
jet_jes_ak7[ak7_index] = 1/i_ak7jet->jecFactor(0); // JEC factor (pfjet is already corrected !!)
510+
jet_jes_ak7[ak7_index] = jec; // JEC factor
508511

509512
// p4 is already corrected!
510513
auto p4 = i_ak7jet->p4();

AnalysisFW/python/OpenDataTreeProducerOptimized_dataPAT_2011_cfg.py

Lines changed: 3 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77

88
## Import skeleton process
9-
#from PhysicsTools.PatAlgos.patTemplate_cfg import *
9+
from PhysicsTools.PatAlgos.patTemplate_cfg import *
1010
import FWCore.Utilities.FileUtils as FileUtils
1111

1212
process.load('Configuration.StandardSequences.Services_cff')
@@ -36,25 +36,6 @@
3636
# Global tag for 2011A data
3737
process.GlobalTag.globaltag = 'FT_53_LV5_AN1::All'
3838

39-
40-
# Load PAT config
41-
#process.load("RecoTauTag.Configuration.RecoPFTauTag_cff") # re-run tau discriminators (new version)
42-
#process.load("PhysicsTools.PatAlgos.patSequences_cff")
43-
#process.load('Configuration.StandardSequences.Reconstruction_cff')
44-
#process.load('RecoJets.Configuration.RecoPFJets_cff')
45-
#process.load('RecoJets.Configuration.RecoJets_cff')
46-
#process.load('RecoJets.JetProducers.TrackJetParameters_cfi')
47-
#process.load('JetMETCorrections.Configuration.DefaultJEC_cff')
48-
49-
50-
# Import PAT tools
51-
#from PhysicsTools.PatAlgos.tools.pfTools import *
52-
#from PhysicsTools.PatAlgos.tools.coreTools import *
53-
#from PhysicsTools.PatAlgos.tools.metTools import *
54-
#from PhysicsTools.PatAlgos.tools.jetTools import *
55-
#from PhysicsTools.PatAlgos.tools.coreTools import *
56-
#from PhysicsTools.SelectorUtils.pvSelector_cfi import pvSelector
57-
5839
# Select good vertices
5940
process.goodOfflinePrimaryVertices = cms.EDFilter(
6041
"VertexSelector",
@@ -63,42 +44,6 @@
6344
cut = cms.string("!isFake && ndof > 4 && abs(z) <= 24 && position.rho < 2")
6445
)
6546

66-
67-
#process.ak5PFJets.doAreaFastjet = True
68-
#process.ak7PFJets.doAreaFastjet = True
69-
#process.kt6PFJets.doRhoFastjet = True
70-
71-
#removeMCMatchingPF2PAT( process, '' )
72-
#runOnData(process)
73-
74-
# Choose PF met
75-
#addPfMET(process, 'PF')
76-
'''
77-
# Adding non CHS jets to process
78-
addJetCollection(process,cms.InputTag('ak5PFJets'),
79-
'AK5', 'PFCorr',
80-
doJTA = True,
81-
doBTagging = False,
82-
jetCorrLabel = ('AK5PF', cms.vstring(['L1FastJet','L2Relative','L3Absolute','L2L3Residual'])),
83-
doType1MET = True,
84-
doL1Cleaning = True,
85-
doL1Counters = False,
86-
doJetID = True,
87-
jetIdLabel = "ak5"
88-
)
89-
90-
addJetCollection(process,cms.InputTag('ak7PFJets'),
91-
'AK7', 'PFCorr',
92-
doJTA = True,
93-
doBTagging = False,
94-
jetCorrLabel = ('AK7PF', cms.vstring(['L1FastJet','L2Relative','L3Absolute','L2L3Residual'])),
95-
doType1MET = True,
96-
doL1Cleaning = True,
97-
doL1Counters = False,
98-
doJetID = True,
99-
jetIdLabel = "ak7"
100-
)
101-
'''
10247
# Tracking failure filter
10348
from RecoMET.METFilters.trackingFailureFilter_cfi import trackingFailureFilter
10449
process.trackingFailureFilter = trackingFailureFilter.clone()
@@ -154,7 +99,6 @@
15499
process.goodOfflinePrimaryVertices*
155100
process.hltFilter *
156101
process.trackingFailureFilter *
157-
#process.patDefaultSequence *
158102
process.ak5ak7
159103
)
160104

@@ -163,9 +107,9 @@
163107
# - MC: 50000 events / 5 hours
164108

165109
# Change number of events here:
166-
process.maxEvents.input = 100
110+
process.maxEvents.input = 50000
167111

168-
process.MessageLogger.cerr.FwkReport.reportEvery = 50
112+
process.MessageLogger.cerr.FwkReport.reportEvery = 500
169113

170114
# Output file
171115
process.TFileService = cms.Service("TFileService", fileName = cms.string('OpenDataTree_data.root'))

0 commit comments

Comments
 (0)