00001 #ifndef ADDTVTRACK_H 00002 #define ADDTVTRACK_H 00003 00004 // Class for Secondary Vertex Finding in Jets 00005 // It adds Tracks of a not reconstructed Tertiary Vertex to a Secondary Vertex 00006 // New Tracks are not used for refitting the Vertex but for the kinematical 00007 // Variables for the b-tagging 00008 // It uses the first PV and SV in the vectors 00009 00010 #include "RecoVertex/VertexPrimitives/interface/TransientVertex.h" 00011 #include "TrackingTools/TransientTrack/interface/TransientTrack.h" 00012 00013 class AddTvTrack { 00014 00015 public: 00016 00017 // constructor 00018 AddTvTrack( std::vector<TransientVertex>*, std::vector<TransientVertex>*, 00019 double) ; 00020 00021 // destructor 00022 ~AddTvTrack() {} 00023 00024 // does the work 00025 std::vector<TransientVertex> getSecondaryVertices( 00026 const std::vector<reco::TransientTrack> & ); 00027 00028 // Access to parameters 00029 inline std::vector<TransientVertex>* getPrimaryVertices() const { 00030 return thePrimaryVertices; 00031 } 00032 inline std::vector<TransientVertex>* getSecondaryVertices() const { 00033 return theSecondaryVertices; 00034 } 00035 inline double getMaxSigOnDistTrackToB() const { 00036 return MaxSigOnDistTrackToB; 00037 } 00038 00039 00040 struct TrackInfo { 00041 TrackInfo(const reco::TransientTrack* ptrack_, double* param_) { 00042 ptrack=ptrack_; 00043 for(int i=0;i<7;i++) param[i]=param_[i]; 00044 }; 00045 const reco::TransientTrack* ptrack; 00046 double param[7]; 00047 }; 00048 typedef std::vector<TrackInfo> TrackInfoVector; 00049 00050 TrackInfoVector getTrackInfo() { return theTrackInfoVector; } 00051 00052 //std::vector<pair<reco::TransientTrack,double> > getTrackInfo() { 00053 // return TrackInfo; 00054 //} 00055 //std::vector<pair<reco::TransientTrack,double*> > getTrackInfo2() { 00056 // return TrackInfo2; 00057 //} 00058 00059 00060 // Set parameters 00061 inline void setPrimaryVertices(std::vector<TransientVertex> & 00062 ThePrimaryVertices) { 00063 thePrimaryVertices = thePrimaryVertices; // TYPO ?!?!?!?!?!?!?! 00064 } 00065 inline void setSecondaryVertices(std::vector<TransientVertex> & 00066 TheSecondaryVertices) { 00067 theSecondaryVertices = theSecondaryVertices; // TYPO ?!?!?!?!?!? 00068 } 00069 inline void setMaxSigOnDistTrackToB(double maxSigOnDistTrackToB) { 00070 MaxSigOnDistTrackToB = maxSigOnDistTrackToB; 00071 } 00072 00073 00074 private: 00075 00076 typedef std::map<reco::TransientTrack, float> TransientTrackToFloatMap; 00077 00078 std::vector<TransientVertex> *thePrimaryVertices; 00079 std::vector<TransientVertex> *theSecondaryVertices; 00080 double MaxSigOnDistTrackToB; 00081 double theIPSig; 00082 00083 // TDR Studies 00084 //static std::vector<pair<reco::TransientTrack,double> > TrackInfo; 00085 //static std::vector<pair<reco::TransientTrack,double* > > TrackInfo2; 00086 //std::vector<pair<reco::TransientTrack,double> > TrackInfo; 00087 //std::vector<pair<reco::TransientTrack,double* > > TrackInfo2; 00088 00089 TrackInfoVector theTrackInfoVector; 00090 00091 static const bool debug = false; 00092 00093 }; 00094 00095 #endif