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 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_, 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_.

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
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::isGEMMuon(), reco::Muon::isGlobalMuon(), reco::Muon::isME0Muon(), reco::Muon::isRPCMuon(), reco::Muon::isStandAloneMuon(), reco::Muon::isTrackerMuon(), mps_fire::result, HiIsolationCommonParameters_cff::track, reco::Muon::track(), and trackTokens_.

Referenced by combinedCosmicID(), and fillCompatibility().

226  {
227 
228  unsigned int result = 0; //no partners - collision
230  if ( muon.isGlobalMuon() ) track = muon.innerTrack();
231  else if ( muon.isTrackerMuon() ) track = muon.track();
232  else if ( muon.isStandAloneMuon() || muon.isRPCMuon() || muon.isGEMMuon() || muon.isME0Muon() )
233  return false;
234 
235  for (unsigned int iColl = 0; iColl<trackTokens_.size(); ++iColl){
237  iEvent.getByToken(trackTokens_[iColl],trackHandle);
238  if (muonid::findOppositeTrack(trackHandle, *track, angleThreshold_, deltaPt_).isNonnull()) {
239  result++;
240  }
241  } //loop over track collections
242 
243  return result;
244 }
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:460
bool isTrackerMuon() const
Definition: Muon.h:226
virtual TrackRef track() const
reference to a Track
Definition: Muon.h:49
bool isGlobalMuon() const
Definition: Muon.h:225
std::vector< edm::EDGetTokenT< reco::TrackCollection > > trackTokens_
bool isStandAloneMuon() const
Definition: Muon.h:227
bool isME0Muon() const
Definition: Muon.h:232
bool isRPCMuon() const
Definition: Muon.h:230
bool isGEMMuon() const
Definition: Muon.h:231
bool MuonCosmicCompatibilityFiller::checkMuonID ( const reco::Muon imuon) const
private

tag a muon as cosmic based on the muonID information

Definition at line 610 of file MuonCosmicCompatibilityFiller.cc.

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

611 {
612  bool result = false;
613  // initial set up using Jordan's study: GlobalMuonPromptTight + TMOneStationLoose
615 
616  return result;
617 }
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 619 of file MuonCosmicCompatibilityFiller.cc.

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

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

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

Referenced by fillCompatibility().

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

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

Referenced by combinedCosmicID(), and fillCompatibility().

585 {
586 
587  unsigned int result = 0; //no good vertices - cosmic-like
588 
589  //check track activity
591  iEvent.getByToken(trackTokens_[0],tracks);
592  if (!tracks.failedToGet() && tracks->size() < 3) return 0;
593 
594  //cosmic event should have zero good vertices
596  if (!iEvent.getByToken(vertexToken_,pvHandle)) {return 0;} else {
597  const reco::VertexCollection & vertices = *pvHandle.product();
598  //check if vertex collection is empty
599  if (vertices.begin() == vertices.end()) return 0;
600  for(reco::VertexCollection::const_iterator it=vertices.begin() ; it!=vertices.end() ; ++it){
601  if ((TMath::Prob(it->chi2(),(int)it->ndof()) > minvProb_) && (fabs(it->z()) <= maxvertZ_) && (fabs(it->position().rho()) <= maxvertRho_)) result++;
602  }
603  }
604  return result;
605 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:460
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:78
T const * product() const
Definition: Handle.h:81
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 272 of file MuonCosmicCompatibilityFiller.cc.

References cosmicToken_, MillePedeFileConverter_cfg::e, edm::HandleBase::failedToGet(), dedxEstimators_cff::fraction, edm::EventSetup::get(), edm::Event::getByToken(), hcalTTPDigis_cfi::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_, ecalDrivenElectronSeedsParameters_cff::vertices, and PV3DBase< T, PVType, FrameType >::y().

Referenced by combinedCosmicID(), and fillCompatibility().

272  {
273 
274  // 4 steps in this module
275  // step1 : check whether it's 1leg cosmic muon or not
276  // step2 : both muons (muons and muonsFromCosmics1Leg) should have close IP
277  // step3 : both muons should share very close reference point
278  // step4 : check shared hits in both muon tracks
279 
280  // check if this muon is available in muonsFromCosmics collection
281  bool overlappingMuon = false; //false - not cosmic-like
282  if( !muon.isGlobalMuon() ) return false;
283 
284  // reco muons for cosmics
286  iEvent.getByToken(cosmicToken_, muonHandle);
287 
288  // Global Tracking Geometry
289  ESHandle<GlobalTrackingGeometry> trackingGeometry;
290  iSetup.get<GlobalTrackingGeometryRecord>().get(trackingGeometry);
291 
292  // PV
293  math::XYZPoint RefVtx;
294  RefVtx.SetXYZ(0, 0, 0);
295 
297  iEvent.getByToken(vertexToken_,pvHandle);
298  const reco::VertexCollection & vertices = *pvHandle.product();
299  for(reco::VertexCollection::const_iterator it=vertices.begin() ; it!=vertices.end() ; ++it) {
300  RefVtx = it->position();
301  }
302 
303 
304  if( !muonHandle.failedToGet() ) {
305  for ( reco::MuonCollection::const_iterator cosmicMuon = muonHandle->begin();cosmicMuon != muonHandle->end(); ++cosmicMuon ) {
306  if ( cosmicMuon->innerTrack() == muon.innerTrack() || cosmicMuon->outerTrack() == muon.outerTrack()) return true;
307 
308  reco::TrackRef outertrack = muon.outerTrack();
309  reco::TrackRef costrack = cosmicMuon->outerTrack();
310 
311  bool isUp = false;
312  if( outertrack->phi() > 0 ) 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 ) nhitsUp++;
332  if( hity < 0 ) nhitsDown++;
333 
334  if( isUp && hity > 0 ) RecHitsCosmicMuon++;
335  if( !isUp && hity < 0 ) RecHitsCosmicMuon++;
336  }
337  }
338  // step1
339  //UNUSED: if( nhitsUp > 0 && nhitsDown > 0 ) isCosmic1Leg = true;
340  //if( !isCosmic1Leg ) continue;
341 
342  if( outertrack.isNonnull() ) {
343  // step2
344  //UNUSED: const double ipErr = (double)outertrack->d0Error();
345  //UNUSED: double ipThreshold = max(ipThreshold_, ipErr);
346  //UNUSED: if( fabs(outertrack->dxy(RefVtx) + costrack->dxy(RefVtx)) < ipThreshold ) isCloseIP = true;
347  //if( !isCloseIP ) continue;
348 
349  // step3
350  GlobalPoint muonRefVtx( outertrack->vx(), outertrack->vy(), outertrack->vz() );
351  GlobalPoint cosmicRefVtx( costrack->vx(), costrack->vy(), costrack->vz() );
352  //UNUSED: float dist = (muonRefVtx - cosmicRefVtx).mag();
353  //UNUSED: if( dist < 0.1 ) isCloseRef = true;
354  //if( !isCloseRef ) continue;
355 
356  for( trackingRecHit_iterator trkhit = outertrack->recHitsBegin(); trkhit != outertrack->recHitsEnd(); trkhit++ ) {
357  if( (*trkhit)->isValid() ) {
358  for( trackingRecHit_iterator coshit = costrack->recHitsBegin(); coshit != costrack->recHitsEnd(); coshit++ ) {
359  if( (*coshit)->isValid() ) {
360  if( (*trkhit)->geographicalId() == (*coshit)->geographicalId() ) {
361  if( ((*trkhit)->localPosition() - (*coshit)->localPosition()).mag()< 10e-5 ) shared++;
362  }
363 
364  }
365  }
366  }
367  }
368  }
369  }
370  // step4
371  double fraction = -1;
372  if( RecHitsMuon != 0 ) fraction = shared/(double)RecHitsMuon;
373  // std::cout << "shared = " << shared << " " << fraction << " " << RecHitsMuon << " " << RecHitsCosmicMuon << std::endl;
374  if( shared > sharedHits_ && fraction > sharedFrac_ ) {
375  overlappingMuon = true;
376  break;
377  }
378  }
379  }
380 
381  return overlappingMuon;
382 }
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:460
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
T y() const
Definition: PV3DBase.h:63
bool isGlobalMuon() const
Definition: Muon.h:225
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
virtual const GeomDet * idToDet(DetId) const
const Surface::PositionType & position() const
The position (origin of the R.F.)
Definition: GeomDet.h:48
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:78
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(), mps_fire::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:460
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:131
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:78
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 250 of file MuonCosmicCompatibilityFiller.cc.

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

Referenced by muonTiming(), and pvMatches().

250  {
251 
252  unsigned int nGlb = 0;
253 
255  iEvent.getByToken(muonTokens_[1], muonHandle);
256 
257  if( !muonHandle.failedToGet() ) {
258  for ( reco::MuonCollection::const_iterator iMuon = muonHandle->begin(); iMuon != muonHandle->end(); ++iMuon ) {
259  if (!iMuon->isGlobalMuon()) continue;
260  nGlb++;
261  }
262  }
263 
264  return nGlb;
265 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:460
std::vector< edm::EDGetTokenT< reco::MuonCollection > > muonTokens_
bool failedToGet() const
Definition: HandleBase.h:78
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 388 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_, electronCleaner_cfi::muons, muonTokens_, nMuons(), reco::Muon::outerTrack(), edm::Handle< T >::product(), mps_fire::result, reco::Muon::standAloneMuon(), HiIsolationCommonParameters_cff::track, reco::Muon::track(), l1t::tracks, vertexToken_, and ecalDrivenElectronSeedsParameters_cff::vertices.

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

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