CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
MuonCosmicCompatibilityFiller Class Reference

#include <MuonCosmicCompatibilityFiller.h>

Public Member Functions

reco::MuonCosmicCompatibility fillCompatibility (const reco::Muon &muon, edm::Event &, const edm::EventSetup &)
 fill cosmic compatibility variables More...
 
 MuonCosmicCompatibilityFiller (const edm::ParameterSet &, edm::ConsumesCollector &)
 
 ~MuonCosmicCompatibilityFiller ()
 

Private Member Functions

unsigned int backToBack2LegCosmic (const edm::Event &, const reco::Muon &) const
 return cosmic-likeness based on presence of a track in opp side: 0 == no matching opp tracks More...
 
bool checkMuonID (const reco::Muon &) const
 tag a muon as cosmic based on the muonID information More...
 
bool checkMuonSegments (const reco::Muon &muon) const
 tag a muon as cosmic based on segment compatibility and the number of segment matches More...
 
float combinedCosmicID (const edm::Event &, const edm::EventSetup &iSetup, const reco::Muon &, bool CheckMuonID, bool checkVertex) const
 combined cosmic-likeness: 0 == not cosmic-like More...
 
unsigned int eventActivity (const edm::Event &, const reco::Muon &) const
 returns cosmic-likeness based on the event activity information: tracker track multiplicity and vertex quality. 0 == cosmic-like More...
 
bool isOverlappingMuon (const edm::Event &, const edm::EventSetup &iSetup, const reco::Muon &) const
 returns cosmic-likeness based on overlap with traversing cosmic muon (only muon/STA hits are used) More...
 
float muonTiming (const edm::Event &iEvent, const reco::Muon &muon, bool isLoose) const
 check muon time (DT and CSC) information: 0 == prompt-like More...
 
unsigned int nMuons (const edm::Event &) const
 get number of muons in the vent More...
 
unsigned int pvMatches (const edm::Event &, const reco::Muon &, bool) const
 return cosmic-likeness based on the 2D impact parameters (dxy, dz wrt to PV). 0 == cosmic-like More...
 

Private Attributes

double angleThreshold_
 
double corrTimeNeg_
 
double corrTimePos_
 
edm::EDGetTokenT< reco::MuonCollectioncosmicToken_
 
double deltaPt_
 
double hIpTrdxy_
 
double hIpTrvProb_
 
edm::InputTag inputCosmicMuonCollection_
 
std::vector< edm::InputTaginputMuonCollections_
 
std::vector< edm::InputTaginputTrackCollections_
 
edm::InputTag inputVertexCollection_
 
double ipThreshold_
 
double largedxy_
 
double largedxyMult_
 
double maxdxyLoose_
 
double maxdxyLooseMult_
 
double maxdxyTight_
 
double maxdxyTightMult_
 
double maxdzLoose_
 
double maxdzLooseMult_
 
double maxdzTight_
 
double maxdzTightMult_
 
double maxvertRho_
 
double maxvertZ_
 
double minvProb_
 
std::vector< edm::EDGetTokenT< reco::MuonCollection > > muonTokens_
 
int nChamberMatches_
 
unsigned int nTrackThreshold_
 
double offTimeNegLoose_
 
double offTimeNegLooseMult_
 
double offTimeNegTight_
 
double offTimeNegTightMult_
 
double offTimePosLoose_
 
double offTimePosLooseMult_
 
double offTimePosTight_
 
double offTimePosTightMult_
 
double segmentComp_
 
MuonServiceProxyservice_
 
double sharedFrac_
 
int sharedHits_
 
std::vector< edm::EDGetTokenT< reco::TrackCollection > > trackTokens_
 
edm::EDGetTokenT< reco::VertexCollectionvertexToken_
 

Detailed Description

Description: class for cosmic muon identification

Author
: A. Everett, Purdue University
: A. Svyatkovskiy, Purdue University
: H.D. Yoo, Purdue University

Definition at line 41 of file MuonCosmicCompatibilityFiller.h.

Constructor & Destructor Documentation

MuonCosmicCompatibilityFiller::MuonCosmicCompatibilityFiller ( const edm::ParameterSet iConfig,
edm::ConsumesCollector iC 
)

Definition at line 46 of file MuonCosmicCompatibilityFiller.cc.

References angleThreshold_, edm::ConsumesCollector::consumes(), corrTimeNeg_, corrTimePos_, cosmicToken_, deltaPt_, edm::ParameterSet::getParameter(), hIpTrdxy_, hIpTrvProb_, mps_fire::i, inputCosmicMuonCollection_, inputMuonCollections_, inputTrackCollections_, inputVertexCollection_, ipThreshold_, largedxy_, largedxyMult_, maxdxyLoose_, maxdxyLooseMult_, maxdxyTight_, maxdxyTightMult_, maxdzLoose_, maxdzLooseMult_, maxdzTight_, maxdzTightMult_, maxvertRho_, maxvertZ_, minvProb_, MuonServiceProxy_cff::MuonServiceProxy, muonTokens_, nChamberMatches_, offTimeNegLoose_, offTimeNegLooseMult_, offTimeNegTight_, offTimeNegTightMult_, offTimePosLoose_, offTimePosLooseMult_, offTimePosTight_, offTimePosTightMult_, segmentComp_, service_, sharedFrac_, sharedHits_, trackTokens_, and vertexToken_.

48  : inputMuonCollections_(iConfig.getParameter<std::vector<edm::InputTag> >("InputMuonCollections")),
49  inputTrackCollections_(iConfig.getParameter<std::vector<edm::InputTag> >("InputTrackCollections")),
50  inputCosmicMuonCollection_(iConfig.getParameter<edm::InputTag>("InputCosmicMuonCollection")),
51  inputVertexCollection_(iConfig.getParameter<edm::InputTag>("InputVertexCollection")),
52  service_(nullptr) {
53  // service parameters
54  edm::ParameterSet serviceParameters = iConfig.getParameter<edm::ParameterSet>("ServiceParameters");
55  service_ = new MuonServiceProxy(serviceParameters);
56 
57  //kinematic vars
58  angleThreshold_ = iConfig.getParameter<double>("angleCut");
59  deltaPt_ = iConfig.getParameter<double>("deltaPt");
60  //time
61  offTimePosTightMult_ = iConfig.getParameter<double>("offTimePosTightMult");
62  offTimeNegTightMult_ = iConfig.getParameter<double>("offTimeNegTightMult");
63  offTimePosTight_ = iConfig.getParameter<double>("offTimePosTight");
64  offTimeNegTight_ = iConfig.getParameter<double>("offTimeNegTight");
65  offTimePosLooseMult_ = iConfig.getParameter<double>("offTimePosLooseMult");
66  offTimeNegLooseMult_ = iConfig.getParameter<double>("offTimeNegLooseMult");
67  offTimePosLoose_ = iConfig.getParameter<double>("offTimePosLoose");
68  offTimeNegLoose_ = iConfig.getParameter<double>("offTimeNegLoose");
69  corrTimeNeg_ = iConfig.getParameter<double>("corrTimeNeg");
70  corrTimePos_ = iConfig.getParameter<double>("corrTimePos");
71  //rechits
72  sharedHits_ = iConfig.getParameter<int>("sharedHits");
73  sharedFrac_ = iConfig.getParameter<double>("sharedFrac");
74  ipThreshold_ = iConfig.getParameter<double>("ipCut");
75  //segment comp, matches
76  nChamberMatches_ = iConfig.getParameter<int>("nChamberMatches");
77  segmentComp_ = iConfig.getParameter<double>("segmentComp");
78  //ip, vertex
79  maxdzLooseMult_ = iConfig.getParameter<double>("maxdzLooseMult");
80  maxdxyLooseMult_ = iConfig.getParameter<double>("maxdxyLooseMult");
81  maxdzTightMult_ = iConfig.getParameter<double>("maxdzTightMult");
82  maxdxyTightMult_ = iConfig.getParameter<double>("maxdxyTightMult");
83  maxdzLoose_ = iConfig.getParameter<double>("maxdzLoose");
84  maxdxyLoose_ = iConfig.getParameter<double>("maxdxyLoose");
85  maxdzTight_ = iConfig.getParameter<double>("maxdzTight");
86  maxdxyTight_ = iConfig.getParameter<double>("maxdxyTight");
87  largedxyMult_ = iConfig.getParameter<double>("largedxyMult");
88  largedxy_ = iConfig.getParameter<double>("largedxy");
89  hIpTrdxy_ = iConfig.getParameter<double>("hIpTrdxy");
90  hIpTrvProb_ = iConfig.getParameter<double>("hIpTrvProb");
91  minvProb_ = iConfig.getParameter<double>("minvProb");
92  maxvertZ_ = iConfig.getParameter<double>("maxvertZ");
93  maxvertRho_ = iConfig.getParameter<double>("maxvertRho");
94  // nTrackThreshold_ = iConfig.getParameter<unsigned int>("nTrackThreshold");
95 
96  for (unsigned int i = 0; i < inputMuonCollections_.size(); ++i)
98  for (unsigned int i = 0; i < inputTrackCollections_.size(); ++i)
100 
103 }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
T getParameter(std::string const &) const
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
std::vector< edm::EDGetTokenT< reco::TrackCollection > > trackTokens_
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
std::vector< Muon > MuonCollection
collection of Muon objects
Definition: MuonFwd.h:9
edm::EDGetTokenT< reco::MuonCollection > cosmicToken_
std::vector< edm::EDGetTokenT< reco::MuonCollection > > muonTokens_
edm::EDGetTokenT< reco::VertexCollection > vertexToken_
std::vector< edm::InputTag > inputTrackCollections_
std::vector< edm::InputTag > inputMuonCollections_
MuonCosmicCompatibilityFiller::~MuonCosmicCompatibilityFiller ( )

Definition at line 105 of file MuonCosmicCompatibilityFiller.cc.

References service_.

105  {
106  if (service_)
107  delete service_;
108 }

Member Function Documentation

unsigned int MuonCosmicCompatibilityFiller::backToBack2LegCosmic ( const edm::Event iEvent,
const reco::Muon muon 
) const
private

return cosmic-likeness based on presence of a track in opp side: 0 == no matching opp tracks

Definition at line 223 of file MuonCosmicCompatibilityFiller.cc.

References angleThreshold_, deltaPt_, muonid::findOppositeTrack(), edm::Event::getByToken(), reco::Muon::innerTrack(), reco::Muon::isGEMMuon(), reco::Muon::isGlobalMuon(), reco::Muon::isME0Muon(), reco::Muon::isRPCMuon(), reco::Muon::isStandAloneMuon(), reco::Muon::isTrackerMuon(), mps_fire::result, reco::Muon::track(), HLT_2018_cff::track, and trackTokens_.

Referenced by combinedCosmicID(), and fillCompatibility().

224  {
225  unsigned int result = 0; //no partners - collision
227  if (muon.isGlobalMuon())
228  track = muon.innerTrack();
229  else if (muon.isTrackerMuon())
230  track = muon.track();
231  else if (muon.isStandAloneMuon() || muon.isRPCMuon() || muon.isGEMMuon() || muon.isME0Muon())
232  return false;
233 
234  for (unsigned int iColl = 0; iColl < trackTokens_.size(); ++iColl) {
236  iEvent.getByToken(trackTokens_[iColl], trackHandle);
237  if (muonid::findOppositeTrack(trackHandle, *track, angleThreshold_, deltaPt_).isNonnull()) {
238  result++;
239  }
240  } //loop over track collections
241 
242  return result;
243 }
reco::TrackRef findOppositeTrack(const edm::Handle< reco::TrackCollection > &collection, const reco::Track &muon, double angleMatch=0.01, double momentumMatch=0.05)
TrackRef track() const override
reference to a Track
Definition: Muon.h:46
bool isStandAloneMuon() const override
Definition: Muon.h:300
virtual TrackRef innerTrack() const
Definition: Muon.h:45
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
std::vector< edm::EDGetTokenT< reco::TrackCollection > > trackTokens_
bool isME0Muon() const
Definition: Muon.h:305
bool isTrackerMuon() const override
Definition: Muon.h:299
bool isRPCMuon() const
Definition: Muon.h:303
bool isGlobalMuon() const override
Definition: Muon.h:298
bool isGEMMuon() const
Definition: Muon.h:304
bool MuonCosmicCompatibilityFiller::checkMuonID ( const reco::Muon imuon) const
private

tag a muon as cosmic based on the muonID information

Definition at line 631 of file MuonCosmicCompatibilityFiller.cc.

References muon::GlobalMuonPromptTight, muon::isGoodMuon(), mps_fire::result, and muon::TMOneStationLoose.

631  {
632  bool result = false;
633  // initial set up using Jordan's study: GlobalMuonPromptTight + TMOneStationLoose
635  result = true;
636 
637  return result;
638 }
bool isGoodMuon(const reco::Muon &muon, SelectionType type, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
main GoodMuon wrapper call
bool MuonCosmicCompatibilityFiller::checkMuonSegments ( const reco::Muon muon) const
private

tag a muon as cosmic based on segment compatibility and the number of segment matches

Definition at line 640 of file MuonCosmicCompatibilityFiller.cc.

References nChamberMatches_, reco::Muon::numberOfMatches(), mps_fire::result, segmentComp_, and muon::segmentCompatibility().

640  {
641  bool result = false;
642  if (imuon.numberOfMatches() < nChamberMatches_ && muon::segmentCompatibility(imuon) < segmentComp_)
643  result = true;
644 
645  return result;
646 }
float segmentCompatibility(const reco::Muon &muon, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
float MuonCosmicCompatibilityFiller::combinedCosmicID ( const edm::Event iEvent,
const edm::EventSetup iSetup,
const reco::Muon muon,
bool  CheckMuonID,
bool  checkVertex 
) const
private

combined cosmic-likeness: 0 == not cosmic-like

Definition at line 501 of file MuonCosmicCompatibilityFiller.cc.

References backToBack2LegCosmic(), eventActivity(), reco::Muon::isGlobalMuon(), isOverlappingMuon(), muonTiming(), pvMatches(), and mps_fire::result.

Referenced by fillCompatibility().

505  {
506  float result = 0.0;
507 
508  // return >=1 = identify as cosmic muon (the more like cosmics, the higher is the number)
509  // return 0.0 = identify as collision muon
510  if (muon.isGlobalMuon()) {
511  unsigned int cosmicVertex = eventActivity(iEvent, muon);
512  bool isOverlapping = isOverlappingMuon(iEvent, iSetup, muon);
513  unsigned int looseIp = pvMatches(iEvent, muon, true);
514  unsigned int tightIp = pvMatches(iEvent, muon, false);
515  float looseTime = muonTiming(iEvent, muon, true);
516  float tightTime = muonTiming(iEvent, muon, false);
517  unsigned int backToback = backToBack2LegCosmic(iEvent, muon);
518  //bool cosmicSegment = checkMuonSegments(muon);
519 
520  //short cut to reject cosmic event
521  if (checkVertex && cosmicVertex == 0)
522  return 10.0;
523 
524  // compatibility (0 - 10)
525  // weight is assigned by the performance of individual module
526  // btob: ~90% eff / ~0% misid
527  // ip: ~90% eff / ~0% misid
528  // time: ~30% eff / ~0% misid
529  double weight_btob = 2.0;
530  double weight_ip = 2.0;
531  double weight_time = 1.0;
532  double weight_overlap = 0.5;
533 
534  // collision muon should have compatibility < 4 (0 - 4)
535  // cosmic muon should have compatibility >= 4 (4 - 10)
536 
537  // b-to-b (max comp.: 4.0)
538  if (backToback >= 1) {
539  //in this case it is cosmic for sure
540  result += weight_btob * 2.;
541  if (tightIp == 1) {
542  // check with other observables to reduce mis-id (subtract compatibilities)
543  if (looseIp == 1) {
544  if (backToback < 2)
545  result -= weight_btob * 0.5;
546  }
547  }
548  }
549 
550  // ip (max comp.: 4.0)
551  if (tightIp == 0) {
552  //in this case it is cosmic for sure
553  result += weight_ip * 2.0;
554  if (backToback == 0) {
555  // check with other observables to reduce mis-id (subtract compatibilities)
556  if (tightTime == 0) {
557  if (looseTime == 0 && !isOverlapping)
558  result -= weight_ip * 1.0;
559  }
560  }
561  } else if (tightIp >= 2) {
562  // in this case it is almost collision-like (reduce compatibility)
563  // if multi pvs: comp = -2.0
564  if (backToback >= 1)
565  result -= weight_ip * 1.0;
566  }
567 
568  // timing (max comp.: 2.0)
569  if (tightTime > 0) {
570  // bonus track
571  if (looseTime > 0) {
572  if (backToback >= 1) {
573  if (tightIp == 0)
574  result += weight_time * tightTime;
575  else if (looseIp == 0)
576  result += weight_time * 0.25;
577  }
578  } else {
579  if (backToback >= 1 && tightIp == 0)
580  result += weight_time * 0.25;
581  }
582  }
583 
584  // overlapping
585  if (backToback == 0 && isOverlapping) {
586  // bonus track
587  if (tightIp == 0 && tightTime >= 1) {
588  result += weight_overlap * 1.0;
589  }
590  }
591  } //is global muon
592 
593  // if (CheckMuonID && cosmicSegment) result += 4;
594 
595  return result;
596 }
unsigned int pvMatches(const edm::Event &, const reco::Muon &, bool) const
return cosmic-likeness based on the 2D impact parameters (dxy, dz wrt to PV). 0 == cosmic-like ...
bool isGlobalMuon() const override
Definition: Muon.h:298
unsigned int backToBack2LegCosmic(const edm::Event &, const reco::Muon &) const
return cosmic-likeness based on presence of a track in opp side: 0 == no matching opp tracks ...
unsigned int eventActivity(const edm::Event &, const reco::Muon &) const
returns cosmic-likeness based on the event activity information: tracker track multiplicity and verte...
float muonTiming(const edm::Event &iEvent, const reco::Muon &muon, bool isLoose) const
check muon time (DT and CSC) information: 0 == prompt-like
bool isOverlappingMuon(const edm::Event &, const edm::EventSetup &iSetup, const reco::Muon &) const
returns cosmic-likeness based on overlap with traversing cosmic muon (only muon/STA hits are used) ...
unsigned int MuonCosmicCompatibilityFiller::eventActivity ( const edm::Event iEvent,
const reco::Muon muon 
) const
private

returns cosmic-likeness based on the event activity information: tracker track multiplicity and vertex quality. 0 == cosmic-like

Definition at line 601 of file MuonCosmicCompatibilityFiller.cc.

References edm::HandleBase::failedToGet(), edm::Event::getByToken(), createfilelist::int, maxvertRho_, maxvertZ_, minvProb_, edm::Handle< T >::product(), mps_fire::result, PDWG_EXOHSCP_cff::tracks, trackTokens_, vertexToken_, and pwdgSkimBPark_cfi::vertices.

Referenced by combinedCosmicID(), and fillCompatibility().

601  {
602  unsigned int result = 0; //no good vertices - cosmic-like
603 
604  //check track activity
606  iEvent.getByToken(trackTokens_[0], tracks);
607  if (!tracks.failedToGet() && tracks->size() < 3)
608  return 0;
609 
610  //cosmic event should have zero good vertices
612  if (!iEvent.getByToken(vertexToken_, pvHandle)) {
613  return 0;
614  } else {
615  const reco::VertexCollection& vertices = *pvHandle.product();
616  //check if vertex collection is empty
617  if (vertices.begin() == vertices.end())
618  return 0;
619  for (reco::VertexCollection::const_iterator it = vertices.begin(); it != vertices.end(); ++it) {
620  if ((TMath::Prob(it->chi2(), (int)it->ndof()) > minvProb_) && (fabs(it->z()) <= maxvertZ_) &&
621  (fabs(it->position().rho()) <= maxvertRho_))
622  result++;
623  }
624  }
625  return result;
626 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
std::vector< edm::EDGetTokenT< reco::TrackCollection > > trackTokens_
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
bool failedToGet() const
Definition: HandleBase.h:72
T const * product() const
Definition: Handle.h:69
edm::EDGetTokenT< reco::VertexCollection > vertexToken_
reco::MuonCosmicCompatibility MuonCosmicCompatibilityFiller::fillCompatibility ( const reco::Muon muon,
edm::Event iEvent,
const edm::EventSetup iSetup 
)

fill cosmic compatibility variables

Definition at line 110 of file MuonCosmicCompatibilityFiller.cc.

References backToBack2LegCosmic(), reco::MuonCosmicCompatibility::backToBackCompatibility, combinedCosmicID(), reco::MuonCosmicCompatibility::cosmicCompatibility, eventActivity(), reco::MuonCosmicCompatibility::ipCompatibility, isOverlappingMuon(), muonTiming(), reco::MuonCosmicCompatibility::overlapCompatibility, pvMatches(), service_, AlCaHLTBitMon_QueryRunRegistry::string, reco::MuonCosmicCompatibility::timeCompatibility, and reco::MuonCosmicCompatibility::vertexCompatibility.

Referenced by CosmicsMuonIdProducer::produce().

112  {
113  const std::string theCategory = "MuonCosmicCompatibilityFiller";
114 
116 
117  service_->update(iSetup);
118 
119  float timeCompatibility = muonTiming(iEvent, muon, false);
120  float backToBackCompatibility = backToBack2LegCosmic(iEvent, muon);
121  float overlapCompatibility = isOverlappingMuon(iEvent, iSetup, muon);
122  float ipCompatibility = pvMatches(iEvent, muon, false);
123  float vertexCompatibility = eventActivity(iEvent, muon);
124  float combinedCompatibility = combinedCosmicID(iEvent, iSetup, muon, false, false);
125 
126  returnComp.timeCompatibility = timeCompatibility;
127  returnComp.backToBackCompatibility = backToBackCompatibility;
128  returnComp.overlapCompatibility = overlapCompatibility;
129  returnComp.cosmicCompatibility = combinedCompatibility;
130  returnComp.ipCompatibility = ipCompatibility;
131  returnComp.vertexCompatibility = vertexCompatibility;
132 
133  return returnComp;
134 }
unsigned int pvMatches(const edm::Event &, const reco::Muon &, bool) const
return cosmic-likeness based on the 2D impact parameters (dxy, dz wrt to PV). 0 == cosmic-like ...
float combinedCosmicID(const edm::Event &, const edm::EventSetup &iSetup, const reco::Muon &, bool CheckMuonID, bool checkVertex) const
combined cosmic-likeness: 0 == not cosmic-like
float backToBackCompatibility
cosmic-likeness based on presence of a track in opp side: 0 == no matching opp tracks ...
unsigned int backToBack2LegCosmic(const edm::Event &, const reco::Muon &) const
return cosmic-likeness based on presence of a track in opp side: 0 == no matching opp tracks ...
unsigned int eventActivity(const edm::Event &, const reco::Muon &) const
returns cosmic-likeness based on the event activity information: tracker track multiplicity and verte...
float timeCompatibility
cosmic-likeness based on time: 0 == prompt-like
float muonTiming(const edm::Event &iEvent, const reco::Muon &muon, bool isLoose) const
check muon time (DT and CSC) information: 0 == prompt-like
bool isOverlappingMuon(const edm::Event &, const edm::EventSetup &iSetup, const reco::Muon &) const
returns cosmic-likeness based on overlap with traversing cosmic muon (only muon/STA hits are used) ...
float cosmicCompatibility
combined cosmic-likeness: 0 == not cosmic-like
float overlapCompatibility
cosmic-likeness based on overlap with traversing cosmic muon (only muon/STA hits are used) ...
float ipCompatibility
cosmic-likeness based on the 2D impact parameters (dxy, dz wrt to PV). 0 == cosmic-like ...
float vertexCompatibility
cosmic-likeness based on the event activity information: tracker track multiplicity and vertex qualit...
bool MuonCosmicCompatibilityFiller::isOverlappingMuon ( const edm::Event iEvent,
const edm::EventSetup iSetup,
const reco::Muon muon 
) const
private

returns cosmic-likeness based on overlap with traversing cosmic muon (only muon/STA hits are used)

Definition at line 268 of file MuonCosmicCompatibilityFiller.cc.

References cosmicToken_, MillePedeFileConverter_cfg::e, edm::HandleBase::failedToGet(), HLT_2018_cff::fraction, edm::EventSetup::get(), edm::Event::getByToken(), triggerObjects_cff::id, GlobalTrackingGeometry::idToDet(), reco::Muon::innerTrack(), reco::Muon::isGlobalMuon(), edm::Ref< C, T, F >::isNonnull(), mag(), reco::Muon::outerTrack(), GeomDet::position(), edm::Handle< T >::product(), sharedFrac_, sharedHits_, MuonServiceProxy::trackingGeometry(), vertexToken_, pwdgSkimBPark_cfi::vertices, and PV3DBase< T, PVType, FrameType >::y().

Referenced by combinedCosmicID(), and fillCompatibility().

270  {
271  // 4 steps in this module
272  // step1 : check whether it's 1leg cosmic muon or not
273  // step2 : both muons (muons and muonsFromCosmics1Leg) should have close IP
274  // step3 : both muons should share very close reference point
275  // step4 : check shared hits in both muon tracks
276 
277  // check if this muon is available in muonsFromCosmics collection
278  bool overlappingMuon = false; //false - not cosmic-like
279  if (!muon.isGlobalMuon())
280  return false;
281 
282  // reco muons for cosmics
284  iEvent.getByToken(cosmicToken_, muonHandle);
285 
286  // Global Tracking Geometry
287  ESHandle<GlobalTrackingGeometry> trackingGeometry;
288  iSetup.get<GlobalTrackingGeometryRecord>().get(trackingGeometry);
289 
290  // PV
291  math::XYZPoint RefVtx;
292  RefVtx.SetXYZ(0, 0, 0);
293 
295  iEvent.getByToken(vertexToken_, pvHandle);
296  const reco::VertexCollection& vertices = *pvHandle.product();
297  for (reco::VertexCollection::const_iterator it = vertices.begin(); it != vertices.end(); ++it) {
298  RefVtx = it->position();
299  }
300 
301  if (!muonHandle.failedToGet()) {
302  for (reco::MuonCollection::const_iterator cosmicMuon = muonHandle->begin(); cosmicMuon != muonHandle->end();
303  ++cosmicMuon) {
304  if (cosmicMuon->innerTrack() == muon.innerTrack() || cosmicMuon->outerTrack() == muon.outerTrack())
305  return true;
306 
307  reco::TrackRef outertrack = muon.outerTrack();
308  reco::TrackRef costrack = cosmicMuon->outerTrack();
309 
310  bool isUp = false;
311  if (outertrack->phi() > 0)
312  isUp = true;
313 
314  // shared hits
315  int RecHitsMuon = outertrack->numberOfValidHits();
316  int RecHitsCosmicMuon = 0;
317  int shared = 0;
318  // count hits for same hemisphere
319  if (costrack.isNonnull()) {
320  int nhitsUp = 0;
321  int nhitsDown = 0;
322  // unused
323  // bool isCosmic1Leg = false;
324  // bool isCloseIP = false;
325  // bool isCloseRef = false;
326 
327  for (trackingRecHit_iterator coshit = costrack->recHitsBegin(); coshit != costrack->recHitsEnd(); coshit++) {
328  if ((*coshit)->isValid()) {
329  DetId id((*coshit)->geographicalId());
330  double hity = trackingGeometry->idToDet(id)->position().y();
331  if (hity > 0)
332  nhitsUp++;
333  if (hity < 0)
334  nhitsDown++;
335 
336  if (isUp && hity > 0)
337  RecHitsCosmicMuon++;
338  if (!isUp && hity < 0)
339  RecHitsCosmicMuon++;
340  }
341  }
342  // step1
343  //UNUSED: if( nhitsUp > 0 && nhitsDown > 0 ) isCosmic1Leg = true;
344  //if( !isCosmic1Leg ) continue;
345 
346  if (outertrack.isNonnull()) {
347  // step2
348  //UNUSED: const double ipErr = (double)outertrack->d0Error();
349  //UNUSED: double ipThreshold = max(ipThreshold_, ipErr);
350  //UNUSED: if( fabs(outertrack->dxy(RefVtx) + costrack->dxy(RefVtx)) < ipThreshold ) isCloseIP = true;
351  //if( !isCloseIP ) continue;
352 
353  // step3
354  GlobalPoint muonRefVtx(outertrack->vx(), outertrack->vy(), outertrack->vz());
355  GlobalPoint cosmicRefVtx(costrack->vx(), costrack->vy(), costrack->vz());
356  //UNUSED: float dist = (muonRefVtx - cosmicRefVtx).mag();
357  //UNUSED: if( dist < 0.1 ) isCloseRef = true;
358  //if( !isCloseRef ) continue;
359 
360  for (trackingRecHit_iterator trkhit = outertrack->recHitsBegin(); trkhit != outertrack->recHitsEnd();
361  trkhit++) {
362  if ((*trkhit)->isValid()) {
363  for (trackingRecHit_iterator coshit = costrack->recHitsBegin(); coshit != costrack->recHitsEnd();
364  coshit++) {
365  if ((*coshit)->isValid()) {
366  if ((*trkhit)->geographicalId() == (*coshit)->geographicalId()) {
367  if (((*trkhit)->localPosition() - (*coshit)->localPosition()).mag() < 10e-5)
368  shared++;
369  }
370  }
371  }
372  }
373  }
374  }
375  }
376  // step4
377  double fraction = -1;
378  if (RecHitsMuon != 0)
379  fraction = shared / (double)RecHitsMuon;
380  // std::cout << "shared = " << shared << " " << fraction << " " << RecHitsMuon << " " << RecHitsCosmicMuon << std::endl;
381  if (shared > sharedHits_ && fraction > sharedFrac_) {
382  overlappingMuon = true;
383  break;
384  }
385  }
386  }
387 
388  return overlappingMuon;
389 }
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
virtual TrackRef innerTrack() const
Definition: Muon.h:45
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
T y() const
Definition: PV3DBase.h:60
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
const Surface::PositionType & position() const
The position (origin of the R.F.)
Definition: GeomDet.h:43
bool isGlobalMuon() const override
Definition: Muon.h:298
edm::EDGetTokenT< reco::MuonCollection > cosmicToken_
virtual TrackRef outerTrack() const
reference to Track reconstructed in the muon detector only
Definition: Muon.h:48
bool failedToGet() const
Definition: HandleBase.h:72
Definition: DetId.h:17
T const * product() const
Definition: Handle.h:69
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
edm::EDGetTokenT< reco::VertexCollection > vertexToken_
T get() const
Definition: EventSetup.h:73
const GeomDet * idToDet(DetId) const override
float MuonCosmicCompatibilityFiller::muonTiming ( const edm::Event iEvent,
const reco::Muon muon,
bool  isLoose 
) const
private

check muon time (DT and CSC) information: 0 == prompt-like

Definition at line 139 of file MuonCosmicCompatibilityFiller.cc.

References corrTimeNeg_, corrTimePos_, edm::HandleBase::failedToGet(), edm::Event::getByToken(), edm::Ref< C, T, F >::isNonnull(), reco::Muon::isTimeValid(), muonTokens_, nMuons(), offTimeNegLoose_, offTimeNegLooseMult_, offTimeNegTight_, offTimeNegTightMult_, offTimePosLoose_, offTimePosLooseMult_, offTimePosTight_, offTimePosTightMult_, reco::Muon::outerTrack(), pvMatches(), mps_fire::result, reco::Muon::time(), and reco::MuonTime::timeAtIpInOut.

Referenced by combinedCosmicID(), and fillCompatibility().

139  {
140  float offTimeNegMult, offTimePosMult, offTimeNeg, offTimePos;
141 
142  if (isLoose) {
143  //use "loose" parameter set
144  offTimeNegMult = offTimeNegLooseMult_;
145  offTimePosMult = offTimePosLooseMult_;
146  offTimeNeg = offTimeNegLoose_;
147  offTimePos = offTimePosLoose_;
148  } else {
149  offTimeNegMult = offTimeNegTightMult_;
150  offTimePosMult = offTimePosTightMult_;
151  offTimeNeg = offTimeNegTight_;
152  offTimePos = offTimePosTight_;
153  }
154 
155  float result = 0.0;
156 
157  if (muon.isTimeValid()) {
158  //case of multiple muon event
159  if (nMuons(iEvent) > 1) {
160  float positiveTime = 0;
161  if (muon.time().timeAtIpInOut < offTimeNegMult || muon.time().timeAtIpInOut > offTimePosMult)
162  result = 1.;
163  if (muon.time().timeAtIpInOut > 0.)
164  positiveTime = muon.time().timeAtIpInOut;
165 
166  //special case, looking for time-correlation
167  // between muons in opposite hemispheres
168  if (!isLoose && result == 0 && positiveTime > corrTimePos_) {
169  //check hemi of this muon
170  bool isUp = false;
171  reco::TrackRef outertrack = muon.outerTrack();
172  if (outertrack.isNonnull()) {
173  if (outertrack->phi() > 0)
174  isUp = true;
175 
176  //loop over muons in that event and find if there are any in the opposite hemi
178  iEvent.getByToken(muonTokens_[1], muonHandle);
179 
180  if (!muonHandle.failedToGet()) {
181  for (reco::MuonCollection::const_iterator iMuon = muonHandle->begin(); iMuon != muonHandle->end();
182  ++iMuon) {
183  if (!iMuon->isGlobalMuon())
184  continue;
185 
186  reco::TrackRef checkedTrack = iMuon->outerTrack();
187  if (muon.isTimeValid()) {
188  // from bottom up
189  if (checkedTrack->phi() < 0 && isUp) {
190  if (iMuon->time().timeAtIpInOut < corrTimeNeg_)
191  result = 1.0;
192  break;
193  } else if (checkedTrack->phi() > 0 && !isUp) {
194  // from top down
195  if (iMuon->time().timeAtIpInOut < corrTimeNeg_)
196  result = 1.0;
197  break;
198  }
199  } //muon is time valid
200  }
201  }
202  } //track is nonnull
203  } //double check timing
204  } else {
205  //case of a single muon event
206  if (muon.time().timeAtIpInOut < offTimeNeg || muon.time().timeAtIpInOut > offTimePos)
207  result = 1.;
208  }
209  } //is time valid
210 
211  if (!isLoose && result > 0) {
212  //check loose ip
213  if (pvMatches(iEvent, muon, true) == 0)
214  result *= 2.;
215  }
216 
217  return result;
218 }
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
unsigned int nMuons(const edm::Event &) const
get number of muons in the vent
unsigned int pvMatches(const edm::Event &, const reco::Muon &, bool) const
return cosmic-likeness based on the 2D impact parameters (dxy, dz wrt to PV). 0 == cosmic-like ...
MuonTime time() const
get DT/CSC combined timing information
Definition: Muon.h:132
std::vector< edm::EDGetTokenT< reco::MuonCollection > > muonTokens_
virtual TrackRef outerTrack() const
reference to Track reconstructed in the muon detector only
Definition: Muon.h:48
bool failedToGet() const
Definition: HandleBase.h:72
bool isTimeValid() const
Definition: Muon.h:130
float timeAtIpInOut
Definition: MuonTime.h:13
unsigned int MuonCosmicCompatibilityFiller::nMuons ( const edm::Event iEvent) const
private

get number of muons in the vent

Definition at line 248 of file MuonCosmicCompatibilityFiller.cc.

References edm::HandleBase::failedToGet(), edm::Event::getByToken(), and muonTokens_.

Referenced by muonTiming(), and pvMatches().

248  {
249  unsigned int nGlb = 0;
250 
252  iEvent.getByToken(muonTokens_[1], muonHandle);
253 
254  if (!muonHandle.failedToGet()) {
255  for (reco::MuonCollection::const_iterator iMuon = muonHandle->begin(); iMuon != muonHandle->end(); ++iMuon) {
256  if (!iMuon->isGlobalMuon())
257  continue;
258  nGlb++;
259  }
260  }
261 
262  return nGlb;
263 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
std::vector< edm::EDGetTokenT< reco::MuonCollection > > muonTokens_
bool failedToGet() const
Definition: HandleBase.h:72
unsigned int MuonCosmicCompatibilityFiller::pvMatches ( const edm::Event iEvent,
const reco::Muon muon,
bool  isLoose 
) const
private

return cosmic-likeness based on the 2D impact parameters (dxy, dz wrt to PV). 0 == cosmic-like

Definition at line 394 of file MuonCosmicCompatibilityFiller.cc.

References edm::HandleBase::failedToGet(), edm::Event::getByToken(), hIpTrdxy_, hIpTrvProb_, reco::Muon::innerTrack(), createfilelist::int, reco::Muon::isGlobalMuon(), edm::Ref< C, T, F >::isNonnull(), reco::Muon::isRPCMuon(), reco::Muon::isStandAloneMuon(), reco::Muon::isTrackerMuon(), largedxy_, largedxyMult_, maxdxyLoose_, maxdxyLooseMult_, maxdxyTight_, maxdxyTightMult_, maxdzLoose_, maxdzLooseMult_, maxdzTight_, maxdzTightMult_, PDWG_BPHSkim_cff::muons, muonTokens_, nMuons(), reco::Muon::outerTrack(), edm::Handle< T >::product(), mps_fire::result, reco::Muon::standAloneMuon(), reco::Muon::track(), HLT_2018_cff::track, PDWG_EXOHSCP_cff::tracks, vertexToken_, and pwdgSkimBPark_cfi::vertices.

Referenced by combinedCosmicID(), fillCompatibility(), and muonTiming().

396  {
397  float maxdxyMult, maxdzMult, maxdxy, maxdz;
398 
399  if (isLoose) {
400  //use "loose" parameter set
401  maxdxyMult = maxdxyLooseMult_;
402  maxdzMult = maxdzLooseMult_;
403  maxdxy = maxdxyLoose_;
404  maxdz = maxdzLoose_;
405  } else {
406  maxdxyMult = maxdxyTightMult_;
407  maxdzMult = maxdzTightMult_;
408  maxdxy = maxdxyTight_;
409  maxdz = maxdzTight_;
410  }
411 
412  unsigned int result = 0;
413 
415  if (muon.isGlobalMuon())
416  track = muon.innerTrack();
417  else if (muon.isTrackerMuon() || muon.isRPCMuon())
418  track = muon.track();
419  else if (muon.isStandAloneMuon())
420  track = muon.standAloneMuon();
421 
422  bool multipleMu = false;
423  if (nMuons(iEvent) > 1)
424  multipleMu = true;
425 
426  math::XYZPoint RefVtx;
427  RefVtx.SetXYZ(0, 0, 0);
428 
430  iEvent.getByToken(vertexToken_, pvHandle);
431  const reco::VertexCollection& vertices = *pvHandle.product();
432  for (reco::VertexCollection::const_iterator it = vertices.begin(); it != vertices.end(); ++it) {
433  RefVtx = it->position();
434 
435  if (track.isNonnull()) {
436  if (multipleMu) {
437  //multiple muon event
438 
439  if (fabs((*track).dxy(RefVtx)) < maxdxyMult || fabs((*track).dz(RefVtx)) < maxdzMult) {
440  result++;
441 
442  //case of extra large dxy
443  if (!isLoose && fabs((*track).dxy(RefVtx)) > largedxyMult_)
444  result -= 1;
445  }
446  } else {
447  //single muon event
448 
449  if (fabs((*track).dxy(RefVtx)) < maxdxy || fabs((*track).dz(RefVtx)) < maxdz) {
450  result++;
451 
452  //case of extra large dxy
453  if (!isLoose && fabs((*track).dxy(RefVtx)) > largedxy_)
454  result -= 1;
455  }
456  }
457  } //track is nonnull
458  } //loop over vertices
459 
460  //special case for non-cosmic large ip muons
461  if (result == 0 && multipleMu) {
462  // consider all reco muons in an event
464  iEvent.getByToken(muonTokens_[1], muonHandle);
465 
466  //cosmic event should have zero good vertices
468  iEvent.getByToken(vertexToken_, pvHandle);
469  const reco::VertexCollection& vertices = *pvHandle.product();
470 
471  //find the "other" one
472  if (!muonHandle.failedToGet()) {
473  for (reco::MuonCollection::const_iterator muons = muonHandle->begin(); muons != muonHandle->end(); ++muons) {
474  if (!muons->isGlobalMuon())
475  continue;
476  //skip this track
477  if (muons->innerTrack() == muon.innerTrack() && muons->outerTrack() == muon.outerTrack())
478  continue;
479  //check ip and vertex of the "other" muon
481  if (muons->isGlobalMuon())
482  tracks = muons->innerTrack();
483  if (fabs((*tracks).dxy(RefVtx)) > hIpTrdxy_)
484  continue;
485  //check if vertex collection is empty
486  if (vertices.begin() == vertices.end())
487  continue;
488  //for(reco::VertexCollection::const_iterator it=vertices.begin() ; it!=vertices.end() ; ++it) {
489  //find matching vertex by position
490  //if (fabs(it->z() - tracks->vz()) > 0.01) continue; //means will not be untagged from cosmics
491  if (TMath::Prob(vertices.front().chi2(), (int)(vertices.front().ndof())) > hIpTrvProb_)
492  result = 1;
493  //}
494  }
495  }
496  }
497 
498  return result;
499 }
TrackRef track() const override
reference to a Track
Definition: Muon.h:46
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
bool isStandAloneMuon() const override
Definition: Muon.h:300
virtual TrackRef innerTrack() const
Definition: Muon.h:45
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
unsigned int nMuons(const edm::Event &) const
get number of muons in the vent
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
bool isTrackerMuon() const override
Definition: Muon.h:299
bool isRPCMuon() const
Definition: Muon.h:303
bool isGlobalMuon() const override
Definition: Muon.h:298
std::vector< edm::EDGetTokenT< reco::MuonCollection > > muonTokens_
virtual TrackRef outerTrack() const
reference to Track reconstructed in the muon detector only
Definition: Muon.h:48
TrackRef standAloneMuon() const override
reference to a stand-alone muon Track
Definition: Muon.h:49
bool failedToGet() const
Definition: HandleBase.h:72
T const * product() const
Definition: Handle.h:69
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
edm::EDGetTokenT< reco::VertexCollection > vertexToken_

Member Data Documentation

double MuonCosmicCompatibilityFiller::angleThreshold_
private
double MuonCosmicCompatibilityFiller::corrTimeNeg_
private

Definition at line 116 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and muonTiming().

double MuonCosmicCompatibilityFiller::corrTimePos_
private

Definition at line 115 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and muonTiming().

edm::EDGetTokenT<reco::MuonCollection> MuonCosmicCompatibilityFiller::cosmicToken_
private
double MuonCosmicCompatibilityFiller::deltaPt_
private
double MuonCosmicCompatibilityFiller::hIpTrdxy_
private

Definition at line 101 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::hIpTrvProb_
private

Definition at line 102 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

edm::InputTag MuonCosmicCompatibilityFiller::inputCosmicMuonCollection_
private

Definition at line 81 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller().

std::vector<edm::InputTag> MuonCosmicCompatibilityFiller::inputMuonCollections_
private

Definition at line 79 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller().

std::vector<edm::InputTag> MuonCosmicCompatibilityFiller::inputTrackCollections_
private

Definition at line 80 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller().

edm::InputTag MuonCosmicCompatibilityFiller::inputVertexCollection_
private

Definition at line 82 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller().

double MuonCosmicCompatibilityFiller::ipThreshold_
private

Definition at line 121 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller().

double MuonCosmicCompatibilityFiller::largedxy_
private

Definition at line 100 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::largedxyMult_
private

Definition at line 99 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::maxdxyLoose_
private

Definition at line 91 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::maxdxyLooseMult_
private

Definition at line 95 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::maxdxyTight_
private

Definition at line 93 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::maxdxyTightMult_
private

Definition at line 97 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::maxdzLoose_
private

Definition at line 92 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::maxdzLooseMult_
private

Definition at line 96 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::maxdzTight_
private

Definition at line 94 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::maxdzTightMult_
private

Definition at line 98 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::maxvertRho_
private
double MuonCosmicCompatibilityFiller::maxvertZ_
private
double MuonCosmicCompatibilityFiller::minvProb_
private
std::vector<edm::EDGetTokenT<reco::MuonCollection> > MuonCosmicCompatibilityFiller::muonTokens_
private
int MuonCosmicCompatibilityFiller::nChamberMatches_
private
unsigned int MuonCosmicCompatibilityFiller::nTrackThreshold_
private

Definition at line 106 of file MuonCosmicCompatibilityFiller.h.

double MuonCosmicCompatibilityFiller::offTimeNegLoose_
private

Definition at line 108 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and muonTiming().

double MuonCosmicCompatibilityFiller::offTimeNegLooseMult_
private

Definition at line 112 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and muonTiming().

double MuonCosmicCompatibilityFiller::offTimeNegTight_
private

Definition at line 110 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and muonTiming().

double MuonCosmicCompatibilityFiller::offTimeNegTightMult_
private

Definition at line 114 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and muonTiming().

double MuonCosmicCompatibilityFiller::offTimePosLoose_
private

Definition at line 107 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and muonTiming().

double MuonCosmicCompatibilityFiller::offTimePosLooseMult_
private

Definition at line 111 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and muonTiming().

double MuonCosmicCompatibilityFiller::offTimePosTight_
private

Definition at line 109 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and muonTiming().

double MuonCosmicCompatibilityFiller::offTimePosTightMult_
private

Definition at line 113 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and muonTiming().

double MuonCosmicCompatibilityFiller::segmentComp_
private
MuonServiceProxy* MuonCosmicCompatibilityFiller::service_
private
double MuonCosmicCompatibilityFiller::sharedFrac_
private
int MuonCosmicCompatibilityFiller::sharedHits_
private
std::vector<edm::EDGetTokenT<reco::TrackCollection> > MuonCosmicCompatibilityFiller::trackTokens_
private
edm::EDGetTokenT<reco::VertexCollection> MuonCosmicCompatibilityFiller::vertexToken_
private