207 histname =
"trackCompatibleLayers_";
253 histname =
"GlobalMuonPtEtaPhi_LowPt_";
257 histname =
"StandaloneMuonPtEtaPhi_LowPt_";
262 histname =
"GlobalMuonPtEtaPhi_HighPt_";
266 histname =
"StandaloneMuonPtEtaPhi_HighPt_";
293 if (!
muons.isValid())
296 if ((*muon).pt() < 5)
298 if (fabs((*muon).eta()) > 2.4)
300 if ((*muon).vertexNormalizedChi2() > 10)
302 if ((*muon).isStandAloneMuon() and (*muon).isGlobalMuon()) {
303 if ((*muon).pt() < 20)
308 if ((*muon).isStandAloneMuon()) {
309 if ((*muon).pt() < 20)
321 double mudd0 = 0., mudphi = 0., muddsz = 0., mudeta = 0.;
324 for (
unsigned int bindex = 0; bindex <
staTracks->size(); ++bindex) {
326 mudd0 += (*staTracks)[bindex].d0();
327 mudphi += (*staTracks)[bindex].phi();
328 muddsz += (*staTracks)[bindex].dsz();
329 mudeta += (*staTracks)[bindex].eta();
332 mudd0 -= (*staTracks)[bindex].d0();
333 mudphi -= (*staTracks)[bindex].phi();
334 muddsz -= (*staTracks)[bindex].dsz();
335 mudeta -= (*staTracks)[bindex].eta();
338 if ((fabs(mudd0) < 15.0) && (fabs(mudphi) < 0.045) && (fabs(muddsz) < 20.0) && (fabs(mudeta) < 0.060))
350 if ((tkTracks->front()).
normalizedChi2() < 5 && (tkTracks->front()).hitPattern().numberOfValidHits() > 8)
390 double d0 = (*staTracks)[idxUpMuon].d0();
398 bool isInTrackerAcceptance =
false;
415 if (!tkTracks->empty()) {
420 reco::TrackCollection::const_iterator closestTrk = tkTracks->end();
422 for (reco::TrackCollection::const_iterator tkTrack = tkTracks->begin(); tkTrack != tkTracks->end(); ++tkTrack) {
431 double DR2 = diffLocal.
x() * diffLocal.
x() + diffLocal.
y() * diffLocal.
y();
434 closestTrk = tkTrack;
436 if (
pow(DR2, 0.5) < 100.)
441 if (DR2min != 1000) {
488 double d0 = (*tkTracks)[0].d0();
501 reco::TrackCollection::const_iterator closestTrk =
staTracks->end();
503 for (reco::TrackCollection::const_iterator staTrack =
staTracks->begin(); staTrack !=
staTracks->end();
514 double DR2 = diffLocal.
x() * diffLocal.
x() + diffLocal.
y() * diffLocal.
y();
517 closestTrk = staTrack;
519 if (
pow(DR2, 0.5) < 100.)
593 delete theTmpPropagator;
609 for (
unsigned int k = 0;
k < barrelTOBLayers.size();
k++) {
610 const DetLayer* firstLay = barrelTOBLayers[barrelTOBLayers.size() - 1 -
k];
622 bool isUpMuon =
false;
623 bool firstdtep =
true;
637 std::vector<const DetLayer*> firstCompatibleLayers;
638 firstCompatibleLayers.push_back(firstLay);
639 std::pair<TrajectoryStateOnSurface, const DetLayer*> nextLayer =
645 std::pair<TrajectoryStateOnSurface, const DetLayer*> nextLayer =
647 if (firstLay != nextLayer.second) {
648 firstLay = nextLayer.second;
649 startTSOS = nextLayer.first;
659 delete theTmpPropagator;
662 delete theTmpPropagator;
677 std::vector<const DetLayer*>::const_iterator itl;
688 std::pair<TrajectoryStateOnSurface, const DetLayer*> blabla;
689 blabla.first = sTSOS;
690 blabla.second = &**itl;
691 delete theTmpPropagator;
virtual const BoundSurface & surface() const =0
The surface of the GeometricSearchDet.
virtual void setPropagationDirection(PropagationDirection dir)
T getParameter(std::string const &) const
std::pair< TrajectoryStateOnSurface, const DetLayer * > findNextLayer(TrajectoryStateOnSurface startTSOS, const std::vector< const DetLayer *> &trackCompatibleLayers, bool isUpMuon)
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
const LocalTrajectoryError & localError() const
const MagneticField * bField
LocalPoint localPosition() const
virtual void setCurrentFolder(std::string const &fullpath)
const std::string metname
Geom::Phi< T > phi() const
virtual Propagator * clone() const =0
~TrackEfficiencyMonitor() override
const edm::ESGetToken< NavigationSchool, NavigationSchoolRecord > navToken_
MonitorElement * GlobalMuonPtEtaPhiHighPt
LocalError positionError() const
const SurfaceType & surface() const
void testTrackerTracks(edm::Handle< TrackCollection > tkTracks, edm::Handle< TrackCollection > staTracks, const NavigationSchool &navigationSchool)
MonitorElement * GlobalMuonPtEtaPhiLowPt
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
const GeometricSearchTracker * geometricSearchTracker() const
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
const edm::ESGetToken< TransientTrackBuilder, TransientTrackRecord > ttbToken_
const edm::ESGetToken< GeometricSearchTracker, TrackerRecoGeometryRecord > gstToken_
reco::TransientTrack build(const reco::Track *p) const
edm::EDGetTokenT< edm::View< reco::Muon > > muonToken_
const edm::ESGetToken< MeasurementTracker, CkfComponentsRecord > mtToken_
MonitorElement * muonCompatibleLayers
GlobalPoint globalPosition() const
TrajectoryStateOnSurface outermostMeasurementState() const
const GeometricSearchTracker * theTracker
MonitorElement * StandaloneMuonPtEtaPhiLowPt
std::vector< const DetLayer * > nextLayers(const DetLayer &detLayer, Args &&... args) const
MonitorElement * trackEta
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
#define DEFINE_FWK_MODULE(type)
const TransientTrackBuilder * theTTrackBuilder
TrajectoryStateOnSurface innermostMeasurementState() const
edm::InputTag theSTATracksLabel_
bool isGoodMuon(const reco::Muon &muon, SelectionType type, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
main GoodMuon wrapper call
edm::EDGetTokenT< reco::TrackCollection > theTKTracksToken_
static constexpr float d0
MonitorElement * signDeltaX
static CylinderPointer build(const PositionType &pos, const RotationType &rot, Scalar radius, Bounds *bounds=nullptr)
edm::InputTag theTKTracksLabel_
GlobalVector globalDirection() const
MonitorElement * StandaloneMuonPtEtaPhiHighPt
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
const Propagator * thePropagator
const DirectTrackerNavigation * theNavigation
void analyze(const edm::Event &, const edm::EventSetup &) override
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
bool trackerAcceptance(TrajectoryStateOnSurface theTSOS, double theRadius, double theMaxZ)
std::vector< BarrelDetLayer const * > const & tobLayers() const
int compatibleLayers(const NavigationSchool &navigationSchool, TrajectoryStateOnSurface theTSOS)
FreeTrajectoryState const * freeState(bool withErrors=true) const
MonitorElement * signDeltaY
TrackEfficiencyMonitor(const edm::ParameterSet &)
const MeasurementTracker * measurementTracker
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > mfToken_
MonitorElement * trackPhi
SemiCylinder checkSemiCylinder(const Track &)
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
MonitorElement * trackCompatibleLayers
const math::XYZPoint & innerPosition() const
position of the innermost hit
const edm::ESGetToken< Propagator, TrackingComponentsRecord > propToken_
TrajectoryStateOnSurface impactPointState() const
void testSTATracks(edm::Handle< TrackCollection > tkTracks, edm::Handle< TrackCollection > staTracks)
edm::EDGetTokenT< reco::TrackCollection > theSTATracksToken_
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)