|
 |
#include <DQM/TrackingMonitor/src/TrackSplittingMonitor.cc>
Monitoring source for general quantities related to tracks.
Definition at line 41 of file TrackSplittingMonitor.h.
◆ TrackSplittingMonitor()
Definition at line 26 of file TrackSplittingMonitor.cc.
References conf_, d0Cut_, dzCut_, edm::ParameterSet::getParameter(), norchiCut_, pixelHitsPerLeg_, plotMuons_, ptCut_, splitMuons_, splitMuonsToken_, splitTracks_, splitTracksToken_, and totalHitsPerLeg_.
◆ ~TrackSplittingMonitor()
TrackSplittingMonitor::~TrackSplittingMonitor |
( |
| ) |
|
|
override |
◆ analyze()
Reimplemented from DQMEDAnalyzer.
Definition at line 178 of file TrackSplittingMonitor.cc.
194 if (splitTracks->size() == 2) {
196 edm::LogInfo(
"TrackSplittingMonitor") <<
"Split Track size: " << splitTracks->size();
206 double nRechits1 = 0;
207 double nRechitinBPIX1 = 0;
209 if ((*iHit)->isValid()) {
211 int type = (*iHit)->geographicalId().subdetId();
218 double nRechits2 = 0;
219 double nRechitinBPIX2 = 0;
221 if ((*iHit)->isValid()) {
223 int type = (*iHit)->geographicalId().subdetId();
231 double d01 = track1.
d0();
232 double dz1 = track1.
dz();
233 double d02 = track2.
d0();
234 double dz2 = track2.
dz();
237 double pt1 = track1.
pt();
238 double pt2 = track2.
pt();
255 edm::LogInfo(
"TrackSplittingMonitor") <<
" Setected after all cuts ?";
257 double ddxyVal = d01 - d02;
258 double ddzVal = dz1 - dz2;
259 double dphiVal = track1.
phi() - track2.
phi();
260 double dthetaVal = track1.
theta() - track2.
theta();
261 double dptVal =
pt1 -
pt2;
262 double dcurvVal = (1 /
pt1) - (1 /
pt2);
264 double d01ErrVal = track1.
d0Error();
265 double d02ErrVal = track2.
d0Error();
266 double dz1ErrVal = track1.
dzError();
267 double dz2ErrVal = track2.
dzError();
268 double phi1ErrVal = track1.
phiError();
269 double phi2ErrVal = track2.
phiError();
272 double pt1ErrVal = track1.
ptError();
273 double pt2ErrVal = track2.
ptError();
286 sqrt(theta1ErrVal * theta1ErrVal + theta2ErrVal * theta2ErrVal));
294 bool topGlobalMuonFlag =
false;
295 bool bottomGlobalMuonFlag =
false;
296 int topGlobalMuon = -1;
297 int bottomGlobalMuon = -1;
298 double topGlobalMuonNorchi2 = 1e10;
299 double bottomGlobalMuonNorchi2 = 1e10;
302 for (std::vector<reco::Muon>::const_iterator gmI =
splitMuons->begin(); gmI !=
splitMuons->end(); gmI++) {
303 if (gmI->isTrackerMuon() && gmI->isStandAloneMuon() && gmI->isGlobalMuon()) {
307 if (gmI->innerTrack() == trackerTrackRef1) {
308 if (gmI->globalTrack()->normalizedChi2() < topGlobalMuonNorchi2) {
309 topGlobalMuonFlag =
true;
310 topGlobalMuonNorchi2 = gmI->globalTrack()->normalizedChi2();
311 topGlobalMuon = gmCtr;
314 if (gmI->innerTrack() == trackerTrackRef2) {
315 if (gmI->globalTrack()->normalizedChi2() < bottomGlobalMuonNorchi2) {
316 bottomGlobalMuonFlag =
true;
317 bottomGlobalMuonNorchi2 = gmI->globalTrack()->normalizedChi2();
318 bottomGlobalMuon = gmCtr;
325 if (bottomGlobalMuonFlag && topGlobalMuonFlag) {
332 double ddxyValGlb = glb1->d0() - glb2->d0();
333 double ddzValGlb = glb1->dz() - glb2->dz();
334 double dphiValGlb = glb1->phi() - glb2->phi();
335 double dthetaValGlb = glb1->theta() - glb2->theta();
336 double dptValGlb = glb1->pt() - glb2->pt();
337 double dcurvValGlb = (1 / glb1->pt()) - (1 / glb2->pt());
339 double d01ErrValGlb = glb1->d0Error();
340 double d02ErrValGlb = glb2->d0Error();
341 double dz1ErrValGlb = glb1->dzError();
342 double dz2ErrValGlb = glb2->dzError();
343 double phi1ErrValGlb = glb1->phiError();
344 double phi2ErrValGlb = glb2->phiError();
345 double theta1ErrValGlb = glb1->thetaError();
346 double theta2ErrValGlb = glb2->thetaError();
347 double pt1ErrValGlb = glb1->ptError();
348 double pt2ErrValGlb = glb2->ptError();
358 sqrt(d01ErrValGlb * d01ErrValGlb + d02ErrValGlb * d02ErrValGlb));
360 sqrt(dz1ErrValGlb * dz1ErrValGlb + dz2ErrValGlb * dz2ErrValGlb));
362 dphiValGlb /
sqrt(phi1ErrValGlb * phi1ErrValGlb + phi2ErrValGlb * phi2ErrValGlb));
364 dthetaValGlb /
sqrt(theta1ErrValGlb * theta1ErrValGlb + theta2ErrValGlb * theta2ErrValGlb));
366 sqrt(pt1ErrValGlb * pt1ErrValGlb + pt2ErrValGlb * pt2ErrValGlb));
References cscGeometry, cscGeomToken_, reco::TrackBase::d0(), d0Cut_, reco::TrackBase::d0Error(), ddxyAbsoluteResiduals_global_, ddxyAbsoluteResiduals_tracker_, ddxyNormalizedResiduals_global_, ddxyNormalizedResiduals_tracker_, dtGeometry, dtGeomToken_, reco::TrackBase::dz(), dzCut_, reco::TrackBase::dzError(), dqm::impl::MonitorElement::Fill(), edm::EventSetup::getData(), reco::Muon::globalTrack(), iEvent, edm::HandleBase::isValid(), mfToken_, norchiCut_, reco::TrackBase::normalizedChi2(), reco::TrackBase::phi(), reco::TrackBase::phiError(), PixelSubdetector::PixelBarrel, pixelHitsPerLeg_, plotMuons_, funct::pow(), reco::TrackBase::pt(), HLT_FULL_cff::pt1, HLT_FULL_cff::pt2, ptCut_, reco::TrackBase::ptError(), reco::Track::recHitsBegin(), reco::Track::recHitsEnd(), rpcGeometry, rpcGeomToken_, RecoMuonCosmics_cff::splitMuons, splitMuonsToken_, splitTracksToken_, mathSSE::sqrt(), theGeometry, theMagField, reco::TrackBase::theta(), reco::TrackBase::thetaError(), tkGeomToken_, and totalHitsPerLeg_.
◆ bookHistograms()
Implements DQMEDAnalyzer.
Definition at line 52 of file TrackSplittingMonitor.cc.
110 "dthetaNormalizedResiduals_tracker",
"dthetaNormalizedResiduals_tracker",
normBin,
normMin,
normMax);
References dqm::implementation::IBooker::book1D(), conf_, dcurvAbsoluteResiduals_global_, dcurvAbsoluteResiduals_tracker_, TrackSplittingMonitor_cfi::dcurvBin, TrackSplittingMonitor_cfi::dcurvMax, TrackSplittingMonitor_cfi::dcurvMin, dcurvNormalizedResiduals_global_, dcurvNormalizedResiduals_tracker_, ddxyAbsoluteResiduals_global_, ddxyAbsoluteResiduals_tracker_, TrackSplittingMonitor_cfi::ddxyBin, TrackSplittingMonitor_cfi::ddxyMax, TrackSplittingMonitor_cfi::ddxyMin, ddxyNormalizedResiduals_global_, ddxyNormalizedResiduals_tracker_, ddzAbsoluteResiduals_global_, ddzAbsoluteResiduals_tracker_, TrackSplittingMonitor_cfi::ddzBin, TrackSplittingMonitor_cfi::ddzMax, TrackSplittingMonitor_cfi::ddzMin, ddzNormalizedResiduals_global_, ddzNormalizedResiduals_tracker_, dphiAbsoluteResiduals_global_, dphiAbsoluteResiduals_tracker_, TrackSplittingMonitor_cfi::dphiBin, TrackSplittingMonitor_cfi::dphiMax, TrackSplittingMonitor_cfi::dphiMin, dphiNormalizedResiduals_global_, dphiNormalizedResiduals_tracker_, dptAbsoluteResiduals_global_, dptAbsoluteResiduals_tracker_, TrackSplittingMonitor_cfi::dptBin, TrackSplittingMonitor_cfi::dptMax, TrackSplittingMonitor_cfi::dptMin, dptNormalizedResiduals_global_, dptNormalizedResiduals_tracker_, dthetaAbsoluteResiduals_global_, dthetaAbsoluteResiduals_tracker_, TrackSplittingMonitor_cfi::dthetaBin, TrackSplittingMonitor_cfi::dthetaMax, TrackSplittingMonitor_cfi::dthetaMin, dthetaNormalizedResiduals_global_, dthetaNormalizedResiduals_tracker_, edm::ParameterSet::getParameter(), TrackSplittingMonitor_cfi::normBin, TrackSplittingMonitor_cfi::normMax, TrackSplittingMonitor_cfi::normMin, plotMuons_, dqm::impl::MonitorElement::setAxisTitle(), dqm::implementation::NavigatorBase::setCurrentFolder(), and AlCaHLTBitMon_QueryRunRegistry::string.
◆ doProfileX() [1/2]
◆ doProfileX() [2/2]
void TrackSplittingMonitor::doProfileX |
( |
TH2 * |
th2, |
|
|
MonitorElement * |
me |
|
) |
| |
|
private |
◆ conf_
◆ cscGeometry
◆ cscGeomToken_
◆ d0Cut_
double TrackSplittingMonitor::d0Cut_ |
|
private |
◆ dcurvAbsoluteResiduals_global_
◆ dcurvAbsoluteResiduals_tracker_
MonitorElement* TrackSplittingMonitor::dcurvAbsoluteResiduals_tracker_ |
|
private |
◆ dcurvNormalizedResiduals_global_
MonitorElement* TrackSplittingMonitor::dcurvNormalizedResiduals_global_ |
|
private |
◆ dcurvNormalizedResiduals_tracker_
MonitorElement* TrackSplittingMonitor::dcurvNormalizedResiduals_tracker_ |
|
private |
◆ ddxyAbsoluteResiduals_global_
◆ ddxyAbsoluteResiduals_tracker_
◆ ddxyNormalizedResiduals_global_
MonitorElement* TrackSplittingMonitor::ddxyNormalizedResiduals_global_ |
|
private |
◆ ddxyNormalizedResiduals_tracker_
MonitorElement* TrackSplittingMonitor::ddxyNormalizedResiduals_tracker_ |
|
private |
◆ ddzAbsoluteResiduals_global_
◆ ddzAbsoluteResiduals_tracker_
◆ ddzNormalizedResiduals_global_
◆ ddzNormalizedResiduals_tracker_
MonitorElement* TrackSplittingMonitor::ddzNormalizedResiduals_tracker_ |
|
private |
◆ dphiAbsoluteResiduals_global_
◆ dphiAbsoluteResiduals_tracker_
◆ dphiNormalizedResiduals_global_
MonitorElement* TrackSplittingMonitor::dphiNormalizedResiduals_global_ |
|
private |
◆ dphiNormalizedResiduals_tracker_
MonitorElement* TrackSplittingMonitor::dphiNormalizedResiduals_tracker_ |
|
private |
◆ dptAbsoluteResiduals_global_
◆ dptAbsoluteResiduals_tracker_
◆ dptNormalizedResiduals_global_
◆ dptNormalizedResiduals_tracker_
MonitorElement* TrackSplittingMonitor::dptNormalizedResiduals_tracker_ |
|
private |
◆ dqmStore_
DQMStore* TrackSplittingMonitor::dqmStore_ |
|
private |
◆ dtGeometry
const DTGeometry* TrackSplittingMonitor::dtGeometry |
|
private |
◆ dtGeomToken_
◆ dthetaAbsoluteResiduals_global_
MonitorElement* TrackSplittingMonitor::dthetaAbsoluteResiduals_global_ |
|
private |
◆ dthetaAbsoluteResiduals_tracker_
MonitorElement* TrackSplittingMonitor::dthetaAbsoluteResiduals_tracker_ |
|
private |
◆ dthetaNormalizedResiduals_global_
MonitorElement* TrackSplittingMonitor::dthetaNormalizedResiduals_global_ |
|
private |
◆ dthetaNormalizedResiduals_tracker_
MonitorElement* TrackSplittingMonitor::dthetaNormalizedResiduals_tracker_ |
|
private |
◆ dzCut_
double TrackSplittingMonitor::dzCut_ |
|
private |
◆ histname
std::string TrackSplittingMonitor::histname |
|
private |
◆ mfToken_
◆ norchiCut_
double TrackSplittingMonitor::norchiCut_ |
|
private |
◆ pixelHitsPerLeg_
int TrackSplittingMonitor::pixelHitsPerLeg_ |
|
private |
◆ plotMuons_
bool TrackSplittingMonitor::plotMuons_ |
|
private |
◆ ptCut_
double TrackSplittingMonitor::ptCut_ |
|
private |
◆ rpcGeometry
◆ rpcGeomToken_
◆ splitMuons_
◆ splitMuonsToken_
◆ splitTracks_
◆ splitTracksToken_
◆ theGeometry
◆ theMagField
◆ tkGeomToken_
◆ totalHitsPerLeg_
int TrackSplittingMonitor::totalHitsPerLeg_ |
|
private |
const edm::ESGetToken< CSCGeometry, MuonGeometryRecord > cscGeomToken_
MonitorElement * dthetaNormalizedResiduals_global_
MonitorElement * dcurvAbsoluteResiduals_global_
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
MonitorElement * dphiAbsoluteResiduals_tracker_
trackingRecHit_iterator recHitsBegin() const
Iterator to first hit on the track.
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > mfToken_
MonitorElement * dptAbsoluteResiduals_tracker_
const edm::ESGetToken< DTGeometry, MuonGeometryRecord > dtGeomToken_
double thetaError() const
error on theta
virtual void setCurrentFolder(std::string const &fullpath)
MonitorElement * dphiNormalizedResiduals_global_
MonitorElement * ddzNormalizedResiduals_tracker_
Log< level::Info, false > LogInfo
MonitorElement * dptAbsoluteResiduals_global_
double pt() const
track transverse momentum
MonitorElement * dphiNormalizedResiduals_tracker_
const TrackerGeometry * theGeometry
MonitorElement * dcurvAbsoluteResiduals_tracker_
MonitorElement * ddxyAbsoluteResiduals_global_
edm::EDGetTokenT< std::vector< reco::Track > > splitTracksToken_
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.
MonitorElement * dptNormalizedResiduals_tracker_
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
MonitorElement * dthetaAbsoluteResiduals_global_
const MagneticField * theMagField
double phi() const
azimuthal angle of momentum vector
MonitorElement * ddzAbsoluteResiduals_global_
MonitorElement * ddxyAbsoluteResiduals_tracker_
const CSCGeometry * cscGeometry
virtual TrackRef globalTrack() const
reference to Track reconstructed in both tracked and muon detector
MonitorElement * dphiAbsoluteResiduals_global_
edm::EDGetTokenT< std::vector< reco::Muon > > splitMuonsToken_
double dzError() const
error on dz
const DTGeometry * dtGeometry
double d0() const
dxy parameter in perigee convention (d0 = -dxy)
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
MonitorElement * dcurvNormalizedResiduals_tracker_
bool getData(T &iHolder) const
MonitorElement * dthetaAbsoluteResiduals_tracker_
MonitorElement * ddzAbsoluteResiduals_tracker_
MonitorElement * ddzNormalizedResiduals_global_
MonitorElement * ddxyNormalizedResiduals_global_
double d0Error() const
error on d0
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > tkGeomToken_
const RPCGeometry * rpcGeometry
const edm::ESGetToken< RPCGeometry, MuonGeometryRecord > rpcGeomToken_
edm::InputTag splitMuons_
edm::InputTag splitTracks_
T getParameter(std::string const &) const
MonitorElement * dcurvNormalizedResiduals_global_
MonitorElement * dptNormalizedResiduals_global_
double phiError() const
error on phi
Power< A, B >::type pow(const A &a, const B &b)
double theta() const
polar angle
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
MonitorElement * ddxyNormalizedResiduals_tracker_
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
MonitorElement * dthetaNormalizedResiduals_tracker_