CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
TkClonerImpl Class Referencefinal

#include <TkClonerImpl.h>

Inheritance diagram for TkClonerImpl:
TkCloner

Public Member Functions

virtual TrackingRecHit::ConstRecHitPointer makeShared (SiPixelRecHit const &hit, TrajectoryStateOnSurface const &tsos) const override
 
virtual TrackingRecHit::ConstRecHitPointer makeShared (SiStripRecHit2D const &hit, TrajectoryStateOnSurface const &tsos) const override
 
virtual TrackingRecHit::ConstRecHitPointer makeShared (SiStripRecHit1D const &hit, TrajectoryStateOnSurface const &tsos) const override
 
virtual TrackingRecHit::ConstRecHitPointer makeShared (SiStripMatchedRecHit2D const &hit, TrajectoryStateOnSurface const &tsos) const override
 
virtual TrackingRecHit::ConstRecHitPointer makeShared (ProjectedSiStripRecHit2D const &hit, TrajectoryStateOnSurface const &tsos) const override
 
virtual TrackingRecHit::ConstRecHitPointer makeShared (Phase2TrackerRecHit1D const &hit, TrajectoryStateOnSurface const &tsos) const override
 
virtual std::unique_ptr< SiPixelRecHitoperator() (SiPixelRecHit const &hit, TrajectoryStateOnSurface const &tsos) const override
 
virtual std::unique_ptr< SiStripRecHit2Doperator() (SiStripRecHit2D const &hit, TrajectoryStateOnSurface const &tsos) const override
 
virtual std::unique_ptr< SiStripRecHit1Doperator() (SiStripRecHit1D const &hit, TrajectoryStateOnSurface const &tsos) const override
 
virtual std::unique_ptr< SiStripMatchedRecHit2Doperator() (SiStripMatchedRecHit2D const &hit, TrajectoryStateOnSurface const &tsos) const override
 
virtual std::unique_ptr< ProjectedSiStripRecHit2Doperator() (ProjectedSiStripRecHit2D const &hit, TrajectoryStateOnSurface const &tsos) const override
 
virtual std::unique_ptr< Phase2TrackerRecHit1Doperator() (Phase2TrackerRecHit1D const &hit, TrajectoryStateOnSurface const &tsos) const override
 
std::unique_ptr< ProjectedSiStripRecHit2Dproject (SiStripMatchedRecHit2D const &hit, bool mono, TrajectoryStateOnSurface const &tsos) const
 
 TkClonerImpl ()
 
 TkClonerImpl (const PixelClusterParameterEstimator *ipixelCPE, const StripClusterParameterEstimator *istripCPE, const SiStripRecHitMatcher *iMatcher)
 
 TkClonerImpl (const PixelClusterParameterEstimator *ipixelCPE, const ClusterParameterEstimator< Phase2TrackerCluster1D > *iPhase2OTCPE)
 
- Public Member Functions inherited from TkCloner
TrackingRecHit::ConstRecHitPointer makeShared (TrackingRecHit::ConstRecHitPointer const &hit, TrajectoryStateOnSurface const &tsos) const
 
TrackingRecHitoperator ()[[cms
 

Private Attributes

const ClusterParameterEstimator< Phase2TrackerCluster1D > * phase2TrackerCPE
 
const PixelClusterParameterEstimatorpixelCPE
 
const StripClusterParameterEstimatorstripCPE
 
const SiStripRecHitMatchertheMatcher
 

Detailed Description

Definition at line 13 of file TkClonerImpl.h.

Constructor & Destructor Documentation

TkClonerImpl::TkClonerImpl ( )
inline

Definition at line 15 of file TkClonerImpl.h.

15 {}
TkClonerImpl::TkClonerImpl ( const PixelClusterParameterEstimator ipixelCPE,
const StripClusterParameterEstimator istripCPE,
const SiStripRecHitMatcher iMatcher 
)
inline

Definition at line 16 of file TkClonerImpl.h.

19  : pixelCPE(ipixelCPE), stripCPE(istripCPE), theMatcher(iMatcher), phase2TrackerCPE(0){}
const PixelClusterParameterEstimator * pixelCPE
Definition: TkClonerImpl.h:46
const StripClusterParameterEstimator * stripCPE
Definition: TkClonerImpl.h:47
const ClusterParameterEstimator< Phase2TrackerCluster1D > * phase2TrackerCPE
Definition: TkClonerImpl.h:49
const SiStripRecHitMatcher * theMatcher
Definition: TkClonerImpl.h:48
TkClonerImpl::TkClonerImpl ( const PixelClusterParameterEstimator ipixelCPE,
const ClusterParameterEstimator< Phase2TrackerCluster1D > *  iPhase2OTCPE 
)
inline

Definition at line 20 of file TkClonerImpl.h.

References TkCloner::makeShared(), makeShared(), TkCloner::operator(), operator()(), and project().

22  : pixelCPE(ipixelCPE), stripCPE(0), theMatcher(0), phase2TrackerCPE(iPhase2OTCPE){}
const PixelClusterParameterEstimator * pixelCPE
Definition: TkClonerImpl.h:46
const StripClusterParameterEstimator * stripCPE
Definition: TkClonerImpl.h:47
const ClusterParameterEstimator< Phase2TrackerCluster1D > * phase2TrackerCPE
Definition: TkClonerImpl.h:49
const SiStripRecHitMatcher * theMatcher
Definition: TkClonerImpl.h:48

Member Function Documentation

TrackingRecHit::ConstRecHitPointer TkClonerImpl::makeShared ( SiPixelRecHit const &  hit,
TrajectoryStateOnSurface const &  tsos 
) const
overridevirtual

Implements TkCloner.

Definition at line 57 of file TkClonerImpl.cc.

References SiPixelRecHit::cluster(), TrackingRecHit::det(), TrackerSingleRecHit::detUnit(), PixelClusterParameterEstimator::getParameters(), and pixelCPE.

Referenced by DAFTrackProducerAlgorithm::filter(), TrackingRecHitPropagator::project(), TkClonerImpl(), and SiTrackerMultiRecHitUpdator::update().

57  {
58  // std::cout << "cloning " << typeid(hit).name() << std::endl;
59  const SiPixelCluster& clust = *hit.cluster();
60  auto && params = pixelCPE->getParameters( clust, *hit.detUnit(), tsos);
61  return std::make_shared<SiPixelRecHit>(std::get<0>(params), std::get<1>(params), std::get<2>(params), *hit.det(), hit.cluster());
62 }
virtual ReturnType getParameters(const SiPixelCluster &cl, const GeomDetUnit &det) const =0
const PixelClusterParameterEstimator * pixelCPE
Definition: TkClonerImpl.h:46
Pixel cluster – collection of neighboring pixels above threshold.
TrackingRecHit::ConstRecHitPointer TkClonerImpl::makeShared ( SiStripRecHit2D const &  hit,
TrajectoryStateOnSurface const &  tsos 
) const
overridevirtual

FIXME: this only uses the first cluster and ignores the others

Implements TkCloner.

Definition at line 64 of file TkClonerImpl.cc.

References TrackingRecHit::det(), TrackerSingleRecHit::detUnit(), StripClusterParameterEstimator::localParameters(), TrackerSingleRecHit::omniCluster(), TrackerSingleRecHit::stripCluster(), and stripCPE.

64  {
65  // std::cout << "cloning " << typeid(hit).name() << std::endl;
67  const SiStripCluster& clust = hit.stripCluster();
69  stripCPE->localParameters( clust, *hit.detUnit(), tsos);
70  return std::make_shared<SiStripRecHit2D>(lv.first, lv.second, *hit.det(), hit.omniCluster());
71 }
virtual void localParameters(AClusters const &clusters, ALocalValues &retValues, const GeomDetUnit &gd, const LocalTrajectoryParameters &ltp) const
std::pair< LocalPoint, LocalError > LocalValues
const StripClusterParameterEstimator * stripCPE
Definition: TkClonerImpl.h:47
TrackingRecHit::ConstRecHitPointer TkClonerImpl::makeShared ( SiStripRecHit1D const &  hit,
TrajectoryStateOnSurface const &  tsos 
) const
overridevirtual

FIXME: this only uses the first cluster and ignores the others

Implements TkCloner.

Definition at line 73 of file TkClonerImpl.cc.

References TrackingRecHit::det(), TrackerSingleRecHit::detUnit(), StripClusterParameterEstimator::localParameters(), hpstanc_transforms::max, TrackerSingleRecHit::omniCluster(), TrackerSingleRecHit::stripCluster(), and stripCPE.

73  {
74  // std::cout << "cloning " << typeid(hit).name() << std::endl;
76  const SiStripCluster& clust = hit.stripCluster();
78  stripCPE->localParameters( clust, *hit.detUnit(), tsos);
79  LocalError le(lv.second.xx(),0.,std::numeric_limits<float>::max()); //Correct??
80  return std::make_shared<SiStripRecHit1D>(lv.first, le, *hit.det(), hit.omniCluster());
81 }
virtual void localParameters(AClusters const &clusters, ALocalValues &retValues, const GeomDetUnit &gd, const LocalTrajectoryParameters &ltp) const
std::pair< LocalPoint, LocalError > LocalValues
const StripClusterParameterEstimator * stripCPE
Definition: TkClonerImpl.h:47
TrackingRecHit::ConstRecHitPointer TkClonerImpl::makeShared ( SiStripMatchedRecHit2D const &  hit,
TrajectoryStateOnSurface const &  tsos 
) const
overridevirtual

std::cout << "cloning " << typeid(hit).name() << std::endl;

Implements TkCloner.

Definition at line 148 of file TkClonerImpl.cc.

148  {
150  return TrackingRecHit::ConstRecHitPointer((*this)(hit,tsos));
151 }
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
TrackingRecHit::ConstRecHitPointer TkClonerImpl::makeShared ( ProjectedSiStripRecHit2D const &  hit,
TrajectoryStateOnSurface const &  tsos 
) const
overridevirtual

Implements TkCloner.

Definition at line 153 of file TkClonerImpl.cc.

153  {
154  // std::cout << "cloning " << typeid(hit).name() << std::endl;
155  return TrackingRecHit::ConstRecHitPointer((*this)(hit,tsos));
156 }
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
TrackingRecHit::ConstRecHitPointer TkClonerImpl::makeShared ( Phase2TrackerRecHit1D const &  hit,
TrajectoryStateOnSurface const &  tsos 
) const
overridevirtual
std::unique_ptr< SiPixelRecHit > TkClonerImpl::operator() ( SiPixelRecHit const &  hit,
TrajectoryStateOnSurface const &  tsos 
) const
overridevirtual

Implements TkCloner.

Definition at line 27 of file TkClonerImpl.cc.

References SiPixelRecHit::cluster(), TrackingRecHit::det(), TrackerSingleRecHit::detUnit(), PixelClusterParameterEstimator::getParameters(), and pixelCPE.

Referenced by TkClonerImpl().

27  {
28  const SiPixelCluster& clust = *hit.cluster();
29  auto && params = pixelCPE->getParameters( clust, *hit.detUnit(), tsos);
30  return std::unique_ptr<SiPixelRecHit>(new SiPixelRecHit(std::get<0>(params), std::get<1>(params), std::get<2>(params), *hit.det(), hit.cluster()));
31 }
virtual ReturnType getParameters(const SiPixelCluster &cl, const GeomDetUnit &det) const =0
const PixelClusterParameterEstimator * pixelCPE
Definition: TkClonerImpl.h:46
Pixel cluster – collection of neighboring pixels above threshold.
Our base class.
Definition: SiPixelRecHit.h:23
std::unique_ptr< SiStripRecHit2D > TkClonerImpl::operator() ( SiStripRecHit2D const &  hit,
TrajectoryStateOnSurface const &  tsos 
) const
overridevirtual

FIXME: this only uses the first cluster and ignores the others

Implements TkCloner.

Definition at line 33 of file TkClonerImpl.cc.

References TrackingRecHit::det(), TrackerSingleRecHit::detUnit(), StripClusterParameterEstimator::localParameters(), TrackerSingleRecHit::omniCluster(), TrackerSingleRecHit::stripCluster(), and stripCPE.

33  {
35  const SiStripCluster& clust = hit.stripCluster();
37  stripCPE->localParameters( clust, *hit.detUnit(), tsos);
38  return std::unique_ptr<SiStripRecHit2D>{new SiStripRecHit2D(lv.first, lv.second, *hit.det(), hit.omniCluster())};
39 }
virtual void localParameters(AClusters const &clusters, ALocalValues &retValues, const GeomDetUnit &gd, const LocalTrajectoryParameters &ltp) const
std::pair< LocalPoint, LocalError > LocalValues
const StripClusterParameterEstimator * stripCPE
Definition: TkClonerImpl.h:47
std::unique_ptr< SiStripRecHit1D > TkClonerImpl::operator() ( SiStripRecHit1D const &  hit,
TrajectoryStateOnSurface const &  tsos 
) const
overridevirtual

FIXME: this only uses the first cluster and ignores the others

Implements TkCloner.

Definition at line 41 of file TkClonerImpl.cc.

References TrackingRecHit::det(), TrackerSingleRecHit::detUnit(), StripClusterParameterEstimator::localParameters(), hpstanc_transforms::max, TrackerSingleRecHit::omniCluster(), TrackerSingleRecHit::stripCluster(), and stripCPE.

41  {
43  const SiStripCluster& clust = hit.stripCluster();
45  stripCPE->localParameters( clust, *hit.detUnit(), tsos);
46  LocalError le(lv.second.xx(),0.,std::numeric_limits<float>::max()); //Correct??
47  return std::unique_ptr<SiStripRecHit1D>{new SiStripRecHit1D(lv.first, le, *hit.det(), hit.omniCluster())};
48 }
virtual void localParameters(AClusters const &clusters, ALocalValues &retValues, const GeomDetUnit &gd, const LocalTrajectoryParameters &ltp) const
std::pair< LocalPoint, LocalError > LocalValues
const StripClusterParameterEstimator * stripCPE
Definition: TkClonerImpl.h:47
std::unique_ptr< SiStripMatchedRecHit2D > TkClonerImpl::operator() ( SiStripMatchedRecHit2D const &  hit,
TrajectoryStateOnSurface const &  tsos 
) const
overridevirtual

Implements TkCloner.

Definition at line 119 of file TkClonerImpl.cc.

References SiStripMatchedRecHit2D::clone(), TrackingRecHit::det(), LocalTrajectoryParameters::directionNotNormalized(), TrajectoryStateOnSurface::isValid(), StripClusterParameterEstimator::localParameters(), TrajectoryStateOnSurface::localParameters(), SiStripRecHitMatcher::match(), SiStripMatchedRecHit2D::monoCluster(), SiStripMatchedRecHit2D::monoClusterRef(), GluedGeomDet::monoDet(), GeomDet::position(), SiStripMatchedRecHit2D::stereoCluster(), SiStripMatchedRecHit2D::stereoClusterRef(), GluedGeomDet::stereoDet(), stripCPE, GeomDet::surface(), groupFilesInBlocks::temp, theMatcher, and GloballyPositioned< T >::toLocal().

119  {
120  const GeomDet * det = hit.det();
121  const GluedGeomDet *gdet = static_cast<const GluedGeomDet *> (det);
122  LocalVector tkDir = (tsos.isValid() ? tsos.localParameters().directionNotNormalized() :
123  det->surface().toLocal( det->position()-GlobalPoint(0,0,0)));
124 
125  const SiStripCluster& monoclust = hit.monoCluster();
126  const SiStripCluster& stereoclust = hit.stereoCluster();
127 
129  stripCPE->localParameters( monoclust, *gdet->monoDet(), tsos);
131  stripCPE->localParameters( stereoclust, *gdet->stereoDet(), gluedToStereo(tsos, gdet));
132 
133  SiStripRecHit2D monoHit = SiStripRecHit2D( lvMono.first, lvMono.second,
134  *gdet->monoDet(),
135  hit.monoClusterRef());
136  SiStripRecHit2D stereoHit = SiStripRecHit2D( lvStereo.first, lvStereo.second,
137  *gdet->stereoDet(),
138  hit.stereoClusterRef());
139 
140  // return theMatcher->match(&monoHit,&stereoHit,gdet,tkDir,true);
141  std::unique_ptr<SiStripMatchedRecHit2D> temp = theMatcher->match(&monoHit,&stereoHit,gdet,tkDir,false);
142  if(temp.get() == nullptr) {
143  temp = std::unique_ptr<SiStripMatchedRecHit2D>(hit.clone());
144  }
145  return temp;
146 }
const GeomDetUnit * monoDet() const
Definition: GluedGeomDet.h:20
virtual void localParameters(AClusters const &clusters, ALocalValues &retValues, const GeomDetUnit &gd, const LocalTrajectoryParameters &ltp) const
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
std::pair< LocalPoint, LocalError > LocalValues
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:42
const Surface::PositionType & position() const
The position (origin of the R.F.)
Definition: GeomDet.h:48
const StripClusterParameterEstimator * stripCPE
Definition: TkClonerImpl.h:47
std::unique_ptr< SiStripMatchedRecHit2D > match(const SiStripRecHit2D *monoRH, const SiStripRecHit2D *stereoRH, const GluedGeomDet *gluedDet, LocalVector trackdirection, bool force) const
LocalPoint toLocal(const GlobalPoint &gp) const
const SiStripRecHitMatcher * theMatcher
Definition: TkClonerImpl.h:48
const GeomDetUnit * stereoDet() const
Definition: GluedGeomDet.h:21
std::unique_ptr< ProjectedSiStripRecHit2D > TkClonerImpl::operator() ( ProjectedSiStripRecHit2D const &  hit,
TrajectoryStateOnSurface const &  tsos 
) const
overridevirtual

Implements TkCloner.

Definition at line 158 of file TkClonerImpl.cc.

References delta, TrackingRecHit::det(), f, TrajectoryStateOnSurface::isValid(), TrajectoryStateOnSurface::localDirection(), StripClusterParameterEstimator::localParameters(), TrackerSingleRecHit::omniCluster(), ProjectedSiStripRecHit2D::originalDet(), GeomDet::position(), LocalError::rotate(), TrackerSingleRecHit::stripCluster(), stripCPE, GeomDet::surface(), GloballyPositioned< T >::toLocal(), PV3DBase< T, PVType, FrameType >::x(), LocalError::xx(), LocalError::xy(), PV3DBase< T, PVType, FrameType >::y(), LocalError::yy(), and PV3DBase< T, PVType, FrameType >::z().

158  {
159  const SiStripCluster& clust = hit.stripCluster();
160  const GeomDetUnit * gdu = reinterpret_cast<const GeomDetUnit *>(hit.originalDet());
161  //if (!gdu) std::cout<<"no luck dude"<<std::endl;
163 
164  // project...
165  const GeomDet & det = *hit.det();
166  const BoundPlane& gluedPlane = det.surface();
167  const BoundPlane& hitPlane = gdu->surface();
168  LocalVector tkDir = (tsos.isValid() ? tsos.localDirection() :
169  det.surface().toLocal( det.position()-GlobalPoint(0,0,0)));
170 
171  auto delta = gluedPlane.localZ( hitPlane.position());
172  LocalVector ldir = tkDir;
173  LocalPoint lhitPos = gluedPlane.toLocal( hitPlane.toGlobal(lv.first));
174  LocalPoint projectedHitPos = lhitPos - ldir * delta/ldir.z();
175 
176  LocalVector hitXAxis = gluedPlane.toLocal( hitPlane.toGlobal( LocalVector(1.f,0,0)));
177  LocalError hitErr = lv.second;
178  if (gluedPlane.normalVector().dot( hitPlane.normalVector()) < 0) {
179  // the two planes are inverted, and the correlation element must change sign
180  hitErr = LocalError( hitErr.xx(), -hitErr.xy(), hitErr.yy());
181  }
182  LocalError rotatedError = hitErr.rotate( hitXAxis.x(), hitXAxis.y());
183  return std::unique_ptr<ProjectedSiStripRecHit2D>{new ProjectedSiStripRecHit2D(projectedHitPos, rotatedError, *hit.det(), *hit.originalDet(), hit.omniCluster())};
184 }
dbl * delta
Definition: mlp_gen.cc:36
float xx() const
Definition: LocalError.h:24
virtual void localParameters(AClusters const &clusters, ALocalValues &retValues, const GeomDetUnit &gd, const LocalTrajectoryParameters &ltp) const
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
T y() const
Definition: PV3DBase.h:63
std::pair< LocalPoint, LocalError > LocalValues
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:42
float xy() const
Definition: LocalError.h:25
const Surface::PositionType & position() const
The position (origin of the R.F.)
Definition: GeomDet.h:48
const StripClusterParameterEstimator * stripCPE
Definition: TkClonerImpl.h:47
float yy() const
Definition: LocalError.h:26
LocalPoint toLocal(const GlobalPoint &gp) const
T z() const
Definition: PV3DBase.h:64
double f[11][100]
LocalError rotate(float x, float y) const
Return a new LocalError, rotated by an angle defined by the direction (x,y)
Definition: LocalError.h:39
T x() const
Definition: PV3DBase.h:62
std::unique_ptr< Phase2TrackerRecHit1D > TkClonerImpl::operator() ( Phase2TrackerRecHit1D const &  hit,
TrajectoryStateOnSurface const &  tsos 
) const
overridevirtual

Implements TkCloner.

Definition at line 50 of file TkClonerImpl.cc.

References Phase2TrackerRecHit1D::cluster(), TrackingRecHit::det(), TrackerSingleRecHit::detUnit(), ClusterParameterEstimator< T >::localParameters(), TrackerSingleRecHit::phase2OTCluster(), and phase2TrackerCPE.

50  {
51  const Phase2TrackerCluster1D& clust = hit.phase2OTCluster();
52  const PixelGeomDetUnit & gdu = (const PixelGeomDetUnit &) *(hit.detUnit()) ;
53  auto && params = phase2TrackerCPE->localParameters( clust, gdu, tsos );
54  return std::unique_ptr<Phase2TrackerRecHit1D>{new Phase2TrackerRecHit1D(params.first, params.second, *hit.det(), hit.cluster())};
55 }
virtual LocalValues localParameters(const T &, const GeomDetUnit &) const =0
const ClusterParameterEstimator< Phase2TrackerCluster1D > * phase2TrackerCPE
Definition: TkClonerImpl.h:49
std::unique_ptr< ProjectedSiStripRecHit2D > TkClonerImpl::project ( SiStripMatchedRecHit2D const &  hit,
bool  mono,
TrajectoryStateOnSurface const &  tsos 
) const

Definition at line 187 of file TkClonerImpl.cc.

References delta, TrackingRecHit::det(), f, TrajectoryStateOnSurface::isValid(), TrajectoryStateOnSurface::localDirection(), StripClusterParameterEstimator::localParameters(), SiStripMatchedRecHit2D::monoCluster(), SiStripMatchedRecHit2D::monoClusterRef(), GluedGeomDet::monoDet(), GeomDet::position(), LocalError::rotate(), SiStripMatchedRecHit2D::stereoCluster(), SiStripMatchedRecHit2D::stereoClusterRef(), GluedGeomDet::stereoDet(), stripCPE, GeomDet::surface(), GloballyPositioned< T >::toLocal(), PV3DBase< T, PVType, FrameType >::x(), LocalError::xx(), LocalError::xy(), PV3DBase< T, PVType, FrameType >::y(), LocalError::yy(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by TkClonerImpl().

187  {
188  const GeomDet & det = *hit.det();
189  const GluedGeomDet & gdet = static_cast<const GluedGeomDet &> (det);
190  const GeomDetUnit * odet = mono ? gdet.monoDet() : gdet.stereoDet();
191  const BoundPlane& gluedPlane = det.surface();
192  const BoundPlane& hitPlane = odet->surface();
193 
194 
195  LocalVector tkDir = (tsos.isValid() ? tsos.localDirection() :
196  det.surface().toLocal( det.position()-GlobalPoint(0,0,0)));
197 
198  const SiStripCluster& monoclust = hit.monoCluster();
199  const SiStripCluster& stereoclust = hit.stereoCluster();
200 
202  if (tsos.isValid())
203  lv = mono ?
204  stripCPE->localParameters( monoclust, *odet, tsos) :
205  stripCPE->localParameters( stereoclust, *odet, gluedToStereo(tsos, &gdet));
206  else
207  lv = stripCPE->localParameters( mono ? monoclust : stereoclust, *odet);
208 
209 
210  auto delta = gluedPlane.localZ( hitPlane.position());
211  LocalVector ldir = tkDir;
212  LocalPoint lhitPos = gluedPlane.toLocal( hitPlane.toGlobal(lv.first));
213  LocalPoint projectedHitPos = lhitPos - ldir * delta/ldir.z();
214 
215  LocalVector hitXAxis = gluedPlane.toLocal( hitPlane.toGlobal( LocalVector(1.f,0,0)));
216  LocalError hitErr = lv.second;
217  if (gluedPlane.normalVector().dot( hitPlane.normalVector()) < 0) {
218  // the two planes are inverted, and the correlation element must change sign
219  hitErr = LocalError( hitErr.xx(), -hitErr.xy(), hitErr.yy());
220  }
221  LocalError rotatedError = hitErr.rotate( hitXAxis.x(), hitXAxis.y());
222  return std::unique_ptr<ProjectedSiStripRecHit2D>{
223  new ProjectedSiStripRecHit2D(projectedHitPos, rotatedError, det, *odet,
224  mono ? hit.monoClusterRef() : hit.stereoClusterRef() ) };
225 }
dbl * delta
Definition: mlp_gen.cc:36
float xx() const
Definition: LocalError.h:24
const GeomDetUnit * monoDet() const
Definition: GluedGeomDet.h:20
virtual void localParameters(AClusters const &clusters, ALocalValues &retValues, const GeomDetUnit &gd, const LocalTrajectoryParameters &ltp) const
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
T y() const
Definition: PV3DBase.h:63
std::pair< LocalPoint, LocalError > LocalValues
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:42
float xy() const
Definition: LocalError.h:25
const Surface::PositionType & position() const
The position (origin of the R.F.)
Definition: GeomDet.h:48
const StripClusterParameterEstimator * stripCPE
Definition: TkClonerImpl.h:47
float yy() const
Definition: LocalError.h:26
LocalPoint toLocal(const GlobalPoint &gp) const
T z() const
Definition: PV3DBase.h:64
double f[11][100]
LocalError rotate(float x, float y) const
Return a new LocalError, rotated by an angle defined by the direction (x,y)
Definition: LocalError.h:39
T x() const
Definition: PV3DBase.h:62
const GeomDetUnit * stereoDet() const
Definition: GluedGeomDet.h:21

Member Data Documentation

const ClusterParameterEstimator<Phase2TrackerCluster1D>* TkClonerImpl::phase2TrackerCPE
private

Definition at line 49 of file TkClonerImpl.h.

Referenced by makeShared(), and operator()().

const PixelClusterParameterEstimator* TkClonerImpl::pixelCPE
private

Definition at line 46 of file TkClonerImpl.h.

Referenced by makeShared(), and operator()().

const StripClusterParameterEstimator* TkClonerImpl::stripCPE
private

Definition at line 47 of file TkClonerImpl.h.

Referenced by makeShared(), operator()(), and project().

const SiStripRecHitMatcher* TkClonerImpl::theMatcher
private

Definition at line 48 of file TkClonerImpl.h.

Referenced by operator()().