CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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::MuonCollection
cosmicToken_
 
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::VertexCollection
vertexToken_
 

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 39 of file MuonCosmicCompatibilityFiller.h.

Constructor & Destructor Documentation

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

Definition at line 47 of file MuonCosmicCompatibilityFiller.cc.

References angleThreshold_, edm::ConsumesCollector::consumes(), corrTimeNeg_, corrTimePos_, cosmicToken_, deltaPt_, edm::ParameterSet::getParameter(), hIpTrdxy_, hIpTrvProb_, 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_.

47  :
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_(0)
53 {
54  // service parameters
55  edm::ParameterSet serviceParameters = iConfig.getParameter<edm::ParameterSet>("ServiceParameters");
56  service_ = new MuonServiceProxy(serviceParameters);
57 
58  //kinematic vars
59  angleThreshold_ = iConfig.getParameter<double>("angleCut");
60  deltaPt_ = iConfig.getParameter<double>("deltaPt");
61  //time
62  offTimePosTightMult_ = iConfig.getParameter<double>("offTimePosTightMult");
63  offTimeNegTightMult_ = iConfig.getParameter<double>("offTimeNegTightMult");
64  offTimePosTight_ = iConfig.getParameter<double>("offTimePosTight");
65  offTimeNegTight_ = iConfig.getParameter<double>("offTimeNegTight");
66  offTimePosLooseMult_ = iConfig.getParameter<double>("offTimePosLooseMult");
67  offTimeNegLooseMult_ = iConfig.getParameter<double>("offTimeNegLooseMult");
68  offTimePosLoose_ = iConfig.getParameter<double>("offTimePosLoose");
69  offTimeNegLoose_ = iConfig.getParameter<double>("offTimeNegLoose");
70  corrTimeNeg_ = iConfig.getParameter<double>("corrTimeNeg");
71  corrTimePos_ = iConfig.getParameter<double>("corrTimePos");
72  //rechits
73  sharedHits_ = iConfig.getParameter<int>("sharedHits");
74  sharedFrac_ = iConfig.getParameter<double>("sharedFrac");
75  ipThreshold_ = iConfig.getParameter<double>("ipCut");
76  //segment comp, matches
77  nChamberMatches_ = iConfig.getParameter<int>("nChamberMatches");
78  segmentComp_ = iConfig.getParameter<double>("segmentComp");
79  //ip, vertex
80  maxdzLooseMult_ = iConfig.getParameter<double>("maxdzLooseMult");
81  maxdxyLooseMult_ = iConfig.getParameter<double>("maxdxyLooseMult");
82  maxdzTightMult_ = iConfig.getParameter<double>("maxdzTightMult");
83  maxdxyTightMult_ = iConfig.getParameter<double>("maxdxyTightMult");
84  maxdzLoose_ = iConfig.getParameter<double>("maxdzLoose");
85  maxdxyLoose_ = iConfig.getParameter<double>("maxdxyLoose");
86  maxdzTight_ = iConfig.getParameter<double>("maxdzTight");
87  maxdxyTight_ = iConfig.getParameter<double>("maxdxyTight");
88  largedxyMult_ = iConfig.getParameter<double>("largedxyMult");
89  largedxy_ = iConfig.getParameter<double>("largedxy");
90  hIpTrdxy_ = iConfig.getParameter<double>("hIpTrdxy");
91  hIpTrvProb_ = iConfig.getParameter<double>("hIpTrvProb");
92  minvProb_ = iConfig.getParameter<double>("minvProb");
93  maxvertZ_ = iConfig.getParameter<double>("maxvertZ");
94  maxvertRho_ = iConfig.getParameter<double>("maxvertRho");
95 // nTrackThreshold_ = iConfig.getParameter<unsigned int>("nTrackThreshold");
96 
97  for(unsigned int i=0;i<inputMuonCollections_.size();++i)
99  for(unsigned int i=0;i<inputTrackCollections_.size();++i)
101 
104 
105 
106 
107 
108 }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
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 110 of file MuonCosmicCompatibilityFiller.cc.

References service_.

110  {
111  if (service_) delete service_;
112 }

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 226 of file MuonCosmicCompatibilityFiller.cc.

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

Referenced by combinedCosmicID(), and fillCompatibility().

226  {
227 
228  unsigned int result = 0; //no partners - collision
229  reco::TrackRef track;
230  if ( muon.isGlobalMuon() ) track = muon.innerTrack();
231  else if ( muon.isTrackerMuon() ) track = muon.track();
232  else if ( muon.isStandAloneMuon() || muon.isRPCMuon() ) 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)
virtual TrackRef innerTrack() const
Definition: Muon.h:48
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
bool isTrackerMuon() const
Definition: Muon.h:219
virtual TrackRef track() const
reference to a Track
Definition: Muon.h:49
bool isGlobalMuon() const
Definition: Muon.h:218
std::vector< edm::EDGetTokenT< reco::TrackCollection > > trackTokens_
bool isStandAloneMuon() const
Definition: Muon.h:220
bool isRPCMuon() const
Definition: Muon.h:223
tuple result
Definition: query.py:137
bool MuonCosmicCompatibilityFiller::checkMuonID ( const reco::Muon imuon) const
private

tag a muon as cosmic based on the muonID information

Definition at line 609 of file MuonCosmicCompatibilityFiller.cc.

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

610 {
611  bool result = false;
612  // initial set up using Jordan's study: GlobalMuonPromptTight + TMOneStationLoose
614 
615  return result;
616 }
tuple result
Definition: query.py:137
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 618 of file MuonCosmicCompatibilityFiller.cc.

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

618  {
619 
620  bool result = false;
621  if (imuon.numberOfMatches() < nChamberMatches_ && muon::segmentCompatibility(imuon) < segmentComp_) result = true;
622 
623  return result;
624 }
tuple result
Definition: query.py:137
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 485 of file MuonCosmicCompatibilityFiller.cc.

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

Referenced by fillCompatibility().

486  {
487 
488  float result = 0.0;
489 
490  // return >=1 = identify as cosmic muon (the more like cosmics, the higher is the number)
491  // return 0.0 = identify as collision muon
492  if( muon.isGlobalMuon() ) {
493 
494  unsigned int cosmicVertex = eventActivity(iEvent, muon);
495  bool isOverlapping = isOverlappingMuon(iEvent, iSetup, muon);
496  unsigned int looseIp = pvMatches(iEvent, muon, true);
497  unsigned int tightIp = pvMatches(iEvent, muon, false);
498  float looseTime = muonTiming(iEvent, muon, true);
499  float tightTime = muonTiming(iEvent, muon, false);
500  unsigned int backToback = backToBack2LegCosmic(iEvent,muon);
501  //bool cosmicSegment = checkMuonSegments(muon);
502 
503  //short cut to reject cosmic event
504  if (checkVertex && cosmicVertex == 0) return 10.0;
505 
506  // compatibility (0 - 10)
507  // weight is assigned by the performance of individual module
508  // btob: ~90% eff / ~0% misid
509  // ip: ~90% eff / ~0% misid
510  // time: ~30% eff / ~0% misid
511  double weight_btob = 2.0;
512  double weight_ip = 2.0;
513  double weight_time = 1.0;
514  double weight_overlap = 0.5;
515 
516  // collision muon should have compatibility < 4 (0 - 4)
517  // cosmic muon should have compatibility >= 4 (4 - 10)
518 
519  // b-to-b (max comp.: 4.0)
520  if( backToback >= 1 ) {
521  //in this case it is cosmic for sure
522  result += weight_btob*2.;
523  if( tightIp == 1 ) {
524  // check with other observables to reduce mis-id (subtract compatibilities)
525  if( looseIp == 1 ) {
526  if( backToback < 2 ) result -= weight_btob*0.5;
527  }
528  }
529  }
530 
531  // ip (max comp.: 4.0)
532  if( tightIp == 0 ) {
533  //in this case it is cosmic for sure
534  result += weight_ip*2.0;
535  if( backToback == 0 ) {
536  // check with other observables to reduce mis-id (subtract compatibilities)
537  if( tightTime == 0 ) {
538  if( looseTime == 0 && !isOverlapping ) result -= weight_ip*1.0;
539  }
540  }
541  }
542  else if( tightIp >= 2 ) {
543  // in this case it is almost collision-like (reduce compatibility)
544  // if multi pvs: comp = -2.0
545  if( backToback >= 1 ) result -= weight_ip*1.0;
546  }
547 
548  // timing (max comp.: 2.0)
549  if( tightTime > 0 ) {
550  // bonus track
551  if( looseTime > 0 ) {
552  if( backToback >= 1 ) {
553  if( tightIp == 0 ) result += weight_time*tightTime;
554  else if( looseIp == 0 ) result += weight_time*0.25;
555  }
556  }
557  else {
558  if( backToback >= 1 && tightIp == 0 ) result += weight_time*0.25;
559  }
560  }
561 
562  // overlapping
563  if( backToback == 0 && isOverlapping ) {
564  // bonus track
565  if( tightIp == 0 && tightTime >= 1 ) {
566  result += weight_overlap*1.0;
567  }
568  }
569  }//is global muon
570 
571 
572 // if (CheckMuonID && cosmicSegment) result += 4;
573 
574  return result;
575 }
bool isGlobalMuon() const
Definition: Muon.h:218
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 ...
tuple result
Definition: query.py:137
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 583 of file MuonCosmicCompatibilityFiller.cc.

References edm::HandleBase::failedToGet(), edm::Event::getByToken(), maxvertRho_, maxvertZ_, minvProb_, edm::Handle< T >::product(), query::result, testEve_cfg::tracks, trackTokens_, vertexToken_, and HLT_25ns14e33_v1_cff::vertices.

Referenced by combinedCosmicID(), and fillCompatibility().

584 {
585 
586  unsigned int result = 0; //no good vertices - cosmic-like
587 
588  //check track activity
590  iEvent.getByToken(trackTokens_[0],tracks);
591  if (!tracks.failedToGet() && tracks->size() < 3) return 0;
592 
593  //cosmic event should have zero good vertices
595  if (!iEvent.getByToken(vertexToken_,pvHandle)) {return 0;} else {
596  const reco::VertexCollection & vertices = *pvHandle.product();
597  //check if vertex collection is empty
598  if (vertices.begin() == vertices.end()) return 0;
599  for(reco::VertexCollection::const_iterator it=vertices.begin() ; it!=vertices.end() ; ++it){
600  if ((TMath::Prob(it->chi2(),(int)it->ndof()) > minvProb_) && (fabs(it->z()) <= maxvertZ_) && (fabs(it->position().rho()) <= maxvertRho_)) result++;
601  }
602  }
603  return result;
604 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
std::vector< edm::EDGetTokenT< reco::TrackCollection > > trackTokens_
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
tuple result
Definition: query.py:137
bool failedToGet() const
Definition: HandleBase.h:79
T const * product() const
Definition: Handle.h:81
tuple tracks
Definition: testEve_cfg.py:39
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 115 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().

116 {
117  const std::string theCategory = "MuonCosmicCompatibilityFiller";
118 
120 
121  service_->update(iSetup);
122 
123  float timeCompatibility = muonTiming(iEvent, muon, false);
124  float backToBackCompatibility = backToBack2LegCosmic(iEvent,muon);
125  float overlapCompatibility = isOverlappingMuon(iEvent,iSetup,muon);
126  float ipCompatibility = pvMatches(iEvent,muon,false);
127  float vertexCompatibility = eventActivity(iEvent,muon);
128  float combinedCompatibility = combinedCosmicID(iEvent,iSetup,muon,false,false);
129 
130  returnComp.timeCompatibility = timeCompatibility;
131  returnComp.backToBackCompatibility = backToBackCompatibility;
132  returnComp.overlapCompatibility = overlapCompatibility;
133  returnComp.cosmicCompatibility = combinedCompatibility;
134  returnComp.ipCompatibility = ipCompatibility;
135  returnComp.vertexCompatibility = vertexCompatibility;
136 
137  return returnComp;
138 
139 }
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 271 of file MuonCosmicCompatibilityFiller.cc.

References cosmicToken_, alignCSCRings::e, edm::HandleBase::failedToGet(), HLT_25ns14e33_v1_cff::fraction, edm::EventSetup::get(), edm::Event::getByToken(), reco::Muon::innerTrack(), reco::Muon::isGlobalMuon(), edm::Ref< C, T, F >::isNonnull(), mag(), reco::Muon::outerTrack(), edm::Handle< T >::product(), sharedFrac_, sharedHits_, MuonServiceProxy::trackingGeometry(), vertexToken_, and HLT_25ns14e33_v1_cff::vertices.

Referenced by combinedCosmicID(), and fillCompatibility().

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

Referenced by combinedCosmicID(), and fillCompatibility().

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

get number of muons in the vent

Definition at line 249 of file MuonCosmicCompatibilityFiller.cc.

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

Referenced by muonTiming(), and pvMatches().

249  {
250 
251  unsigned int nGlb = 0;
252 
254  iEvent.getByToken(muonTokens_[1], muonHandle);
255 
256  if( !muonHandle.failedToGet() ) {
257  for ( reco::MuonCollection::const_iterator iMuon = muonHandle->begin(); iMuon != muonHandle->end(); ++iMuon ) {
258  if (!iMuon->isGlobalMuon()) continue;
259  nGlb++;
260  }
261  }
262 
263  return nGlb;
264 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
std::vector< edm::EDGetTokenT< reco::MuonCollection > > muonTokens_
bool failedToGet() const
Definition: HandleBase.h:79
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 387 of file MuonCosmicCompatibilityFiller.cc.

References edm::HandleBase::failedToGet(), edm::Event::getByToken(), hIpTrdxy_, hIpTrvProb_, reco::Muon::innerTrack(), 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_, patZpeak::muons, muonTokens_, nMuons(), reco::Muon::outerTrack(), edm::Handle< T >::product(), query::result, reco::Muon::standAloneMuon(), reco::Muon::track(), testEve_cfg::tracks, vertexToken_, and HLT_25ns14e33_v1_cff::vertices.

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

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

Member Data Documentation

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

Definition at line 119 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and muonTiming().

double MuonCosmicCompatibilityFiller::corrTimePos_
private

Definition at line 118 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 104 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::hIpTrvProb_
private

Definition at line 105 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

edm::InputTag MuonCosmicCompatibilityFiller::inputCosmicMuonCollection_
private

Definition at line 82 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller().

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

Definition at line 80 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller().

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

Definition at line 81 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller().

edm::InputTag MuonCosmicCompatibilityFiller::inputVertexCollection_
private

Definition at line 83 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller().

double MuonCosmicCompatibilityFiller::ipThreshold_
private

Definition at line 124 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller().

double MuonCosmicCompatibilityFiller::largedxy_
private

Definition at line 103 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::largedxyMult_
private

Definition at line 102 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::maxdxyLoose_
private

Definition at line 94 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::maxdxyLooseMult_
private

Definition at line 98 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::maxdxyTight_
private

Definition at line 96 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::maxdxyTightMult_
private

Definition at line 100 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::maxdzLoose_
private

Definition at line 95 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::maxdzLooseMult_
private

Definition at line 99 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::maxdzTight_
private

Definition at line 97 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and pvMatches().

double MuonCosmicCompatibilityFiller::maxdzTightMult_
private

Definition at line 101 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 109 of file MuonCosmicCompatibilityFiller.h.

double MuonCosmicCompatibilityFiller::offTimeNegLoose_
private

Definition at line 111 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and muonTiming().

double MuonCosmicCompatibilityFiller::offTimeNegLooseMult_
private

Definition at line 115 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and muonTiming().

double MuonCosmicCompatibilityFiller::offTimeNegTight_
private

Definition at line 113 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and muonTiming().

double MuonCosmicCompatibilityFiller::offTimeNegTightMult_
private

Definition at line 117 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and muonTiming().

double MuonCosmicCompatibilityFiller::offTimePosLoose_
private

Definition at line 110 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and muonTiming().

double MuonCosmicCompatibilityFiller::offTimePosLooseMult_
private

Definition at line 114 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and muonTiming().

double MuonCosmicCompatibilityFiller::offTimePosTight_
private

Definition at line 112 of file MuonCosmicCompatibilityFiller.h.

Referenced by MuonCosmicCompatibilityFiller(), and muonTiming().

double MuonCosmicCompatibilityFiller::offTimePosTightMult_
private

Definition at line 116 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