00001 #ifndef DataFormats_BTauReco_TauImpactParameterInfo_h 00002 #define DataFormats_BTauReco_TauImpactParameterInfo_h 00003 00004 #include "DataFormats/BTauReco/interface/RefMacros.h" 00005 #include "DataFormats/Common/interface/AssociationMap.h" 00006 #include "DataFormats/GeometryCommonDetAlgo/interface/Measurement1D.h" 00007 #include "DataFormats/TrackReco/interface/TrackFwd.h" 00008 #include "DataFormats/BTauReco/interface/IsolatedTauTagInfo.h" 00009 00010 namespace reco { 00011 00012 struct TauImpactParameterTrackData { 00013 Measurement1D transverseIp; 00014 Measurement1D ip3D; 00015 }; 00016 00017 typedef edm::AssociationMap < 00018 edm::OneToValue< 00019 reco::TrackCollection, 00020 reco::TauImpactParameterTrackData 00021 > 00022 > TrackTauImpactParameterAssociationCollection; 00023 00024 typedef TrackTauImpactParameterAssociationCollection::value_type TrackTauImpactParameterAssociation; 00025 00026 class TauImpactParameterInfo { 00027 public: 00028 TauImpactParameterInfo() {} 00029 virtual ~TauImpactParameterInfo() {} 00030 00031 virtual TauImpactParameterInfo* clone() const { return new TauImpactParameterInfo( * this ); } 00032 00033 float discriminator(double,double,double,bool,bool) const; 00034 float discriminator() const; 00035 00036 const TauImpactParameterTrackData * getTrackData(const reco::TrackRef &) const; 00037 void storeTrackData(const reco::TrackRef &, const TauImpactParameterTrackData &); 00038 00039 const IsolatedTauTagInfoRef & getIsolatedTauTag() const; 00040 void setIsolatedTauTag(const IsolatedTauTagInfoRef &); 00041 00042 private: 00043 TrackTauImpactParameterAssociationCollection trackDataMap; 00044 IsolatedTauTagInfoRef isolatedTaus; 00045 }; 00046 00047 DECLARE_EDM_REFS( TauImpactParameterInfo ) 00048 00049 } 00050 00051 #endif // DataFormats_BTauReco_TauImpactParameterInfo_h