File indexing completed on 2024-04-06 12:26:29
0001 #ifndef RecoLocalTracker_SiStripRecHitConverter_StripCPEfromTrackAngle_H
0002 #define RecoLocalTracker_SiStripRecHitConverter_StripCPEfromTrackAngle_H
0003
0004 #include "RecoLocalTracker/SiStripRecHitConverter/interface/StripCPE.h"
0005
0006 class StripCPEfromTrackAngle : public StripCPE {
0007 private:
0008 using StripCPE::localParameters;
0009
0010
0011 float mLC_P[3];
0012 float mHC_P[4][2];
0013
0014
0015 std::map<SiStripDetId::SubDetector, float> mHC_P0;
0016 std::map<SiStripDetId::SubDetector, float> mHC_P1;
0017
0018
0019 const bool useLegacyError;
0020
0021
0022
0023 const float maxChgOneMIP;
0024
0025 enum class Algo { legacy, mergeCK, chargeCK };
0026
0027 Algo m_algo;
0028
0029 public:
0030 using AlgoParam = StripCPE::AlgoParam;
0031 using AClusters = StripClusterParameterEstimator::AClusters;
0032 using ALocalValues = StripClusterParameterEstimator::ALocalValues;
0033
0034 void localParameters(AClusters const& clusters,
0035 ALocalValues& retValues,
0036 const GeomDetUnit& gd,
0037 const LocalTrajectoryParameters& ltp) const override;
0038
0039 StripClusterParameterEstimator::LocalValues localParameters(const SiStripCluster& cl,
0040 AlgoParam const& ap) const override;
0041
0042 StripClusterParameterEstimator::LocalValues localParameters(const SiStripCluster&,
0043 const GeomDetUnit&,
0044 const LocalTrajectoryParameters&) const override;
0045
0046 float stripErrorSquared(const unsigned N, const float uProj, const SiStripDetId::SubDetector loc) const;
0047 float legacyStripErrorSquared(const unsigned N, const float uProj) const;
0048
0049 StripCPEfromTrackAngle(edm::ParameterSet& conf,
0050 const MagneticField& mag,
0051 const TrackerGeometry& geom,
0052 const SiStripLorentzAngle& lorentz,
0053 const SiStripBackPlaneCorrection& backPlaneCorrection,
0054 const SiStripConfObject& confObj,
0055 const SiStripLatency& latency);
0056 };
0057 #endif