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