![]() |
![]() |
00001 #include "SUSYBSMAnalysis/HSCP/interface/CandidateSelector.h" 00002 00003 CandidateSelector::CandidateSelector(const edm::ParameterSet& iConfig){ 00004 isTrack = iConfig.getParameter<bool> ("onlyConsiderTrack"); 00005 isMuon = iConfig.getParameter<bool> ("onlyConsiderMuon"); 00006 isMuonSTA = iConfig.getParameter<bool> ("onlyConsiderMuonSTA"); 00007 isMuonGB = iConfig.getParameter<bool> ("onlyConsiderMuonGB"); 00008 isMuonTK = iConfig.getParameter<bool> ("onlyConsiderMuonTK"); 00009 isRpc = iConfig.getParameter<bool> ("onlyConsiderRpc"); 00010 isEcal = iConfig.getParameter<bool> ("onlyConsiderEcal"); 00011 00012 minTrackHits = iConfig.getParameter<int> ("minTrackHits"); 00013 minTrackP = iConfig.getParameter<double> ("minTrackP"); 00014 minTrackPt = iConfig.getParameter<double> ("minTrackPt"); 00015 00016 minDedx = iConfig.getParameter<double> ("minDedx"); 00017 00018 minMuonP = iConfig.getParameter<double> ("minMuonP"); 00019 minMuonPt = iConfig.getParameter<double> ("minMuonPt"); 00020 00021 maxMuTimeDtBeta = iConfig.getParameter<double> ("maxMuTimeDtBeta"); 00022 minMuTimeDtNdof = iConfig.getParameter<double> ("minMuTimeDtNdof"); 00023 maxMuTimeCscBeta = iConfig.getParameter<double> ("maxMuTimeCscBeta"); 00024 minMuTimeCscNdof = iConfig.getParameter<double> ("minMuTimeCscNdof"); 00025 maxMuTimeCombinedBeta = iConfig.getParameter<double> ("maxMuTimeCombinedBeta"); 00026 minMuTimeCombinedNdof = iConfig.getParameter<double> ("minMuTimeCombinedNdof"); 00027 00028 maxBetaRpc = iConfig.getParameter<double> ("maxBetaRpc"); 00029 maxBetaEcal = iConfig.getParameter<double> ("maxBetaEcal"); 00030 } 00031 00032 00033 bool CandidateSelector::isSelected(HSCParticle& candidate) 00034 { 00035 if(isTrack && !candidate.hasTrackRef()){return false;} 00036 if(isMuon && !candidate.hasMuonRef() ){return false;} 00037 if(isMuonSTA && (!candidate.hasMuonRef() || candidate.muonRef()->standAloneMuon().isNull()) ){return false;} 00038 if(isMuonGB && (!candidate.hasMuonRef() || candidate.muonRef()->combinedMuon ().isNull()) ){return false;} 00039 if(isMuonTK && (!candidate.hasMuonRef() || candidate.muonRef()->innerTrack ().isNull()) ){return false;} 00040 if(isRpc && !candidate.hasRpcInfo() ){return false;} 00041 if(isEcal && !candidate.hasCaloInfo()){return false;} 00042 00043 if(candidate.hasTrackRef()){ 00044 if(candidate.trackRef()->found() < minTrackHits){return false;} 00045 if(candidate.trackRef()->p() < minTrackP ){return false;} 00046 if(candidate.trackRef()->pt() < minTrackPt ){return false;} 00047 00048 // Need to be implemented using external dE/dx object 00049 // if(candidate.hasDedxEstim1() && minDedxEstimator1>=0 && candidate.dedxEstimator1 ().dEdx()<minDedxEstimator1) {return false;} 00050 // if(candidate.hasDedxDiscrim1() && minDedxDiscriminator1>=0 && candidate.dedxDiscriminator1().dEdx()<minDedxDiscriminator1){return false;} 00051 } 00052 00053 if(candidate.hasMuonRef()){ 00054 if(candidate.muonRef()->p() < minMuonP ){return false;} 00055 if(candidate.muonRef()->pt() < minMuonPt ){return false;} 00056 00057 // Need to be implemented using external timing object 00058 // if(maxMuTimeDtBeta >=0 && 1.0/candidate.muonTimeDt().inverseBeta() > maxMuTimeDtBeta ){return false;} 00059 // if(minMuTimeDtNdof >=0 && 1.0/candidate.muonTimeDt().nDof() < minMuTimeDtNdof ){return false;} 00060 // if(maxMuTimeCscBeta >=0 && 1.0/candidate.muonTimeCsc().inverseBeta() > maxMuTimeCscBeta ){return false;} 00061 // if(minMuTimeCscNdof >=0 && 1.0/candidate.muonTimeCsc().nDof() < minMuTimeCscNdof ){return false;} 00062 // if(maxMuTimeCombinedBeta>=0 && 1.0/candidate.muonTimeCombined().inverseBeta() > maxMuTimeCombinedBeta){return false;} 00063 // if(minMuTimeCombinedNdof>=0 && 1.0/candidate.muonTimeCombined().nDof() < minMuTimeCombinedNdof){return false;} 00064 } 00065 00066 if(candidate.hasRpcInfo() && maxBetaRpc>=0 && candidate.rpc ().beta > maxBetaRpc ){return false;} 00067 00068 // Need to be implemented using external dE/dx object 00069 // if(candidate.hasCaloInfo() && maxBetaEcal>=0 && candidate.calo().ecalBeta > maxBetaEcal){return false;} 00070 00071 return true; 00072 } 00073