Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:26:23

0001 #ifndef RecoLocalTracker_SiPixelRecHits_PixelCPETemplateReco_H
0002 #define RecoLocalTracker_SiPixelRecHits_PixelCPETemplateReco_H
0003 
0004 #include "RecoLocalTracker/SiPixelRecHits/interface/PixelCPEBase.h"
0005 
0006 // Already in the base class

0007 //#include "Geometry/CommonDetUnit/interface/GeomDetType.h"

0008 //#include "Geometry/CommonDetUnit/interface/PixelGeomDetUnit.h"

0009 //#include "Geometry/TrackerGeometryBuilder/interface/RectangularPixelTopology.h"

0010 //#include "Geometry/CommonDetAlgo/interface/MeasurementPoint.h"

0011 //#include "Geometry/CommonDetAlgo/interface/MeasurementError.h"

0012 //#include "Geometry/Surface/interface/GloballyPositioned.h"

0013 //#include "FWCore/ParameterSet/interface/ParameterSet.h"

0014 
0015 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
0016 #include "CondFormats/SiPixelTransient/interface/SiPixelTemplate.h"
0017 #else
0018 #include "SiPixelTemplate.h"
0019 #endif
0020 
0021 #include <utility>
0022 #include <vector>
0023 
0024 #if 0
0025 /** \class PixelCPETemplateReco

0026  * Perform the position and error evaluation of pixel hits using

0027  * the Det angle to estimate the track impact angle

0028  */
0029 #endif
0030 
0031 class MagneticField;
0032 class PixelCPETemplateReco : public PixelCPEBase {
0033 public:
0034   struct ClusterParamTemplate : ClusterParam {
0035     ClusterParamTemplate(const SiPixelCluster &cl) : ClusterParam(cl) {}
0036     // The result of PixelTemplateReco2D

0037     float templXrec_;
0038     float templYrec_;
0039     float templSigmaX_;
0040     float templSigmaY_;
0041     // Add new information produced by SiPixelTemplateReco::PixelTempReco2D &&&

0042     // These can only be accessed if we change silicon pixel data formats and add them to the rechit

0043     float templProbX_;
0044     float templProbY_;
0045 
0046     float templProbQ_;
0047 
0048     int templQbin_;
0049 
0050     int ierr;
0051   };
0052 
0053   // PixelCPETemplateReco( const DetUnit& det );

0054   PixelCPETemplateReco(edm::ParameterSet const &conf,
0055                        const MagneticField *,
0056                        const TrackerGeometry &,
0057                        const TrackerTopology &,
0058                        const SiPixelLorentzAngle *,
0059                        const std::vector<SiPixelTemplateStore> *,
0060                        const SiPixelTemplateDBObject *);
0061 
0062   ~PixelCPETemplateReco() override;
0063 
0064   static void fillPSetDescription(edm::ParameterSetDescription &desc);
0065 
0066 private:
0067   std::unique_ptr<ClusterParam> createClusterParam(const SiPixelCluster &cl) const override;
0068 
0069   // We only need to implement measurementPosition, since localPosition() from

0070   // PixelCPEBase will call it and do the transformation

0071   // Gavril : put it back

0072   LocalPoint localPosition(DetParam const &theDetParam, ClusterParam &theClusterParam) const override;
0073 
0074   // However, we do need to implement localError().

0075   LocalError localError(DetParam const &theDetParam, ClusterParam &theClusterParam) const override;
0076 
0077   // Template storage

0078   std::vector<SiPixelTemplateStore> thePixelTempCache_;
0079   const std::vector<SiPixelTemplateStore> *thePixelTemp_;
0080 
0081   int speed_;
0082 
0083   bool UseClusterSplitter_;
0084 
0085   // Template file management (when not getting the templates from the DB)

0086   int barrelTemplateID_;
0087   int forwardTemplateID_;
0088   std::string templateDir_;
0089 
0090   //bool DoCosmics_;

0091   //bool LoadTemplatesFromDB_;

0092 };
0093 
0094 #endif