CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
CandidateSelector.cc
Go to the documentation of this file.
2 
3 using namespace edm;
4 using namespace reco;
5 using namespace susybsm;
6 
7 
8 
9 
11  isTrack = iConfig.getParameter<bool> ("onlyConsiderTrack");
12  isMuon = iConfig.getParameter<bool> ("onlyConsiderMuon");
13  isMuonSTA = iConfig.getParameter<bool> ("onlyConsiderMuonSTA");
14  isMuonGB = iConfig.getParameter<bool> ("onlyConsiderMuonGB");
15  isMuonTK = iConfig.getParameter<bool> ("onlyConsiderMuonTK");
16  isMTMuon = iConfig.getParameter<bool> ("onlyConsiderMTMuon");
17  isRpc = iConfig.getParameter<bool> ("onlyConsiderRpc");
18  isEcal = iConfig.getParameter<bool> ("onlyConsiderEcal");
19 
20  minTrackHits = iConfig.getParameter<int> ("minTrackHits");
21  minTrackP = iConfig.getParameter<double> ("minTrackP");
22  minTrackPt = iConfig.getParameter<double> ("minTrackPt");
23 
24  minDedx = iConfig.getParameter<double> ("minDedx");
25 
26  minMuonP = iConfig.getParameter<double> ("minMuonP");
27  minMuonPt = iConfig.getParameter<double> ("minMuonPt");
28  minSAMuonPt = iConfig.getParameter<double> ("minMTMuonPt");
29  minMTMuonPt = iConfig.getParameter<double> ("minMTMuonPt");
30 
31  maxMuTimeDtBeta = iConfig.getParameter<double> ("maxMuTimeDtBeta");
32  minMuTimeDtNdof = iConfig.getParameter<double> ("minMuTimeDtNdof");
33  maxMuTimeCscBeta = iConfig.getParameter<double> ("maxMuTimeCscBeta");
34  minMuTimeCscNdof = iConfig.getParameter<double> ("minMuTimeCscNdof");
35  maxMuTimeCombinedBeta = iConfig.getParameter<double> ("maxMuTimeCombinedBeta");
36  minMuTimeCombinedNdof = iConfig.getParameter<double> ("minMuTimeCombinedNdof");
37 
38  maxBetaRpc = iConfig.getParameter<double> ("maxBetaRpc");
39  maxBetaEcal = iConfig.getParameter<double> ("maxBetaEcal");
40 }
41 
42 
44 {
45  if(isTrack && !candidate.hasTrackRef()){return false;}
46  if(isMuon && !candidate.hasMuonRef() ){return false;}
47  if(isMuonSTA && (!candidate.hasMuonRef() || candidate.muonRef()->standAloneMuon().isNull()) ){return false;}
48  if(isMuonGB && (!candidate.hasMuonRef() || candidate.muonRef()->combinedMuon ().isNull()) ){return false;}
49  if(isMuonTK && (!candidate.hasMuonRef() || candidate.muonRef()->innerTrack ().isNull()) ){return false;}
50  if(isMTMuon && !candidate.hasMTMuonRef() ){return false;}
51  if(isRpc && !candidate.hasRpcInfo() ){return false;}
52  if(isEcal && !candidate.hasCaloInfo()){return false;}
53 
54  if(candidate.hasTrackRef()){
55  if(candidate.trackRef()->found() < minTrackHits){return false;}
56  if(candidate.trackRef()->p() < minTrackP ){return false;}
57  if(candidate.trackRef()->pt() < minTrackPt ){return false;}
58 
59 // Need to be implemented using external dE/dx object
60 // if(candidate.hasDedxEstim1() && minDedxEstimator1>=0 && candidate.dedxEstimator1 ().dEdx()<minDedxEstimator1) {return false;}
61 // if(candidate.hasDedxDiscrim1() && minDedxDiscriminator1>=0 && candidate.dedxDiscriminator1().dEdx()<minDedxDiscriminator1){return false;}
62  }
63 
64  if(candidate.hasMuonRef()){
65  if(candidate.muonRef()->p() < minMuonP ){return false;}
66  if(candidate.muonRef()->pt() < minMuonPt ){return false;}
67 
68 // Need to be implemented using external timing object
69 // if(maxMuTimeDtBeta >=0 && 1.0/candidate.muonTimeDt().inverseBeta() > maxMuTimeDtBeta ){return false;}
70 // if(minMuTimeDtNdof >=0 && 1.0/candidate.muonTimeDt().nDof() < minMuTimeDtNdof ){return false;}
71 // if(maxMuTimeCscBeta >=0 && 1.0/candidate.muonTimeCsc().inverseBeta() > maxMuTimeCscBeta ){return false;}
72 // if(minMuTimeCscNdof >=0 && 1.0/candidate.muonTimeCsc().nDof() < minMuTimeCscNdof ){return false;}
73 // if(maxMuTimeCombinedBeta>=0 && 1.0/candidate.muonTimeCombined().inverseBeta() > maxMuTimeCombinedBeta){return false;}
74 // if(minMuTimeCombinedNdof>=0 && 1.0/candidate.muonTimeCombined().nDof() < minMuTimeCombinedNdof){return false;}
75  }
76 
77  if(candidate.hasRpcInfo() && maxBetaRpc>=0 && candidate.rpc ().beta > maxBetaRpc ){return false;}
78 
79  if(candidate.hasMuonRef() && candidate.muonRef()->isStandAloneMuon()) {
80  if(candidate.muonRef()->standAloneMuon()->pt() < minSAMuonPt ){return false;}
81  }
82 
83  if(candidate.hasMTMuonRef()){
84  if(!candidate.MTMuonRef()->standAloneMuon().isNull()){
85  if(candidate.MTMuonRef()->standAloneMuon()->pt() < minMTMuonPt ){return false;}
86  }
87  }
88 
89 // Need to be implemented using external dE/dx object
90 // if(candidate.hasCaloInfo() && maxBetaEcal>=0 && candidate.calo().ecalBeta > maxBetaEcal){return false;}
91 
92  return true;
93 }
94 
T getParameter(std::string const &) const
bool isMuon(const Candidate &part)
Definition: pdgIdUtils.h:11
const RPCBetaMeasurement & rpc() const
Definition: HSCParticle.h:77
bool hasTrackRef() const
Definition: HSCParticle.h:57
reco::MuonRef MTMuonRef() const
Definition: HSCParticle.h:75
bool hasMTMuonRef() const
Definition: HSCParticle.h:56
tuple minTrackPt
Definition: align_cfg.py:22
bool isNull() const
Checks for null.
Definition: Ref.h:249
reco::MuonRef muonRef() const
Definition: HSCParticle.h:74
CandidateSelector(const edm::ParameterSet &iConfig)
reco::TrackRef trackRef() const
Definition: HSCParticle.h:72
bool hasRpcInfo() const
Definition: HSCParticle.h:59
tuple minTrackP
Definition: align_cfg.py:24
bool hasMuonRef() const
Definition: HSCParticle.h:55
bool hasCaloInfo() const
Definition: HSCParticle.h:60
bool isSelected(susybsm::HSCParticle &candidate)