CMS 3D CMS Logo

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