00001 #ifndef RecoLocalTracker_SiPixelRecHits_PixelCPETemplateReco_H 00002 #define RecoLocalTracker_SiPixelRecHits_PixelCPETemplateReco_H 00003 00004 #include "RecoLocalTracker/SiPixelRecHits/interface/PixelCPEBase.h" 00005 00006 // Already in the base class 00007 //#include "Geometry/CommonDetUnit/interface/GeomDetType.h" 00008 //#include "Geometry/TrackerGeometryBuilder/interface/PixelGeomDetUnit.h" 00009 //#include "Geometry/TrackerGeometryBuilder/interface/RectangularPixelTopology.h" 00010 //#include "Geometry/CommonDetAlgo/interface/MeasurementPoint.h" 00011 //#include "Geometry/CommonDetAlgo/interface/MeasurementError.h" 00012 //#include "Geometry/Surface/interface/GloballyPositioned.h" 00013 //#include "FWCore/ParameterSet/interface/ParameterSet.h" 00014 00015 00016 #ifndef SI_PIXEL_TEMPLATE_STANDALONE 00017 #include "RecoLocalTracker/SiPixelRecHits/interface/SiPixelTemplate.h" 00018 #else 00019 #include "SiPixelTemplate.h" 00020 #endif 00021 00022 #include <utility> 00023 #include <vector> 00024 00025 00026 #if 0 00027 00031 #endif 00032 00033 class MagneticField; 00034 class PixelCPETemplateReco : public PixelCPEBase 00035 { 00036 public: 00037 // PixelCPETemplateReco( const DetUnit& det ); 00038 PixelCPETemplateReco(edm::ParameterSet const& conf, const MagneticField *, const SiPixelLorentzAngle *, const SiPixelTemplateDBObject *); 00039 ~PixelCPETemplateReco(); 00040 00041 // We only need to implement measurementPosition, since localPosition() from 00042 // PixelCPEBase will call it and do the transformation 00043 // Gavril : put it back 00044 LocalPoint localPosition (const SiPixelCluster& cluster, const GeomDetUnit & det) const; 00045 00046 // However, we do need to implement localError(). 00047 LocalError localError (const SiPixelCluster& cl, const GeomDetUnit & det) const; 00048 00049 protected: 00050 //--- These functions are no longer needed, yet they are declared 00051 //--- pure virtual in the base class. 00052 float xpos( const SiPixelCluster& ) const { return -999000.0; } // &&& should abort 00053 float ypos( const SiPixelCluster& ) const { return -999000.0; } // &&& should abort 00054 00055 private: 00056 // Template storage 00057 mutable SiPixelTemplate templ_ ; 00058 //--------------------------- 00059 // [Morris, 6/25/08] 00060 // Cache the template ID number 00061 mutable int templID_; // in general this will change in time and via DetID 00062 00063 // The result of PixelTemplateReco2D 00064 mutable float templXrec_ ; 00065 mutable float templYrec_ ; 00066 mutable float templSigmaX_ ; 00067 mutable float templSigmaY_ ; 00068 // Add new information produced by SiPixelTemplateReco::PixelTempReco2D &&& 00069 // These can only be accessed if we change silicon pixel data formats and add them to the rechit 00070 mutable float templProbX_ ; 00071 mutable float templProbY_ ; 00072 00073 mutable float templProbQ_; 00074 00075 mutable int templQbin_ ; 00076 00077 mutable int speed_ ; 00078 00079 mutable int ierr; 00080 00081 mutable bool UseClusterSplitter_; 00082 00083 mutable bool DoCosmics_; 00084 00085 mutable bool LoadTemplatesFromDB_; 00086 00087 }; 00088 00089 #endif 00090 00091 00092 00093