@@ -91,6 +91,7 @@ class HLTObjectMonitor : public DQMEDAnalyzer {
9191 void dqmBeginRun (edm::Run const &, edm::EventSetup const &) override ;
9292 vector<hltPlot*> plotList;
9393 double dxyFinder (double , double , edm::Handle<reco::RecoChargedCandidateCollection>, edm::Handle<reco::BeamSpot>);
94+ double dzFinder (double , double , edm::Handle<reco::RecoChargedCandidateCollection>, edm::Handle<reco::BeamSpot>);
9495 double get_wall_time (void );
9596 // ----------member data ---------------------------
9697
@@ -153,6 +154,7 @@ class HLTObjectMonitor : public DQMEDAnalyzer {
153154 edm::ParameterSet pAL3DoubleMuZMass_pset;
154155 edm::ParameterSet diElecMass_pset;
155156 edm::ParameterSet muonDxy_pset;
157+ edm::ParameterSet muonDz_pset;
156158 edm::ParameterSet wallTime_pset;
157159
158160 string processName_;
@@ -196,6 +198,7 @@ class HLTObjectMonitor : public DQMEDAnalyzer {
196198 hltPlot pAL3DoubleMuZMass_;
197199 hltPlot diElecMass_;
198200 hltPlot muonDxy_;
201+ hltPlot muonDz_;
199202 hltPlot wallTime_;
200203};
201204
@@ -297,6 +300,8 @@ HLTObjectMonitor::HLTObjectMonitor(const edm::ParameterSet& iConfig)
297300 plotMap[&diElecMass_] = &diElecMass_pset;
298301 muonDxy_pset = iConfig.getParameter <edm::ParameterSet>(" muonDxy" );
299302 plotMap[&muonDxy_] = &muonDxy_pset;
303+ muonDz_pset = iConfig.getParameter <edm::ParameterSet>(" muonDz" );
304+ plotMap[&muonDz_] = &muonDz_pset;
300305 jetAK8Pt_pset = iConfig.getParameter <edm::ParameterSet>(" jetAK8Pt" );
301306 plotMap[&jetAK8Pt_] = &jetAK8Pt_pset;
302307 tauPt_pset = iConfig.getParameter <edm::ParameterSet>(" tauPt" );
@@ -560,13 +565,19 @@ void HLTObjectMonitor::analyze(const edm::Event& iEvent, const edm::EventSetup&
560565 iEvent.getByToken (chargedCandToken_, recoChargedCands);
561566 edm::Handle<reco::BeamSpot> recoBeamSpot;
562567 iEvent.getByToken (beamSpotToken_, recoBeamSpot);
563- double muon_dxy;
568+ double muon_dxy, muon_dz ;
564569
565570 if (recoChargedCands.isValid () && recoBeamSpot.isValid ()) {
566571 for (const auto & key : keys) {
567572 muon_dxy = dxyFinder (objects[key].eta (), objects[key].phi (), recoChargedCands, recoBeamSpot);
568- if (muon_dxy != -99 .)
573+ if (muon_dxy != -99 .) {
569574 muonDxy_.ME ->Fill (muon_dxy);
575+ }
576+
577+ muon_dz = dzFinder (objects[key].eta (), objects[key].phi (), recoChargedCands, recoBeamSpot);
578+ if (muon_dz != -99 .) {
579+ muonDz_.ME ->Fill (muon_dz);
580+ }
570581 }
571582 }
572583 }
@@ -826,6 +837,24 @@ double HLTObjectMonitor::dxyFinder(double eta,
826837 return dxy;
827838}
828839
840+ double HLTObjectMonitor::dzFinder (double eta,
841+ double phi,
842+ edm::Handle<reco::RecoChargedCandidateCollection> recoChargedCands,
843+ edm::Handle<reco::BeamSpot> recoBeamSpot) {
844+ double dz = -99 .;
845+ for (reco::RecoChargedCandidateCollection::const_iterator l3Muon = recoChargedCands->begin ();
846+ l3Muon != recoChargedCands->end ();
847+ l3Muon++) {
848+ if (deltaR (eta, phi, l3Muon->eta (), l3Muon->phi ()) < 0.1 ) {
849+ dz = (l3Muon->vz () - recoBeamSpot->z0 ()) -
850+ ((l3Muon->vx () - recoBeamSpot->x0 ()) * l3Muon->px () + (l3Muon->vy () - recoBeamSpot->y0 ()) * l3Muon->py ()) /
851+ l3Muon->pt () * (l3Muon->pz () / l3Muon->pt ());
852+ break ;
853+ }
854+ }
855+ return dz;
856+ }
857+
829858double HLTObjectMonitor::get_wall_time () {
830859 struct timeval time;
831860 if (gettimeofday (&time, nullptr ))
0 commit comments