CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/RecoVertex/TertiaryTracksVertexFinder/interface/AddTvTrack.h

Go to the documentation of this file.
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