Go to the documentation of this file.00001 #include <Math/GenVector/VectorUtil.h>
00002
00003 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00004
00005 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00006 #include "DataFormats/JetReco/interface/Jet.h"
00007 #include "DataFormats/TrackReco/interface/Track.h"
00008 #include "DataFormats/VertexReco/interface/Vertex.h"
00009 #include "DataFormats/BTauReco/interface/TrackIPTagInfo.h"
00010
00011 #include "RecoBTag/SecondaryVertex/interface/TrackSelector.h"
00012
00013 using namespace reco;
00014 using namespace ROOT::Math;
00015
00016 TrackSelector::TrackSelector(const edm::ParameterSet ¶ms) :
00017 minPixelHits(params.getParameter<unsigned int>("pixelHitsMin")),
00018 minTotalHits(params.getParameter<unsigned int>("totalHitsMin")),
00019 minPt(params.getParameter<double>("ptMin")),
00020 maxNormChi2(params.getParameter<double>("normChi2Max")),
00021 maxJetDeltaR(params.getParameter<double>("jetDeltaRMax")),
00022 maxDistToAxis(params.getParameter<double>("maxDistToAxis")),
00023 maxDecayLen(params.getParameter<double>("maxDecayLen")),
00024 sip2dValMin(params.getParameter<double>("sip2dValMin")),
00025 sip2dValMax(params.getParameter<double>("sip2dValMax")),
00026 sip2dSigMin(params.getParameter<double>("sip2dSigMin")),
00027 sip2dSigMax(params.getParameter<double>("sip2dSigMax")),
00028 sip3dValMin(params.getParameter<double>("sip3dValMin")),
00029 sip3dValMax(params.getParameter<double>("sip3dValMax")),
00030 sip3dSigMin(params.getParameter<double>("sip3dSigMin")),
00031 sip3dSigMax(params.getParameter<double>("sip3dSigMax"))
00032 {
00033 std::string qualityClass =
00034 params.getParameter<std::string>("qualityClass");
00035 if (qualityClass == "any" || qualityClass == "Any" ||
00036 qualityClass == "ANY" || qualityClass == "") {
00037 selectQuality = false;
00038 quality = reco::TrackBase::undefQuality;
00039 } else {
00040 selectQuality = true;
00041 quality = reco::TrackBase::qualityByName(qualityClass);
00042 }
00043 }
00044
00045 bool
00046 TrackSelector::operator () (const Track &track,
00047 const TrackIPTagInfo::TrackIPData &ipData,
00048 const Jet &jet,
00049 const GlobalPoint &pv) const
00050 {
00051 return (!selectQuality || track.quality(quality)) &&
00052 (minPixelHits <= 0 ||
00053 track.hitPattern().numberOfValidPixelHits() >= (int)minPixelHits) &&
00054 (minTotalHits <= 0 ||
00055 track.hitPattern().numberOfValidHits() >= (int)minTotalHits) &&
00056 track.pt() >= minPt &&
00057 track.normalizedChi2() < maxNormChi2 &&
00058 VectorUtil::DeltaR(jet.momentum(),
00059 track.momentum()) < maxJetDeltaR &&
00060 std::abs(ipData.distanceToJetAxis.value()) <= maxDistToAxis &&
00061 (ipData.closestToJetAxis - pv).mag() <= maxDecayLen &&
00062 ipData.ip2d.value() >= sip2dValMin &&
00063 ipData.ip2d.value() <= sip2dValMax &&
00064 ipData.ip2d.significance() >= sip2dSigMin &&
00065 ipData.ip2d.significance() <= sip2dSigMax &&
00066 ipData.ip3d.value() >= sip3dValMin &&
00067 ipData.ip3d.value() <= sip3dValMax &&
00068 ipData.ip3d.significance() >= sip3dSigMin &&
00069 ipData.ip3d.significance() <= sip3dSigMax;
00070 }