12 #include "TLorentzVector.h"
64 jetSrc_ (params.getParameter<edm::InputTag>(
"jetSrc")),
65 pfJetSrc_ (params.getParameter<edm::InputTag>(
"pfJetSrc"))
69 push_back(
"Calo Cuts");
70 push_back(
"Calo Kin Cuts");
71 push_back(
"Calo Delta Phi");
72 push_back(
"Calo Jet ID");
74 push_back(
"PF Kin Cuts");
75 push_back(
"PF Delta Phi");
76 push_back(
"PF Jet ID");
78 set(
"Calo Cuts", useCalo);
79 set(
"Calo Kin Cuts", useCalo);
80 set(
"Calo Delta Phi", useCalo);
81 set(
"Calo Jet ID", useCalo);
82 set(
"PF Cuts", !useCalo);
83 set(
"PF Kin Cuts", !useCalo);
84 set(
"PF Delta Phi", !useCalo);
85 set(
"PF Jet ID", !useCalo);
88 caloCuts_ = index_type(&bits_,
std::string(
"Calo Cuts") );
89 caloKin_ = index_type(&bits_,
std::string(
"Calo Kin Cuts"));
90 caloDeltaPhi_ = index_type(&bits_,
std::string(
"Calo Delta Phi"));
91 caloJetID_ = index_type(&bits_,
std::string(
"Calo Jet ID"));
92 pfCuts_ = index_type(&bits_,
std::string(
"PF Cuts"));
93 pfKin_ = index_type(&bits_,
std::string(
"PF Kin Cuts"));
94 pfDeltaPhi_ = index_type(&bits_,
std::string(
"PF Delta Phi"));
95 pfJetID_ = index_type(&bits_,
std::string(
"PF Jet ID"));
107 if ( considerCut(caloCuts_) ) {
108 passCut(ret, caloCuts_);
109 event.getByLabel( jetSrc_, h_jets_ );
111 if ( h_jets_->size() >= 2 || ignoreCut(caloKin_) ) {
112 passCut(ret, caloKin_);
113 pat::Jet const & jet0 = h_jets_->at(0);
114 pat::Jet const & jet1 = h_jets_->at(1);
115 double dphi = fabs(deltaPhi<double>( jet0.
phi(),
118 if ( fabs(dphi -
TMath::Pi()) < 1.0 || ignoreCut(caloDeltaPhi_) ) {
119 passCut(ret, caloDeltaPhi_);
122 retCaloJet.
set(
false);
123 bool pass0 = (*jetSel_)( jet0, retCaloJet );
124 retCaloJet.
set(
false);
125 bool pass1 = (*jetSel_)( jet1, retCaloJet );
126 if ( (pass0 && pass1) || ignoreCut(caloJetID_) ) {
127 passCut(ret, caloJetID_);
138 if ( considerCut(pfCuts_) ) {
140 passCut(ret, pfCuts_);
141 event.getByLabel( pfJetSrc_, h_pfjets_ );
143 if ( h_pfjets_->size() >= 2 || ignoreCut(pfKin_) ) {
144 passCut( ret, pfKin_);
145 pat::Jet const & jet0 = h_pfjets_->at(0);
146 pat::Jet const & jet1 = h_pfjets_->at(1);
147 double dphi = fabs(deltaPhi<double>( jet0.
phi(),
150 if ( fabs(dphi -
TMath::Pi()) < 1.0 || ignoreCut(pfDeltaPhi_) ) {
151 passCut(ret, pfDeltaPhi_);
155 bool pass0 = (*pfJetSel_)( jet0, retPFJet );
157 bool pass1 = (*pfJetSel_)( jet1, retPFJet );
158 if ( (pass0 && pass1) || ignoreCut(pfJetID_) ) {
159 passCut(ret, pfJetID_);
175 boost::shared_ptr<JetIDSelectionFunctor>
const &
jetSel()
const {
return jetSel_;}
176 boost::shared_ptr<PFJetIDSelectionFunctor>
const &
pfJetSel()
const {
return pfJetSel_;}
178 vector<pat::Jet>
const &
allCaloJets ()
const {
return *h_jets_; }
179 vector<pat::Jet>
const &
allPFJets ()
const {
return *h_pfjets_; }
189 index_type
const &
caloCuts()
const {
return caloCuts_;}
190 index_type
const &
caloKin()
const {
return caloKin_;}
192 index_type
const &
caloJetID()
const {
return caloJetID_;}
193 index_type
const &
pfCuts()
const {
return pfCuts_;}
194 index_type
const &
pfKin()
const {
return pfKin_;}
196 index_type
const &
pfJetID()
const {
return pfJetID_;}
200 boost::shared_ptr<JetIDSelectionFunctor>
jetSel_;
237 std::cout <<
"Usage : " << argv[0] <<
" [parameters.py]" << std::endl;
241 cout <<
"Hello from " << argv[0] <<
"!" << endl;
245 gSystem->Load(
"libFWCoreFWLite" );
249 cout <<
"Getting parameters" << endl;
252 boost::shared_ptr<edm::ProcessDesc>
b = builder.
processDesc();
253 boost::shared_ptr<edm::ParameterSet>
parameters = b->getProcessPSet();
254 parameters->registerIt();
264 cout <<
"Making RunLumiSelector" << endl;
267 cout <<
"setting up TFileService" << endl;
272 cout <<
"Setting up chain event" << endl;
275 fwlite::ChainEvent ev ( inputs.getParameter<std::vector<std::string> > (
"fileNames") );
278 cout <<
"Booking histograms" << endl;
281 std::map<std::string, TH1*> hists;
283 hists[
"hist_nJet" ] = theDir.
make<TH1D>(
"hist_nJet" ,
"Number of Calo Jets", 10, 0, 10 ) ;
284 hists[
"hist_nPFJet" ] = theDir.
make<TH1D>(
"hist_nPFJet" ,
"Number of PF Jets", 10, 0, 10 ) ;
286 hists[
"hist_jetPt" ] = theDir.
make<TH1D>(
"hist_jetPt" ,
"Jet p_{T}", 400, 0, 400 ) ;
287 hists[
"hist_jetEtaVsPhi" ] = theDir.
make<TH2D>(
"hist_jetEtaVsPhi" ,
"Jet #phi versus #eta;#eta;#phi", 50, -5.0, 5.0, 50, -
TMath::Pi(),
TMath::Pi() ) ;
288 hists[
"hist_jetNTracks" ] = theDir.
make<TH1D>(
"hist_jetNTracks" ,
"Jet N_{TRACKS}", 20, 0, 20 ) ;
289 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 ) ;
290 hists[
"hist_jetEMF" ] = theDir.
make<TH1D>(
"hist_jetEMF" ,
"Jet EMF", 200, 0, 1) ;
291 hists[
"hist_jetPdgID" ] = theDir.
make<TH1D>(
"hist_jetPdgID" ,
"PDG Id of Jet Constituents", 10000, 0, 10000 ) ;
292 hists[
"hist_jetGenEmE" ] = theDir.
make<TH1D>(
"hist_jetGenEmE" ,
"Gen Jet EM Energy", 200, 0, 200 ) ;
293 hists[
"hist_jetGenHadE" ] = theDir.
make<TH1D>(
"hist_jetGenHadE" ,
"Gen Jet HAD Energy", 200, 0, 200 ) ;
294 hists[
"hist_jetGenEMF" ] = theDir.
make<TH1D>(
"hist_jetGenEMF" ,
"Gen Jet EMF", 200, 0, 1) ;
295 hists[
"hist_jetEoverGenE" ] = theDir.
make<TH1D>(
"hist_jetEoverGenE" ,
"Energy of reco Jet / Energy of gen Jet", 200, 0, 2.0) ;
296 hists[
"hist_jetCorr" ] = theDir.
make<TH1D>(
"hist_jetCorr" ,
"Jet Correction Factor", 200, 0, 1.0 ) ;
297 hists[
"hist_n90Hits" ] = theDir.
make<TH1D>(
"hist_n90Hits" ,
"Jet n90Hits", 20, 0, 20) ;
298 hists[
"hist_fHPD" ] = theDir.
make<TH1D>(
"hist_fHPD" ,
"Jet fHPD", 200, 0, 1) ;
299 hists[
"hist_nConstituents" ] = theDir.
make<TH1D>(
"hist_nConstituents" ,
"Jet nConstituents", 20, 0, 20 ) ;
300 hists[
"hist_jetCHF" ] = theDir.
make<TH1D>(
"hist_jetCHF" ,
"Jet Charged Hadron Fraction", 200, 0, 1.0) ;
302 hists[
"hist_good_jetPt" ] = theDir.
make<TH1D>(
"hist_good_jetPt" ,
"Jet p_{T}", 400, 0, 400 ) ;
303 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() ) ;
304 hists[
"hist_good_jetNTracks" ] = theDir.
make<TH1D>(
"hist_good_jetNTracks" ,
"Jet N_{TRACKS}", 20, 0, 20 ) ;
305 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 ) ;
306 hists[
"hist_good_jetEMF" ] = theDir.
make<TH1D>(
"hist_good_jetEMF" ,
"Jet EMF", 200, 0, 1) ;
307 hists[
"hist_good_jetPdgID" ] = theDir.
make<TH1D>(
"hist_good_jetPdgID" ,
"PDG Id of Jet Constituents", 10000, 0, 10000 ) ;
308 hists[
"hist_good_jetGenEmE" ] = theDir.
make<TH1D>(
"hist_good_jetGenEmE" ,
"Gen Jet EM Energy", 200, 0, 200 ) ;
309 hists[
"hist_good_jetGenHadE" ] = theDir.
make<TH1D>(
"hist_good_jetGenHadE" ,
"Gen Jet HAD Energy", 200, 0, 200 ) ;
310 hists[
"hist_good_jetGenEMF" ] = theDir.
make<TH1D>(
"hist_good_jetGenEMF" ,
"Gen Jet EMF", 200, 0, 1) ;
311 hists[
"hist_good_jetEoverGenE" ] = theDir.
make<TH1D>(
"hist_good_jetEoverGenE" ,
"Energy of reco Jet / Energy of gen Jet", 200, 0, 2.0) ;
312 hists[
"hist_good_jetCorr" ] = theDir.
make<TH1D>(
"hist_good_jetCorr" ,
"Jet Correction Factor", 200, 0, 1.0 ) ;
313 hists[
"hist_good_n90Hits" ] = theDir.
make<TH1D>(
"hist_good_n90Hits" ,
"Jet n90Hits", 20, 0, 20) ;
314 hists[
"hist_good_fHPD" ] = theDir.
make<TH1D>(
"hist_good_fHPD" ,
"Jet fHPD", 200, 0, 1) ;
315 hists[
"hist_good_nConstituents" ] = theDir.
make<TH1D>(
"hist_good_nConstituents" ,
"Jet nConstituents", 20, 0, 20 ) ;
316 hists[
"hist_good_jetCHF" ] = theDir.
make<TH1D>(
"hist_good_jetCHF" ,
"Jet Charged Hadron Fraction", 200, 0, 1.0) ;
319 hists[
"hist_pf_jetPt" ] = theDir.
make<TH1D>(
"hist_pf_jetPt" ,
"PFJet p_{T}", 400, 0, 400 ) ;
320 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() ) ;
321 hists[
"hist_pf_jetNTracks" ] = theDir.
make<TH1D>(
"hist_pf_jetNTracks" ,
"PFJet N_{TRACKS}", 20, 0, 20 ) ;
322 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 ) ;
323 hists[
"hist_pf_jetEMF" ] = theDir.
make<TH1D>(
"hist_pf_jetEMF" ,
"PFJet EMF", 200, 0, 1) ;
324 hists[
"hist_pf_jetCHF" ] = theDir.
make<TH1D>(
"hist_pf_jetCHF" ,
"PFJet CHF", 200, 0, 1) ;
325 hists[
"hist_pf_jetNHF" ] = theDir.
make<TH1D>(
"hist_pf_jetNHF" ,
"PFJet NHF", 200, 0, 1) ;
326 hists[
"hist_pf_jetCEF" ] = theDir.
make<TH1D>(
"hist_pf_jetCEF" ,
"PFJet CEF", 200, 0, 1) ;
327 hists[
"hist_pf_jetNEF" ] = theDir.
make<TH1D>(
"hist_pf_jetNEF" ,
"PFJet NEF", 200, 0, 1) ;
328 hists[
"hist_pf_jetPdgID" ] = theDir.
make<TH1D>(
"hist_pf_jetPdgID" ,
"PDG Id of Jet Constituents", 10000, 0, 10000 ) ;
329 hists[
"hist_pf_jetGenEmE" ] = theDir.
make<TH1D>(
"hist_pf_jetGenEmE" ,
"Gen Jet EM Energy", 200, 0, 200 ) ;
330 hists[
"hist_pf_jetGenHadE" ] = theDir.
make<TH1D>(
"hist_pf_jetGenHadE" ,
"Gen Jet HAD Energy", 200, 0, 200 ) ;
331 hists[
"hist_pf_jetGenEMF" ] = theDir.
make<TH1D>(
"hist_pf_jetGenEMF" ,
"Gen Jet EMF", 200, 0, 1) ;
332 hists[
"hist_pf_jetEoverGenE" ] = theDir.
make<TH1D>(
"hist_pf_jetEoverGenE" ,
"Energy of reco Jet / Energy of gen Jet", 200, 0, 2.0) ;
333 hists[
"hist_pf_jetCorr" ] = theDir.
make<TH1D>(
"hist_pf_jetCorr" ,
"PFJet Correction Factor", 200, 0, 1.0 ) ;
334 hists[
"hist_pf_nConstituents" ] = theDir.
make<TH1D>(
"hist_pf_nConstituents" ,
"PFJet nConstituents", 20, 0, 20 ) ;
336 hists[
"hist_pf_good_jetPt" ] = theDir.
make<TH1D>(
"hist_pf_good_jetPt" ,
"PFJet p_{T}", 400, 0, 400 ) ;
337 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() ) ;
338 hists[
"hist_pf_good_jetNTracks" ] = theDir.
make<TH1D>(
"hist_pf_good_jetNTracks" ,
"PFJet N_{TRACKS}", 20, 0, 20 ) ;
339 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 ) ;
340 hists[
"hist_pf_good_jetEMF" ] = theDir.
make<TH1D>(
"hist_pf_good_jetEMF" ,
"PFJet EMF", 200, 0, 1) ;
341 hists[
"hist_pf_good_jetCHF" ] = theDir.
make<TH1D>(
"hist_pf_good_jetCHF" ,
"PFJet CHF", 200, 0, 1) ;
342 hists[
"hist_pf_good_jetNHF" ] = theDir.
make<TH1D>(
"hist_pf_good_jetNHF" ,
"PFJet NHF", 200, 0, 1) ;
343 hists[
"hist_pf_good_jetCEF" ] = theDir.
make<TH1D>(
"hist_pf_good_jetCEF" ,
"PFJet CEF", 200, 0, 1) ;
344 hists[
"hist_pf_good_jetNEF" ] = theDir.
make<TH1D>(
"hist_pf_good_jetNEF" ,
"PFJet NEF", 200, 0, 1) ;
345 hists[
"hist_pf_good_jetPdgID" ] = theDir.
make<TH1D>(
"hist_pf_good_jetPdgID" ,
"PDG Id of Jet Constituents", 10000, 0, 10000 ) ;
346 hists[
"hist_pf_good_jetGenEmE" ] = theDir.
make<TH1D>(
"hist_pf_good_jetGenEmE" ,
"Gen Jet EM Energy", 200, 0, 200 ) ;
347 hists[
"hist_pf_good_jetGenHadE" ] = theDir.
make<TH1D>(
"hist_pf_good_jetGenHadE" ,
"Gen Jet HAD Energy", 200, 0, 200 ) ;
348 hists[
"hist_pf_good_jetGenEMF" ] = theDir.
make<TH1D>(
"hist_pf_good_jetGenEMF" ,
"Gen Jet EMF", 200, 0, 1) ;
349 hists[
"hist_pf_good_jetEoverGenE" ] = theDir.
make<TH1D>(
"hist_pf_good_jetEoverGenE" ,
"Energy of reco Jet / Energy of gen Jet", 200, 0, 2.0) ;
350 hists[
"hist_pf_good_jetCorr" ] = theDir.
make<TH1D>(
"hist_pf_good_jetCorr" ,
"PFJet Correction Factor", 200, 0, 1.0 ) ;
351 hists[
"hist_pf_good_nConstituents" ] = theDir.
make<TH1D>(
"hist_pf_good_nConstituents" ,
"PFJet nConstituents", 20, 0, 20 ) ;
353 hists[
"hist_mjj" ] = theDir.
make<TH1D>(
"hist_mjj" ,
"Dijet mass", 300, 0, 300 ) ;
354 hists[
"hist_dR_jj" ] = theDir.
make<TH1D>(
"hist_dR_jj" ,
"#Delta R_{JJ}", 200, 0,
TMath::TwoPi() ) ;
355 hists[
"hist_imbalance_jj" ] = theDir.
make<TH1D>(
"hist_imbalance_jj" ,
"Dijet imbalance", 200, -1.0, 1.0 ) ;
357 hists[
"hist_pf_mjj" ] = theDir.
make<TH1D>(
"hist_pf_mjj" ,
"Dijet mass", 300, 0, 300 ) ;
358 hists[
"hist_pf_dR_jj" ] = theDir.
make<TH1D>(
"hist_pf_dR_jj" ,
"#Delta R_{JJ}", 200, 0,
TMath::TwoPi() ) ;
359 hists[
"hist_pf_imbalance_jj" ] = theDir.
make<TH1D>(
"hist_pf_imbalance_jj" ,
"Dijet imbalance", 200, -1.0, 1.0 ) ;
363 cout <<
"Making functors" << endl;
370 pfJetStudiesParams );
372 bool doTracks = plotParameters.getParameter<
bool>(
"doTracks");
373 bool useMC = plotParameters.getParameter<
bool>(
"useMC");
375 cout <<
"About to begin looping" << endl;
384 if ( runLumiSel(ev) ==
false )
continue;
386 if ( nev % 100 == 0 )
cout <<
"Processing run " <<
event.id().run() <<
", lumi " <<
event.id().luminosityBlock() <<
", event " <<
event.id().event() << endl;
392 caloSelector(
event, retCalo );
396 pfSelector(
event, retPF );
403 vector<pat::Jet>
const & allCaloJets = caloSelector.
allCaloJets();
405 for ( std::vector<pat::Jet>::const_iterator jetBegin = allCaloJets.begin(),
406 jetEnd = jetBegin + 2, ijet = jetBegin;
407 ijet != jetEnd; ++ijet ) {
411 double pt = jet.
pt();
415 hists[
"hist_jetPt"]->Fill( pt );
416 hists[
"hist_jetEtaVsPhi"]->Fill( jet.
eta(), jet.
phi() );
417 hists[
"hist_jetNTracks"]->Fill( jetTracks.
size() );
418 hists[
"hist_jetNTracksVsPt"]->Fill( pt, jetTracks.
size() );
420 hists[
"hist_jetCorr"]->Fill( jet.
jecFactor(
"Uncorrected") );
421 hists[
"hist_n90Hits"]->Fill( static_cast<int>(jet.
jetID().
n90Hits) );
422 hists[
"hist_fHPD"]->Fill( jet.
jetID().
fHPD );
425 if ( useMC && jet.
genJet() != 0 ) {
432 TLorentzVector p4_tracks(0,0,0,0);
434 itrkEnd = jetTracks.
end();
435 itrk != itrkEnd; ++itrk ) {
436 TLorentzVector p4_trk;
437 double M_PION = 0.140;
438 p4_trk.SetPtEtaPhiM( (*itrk)->pt(), (*itrk)->eta(), (*itrk)->phi(), M_PION );
441 hists[
"hist_jetCHF"]->Fill( p4_tracks.Energy() / jet.
energy() );
453 TLorentzVector p4_j0( jet0.
px(), jet0.
py(), jet0.
pz(), jet0.
energy() );
454 TLorentzVector p4_j1( jet1.
px(), jet1.
py(), jet1.
pz(), jet1.
energy() );
456 TLorentzVector p4_jj = p4_j0 + p4_j1;
458 hists[
"hist_mjj"]->Fill( p4_jj.M() );
459 hists[
"hist_dR_jj"]->Fill( p4_j0.DeltaR( p4_j1 ) );
460 hists[
"hist_imbalance_jj"]->Fill( (p4_j0.Perp() - p4_j1.Perp() ) /
461 (p4_j0.Perp() + p4_j1.Perp() ) );
463 hists[
"hist_good_jetPt"]->Fill( jet0.
pt() );
464 hists[
"hist_good_jetEtaVsPhi"]->Fill( jet0.
eta(), jet0.
phi() );
468 hists[
"hist_good_jetCorr"]->Fill( jet0.
jecFactor(
"Uncorrected") );
469 hists[
"hist_good_n90Hits"]->Fill( static_cast<int>(jet0.
jetID().
n90Hits) );
470 hists[
"hist_good_fHPD"]->Fill( jet0.
jetID().
fHPD );
471 hists[
"hist_good_nConstituents"]->Fill( jet0.
nConstituents() );
474 hists[
"hist_good_jetPt"]->Fill( jet1.
pt() );
475 hists[
"hist_good_jetEtaVsPhi"]->Fill( jet1.
eta(), jet1.
phi() );
479 hists[
"hist_good_jetCorr"]->Fill( jet1.
jecFactor(
"Uncorrected") );
480 hists[
"hist_good_n90Hits"]->Fill( static_cast<int>(jet1.
jetID().
n90Hits) );
481 hists[
"hist_good_fHPD"]->Fill( jet1.
jetID().
fHPD );
482 hists[
"hist_good_nConstituents"]->Fill( jet1.
nConstituents() );
494 vector<pat::Jet>
const & allPFJets = pfSelector.
allPFJets();
496 for ( std::vector<pat::Jet>::const_iterator jetBegin = allPFJets.begin(),
497 jetEnd = jetBegin + 2, ijet = jetBegin;
498 ijet != jetEnd; ++ijet ) {
502 double pt = jet.
pt();
504 hists[
"hist_pf_jetPt"]->Fill( pt );
505 hists[
"hist_pf_jetEtaVsPhi"]->Fill( jet.
eta(), jet.
phi() );
513 if ( useMC && jet.
genJet() != 0 ) {
529 TLorentzVector p4_j0( jet0.
px(), jet0.
py(), jet0.
pz(), jet0.
energy() );
530 TLorentzVector p4_j1( jet1.
px(), jet1.
py(), jet1.
pz(), jet1.
energy() );
532 TLorentzVector p4_jj = p4_j0 + p4_j1;
534 hists[
"hist_pf_mjj"]->Fill( p4_jj.M() );
535 hists[
"hist_pf_dR_jj"]->Fill( p4_j0.DeltaR( p4_j1 ) );
536 hists[
"hist_pf_imbalance_jj"]->Fill( (p4_j0.Perp() - p4_j1.Perp() ) /
537 (p4_j0.Perp() + p4_j1.Perp() ) );
539 hists[
"hist_pf_good_jetPt"]->Fill( jet0.
pt() );
540 hists[
"hist_pf_good_jetEtaVsPhi"]->Fill( jet0.
eta(), jet0.
phi() );
541 hists[
"hist_pf_good_nConstituents"]->Fill( jet0.
nConstituents() );
548 hists[
"hist_pf_good_jetPt"]->Fill( jet1.
pt() );
549 hists[
"hist_pf_good_jetEtaVsPhi"]->Fill( jet1.
eta(), jet1.
phi() );
550 hists[
"hist_pf_good_nConstituents"]->Fill( jet1.
nConstituents() );
562 cout <<
"Calo jet selection" << endl;
564 cout <<
"PF jet selection" << endl;
virtual double energy() const GCC11_FINAL
energy
T getParameter(std::string const &) const
float jecFactor(const std::string &level, const std::string &flavor="none", const std::string &set="") const
float neutralHadronEnergyFraction() const
neutralHadronEnergyFraction (relative to uncorrected jet energy)
index_type const & pfKin() const
pat::Jet const & pfJet0() const
const reco::GenJet * genJet() const
return the matched generated jet
float chargedHadronEnergyFraction() const
chargedHadronEnergyFraction (relative to uncorrected jet energy)
index_type const & pfDeltaPhi() const
float chargedEmEnergyFraction() const
chargedEmEnergyFraction (relative to uncorrected jet energy)
pat::Jet const & caloJet0() const
const reco::TrackRefVector & associatedTracks() const
method to return a vector of refs to the tracks associated to this jet
boost::shared_ptr< JetIDSelectionFunctor > jetSel_
const_iterator end() const
Termination of iteration.
virtual double pz() const GCC11_FINAL
z coordinate of momentum vector
virtual ~JetIDStudiesSelector()
virtual double py() const GCC11_FINAL
y coordinate of momentum vector
const_iterator begin() const
Initialize an iterator over the RefVector.
int main(int argc, char **argv)
virtual float phi() const GCC11_FINAL
momentum azimuthal angle
boost::shared_ptr< JetIDSelectionFunctor > const & jetSel() const
virtual double px() const GCC11_FINAL
x coordinate of momentum vector
pat::Jet const & pfJet1() const
pat::Jet const & caloJet1() const
index_type const & caloJetID() const
boost::shared_ptr< PFJetIDSelectionFunctor > pfJetSel_
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_
virtual float eta() const GCC11_FINAL
momentum pseudorapidity
index_type const & caloDeltaPhi() const
Jet selector for pat::Jets and for CaloJets.
reco::JetID const & jetID() const
accessing Jet ID information
vector< pat::Jet > const & allPFJets() const
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
boost::shared_ptr< edm::ProcessDesc > processDesc()
strbitset & set(bool val=true)
set method of all bits
Analysis-level calorimeter jet class.
bool test(std::string s) const
test
boost::shared_ptr< PFJetIDSelectionFunctor > const & pfJetSel() const
ChainEvent const & toBegin()
vector< pat::Jet > const & allCaloJets() const
index_type const & caloCuts() const
virtual int nConstituents() const
of constituents
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 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 float pt() const GCC11_FINAL
transverse momentum
index_type const & caloKin() const
index_type const & pfCuts() const