9 float stripErrorSquared(
const unsigned N,
const float uProj) {
10 if( (
float(N)-uProj) > 3.5
f )
11 return float(N*N)/12.f;
13 const float P1=-0.339f;
15 const float P3=0.279f;
16 const float uerr = P1*uProj*
std::exp(-uProj*P2)+P3;
42 const unsigned N = cluster.
amplitudes().size();
59 float uerr2 = -99999.9;
71 (split_cluster_error/10000.0 / local_pitch ) *
72 (split_cluster_error/10000.0 / local_pitch );
78 uerr2 = stripErrorSquared( N, fabs(fullProjection) );
89 float template_x_pos = -9999999.9;
90 float template_x_err = -9999999.9;
131 if ( (
id > -9999999) && !(stripdet ==
nullptr) )
134 float cotalpha = -9999999.9;
135 float cotbeta = -9999999.9;
136 float locBy = -9999999.9;
137 std::vector<float> vec_cluster_charge;
140 float xrec = -9999999.9;
141 float sigmax = -9999999.9;
142 float probx = -9999999.9;
143 int qbin = -9999999 ;
145 float probQ = -9999999.9;
153 float locx = localDir.
x();
154 float locy = localDir.
y();
155 float locz = localDir.
z();
156 cotalpha = locx/locz;
161 for (
int i=0;
i<cluster_size; ++
i)
163 vec_cluster_charge.push_back( (
float)( (cluster.
amplitudes())[
i] ) );
167 float measurement_position_first_strip_center = (
float)(cluster.
firstStrip()) + 0.5;
193 template_x_pos = xrec / 10000.0 + local_position_first_strip_center.
x();
197 template_x_err = split_cluster_error/10000.0;
201 template_x_err = sigmax/10000.0;
214 LocalPoint template_lp( template_x_pos , default_lp.
y() , default_lp.
z() );
215 LocalError template_le( template_x_err*template_x_err, default_le.
xy(), default_le.
yy() );
218 final_lv = std::make_pair( template_lp, template_le );
225 final_lv = std::make_pair( default_lp, default_le );
StripClusterParameterEstimator::LocalValues localParameters(const SiStripCluster &, const GeomDetUnit &, const LocalTrajectoryParameters &) const override
LocalPoint position() const
Local x and y position coordinates.
virtual LocalError localError(float strip, float stripErr2) const =0
StripTopology const * topology
std::pair< LocalPoint, LocalError > LocalValues
uint16_t firstStrip() const
std::vector< SiStripTemplateStore > theStripTemp_
LocalVector toLocal(const reco::Track::Vector &v, const Surface &s)
bool use_strip_split_cluster_errors
const Plane & surface() const
The nominal surface of the GeomDet.
float backplanecorrection
float getSplitClusterError() const
AlgebraicVector5 vector() const
SiStripDetId::ModuleGeometry moduleGeom
virtual LocalPoint localPosition(float strip) const =0
int StripTempReco1D(int id, float cotalpha, float cotbeta, float locBy, std::vector< float > &cluster, SiStripTemplate &templ, float &xrec, float &sigmax, float &probx, int &qbin, int speed, float &probQ)
DetId geographicalId() const
The label of this GeomDet.
const MagneticField & magfield_
LocalVector momentum() const
Momentum vector in the local frame.
float coveredStrips(const LocalVector &, const LocalPoint &) const
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
Detector identifier class for the strip tracker.
virtual float localPitch(const LocalPoint &) const =0
Param const & param(const GeomDetUnit &det) const
const PositionType & position() const
const std::vector< uint8_t > & amplitudes() const