3232#include " CommonTools/UtilAlgos/interface/TFileService.h"
3333#include " DataFormats/BeamSpot/interface/BeamSpot.h"
3434#include " DataFormats/Common/interface/Association.h"
35+ #include " DataFormats/Common/interface/RefToBase.h"
3536#include " DataFormats/Common/interface/ValueMap.h"
3637#include " DataFormats/TrackReco/interface/Track.h"
3738#include " DataFormats/TrackReco/interface/TrackFwd.h"
3839#include " DataFormats/VertexReco/interface/Vertex.h"
3940#include " DataFormats/VertexReco/interface/VertexFwd.h"
40- #include " FWCore/ServiceRegistry/interface/Service.h"
4141#include " FWCore/Framework/interface/Event.h"
4242#include " FWCore/Framework/interface/Frameworkfwd.h"
4343#include " FWCore/Framework/interface/MakerMacros.h"
4444#include " FWCore/Framework/interface/one/EDAnalyzer.h"
4545#include " FWCore/ParameterSet/interface/ParameterSet.h"
46+ #include " FWCore/ServiceRegistry/interface/Service.h"
4647#include " FWCore/Utilities/interface/InputTag.h"
4748#include " FWCore/Utilities/interface/isFinite.h"
4849
@@ -123,6 +124,8 @@ class GeneralPurposeVertexAnalyzer : public edm::one::EDAnalyzer<edm::one::Share
123124 TProfile2D *IPVsEtaVsPhi_, *IPErrVsEtaVsPhi_;
124125
125126 void bookIPMonitor (const edm::ParameterSet &, const edm::Service<TFileService> fs);
127+ void fillIPMonitor (const edm::RefToBase<reco::Track> &tk, const math::XYZPoint &pv);
128+ void print ();
126129 };
127130
128131 const edm::ParameterSet conf_;
@@ -336,6 +339,48 @@ void GeneralPurposeVertexAnalyzer::IPMonitoring::bookIPMonitor(const edm::Parame
336339 fmt::format (" PV tracks (p_{{T}} > {} GeV) d_{{{}}} error (#mum)" , pTcut_, varname_).c_str ());
337340}
338341
342+ void GeneralPurposeVertexAnalyzer::IPMonitoring::fillIPMonitor (const edm::RefToBase<reco::Track> &tk,
343+ const math::XYZPoint &pv) {
344+ const float eta = tk->eta ();
345+ const float phi = tk->phi ();
346+ const float pt = tk->pt ();
347+
348+ const float Dxy = tk->dxy (pv) * cmToUm;
349+ const float DxyErr = tk->dxyError () * cmToUm;
350+
351+ const float Dz = tk->dz (pv) * cmToUm;
352+ const float DzErr = tk->dzError () * cmToUm;
353+
354+ if (varname_ == " xy" ) {
355+ IP_->Fill (Dxy);
356+ IPVsPhi_->Fill (phi, Dxy);
357+ IPVsEta_->Fill (eta, Dxy);
358+ IPVsPt_->Fill (pt, Dxy);
359+ IPVsEtaVsPhi_->Fill (eta, phi, Dxy);
360+
361+ IPErr_->Fill (DxyErr);
362+ IPPull_->Fill (Dxy / DxyErr);
363+ IPErrVsPhi_->Fill (phi, DxyErr);
364+ IPErrVsEta_->Fill (eta, DxyErr);
365+ IPErrVsPt_->Fill (pt, DxyErr);
366+ IPErrVsEtaVsPhi_->Fill (eta, phi, DxyErr);
367+ } else if (varname_ == " z" ) {
368+ IP_->Fill (Dz);
369+ IPVsPhi_->Fill (phi, Dz);
370+ IPVsEta_->Fill (eta, Dz);
371+ IPVsPt_->Fill (pt, Dz);
372+ IPVsEtaVsPhi_->Fill (eta, phi, Dz);
373+
374+ IPErr_->Fill (DzErr);
375+ IPPull_->Fill (Dz / DzErr);
376+ IPErrVsPhi_->Fill (phi, DzErr);
377+ IPErrVsEta_->Fill (eta, DzErr);
378+ IPErrVsPt_->Fill (pt, DzErr);
379+ IPErrVsEtaVsPhi_->Fill (eta, phi, DzErr);
380+ }
381+ return ;
382+ }
383+
339384//
340385// constructors and destructor
341386//
@@ -510,9 +555,6 @@ void GeneralPurposeVertexAnalyzer::pvTracksPlots(const reco::Vertex &v) {
510555 const float chi2NDF = t->normalizedChi2 ();
511556 const float chi2Prob = TMath::Prob (t->chi2 (), static_cast <int >(t->ndof ()));
512557 const float Dxy = t->dxy (myVertex) * cmToUm;
513- const float Dz = t->dz (myVertex) * cmToUm;
514- const float DxyErr = t->dxyError () * cmToUm;
515- const float DzErr = t->dzError () * cmToUm;
516558
517559 sumPT += pt2;
518560
@@ -524,60 +566,20 @@ void GeneralPurposeVertexAnalyzer::pvTracksPlots(const reco::Vertex &v) {
524566 eta_pt1->Fill (eta);
525567
526568 // dxy pT>1
527-
528- dxy_pt1.IP_ ->Fill (Dxy);
529- dxy_pt1.IPVsPhi_ ->Fill (phi, Dxy);
530- dxy_pt1.IPVsEta_ ->Fill (eta, Dxy);
531- dxy_pt1.IPVsEtaVsPhi_ ->Fill (eta, phi, Dxy);
532-
533- dxy_pt1.IPErr_ ->Fill (DxyErr);
534- dxy_pt1.IPPull_ ->Fill (Dxy / DxyErr);
535- dxy_pt1.IPErrVsPhi_ ->Fill (phi, DxyErr);
536- dxy_pt1.IPErrVsEta_ ->Fill (eta, DxyErr);
537- dxy_pt1.IPErrVsEtaVsPhi_ ->Fill (eta, phi, DxyErr);
569+ dxy_pt1.fillIPMonitor (t, myVertex);
538570
539571 // dz pT>1
540-
541- dz_pt1.IP_ ->Fill (Dz);
542- dz_pt1.IPVsPhi_ ->Fill (phi, Dz);
543- dz_pt1.IPVsEta_ ->Fill (eta, Dz);
544- dz_pt1.IPVsEtaVsPhi_ ->Fill (eta, phi, Dz);
545-
546- dz_pt1.IPErr_ ->Fill (DzErr);
547- dz_pt1.IPPull_ ->Fill (Dz / DzErr);
548- dz_pt1.IPErrVsPhi_ ->Fill (phi, DzErr);
549- dz_pt1.IPErrVsEta_ ->Fill (eta, DzErr);
550- dz_pt1.IPErrVsEtaVsPhi_ ->Fill (eta, phi, DzErr);
572+ dz_pt1.fillIPMonitor (t, myVertex);
551573
552574 if (pt >= 10 .f ) {
553575 phi_pt10->Fill (phi);
554576 eta_pt10->Fill (eta);
555577
556578 // dxy pT>10
557-
558- dxy_pt10.IP_ ->Fill (Dxy);
559- dxy_pt10.IPVsPhi_ ->Fill (phi, Dxy);
560- dxy_pt10.IPVsEta_ ->Fill (eta, Dxy);
561- dxy_pt10.IPVsEtaVsPhi_ ->Fill (eta, phi, Dxy);
562-
563- dxy_pt10.IPErr_ ->Fill (DxyErr);
564- dxy_pt10.IPPull_ ->Fill (Dxy / DxyErr);
565- dxy_pt10.IPErrVsPhi_ ->Fill (phi, DxyErr);
566- dxy_pt10.IPErrVsEta_ ->Fill (eta, DxyErr);
567- dxy_pt10.IPErrVsEtaVsPhi_ ->Fill (eta, phi, DxyErr);
579+ dxy_pt10.fillIPMonitor (t, myVertex);
568580
569581 // dz pT>10
570-
571- dz_pt10.IP_ ->Fill (Dz);
572- dz_pt10.IPVsPhi_ ->Fill (phi, Dz);
573- dz_pt10.IPVsEta_ ->Fill (eta, Dz);
574- dz_pt10.IPVsEtaVsPhi_ ->Fill (eta, phi, Dz);
575-
576- dz_pt10.IPErr_ ->Fill (DzErr);
577- dz_pt10.IPPull_ ->Fill (Dz / DzErr);
578- dz_pt10.IPErrVsPhi_ ->Fill (phi, DzErr);
579- dz_pt10.IPErrVsEta_ ->Fill (eta, DzErr);
580- dz_pt10.IPErrVsEtaVsPhi_ ->Fill (eta, phi, DzErr);
582+ dz_pt10.fillIPMonitor (t, myVertex);
581583 }
582584 }
583585
0 commit comments