Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-01-21 01:40:02

0001 #ifndef RecoLocalTracker_SiStripRecHitConverter_StripCPEfromTrackAngle_H
0002 #define RecoLocalTracker_SiStripRecHitConverter_StripCPEfromTrackAngle_H
0003 
0004 #include "RecoLocalTracker/SiStripRecHitConverter/interface/StripCPE.h"
0005 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0006 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0007 
0008 class StripCPEfromTrackAngle : public StripCPE {
0009 private:
0010   using StripCPE::localParameters;
0011 
0012   //Error parameterization, low cluster width function
0013   float mLC_P[3];
0014   float mHC_P[4][2];
0015 
0016   //High cluster width is broken down by sub-det
0017   std::map<SiStripDetId::SubDetector, float> mHC_P0;
0018   std::map<SiStripDetId::SubDetector, float> mHC_P1;
0019 
0020   //Set to true if we are using the old error parameterization
0021   const bool useLegacyError;
0022 
0023   //Clusters with charge/path > this cut will use old error parameterization
0024   // (overridden by useLegacyError; negative value disables the cut)
0025   const float maxChgOneMIP;
0026 
0027   enum class Algo { legacy, mergeCK, chargeCK };
0028 
0029   Algo m_algo;
0030 
0031 public:
0032   static void fillPSetDescription(edm::ParameterSetDescription& desc);
0033 
0034   using AlgoParam = StripCPE::AlgoParam;
0035   using AClusters = StripClusterParameterEstimator::AClusters;
0036   using ALocalValues = StripClusterParameterEstimator::ALocalValues;
0037 
0038   void localParameters(AClusters const& clusters,
0039                        ALocalValues& retValues,
0040                        const GeomDetUnit& gd,
0041                        const LocalTrajectoryParameters& ltp) const override;
0042 
0043   StripClusterParameterEstimator::LocalValues localParameters(const SiStripCluster& cl,
0044                                                               AlgoParam const& ap) const override;
0045 
0046   StripClusterParameterEstimator::LocalValues localParameters(const SiStripCluster&,
0047                                                               const GeomDetUnit&,
0048                                                               const LocalTrajectoryParameters&) const override;
0049 
0050   float stripErrorSquared(const unsigned N, const float uProj, const SiStripDetId::SubDetector loc) const;
0051   float legacyStripErrorSquared(const unsigned N, const float uProj) const;
0052 
0053   StripCPEfromTrackAngle(edm::ParameterSet& conf,
0054                          const MagneticField& mag,
0055                          const TrackerGeometry& geom,
0056                          const SiStripLorentzAngle& lorentz,
0057                          const SiStripBackPlaneCorrection& backPlaneCorrection,
0058                          const SiStripConfObject& confObj,
0059                          const SiStripLatency& latency);
0060 };
0061 #endif