CMS 3D CMS Logo

SiStripRecHitMatcher.h

Go to the documentation of this file.
00001 #ifndef RECOLOCALTRACKER_SISTRIPCLUSTERIZER_SISTRIPRECHITMATCH_H
00002 #define RECOLOCALTRACKER_SISTRIPCLUSTERIZER_SISTRIPRECHITMATCH_H
00003 
00004 #include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit2D.h"
00005 #include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit2DCollection.h"
00006 #include "DataFormats/TrackerRecHit2D/interface/SiStripMatchedRecHit2D.h"
00007 #include "DataFormats/TrackerRecHit2D/interface/SiStripMatchedRecHit2DCollection.h"
00008 #include "DataFormats/DetId/interface/DetId.h"
00009 #include "Geometry/CommonDetUnit/interface/GeomDetUnit.h"
00010 #include "Geometry/CommonTopologies/interface/StripTopology.h"
00011 
00012 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h"
00013 
00014 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00015 
00016 class GluedGeomDet;
00017 
00018 #include <cfloat>
00019 
00020 
00021 #include <boost/function.hpp>
00022 
00023 class SiStripRecHitMatcher {
00024 public:
00025   
00026   // may become a template argument
00027   typedef SiStripMatchedRecHit2DCollectionNew::FastFiller CollectorMatched;
00028 
00029   typedef SiStripRecHit2DCollectionNew::DetSet::const_iterator RecHitIterator;
00030   typedef std::vector<const SiStripRecHit2D *>              SimpleHitCollection;
00031   typedef SimpleHitCollection::const_iterator               SimpleHitIterator;
00032 
00033   typedef boost::function<void(SiStripMatchedRecHit2D const&)>    Collector;
00034 
00035 
00036   typedef std::pair<LocalPoint,LocalPoint>                  StripPosition; 
00037 
00038   SiStripRecHitMatcher(const edm::ParameterSet& conf);
00039   SiStripRecHitMatcher(const double theScale);
00040   
00041 
00042 
00043   SiStripMatchedRecHit2D * match(const SiStripRecHit2D *monoRH, 
00044                                  const SiStripRecHit2D *stereoRH,
00045                                  const GluedGeomDet* gluedDet,
00046                                  LocalVector trackdirection) const;
00047   
00048   SiStripMatchedRecHit2D*  match(const SiStripMatchedRecHit2D *originalRH, 
00049                                  const GluedGeomDet* gluedDet,
00050                                  LocalVector trackdirection) const;
00051   
00052   edm::OwnVector<SiStripMatchedRecHit2D> 
00053   match( const SiStripRecHit2D *monoRH,
00054          RecHitIterator begin, RecHitIterator end, 
00055          const GluedGeomDet* gluedDet) const {
00056     return match(monoRH,begin, end, gluedDet,LocalVector(0.,0.,0.));
00057   }
00058 
00059   edm::OwnVector<SiStripMatchedRecHit2D> 
00060   match( const SiStripRecHit2D *monoRH,
00061          RecHitIterator begin, RecHitIterator end,
00062          const GluedGeomDet* gluedDet,
00063          LocalVector trackdirection) const;
00064 
00065   edm::OwnVector<SiStripMatchedRecHit2D> 
00066   match( const SiStripRecHit2D *monoRH,
00067          SimpleHitIterator begin, SimpleHitIterator end,
00068          const GluedGeomDet* gluedDet,
00069          LocalVector trackdirection) const;
00070 
00071   void
00072   match( const SiStripRecHit2D *monoRH,
00073          RecHitIterator begin, RecHitIterator end,
00074          CollectorMatched & collector,
00075          const GluedGeomDet* gluedDet,
00076          LocalVector trackdirection) const;
00077 
00078   void
00079   match( const SiStripRecHit2D *monoRH,
00080          SimpleHitIterator begin, SimpleHitIterator end,
00081          CollectorMatched & collector,
00082          const GluedGeomDet* gluedDet,
00083          LocalVector trackdirection) const;
00084 
00085 
00086 
00087 
00088   // project strip coordinates on Glueddet
00089 
00090   StripPosition project(const GeomDetUnit *det,const GluedGeomDet* glueddet,StripPosition strip,LocalVector trackdirection) const;
00091 
00092 
00093   //private:
00094 
00095  
00096   void
00097   match( const SiStripRecHit2D *monoRH,
00098          SimpleHitIterator begin, SimpleHitIterator end,
00099          edm::OwnVector<SiStripMatchedRecHit2D> & collector, 
00100          const GluedGeomDet* gluedDet,
00101          LocalVector trackdirection) const;
00102 
00103 
00104   void
00105   match( const SiStripRecHit2D *monoRH,
00106          SimpleHitIterator begin, SimpleHitIterator end,
00107          std::vector<SiStripMatchedRecHit2D*> & collector, 
00108          const GluedGeomDet* gluedDet,
00109          LocalVector trackdirection) const;
00110 
00111 
00113 
00114   void
00115   match( const SiStripRecHit2D *monoRH,
00116          SimpleHitIterator begin, SimpleHitIterator end,
00117          Collector & collector, 
00118          const GluedGeomDet* gluedDet,
00119          LocalVector trackdirection) const;
00120 
00121 
00122   float scale_;
00123 
00124 };
00125 
00126 #endif

Generated on Tue Jun 9 17:44:00 2009 for CMSSW by  doxygen 1.5.4