File indexing completed on 2024-04-06 12:03:47
0001 #include "DataFormats/BTauReco/interface/TauImpactParameterInfo.h"
0002 #include "DataFormats/TrackReco/interface/Track.h"
0003
0004 using namespace edm;
0005 using namespace reco;
0006 using namespace std;
0007
0008 float reco::TauImpactParameterInfo::discriminator(
0009 double ip_min, double ip_max, double sip_min, bool use_sign, bool use3D) const {
0010 double discriminator = isolatedTaus->discriminator();
0011
0012 const TrackRef leadingTrack = isolatedTaus->leadingSignalTrack(0.4, 1.);
0013
0014 if (!leadingTrack.isNull()) {
0015 const TauImpactParameterTrackData* ipData = getTrackData(leadingTrack);
0016 Measurement1D ip = ipData->transverseIp;
0017 if (use3D)
0018 ip = ipData->ip3D;
0019
0020 if (ip.value() < ip_min || ip.value() > ip_max || ip.significance() < sip_min) {
0021 discriminator = 0;
0022 }
0023 }
0024 return discriminator;
0025 }
0026 float reco::TauImpactParameterInfo::discriminator() const {
0027
0028 return isolatedTaus->discriminator();
0029 }
0030
0031 const reco::TauImpactParameterTrackData* TauImpactParameterInfo::getTrackData(const reco::TrackRef& trackRef) const {
0032 reco::TrackTauImpactParameterAssociationCollection::const_iterator iter = trackDataMap.find(trackRef);
0033
0034 if (iter != trackDataMap.end())
0035 return &(iter->val);
0036
0037 return nullptr;
0038 }
0039
0040 void reco::TauImpactParameterInfo::storeTrackData(const reco::TrackRef& trackRef,
0041 const reco::TauImpactParameterTrackData& trackData) {
0042 trackDataMap.insert(trackRef, trackData);
0043 }
0044
0045 void reco::TauImpactParameterInfo::setIsolatedTauTag(const IsolatedTauTagInfoRef& isolationRef) {
0046 isolatedTaus = isolationRef;
0047 }
0048
0049 const IsolatedTauTagInfoRef& reco::TauImpactParameterInfo::getIsolatedTauTag() const { return isolatedTaus; }