12 #include "TLorentzVector.h"
65 jetSrc_ (params.getParameter<edm::
InputTag>(
"jetSrc")),
66 pfJetSrc_ (params.getParameter<edm::
InputTag>(
"pfJetSrc"))
70 push_back(
"Calo Cuts");
71 push_back(
"Calo Kin Cuts");
72 push_back(
"Calo Delta Phi");
73 push_back(
"Calo Jet ID");
75 push_back(
"PF Kin Cuts");
76 push_back(
"PF Delta Phi");
77 push_back(
"PF Jet ID");
79 set(
"Calo Cuts", useCalo);
80 set(
"Calo Kin Cuts", useCalo);
81 set(
"Calo Delta Phi", useCalo);
82 set(
"Calo Jet ID", useCalo);
83 set(
"PF Cuts", !useCalo);
84 set(
"PF Kin Cuts", !useCalo);
85 set(
"PF Delta Phi", !useCalo);
86 set(
"PF Jet ID", !useCalo);
89 caloCuts_ = index_type(&bits_,
std::string(
"Calo Cuts") );
90 caloKin_ = index_type(&bits_,
std::string(
"Calo Kin Cuts"));
91 caloDeltaPhi_ = index_type(&bits_,
std::string(
"Calo Delta Phi"));
92 caloJetID_ = index_type(&bits_,
std::string(
"Calo Jet ID"));
93 pfCuts_ = index_type(&bits_,
std::string(
"PF Cuts"));
94 pfKin_ = index_type(&bits_,
std::string(
"PF Kin Cuts"));
95 pfDeltaPhi_ = index_type(&bits_,
std::string(
"PF Delta Phi"));
96 pfJetID_ = index_type(&bits_,
std::string(
"PF Jet ID"));
108 if ( considerCut(caloCuts_) ) {
109 passCut(ret, caloCuts_);
110 event.getByLabel( jetSrc_, h_jets_ );
112 if ( h_jets_->size() >= 2 || ignoreCut(caloKin_) ) {
113 passCut(ret, caloKin_);
114 pat::Jet const & jet0 = h_jets_->at(0);
115 pat::Jet const & jet1 = h_jets_->at(1);
116 double dphi = fabs(deltaPhi<double>( jet0.
phi(),
119 if ( fabs(dphi -
TMath::Pi()) < 1.0 || ignoreCut(caloDeltaPhi_) ) {
120 passCut(ret, caloDeltaPhi_);
123 retCaloJet.
set(
false);
124 bool pass0 = (*jetSel_)( jet0, retCaloJet );
125 retCaloJet.
set(
false);
126 bool pass1 = (*jetSel_)( jet1, retCaloJet );
127 if ( (pass0 && pass1) || ignoreCut(caloJetID_) ) {
128 passCut(ret, caloJetID_);
139 if ( considerCut(pfCuts_) ) {
141 passCut(ret, pfCuts_);
142 event.getByLabel( pfJetSrc_, h_pfjets_ );
144 if ( h_pfjets_->size() >= 2 || ignoreCut(pfKin_) ) {
145 passCut( ret, pfKin_);
146 pat::Jet const & jet0 = h_pfjets_->at(0);
147 pat::Jet const & jet1 = h_pfjets_->at(1);
148 double dphi = fabs(deltaPhi<double>( jet0.
phi(),
151 if ( fabs(dphi -
TMath::Pi()) < 1.0 || ignoreCut(pfDeltaPhi_) ) {
152 passCut(ret, pfDeltaPhi_);
156 bool pass0 = (*pfJetSel_)( jet0, retPFJet );
158 bool pass1 = (*pfJetSel_)( jet1, retPFJet );
159 if ( (pass0 && pass1) || ignoreCut(pfJetID_) ) {
160 passCut(ret, pfJetID_);
176 std::shared_ptr<JetIDSelectionFunctor>
const &
jetSel()
const {
return jetSel_;}
177 std::shared_ptr<PFJetIDSelectionFunctor>
const &
pfJetSel()
const {
return pfJetSel_;}
179 vector<pat::Jet>
const &
allCaloJets ()
const {
return *h_jets_; }
180 vector<pat::Jet>
const &
allPFJets ()
const {
return *h_pfjets_; }
190 index_type
const &
caloCuts()
const {
return caloCuts_;}
191 index_type
const &
caloKin()
const {
return caloKin_;}
193 index_type
const &
caloJetID()
const {
return caloJetID_;}
194 index_type
const &
pfCuts()
const {
return pfCuts_;}
195 index_type
const &
pfKin()
const {
return pfKin_;}
197 index_type
const &
pfJetID()
const {
return pfJetID_;}
201 std::shared_ptr<JetIDSelectionFunctor>
jetSel_;
238 std::cout <<
"Usage : " << argv[0] <<
" [parameters.py]" << std::endl;
242 cout <<
"Hello from " << argv[0] <<
"!" << endl;
246 gSystem->Load(
"libFWCoreFWLite" );
250 cout <<
"Getting parameters" << endl;
253 std::shared_ptr<edm::ProcessDesc>
b = builder.
processDesc();
254 std::shared_ptr<edm::ParameterSet>
parameters = b->getProcessPSet();
255 parameters->registerIt();
265 cout <<
"Making RunLumiSelector" << endl;
268 cout <<
"setting up TFileService" << endl;
273 cout <<
"Setting up chain event" << endl;
279 cout <<
"Booking histograms" << endl;
282 std::map<std::string, TH1*> hists;
284 hists[
"hist_nJet" ] = theDir.
make<TH1D>(
"hist_nJet" ,
"Number of Calo Jets", 10, 0, 10 ) ;
285 hists[
"hist_nPFJet" ] = theDir.
make<TH1D>(
"hist_nPFJet" ,
"Number of PF Jets", 10, 0, 10 ) ;
287 hists[
"hist_jetPt" ] = theDir.
make<TH1D>(
"hist_jetPt" ,
"Jet p_{T}", 400, 0, 400 ) ;
288 hists[
"hist_jetEtaVsPhi" ] = theDir.
make<TH2D>(
"hist_jetEtaVsPhi" ,
"Jet #phi versus #eta;#eta;#phi", 50, -5.0, 5.0, 50, -
TMath::Pi(),
TMath::Pi() ) ;
289 hists[
"hist_jetNTracks" ] = theDir.
make<TH1D>(
"hist_jetNTracks" ,
"Jet N_{TRACKS}", 20, 0, 20 ) ;
290 hists[
"hist_jetNTracksVsPt" ] = theDir.
make<TH2D>(
"hist_jetNTracksVsPt" ,
"Number of Tracks versus Jet p_{T};Jet p_{T}(GeV/c) ;N_{Tracks}",20, 0, 200, 20, 0, 20 ) ;
291 hists[
"hist_jetEMF" ] = theDir.
make<TH1D>(
"hist_jetEMF" ,
"Jet EMF", 200, 0, 1) ;
292 hists[
"hist_jetPdgID" ] = theDir.
make<TH1D>(
"hist_jetPdgID" ,
"PDG Id of Jet Constituents", 10000, 0, 10000 ) ;
293 hists[
"hist_jetGenEmE" ] = theDir.
make<TH1D>(
"hist_jetGenEmE" ,
"Gen Jet EM Energy", 200, 0, 200 ) ;
294 hists[
"hist_jetGenHadE" ] = theDir.
make<TH1D>(
"hist_jetGenHadE" ,
"Gen Jet HAD Energy", 200, 0, 200 ) ;
295 hists[
"hist_jetGenEMF" ] = theDir.
make<TH1D>(
"hist_jetGenEMF" ,
"Gen Jet EMF", 200, 0, 1) ;
296 hists[
"hist_jetEoverGenE" ] = theDir.
make<TH1D>(
"hist_jetEoverGenE" ,
"Energy of reco Jet / Energy of gen Jet", 200, 0, 2.0) ;
297 hists[
"hist_jetCorr" ] = theDir.
make<TH1D>(
"hist_jetCorr" ,
"Jet Correction Factor", 200, 0, 1.0 ) ;
298 hists[
"hist_n90Hits" ] = theDir.
make<TH1D>(
"hist_n90Hits" ,
"Jet n90Hits", 20, 0, 20) ;
299 hists[
"hist_fHPD" ] = theDir.
make<TH1D>(
"hist_fHPD" ,
"Jet fHPD", 200, 0, 1) ;
300 hists[
"hist_nConstituents" ] = theDir.
make<TH1D>(
"hist_nConstituents" ,
"Jet nConstituents", 20, 0, 20 ) ;
301 hists[
"hist_jetCHF" ] = theDir.
make<TH1D>(
"hist_jetCHF" ,
"Jet Charged Hadron Fraction", 200, 0, 1.0) ;
303 hists[
"hist_good_jetPt" ] = theDir.
make<TH1D>(
"hist_good_jetPt" ,
"Jet p_{T}", 400, 0, 400 ) ;
304 hists[
"hist_good_jetEtaVsPhi" ] = theDir.
make<TH2D>(
"hist_good_jetEtaVsPhi" ,
"Jet #phi versus #eta;#eta;#phi", 50, -5.0, 5.0, 50, -
TMath::Pi(),
TMath::Pi() ) ;
305 hists[
"hist_good_jetNTracks" ] = theDir.
make<TH1D>(
"hist_good_jetNTracks" ,
"Jet N_{TRACKS}", 20, 0, 20 ) ;
306 hists[
"hist_good_jetNTracksVsPt" ] = theDir.
make<TH2D>(
"hist_good_jetNTracksVsPt" ,
"Number of Tracks versus Jet p_{T};Jet p_{T}(GeV/c) ;N_{Tracks}",20, 0, 200, 20, 0, 20 ) ;
307 hists[
"hist_good_jetEMF" ] = theDir.
make<TH1D>(
"hist_good_jetEMF" ,
"Jet EMF", 200, 0, 1) ;
308 hists[
"hist_good_jetPdgID" ] = theDir.
make<TH1D>(
"hist_good_jetPdgID" ,
"PDG Id of Jet Constituents", 10000, 0, 10000 ) ;
309 hists[
"hist_good_jetGenEmE" ] = theDir.
make<TH1D>(
"hist_good_jetGenEmE" ,
"Gen Jet EM Energy", 200, 0, 200 ) ;
310 hists[
"hist_good_jetGenHadE" ] = theDir.
make<TH1D>(
"hist_good_jetGenHadE" ,
"Gen Jet HAD Energy", 200, 0, 200 ) ;
311 hists[
"hist_good_jetGenEMF" ] = theDir.
make<TH1D>(
"hist_good_jetGenEMF" ,
"Gen Jet EMF", 200, 0, 1) ;
312 hists[
"hist_good_jetEoverGenE" ] = theDir.
make<TH1D>(
"hist_good_jetEoverGenE" ,
"Energy of reco Jet / Energy of gen Jet", 200, 0, 2.0) ;
313 hists[
"hist_good_jetCorr" ] = theDir.
make<TH1D>(
"hist_good_jetCorr" ,
"Jet Correction Factor", 200, 0, 1.0 ) ;
314 hists[
"hist_good_n90Hits" ] = theDir.
make<TH1D>(
"hist_good_n90Hits" ,
"Jet n90Hits", 20, 0, 20) ;
315 hists[
"hist_good_fHPD" ] = theDir.
make<TH1D>(
"hist_good_fHPD" ,
"Jet fHPD", 200, 0, 1) ;
316 hists[
"hist_good_nConstituents" ] = theDir.
make<TH1D>(
"hist_good_nConstituents" ,
"Jet nConstituents", 20, 0, 20 ) ;
317 hists[
"hist_good_jetCHF" ] = theDir.
make<TH1D>(
"hist_good_jetCHF" ,
"Jet Charged Hadron Fraction", 200, 0, 1.0) ;
320 hists[
"hist_pf_jetPt" ] = theDir.
make<TH1D>(
"hist_pf_jetPt" ,
"PFJet p_{T}", 400, 0, 400 ) ;
321 hists[
"hist_pf_jetEtaVsPhi" ] = theDir.
make<TH2D>(
"hist_pf_jetEtaVsPhi" ,
"PFJet #phi versus #eta;#eta;#phi", 50, -5.0, 5.0, 50, -
TMath::Pi(),
TMath::Pi() ) ;
322 hists[
"hist_pf_jetNTracks" ] = theDir.
make<TH1D>(
"hist_pf_jetNTracks" ,
"PFJet N_{TRACKS}", 20, 0, 20 ) ;
323 hists[
"hist_pf_jetNTracksVsPt" ] = theDir.
make<TH2D>(
"hist_pf_jetNTracksVsPt" ,
"Number of Tracks versus Jet p_{T};Jet p_{T}(GeV/c) ;N_{Tracks}",20, 0, 200, 20, 0, 20 ) ;
324 hists[
"hist_pf_jetEMF" ] = theDir.
make<TH1D>(
"hist_pf_jetEMF" ,
"PFJet EMF", 200, 0, 1) ;
325 hists[
"hist_pf_jetCHF" ] = theDir.
make<TH1D>(
"hist_pf_jetCHF" ,
"PFJet CHF", 200, 0, 1) ;
326 hists[
"hist_pf_jetNHF" ] = theDir.
make<TH1D>(
"hist_pf_jetNHF" ,
"PFJet NHF", 200, 0, 1) ;
327 hists[
"hist_pf_jetCEF" ] = theDir.
make<TH1D>(
"hist_pf_jetCEF" ,
"PFJet CEF", 200, 0, 1) ;
328 hists[
"hist_pf_jetNEF" ] = theDir.
make<TH1D>(
"hist_pf_jetNEF" ,
"PFJet NEF", 200, 0, 1) ;
329 hists[
"hist_pf_jetPdgID" ] = theDir.
make<TH1D>(
"hist_pf_jetPdgID" ,
"PDG Id of Jet Constituents", 10000, 0, 10000 ) ;
330 hists[
"hist_pf_jetGenEmE" ] = theDir.
make<TH1D>(
"hist_pf_jetGenEmE" ,
"Gen Jet EM Energy", 200, 0, 200 ) ;
331 hists[
"hist_pf_jetGenHadE" ] = theDir.
make<TH1D>(
"hist_pf_jetGenHadE" ,
"Gen Jet HAD Energy", 200, 0, 200 ) ;
332 hists[
"hist_pf_jetGenEMF" ] = theDir.
make<TH1D>(
"hist_pf_jetGenEMF" ,
"Gen Jet EMF", 200, 0, 1) ;
333 hists[
"hist_pf_jetEoverGenE" ] = theDir.
make<TH1D>(
"hist_pf_jetEoverGenE" ,
"Energy of reco Jet / Energy of gen Jet", 200, 0, 2.0) ;
334 hists[
"hist_pf_jetCorr" ] = theDir.
make<TH1D>(
"hist_pf_jetCorr" ,
"PFJet Correction Factor", 200, 0, 1.0 ) ;
335 hists[
"hist_pf_nConstituents" ] = theDir.
make<TH1D>(
"hist_pf_nConstituents" ,
"PFJet nConstituents", 20, 0, 20 ) ;
337 hists[
"hist_pf_good_jetPt" ] = theDir.
make<TH1D>(
"hist_pf_good_jetPt" ,
"PFJet p_{T}", 400, 0, 400 ) ;
338 hists[
"hist_pf_good_jetEtaVsPhi" ] = theDir.
make<TH2D>(
"hist_pf_good_jetEtaVsPhi" ,
"PFJet #phi versus #eta;#eta;#phi", 50, -5.0, 5.0, 50, -
TMath::Pi(),
TMath::Pi() ) ;
339 hists[
"hist_pf_good_jetNTracks" ] = theDir.
make<TH1D>(
"hist_pf_good_jetNTracks" ,
"PFJet N_{TRACKS}", 20, 0, 20 ) ;
340 hists[
"hist_pf_good_jetNTracksVsPt" ] = theDir.
make<TH2D>(
"hist_pf_good_jetNTracksVsPt",
"Number of Tracks versus Jet p_{T};Jet p_{T}(GeV/c) ;N_{Tracks}",20, 0, 200, 20, 0, 20 ) ;
341 hists[
"hist_pf_good_jetEMF" ] = theDir.
make<TH1D>(
"hist_pf_good_jetEMF" ,
"PFJet EMF", 200, 0, 1) ;
342 hists[
"hist_pf_good_jetCHF" ] = theDir.
make<TH1D>(
"hist_pf_good_jetCHF" ,
"PFJet CHF", 200, 0, 1) ;
343 hists[
"hist_pf_good_jetNHF" ] = theDir.
make<TH1D>(
"hist_pf_good_jetNHF" ,
"PFJet NHF", 200, 0, 1) ;
344 hists[
"hist_pf_good_jetCEF" ] = theDir.
make<TH1D>(
"hist_pf_good_jetCEF" ,
"PFJet CEF", 200, 0, 1) ;
345 hists[
"hist_pf_good_jetNEF" ] = theDir.
make<TH1D>(
"hist_pf_good_jetNEF" ,
"PFJet NEF", 200, 0, 1) ;
346 hists[
"hist_pf_good_jetPdgID" ] = theDir.
make<TH1D>(
"hist_pf_good_jetPdgID" ,
"PDG Id of Jet Constituents", 10000, 0, 10000 ) ;
347 hists[
"hist_pf_good_jetGenEmE" ] = theDir.
make<TH1D>(
"hist_pf_good_jetGenEmE" ,
"Gen Jet EM Energy", 200, 0, 200 ) ;
348 hists[
"hist_pf_good_jetGenHadE" ] = theDir.
make<TH1D>(
"hist_pf_good_jetGenHadE" ,
"Gen Jet HAD Energy", 200, 0, 200 ) ;
349 hists[
"hist_pf_good_jetGenEMF" ] = theDir.
make<TH1D>(
"hist_pf_good_jetGenEMF" ,
"Gen Jet EMF", 200, 0, 1) ;
350 hists[
"hist_pf_good_jetEoverGenE" ] = theDir.
make<TH1D>(
"hist_pf_good_jetEoverGenE" ,
"Energy of reco Jet / Energy of gen Jet", 200, 0, 2.0) ;
351 hists[
"hist_pf_good_jetCorr" ] = theDir.
make<TH1D>(
"hist_pf_good_jetCorr" ,
"PFJet Correction Factor", 200, 0, 1.0 ) ;
352 hists[
"hist_pf_good_nConstituents" ] = theDir.
make<TH1D>(
"hist_pf_good_nConstituents" ,
"PFJet nConstituents", 20, 0, 20 ) ;
354 hists[
"hist_mjj" ] = theDir.
make<TH1D>(
"hist_mjj" ,
"Dijet mass", 300, 0, 300 ) ;
355 hists[
"hist_dR_jj" ] = theDir.
make<TH1D>(
"hist_dR_jj" ,
"#Delta R_{JJ}", 200, 0,
TMath::TwoPi() ) ;
356 hists[
"hist_imbalance_jj" ] = theDir.
make<TH1D>(
"hist_imbalance_jj" ,
"Dijet imbalance", 200, -1.0, 1.0 ) ;
358 hists[
"hist_pf_mjj" ] = theDir.
make<TH1D>(
"hist_pf_mjj" ,
"Dijet mass", 300, 0, 300 ) ;
359 hists[
"hist_pf_dR_jj" ] = theDir.
make<TH1D>(
"hist_pf_dR_jj" ,
"#Delta R_{JJ}", 200, 0,
TMath::TwoPi() ) ;
360 hists[
"hist_pf_imbalance_jj" ] = theDir.
make<TH1D>(
"hist_pf_imbalance_jj" ,
"Dijet imbalance", 200, -1.0, 1.0 ) ;
364 cout <<
"Making functors" << endl;
371 pfJetStudiesParams );
373 bool doTracks = plotParameters.getParameter<
bool>(
"doTracks");
374 bool useMC = plotParameters.getParameter<
bool>(
"useMC");
376 cout <<
"About to begin looping" << endl;
385 if ( runLumiSel(ev) ==
false )
continue;
387 if ( nev % 100 == 0 )
cout <<
"Processing run " <<
event.id().run() <<
", lumi " <<
event.id().luminosityBlock() <<
", event " <<
event.id().event() << endl;
393 caloSelector(
event, retCalo );
397 pfSelector(
event, retPF );
404 vector<pat::Jet>
const & allCaloJets = caloSelector.
allCaloJets();
406 for ( std::vector<pat::Jet>::const_iterator jetBegin = allCaloJets.begin(),
407 jetEnd = jetBegin + 2, ijet = jetBegin;
408 ijet != jetEnd; ++ijet ) {
412 double pt = jet.
pt();
416 hists[
"hist_jetPt"]->Fill( pt );
417 hists[
"hist_jetEtaVsPhi"]->Fill( jet.
eta(), jet.
phi() );
418 hists[
"hist_jetNTracks"]->Fill( jetTracks.
size() );
419 hists[
"hist_jetNTracksVsPt"]->Fill( pt, jetTracks.
size() );
421 hists[
"hist_jetCorr"]->Fill( jet.
jecFactor(
"Uncorrected") );
422 hists[
"hist_n90Hits"]->Fill( static_cast<int>(jet.
jetID().
n90Hits) );
423 hists[
"hist_fHPD"]->Fill( jet.
jetID().
fHPD );
426 if ( useMC && jet.
genJet() != 0 ) {
433 TLorentzVector p4_tracks(0,0,0,0);
435 itrkEnd = jetTracks.
end();
436 itrk != itrkEnd; ++itrk ) {
437 TLorentzVector p4_trk;
438 double M_PION = 0.140;
439 p4_trk.SetPtEtaPhiM( (*itrk)->pt(), (*itrk)->eta(), (*itrk)->phi(), M_PION );
442 hists[
"hist_jetCHF"]->Fill( p4_tracks.Energy() / jet.
energy() );
454 TLorentzVector p4_j0( jet0.
px(), jet0.
py(), jet0.
pz(), jet0.
energy() );
455 TLorentzVector p4_j1( jet1.
px(), jet1.
py(), jet1.
pz(), jet1.
energy() );
457 TLorentzVector p4_jj = p4_j0 + p4_j1;
459 hists[
"hist_mjj"]->Fill( p4_jj.M() );
460 hists[
"hist_dR_jj"]->Fill( p4_j0.DeltaR( p4_j1 ) );
461 hists[
"hist_imbalance_jj"]->Fill( (p4_j0.Perp() - p4_j1.Perp() ) /
462 (p4_j0.Perp() + p4_j1.Perp() ) );
464 hists[
"hist_good_jetPt"]->Fill( jet0.
pt() );
465 hists[
"hist_good_jetEtaVsPhi"]->Fill( jet0.
eta(), jet0.
phi() );
469 hists[
"hist_good_jetCorr"]->Fill( jet0.
jecFactor(
"Uncorrected") );
470 hists[
"hist_good_n90Hits"]->Fill( static_cast<int>(jet0.
jetID().
n90Hits) );
471 hists[
"hist_good_fHPD"]->Fill( jet0.
jetID().
fHPD );
472 hists[
"hist_good_nConstituents"]->Fill( jet0.
nConstituents() );
475 hists[
"hist_good_jetPt"]->Fill( jet1.
pt() );
476 hists[
"hist_good_jetEtaVsPhi"]->Fill( jet1.
eta(), jet1.
phi() );
480 hists[
"hist_good_jetCorr"]->Fill( jet1.
jecFactor(
"Uncorrected") );
481 hists[
"hist_good_n90Hits"]->Fill( static_cast<int>(jet1.
jetID().
n90Hits) );
482 hists[
"hist_good_fHPD"]->Fill( jet1.
jetID().
fHPD );
483 hists[
"hist_good_nConstituents"]->Fill( jet1.
nConstituents() );
495 vector<pat::Jet>
const & allPFJets = pfSelector.
allPFJets();
497 for ( std::vector<pat::Jet>::const_iterator jetBegin = allPFJets.begin(),
498 jetEnd = jetBegin + 2, ijet = jetBegin;
499 ijet != jetEnd; ++ijet ) {
503 double pt = jet.
pt();
505 hists[
"hist_pf_jetPt"]->Fill( pt );
506 hists[
"hist_pf_jetEtaVsPhi"]->Fill( jet.
eta(), jet.
phi() );
514 if ( useMC && jet.
genJet() != 0 ) {
530 TLorentzVector p4_j0( jet0.
px(), jet0.
py(), jet0.
pz(), jet0.
energy() );
531 TLorentzVector p4_j1( jet1.
px(), jet1.
py(), jet1.
pz(), jet1.
energy() );
533 TLorentzVector p4_jj = p4_j0 + p4_j1;
535 hists[
"hist_pf_mjj"]->Fill( p4_jj.M() );
536 hists[
"hist_pf_dR_jj"]->Fill( p4_j0.DeltaR( p4_j1 ) );
537 hists[
"hist_pf_imbalance_jj"]->Fill( (p4_j0.Perp() - p4_j1.Perp() ) /
538 (p4_j0.Perp() + p4_j1.Perp() ) );
540 hists[
"hist_pf_good_jetPt"]->Fill( jet0.
pt() );
541 hists[
"hist_pf_good_jetEtaVsPhi"]->Fill( jet0.
eta(), jet0.
phi() );
542 hists[
"hist_pf_good_nConstituents"]->Fill( jet0.
nConstituents() );
549 hists[
"hist_pf_good_jetPt"]->Fill( jet1.
pt() );
550 hists[
"hist_pf_good_jetEtaVsPhi"]->Fill( jet1.
eta(), jet1.
phi() );
551 hists[
"hist_pf_good_nConstituents"]->Fill( jet1.
nConstituents() );
563 cout <<
"Calo jet selection" << endl;
565 cout <<
"PF jet selection" << endl;
T getParameter(std::string const &) const
float neutralHadronEnergyFraction() const
neutralHadronEnergyFraction (relative to uncorrected jet energy)
index_type const & pfKin() const
pat::Jet const & pfJet0() const
float chargedHadronEnergyFraction() const
chargedHadronEnergyFraction (relative to uncorrected jet energy)
index_type const & pfDeltaPhi() const
const reco::TrackRefVector & associatedTracks() const
method to return a vector of refs to the tracks associated to this jet
float chargedEmEnergyFraction() const
chargedEmEnergyFraction (relative to uncorrected jet energy)
pat::Jet const & caloJet0() const
const_iterator end() const
Termination of iteration.
std::shared_ptr< edm::ProcessDesc > processDesc()
virtual ~JetIDStudiesSelector()
virtual double eta() const
momentum pseudorapidity
virtual double pt() const
transverse momentum
const_iterator begin() const
Initialize an iterator over the RefVector.
int main(int argc, char **argv)
virtual double energy() const
energy
std::shared_ptr< JetIDSelectionFunctor > const & jetSel() const
pat::Jet const & pfJet1() const
pat::Jet const & caloJet1() const
index_type const & caloJetID() const
T * make(const Args &...args) const
make new ROOT object
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
PF Jet selector for pat::Jets.
float emEnergyFraction() const
returns the jet electromagnetic energy fraction
edm::Ptr< pat::Jet > pfJet0_
virtual bool atEnd() const
edm::Handle< vector< pat::Jet > > h_jets_
index_type const & caloDeltaPhi() const
Jet selector for pat::Jets and for CaloJets.
std::shared_ptr< JetIDSelectionFunctor > jetSel_
reco::JetID const & jetID() const
accessing Jet ID information
vector< pat::Jet > const & allPFJets() const
virtual double px() const
x coordinate of momentum vector
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
strbitset & set(bool val=true)
set method of all bits
std::shared_ptr< PFJetIDSelectionFunctor > const & pfJetSel() const
Analysis-level calorimeter jet class.
std::shared_ptr< PFJetIDSelectionFunctor > pfJetSel_
virtual double pz() const
z coordinate of momentum vector
bool test(std::string s) const
test
ChainEvent const & toBegin()
vector< pat::Jet > const & allCaloJets() const
index_type const & caloCuts() const
virtual int nConstituents() const
of constituents
const reco::GenJet * genJet() const
return the matched generated jet
edm::Handle< vector< pat::Jet > > h_pfjets_
size_type size() const
Size of the RefVector.
edm::Ptr< pat::Jet > pfJet1_
static void enable()
enable automatic library loading
index_type const & pfJetID() const
virtual bool operator()(edm::EventBase const &event, pat::strbitset &ret) override
float jecFactor(const std::string &level, const std::string &flavor="none", const std::string &set="") const
float neutralEmEnergyFraction() const
neutralEmEnergyFraction (relative to uncorrected jet energy)
edm::Ptr< pat::Jet > caloJet1_
volatile std::atomic< bool > shutdown_flag false
JetIDStudiesSelector(edm::ParameterSet const &caloJetIdParams, edm::ParameterSet const &pfJetIdParams, edm::ParameterSet const ¶ms)
edm::Ptr< pat::Jet > caloJet0_
virtual double phi() const
momentum azimuthal angle
index_type const & caloKin() const
index_type const & pfCuts() const
virtual double py() const
y coordinate of momentum vector