CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/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/SiStripBackPlaneCorrection.h"
00011 #include "CondFormats/SiStripObjects/interface/SiStripConfObject.h"
00012 #include "CondFormats/SiStripObjects/interface/SiStripLatency.h"
00013 #include <ext/hash_map>
00014 class StripTopology;
00015 
00016 class StripCPE : public StripClusterParameterEstimator 
00017 {
00018 public:
00019 
00020   StripClusterParameterEstimator::LocalValues localParameters( const SiStripCluster& cl, const GeomDetUnit&) const;
00021   
00022   StripCPE( edm::ParameterSet & conf, 
00023             const MagneticField&, 
00024             const TrackerGeometry&, 
00025             const SiStripLorentzAngle&,
00026             const SiStripBackPlaneCorrection&,
00027             const SiStripConfObject&,
00028             const SiStripLatency&);    
00029   LocalVector driftDirection(const StripGeomDetUnit* det) const;
00030 
00031  protected:  
00032 
00033   const bool peakMode_;
00034   const TrackerGeometry & geom_;
00035   const MagneticField& magfield_ ;
00036   const SiStripLorentzAngle& LorentzAngleMap_;
00037   const SiStripBackPlaneCorrection& BackPlaneCorrectionMap_;
00038   std::vector<float> xtalk1;
00039   std::vector<float> xtalk2;
00040 
00041   struct Param {
00042     Param() : topology(0) {}
00043     StripTopology const * topology;
00044     LocalVector drift;
00045     float thickness, pitch_rel_err2, maxLength;
00046     int nstrips;
00047     float backplanecorrection;
00048     SiStripDetId::ModuleGeometry moduleGeom;
00049     float coveredStrips(const LocalVector&, const LocalPoint&) const;
00050   };
00051   Param const & param(const GeomDetUnit& det) const {
00052     return m_Params[det.index()-m_off];
00053   }
00054 
00055 private:
00056 
00057   void fillParams();
00058   typedef  std::vector<Param> Params;  
00059   Params m_Params;
00060   unsigned int m_off;
00061 
00062 };
00063 #endif