CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_0/src/RecoLocalTracker/SiStripRecHitConverter/interface/StripCPE.h

Go to the documentation of this file.
00001 #ifndef RecoLocalTracker_SiStripRecHitConverter_StripCPE_H
00002 #define RecoLocalTracker_SiStripRecHitConverter_StripCPE_H
00003 
00004 #include "RecoLocalTracker/ClusterParameterEstimator/interface/StripClusterParameterEstimator.h"
00005 
00006 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00007 #include "MagneticField/Engine/interface/MagneticField.h"
00008 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
00009 #include "CondFormats/SiStripObjects/interface/SiStripLorentzAngle.h"
00010 #include "CondFormats/SiStripObjects/interface/SiStripConfObject.h"
00011 #include "CondFormats/SiStripObjects/interface/SiStripLatency.h"
00012 #include <ext/hash_map>
00013 class StripTopology;
00014 
00015 class StripCPE : public StripClusterParameterEstimator 
00016 {
00017 public:
00018 
00019   StripClusterParameterEstimator::LocalValues localParameters( const SiStripCluster& cl, const GeomDetUnit&) const;
00020   
00021   StripCPE( edm::ParameterSet & conf, 
00022             const MagneticField&, 
00023             const TrackerGeometry&, 
00024             const SiStripLorentzAngle&,
00025             const SiStripConfObject&,
00026             const SiStripLatency&);    
00027   LocalVector driftDirection(const StripGeomDetUnit* det) const;
00028 
00029  protected:  
00030 
00031   const bool peakMode_;
00032   const TrackerGeometry & geom_;
00033   const MagneticField& magfield_ ;
00034   const SiStripLorentzAngle& LorentzAngleMap_;
00035   std::vector<double> shift;
00036   std::vector<double> xtalk1;
00037   std::vector<double> xtalk2;
00038 
00039   struct Param {
00040     Param() : topology(0) {}
00041     StripTopology const * topology;
00042     LocalVector drift;
00043     float thickness, pitch_rel_err2, maxLength;
00044     int nstrips;
00045     SiStripDetId::ModuleGeometry moduleGeom;
00046     float coveredStrips(const LocalVector&, const LocalPoint&) const;
00047   };
00048   Param const & param(const GeomDetUnit& det) const {
00049     return m_Params[det.index()-m_off];
00050   }
00051 
00052 private:
00053 
00054   void fillParams();
00055   typedef  std::vector<Param> Params;  
00056   Params m_Params;
00057   unsigned int m_off;
00058 
00059 };
00060 #endif