00001 #ifndef ImpactParameterAlgorithm_H 00002 #define ImpactParameterAlgorithm_H 00003 #include "DataFormats/BTauReco/interface/TauImpactParameterInfo.h" 00004 #include "DataFormats/BTauReco/interface/JetTag.h" 00005 #include "DataFormats/VertexReco/interface/Vertex.h" 00006 #include "DataFormats/JetReco/interface/Jet.h" 00007 #include "DataFormats/TrackReco/interface/Track.h" 00008 #include "DataFormats/JetReco/interface/JetTracksAssociation.h" 00009 #include "MagneticField/Engine/interface/MagneticField.h" 00010 #include "DataFormats/GeometryVector/interface/GlobalVector.h" 00011 //#include "DataFormats/GeometryVector/interface/GlobalVector.h" 00012 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00013 //Math 00014 #include "Math/GenVector/VectorUtil.h" 00015 #include "Math/GenVector/PxPyPzE4D.h" 00016 00017 #include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h" 00018 00019 00020 00021 00022 00023 class ImpactParameterAlgorithm { 00024 00025 public: 00026 00027 ImpactParameterAlgorithm(const edm::ParameterSet & parameters ); 00028 ImpactParameterAlgorithm(); 00029 00030 // For out of framework usage we may need a different constructor 00031 // so we keep datamember as builtin types (instead of ParameterSet) 00032 //ImpactParameterAlgorithm (int,float,....); 00033 00034 ~ImpactParameterAlgorithm() {} 00035 00036 void setPrimaryVertex(reco::Vertex * pv) {primaryVertex = pv;} 00037 00038 std::pair<float,reco::TauImpactParameterInfo> tag(const reco::IsolatedTauTagInfoRef&, const reco::Vertex&); 00039 00040 void setTransientTrackBuilder(const TransientTrackBuilder*); 00041 00042 00043 private: 00044 reco::Vertex* primaryVertex; 00045 00046 //algorithm parameters 00047 double ip_min, 00048 ip_max, 00049 sip_min; 00050 bool use3D, 00051 use_sign; 00052 00053 const TransientTrackBuilder * transientTrackBuilder; 00054 }; 00055 00056 #endif 00057