CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch12/src/SUSYBSMAnalysis/HSCP/src/CandidateSelector.cc

Go to the documentation of this file.
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