|
|
Go to the documentation of this file.
210 histname =
"trackCompatibleLayers_";
256 histname =
"GlobalMuonPtEtaPhi_LowPt_";
260 histname =
"StandaloneMuonPtEtaPhi_LowPt_";
265 histname =
"GlobalMuonPtEtaPhi_HighPt_";
269 histname =
"StandaloneMuonPtEtaPhi_HighPt_";
300 if (!
muons.isValid())
303 if ((*muon).pt() < 5)
305 if (fabs((*muon).eta()) > 2.4)
307 if ((*muon).vertexNormalizedChi2() > 10)
309 if ((*muon).isStandAloneMuon() and (*muon).isGlobalMuon()) {
310 if ((*muon).pt() < 20)
315 if ((*muon).isStandAloneMuon()) {
316 if ((*muon).pt() < 20)
328 double mudd0 = 0., mudphi = 0., muddsz = 0., mudeta = 0.;
331 for (
unsigned int bindex = 0; bindex <
staTracks->size(); ++bindex) {
333 mudd0 += (*staTracks)[bindex].d0();
334 mudphi += (*staTracks)[bindex].phi();
335 muddsz += (*staTracks)[bindex].dsz();
336 mudeta += (*staTracks)[bindex].eta();
339 mudd0 -= (*staTracks)[bindex].d0();
340 mudphi -= (*staTracks)[bindex].phi();
341 muddsz -= (*staTracks)[bindex].dsz();
342 mudeta -= (*staTracks)[bindex].eta();
345 if ((fabs(mudd0) < 15.0) && (fabs(mudphi) < 0.045) && (fabs(muddsz) < 20.0) && (fabs(mudeta) < 0.060))
357 if ((tkTracks->front()).
normalizedChi2() < 5 && (tkTracks->front()).hitPattern().numberOfValidHits() > 8)
397 double d0 = (*staTracks)[idxUpMuon].d0();
405 bool isInTrackerAcceptance =
false;
422 if (!tkTracks->empty()) {
427 reco::TrackCollection::const_iterator closestTrk = tkTracks->end();
429 for (reco::TrackCollection::const_iterator tkTrack = tkTracks->begin(); tkTrack != tkTracks->end(); ++tkTrack) {
438 double DR2 = diffLocal.
x() * diffLocal.
x() + diffLocal.
y() * diffLocal.
y();
441 closestTrk = tkTrack;
443 if (
pow(DR2, 0.5) < 100.)
448 if (DR2min != 1000) {
495 double d0 = (*tkTracks)[0].d0();
508 reco::TrackCollection::const_iterator closestTrk =
staTracks->end();
510 for (reco::TrackCollection::const_iterator staTrack =
staTracks->begin(); staTrack !=
staTracks->end();
521 double DR2 = diffLocal.
x() * diffLocal.
x() + diffLocal.
y() * diffLocal.
y();
524 closestTrk = staTrack;
526 if (
pow(DR2, 0.5) < 100.)
600 delete theTmpPropagator;
616 for (
unsigned int k = 0;
k < barrelTOBLayers.size();
k++) {
617 const DetLayer* firstLay = barrelTOBLayers[barrelTOBLayers.size() - 1 -
k];
629 bool isUpMuon =
false;
630 bool firstdtep =
true;
644 std::vector<const DetLayer*> firstCompatibleLayers;
645 firstCompatibleLayers.push_back(firstLay);
646 std::pair<TrajectoryStateOnSurface, const DetLayer*> nextLayer =
652 std::pair<TrajectoryStateOnSurface, const DetLayer*> nextLayer =
654 if (firstLay != nextLayer.second) {
655 firstLay = nextLayer.second;
656 startTSOS = nextLayer.first;
666 delete theTmpPropagator;
669 delete theTmpPropagator;
684 std::vector<const DetLayer*>::const_iterator itl;
695 std::pair<TrajectoryStateOnSurface, const DetLayer*> blabla;
696 blabla.first = sTSOS;
697 blabla.second = &**itl;
698 delete theTmpPropagator;
GlobalVector globalDirection() const
T const * product() const
MonitorElement * trackPhi
MonitorElement * GlobalMuonPtEtaPhiLowPt
int compatibleLayers(const NavigationSchool &navigationSchool, TrajectoryStateOnSurface theTSOS)
std::vector< BarrelDetLayer const * > const & tobLayers() const
edm::EDGetTokenT< reco::TrackCollection > theTKTracksToken_
LocalError positionError() const
edm::EDGetTokenT< reco::TrackCollection > theSTATracksToken_
SemiCylinder checkSemiCylinder(const Track &)
GlobalPoint globalPosition() const
virtual void setCurrentFolder(std::string const &fullpath)
const GeometricSearchTracker * geometricSearchTracker() const
void analyze(const edm::Event &, const edm::EventSetup &) override
edm::ESHandle< GeometricSearchTracker > theTracker
~TrackEfficiencyMonitor() override
MonitorElement * signDeltaY
edm::ESHandle< MagneticField > bField
TrackEfficiencyMonitor(const edm::ParameterSet &)
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
bool isGoodMuon(const reco::Muon &muon, SelectionType type, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
main GoodMuon wrapper call
std::vector< const DetLayer * > nextLayers(const DetLayer &detLayer, Args &&... args) const
FreeTrajectoryState const * freeState(bool withErrors=true) const
#define DEFINE_FWK_MODULE(type)
void testTrackerTracks(edm::Handle< TrackCollection > tkTracks, edm::Handle< TrackCollection > staTracks, const NavigationSchool &navigationSchool)
MonitorElement * signDeltaX
MonitorElement * StandaloneMuonPtEtaPhiHighPt
std::pair< TrajectoryStateOnSurface, const DetLayer * > findNextLayer(TrajectoryStateOnSurface startTSOS, const std::vector< const DetLayer * > &trackCompatibleLayers, bool isUpMuon)
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
virtual void setPropagationDirection(PropagationDirection dir)
edm::ESHandle< Propagator > thePropagator
void testSTATracks(edm::Handle< TrackCollection > tkTracks, edm::Handle< TrackCollection > staTracks)
edm::EDGetTokenT< edm::View< reco::Muon > > muonToken_
LocalPoint localPosition() const
TrajectoryStateOnSurface impactPointState() const
edm::InputTag theSTATracksLabel_
static CylinderPointer build(const PositionType &pos, const RotationType &rot, Scalar radius, Bounds *bounds=nullptr)
const math::XYZPoint & innerPosition() const
position of the innermost hit
TrajectoryStateOnSurface outermostMeasurementState() const
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
MonitorElement * trackEta
MonitorElement * StandaloneMuonPtEtaPhiLowPt
edm::ESHandle< TransientTrackBuilder > theTTrackBuilder
edm::ESHandle< MeasurementTracker > measurementTrackerHandle
MonitorElement * muonCompatibleLayers
virtual Propagator * clone() const =0
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
edm::InputTag theTKTracksLabel_
virtual const BoundSurface & surface() const =0
The surface of the GeometricSearchDet.
T getParameter(std::string const &) const
const SurfaceType & surface() const
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
reco::TransientTrack build(const reco::Track *p) const
Power< A, B >::type pow(const A &a, const B &b)
MonitorElement * GlobalMuonPtEtaPhiHighPt
const DirectTrackerNavigation * theNavigation
const LocalTrajectoryError & localError() const
static constexpr float d0
MonitorElement * trackCompatibleLayers
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
Geom::Phi< T > phi() const
bool trackerAcceptance(TrajectoryStateOnSurface theTSOS, double theRadius, double theMaxZ)
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
const std::string metname
TrajectoryStateOnSurface innermostMeasurementState() const