CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

ProxyStripTopology Class Reference

#include <ProxyStripTopology.h>

Inheritance diagram for ProxyStripTopology:
StripTopology Topology

List of all members.

Public Member Functions

virtual int channel (const LocalPoint &lp) const
virtual int channel (const LocalPoint &lp, const Topology::LocalTrackAngles &dir) const
 conversion taking also the angle from the track state
virtual LocalError localError (const MeasurementPoint &mp, const MeasurementError &me) const
virtual LocalError localError (const MeasurementPoint &mp, const MeasurementError &me, const Topology::LocalTrackPred &trkPred) const
 conversion taking also the predicted track state
virtual LocalError localError (float strip, float stripErr2) const
virtual LocalError localError (float strip, float stripErr2, const Topology::LocalTrackPred &trkPred) const
 conversion taking also the predicted track state
virtual float localPitch (const LocalPoint &lp) const
virtual float localPitch (const LocalPoint &lp, const Topology::LocalTrackAngles &dir) const
 conversion taking also the angle from the track state (LocalTrajectoryParameters)
virtual LocalPoint localPosition (float strip) const
virtual LocalPoint localPosition (float strip, const Topology::LocalTrackPred &trkPred) const
 conversion taking also the predicted track state
virtual LocalPoint localPosition (const MeasurementPoint &mp, const Topology::LocalTrackPred &trkPred) const
 conversion taking also the predicted track state
virtual LocalPoint localPosition (const MeasurementPoint &mp) const
virtual float localStripLength (const LocalPoint &lp, const Topology::LocalTrackAngles &dir) const
 conversion taking also the angle from the track state (LocalTrajectoryParameters)
virtual float localStripLength (const LocalPoint &lp) const
virtual MeasurementError measurementError (const LocalPoint &lp, const LocalError &le) const
virtual MeasurementError measurementError (const LocalPoint &lp, const LocalError &le, const Topology::LocalTrackAngles &dir) const
 conversion taking also the angle from the track state
virtual MeasurementPoint measurementPosition (const LocalPoint &lp) const
virtual MeasurementPoint measurementPosition (const LocalPoint &lp, const Topology::LocalTrackAngles &dir) const
 conversion taking also the angle from the track state
virtual int nstrips () const
virtual float pitch () const
 ProxyStripTopology (StripGeomDetType *type, BoundPlane *bp)
virtual void setSurfaceDeformation (const SurfaceDeformation *deformation)
virtual StripGeomDetTypespecificType () const
virtual float strip (const LocalPoint &lp) const
virtual float strip (const LocalPoint &lp, const Topology::LocalTrackAngles &dir) const
 conversion taking also the track state (LocalTrajectoryParameters)
virtual float stripAngle (float strip) const
virtual float stripLength () const
const SurfaceDeformationsurfaceDeformation () const
virtual const GeomDetTypetype () const

Private Member Functions

SurfaceDeformation::Local2DVector positionCorrection (const LocalPoint &pos, const Topology::LocalTrackAngles &dir) const
SurfaceDeformation::Local2DVector positionCorrection (const Topology::LocalTrackPred &trk) const
virtual const StripTopologyspecificTopology () const

Private Attributes

float theLength
DeepCopyPointerByClone< const
SurfaceDeformation
theSurfaceDeformation
StripGeomDetTypetheType
float theWidth

Detailed Description

Definition at line 38 of file ProxyStripTopology.h.


Constructor & Destructor Documentation

ProxyStripTopology::ProxyStripTopology ( StripGeomDetType type,
BoundPlane bp 
)

Definition at line 8 of file ProxyStripTopology.cc.

  :theType(type), theLength(bp->bounds().length()), theWidth(bp->bounds().width())
{
}

Member Function Documentation

int ProxyStripTopology::channel ( const LocalPoint lp) const [virtual]

Implements Topology.

Definition at line 143 of file ProxyStripTopology.cc.

References Topology::channel(), and specificTopology().

{
  return specificTopology().channel(lp);
}
int ProxyStripTopology::channel ( const LocalPoint lp,
const Topology::LocalTrackAngles dir 
) const [virtual]

conversion taking also the angle from the track state

Reimplemented from Topology.

Definition at line 149 of file ProxyStripTopology.cc.

References Topology::channel(), corr, positionCorrection(), specificTopology(), surfaceDeformation(), PV3DBase< T, PVType, FrameType >::x(), PV2DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), PV2DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

{
   if (!this->surfaceDeformation()) return specificTopology().channel(lp);

  // subtract correction from SurfaceDeformation
  const SurfaceDeformation::Local2DVector corr(this->positionCorrection(lp, dir));
  const LocalPoint posOrig(lp.x() - corr.x(), lp.y() - corr.y(), lp.z());
    
  return specificTopology().channel(posOrig);
}
LocalError ProxyStripTopology::localError ( const MeasurementPoint mp,
const MeasurementError me,
const Topology::LocalTrackPred trkPred 
) const [virtual]

conversion taking also the predicted track state

Reimplemented from Topology.

Definition at line 93 of file ProxyStripTopology.cc.

References StripTopology::localError(), and specificTopology().

{
  // See comment in localError(float strip, float stripErr2,
  //                           const Topology::LocalTrackPred &trkPred)!
  return specificTopology().localError(mp, me);
}
LocalError ProxyStripTopology::localError ( float  strip,
float  stripErr2,
const Topology::LocalTrackPred trkPred 
) const [virtual]

conversion taking also the predicted track state

Reimplemented from StripTopology.

Definition at line 71 of file ProxyStripTopology.cc.

References StripTopology::localError(), and specificTopology().

{
  // 'strip' is from measurement frame and the topology knows to
  // calculate the cartesian error.
  // But assuming no uncertainty on the SurfaceDeformation variables,
  // the errors do not change from a simple shift to compensate
  // that the track 'sees' the surface at another place than it thinks...
  
  // In case of TwoBowedSurfacesDeformation one could add corrections here due to 
  // relative rotations of the sensors...
  return specificTopology().localError(strip, stripErr2);
}
LocalError ProxyStripTopology::localError ( float  strip,
float  stripErr2 
) const [virtual]

Implements StripTopology.

Definition at line 65 of file ProxyStripTopology.cc.

References StripTopology::localError(), and specificTopology().

{
  return specificTopology().localError(strip, stripErr2);
}
LocalError ProxyStripTopology::localError ( const MeasurementPoint mp,
const MeasurementError me 
) const [virtual]

Implements Topology.

Definition at line 86 of file ProxyStripTopology.cc.

References StripTopology::localError(), and specificTopology().

{
  return specificTopology().localError(mp, me);
}
float ProxyStripTopology::localPitch ( const LocalPoint lp) const [virtual]

Implements StripTopology.

Definition at line 184 of file ProxyStripTopology.cc.

References StripTopology::localPitch(), and specificTopology().

{
  return specificTopology().localPitch(lp);
}
float ProxyStripTopology::localPitch ( const LocalPoint lp,
const Topology::LocalTrackAngles dir 
) const [virtual]

conversion taking also the angle from the track state (LocalTrajectoryParameters)

Reimplemented from StripTopology.

Definition at line 190 of file ProxyStripTopology.cc.

References corr, StripTopology::localPitch(), positionCorrection(), specificTopology(), surfaceDeformation(), PV3DBase< T, PVType, FrameType >::x(), PV2DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), PV2DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

{
  if (!this->surfaceDeformation()) return specificTopology().localPitch(lp);

  // subtract correction from SurfaceDeformation
  const SurfaceDeformation::Local2DVector corr(this->positionCorrection(lp, dir));
  const LocalPoint posOrig(lp.x() - corr.x(), lp.y() - corr.y(), lp.z());

  return specificTopology().localPitch(posOrig);
}
LocalPoint ProxyStripTopology::localPosition ( float  strip,
const Topology::LocalTrackPred trkPred 
) const [virtual]
LocalPoint ProxyStripTopology::localPosition ( const MeasurementPoint mp) const [virtual]

Implements Topology.

Definition at line 14 of file ProxyStripTopology.cc.

References StripTopology::localPosition(), and specificTopology().

Referenced by localPosition().

{
  return specificTopology().localPosition(mp);

// FIXME: Better this way? Well, but posOrig will not contain useful y!
//   if (!this->surfaceDeformation()) return specificTopology().localPosition(mp);
//
//   // correct with position information from input and zero track angles 
//   const LocalPoint posOrig(specificTopology().localPosition(mp));
//   return this->localPosition(mp, Topology::LocalTrackPred(posOrig.x(), posOrig.y(), 0., 0.));
}
LocalPoint ProxyStripTopology::localPosition ( const MeasurementPoint mp,
const Topology::LocalTrackPred trkPred 
) const [virtual]

conversion taking also the predicted track state

Reimplemented from Topology.

Definition at line 27 of file ProxyStripTopology.cc.

References corr, StripTopology::localPosition(), localPosition(), positionCorrection(), specificTopology(), surfaceDeformation(), PV3DBase< T, PVType, FrameType >::x(), PV2DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), PV2DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

{
  if (!this->surfaceDeformation()) return specificTopology().localPosition(mp);
  
  // add correction from SurfaceDeformation
  const LocalPoint posOld(specificTopology().localPosition(mp)); // 'original position'
  const SurfaceDeformation::Local2DVector corr(this->positionCorrection(trkPred));

  return LocalPoint(posOld.x()+corr.x(), posOld.y()+corr.y(), posOld.z());
}
LocalPoint ProxyStripTopology::localPosition ( float  strip) const [virtual]

Implements StripTopology.

Definition at line 40 of file ProxyStripTopology.cc.

References StripTopology::localPosition(), and specificTopology().

{
  return specificTopology().localPosition(strip);

// FIXME: Better this way? Well, but posOrig will not contain useful y!
//   if (!this->surfaceDeformation()) return specificTopology().localPosition(strip);

//   // correct with position information from input and zero track angles 
//   const LocalPoint posOrig(specificTopology().localPosition(strip));
//   return this->localPosition(mp, Topology::LocalTrackPred(posOrig.x(), posOrig.y(), 0., 0.));
}
float ProxyStripTopology::localStripLength ( const LocalPoint lp) const [virtual]

Implements StripTopology.

Definition at line 220 of file ProxyStripTopology.cc.

References StripTopology::localStripLength(), and specificTopology().

float ProxyStripTopology::localStripLength ( const LocalPoint lp,
const Topology::LocalTrackAngles ltp 
) const [virtual]
MeasurementError ProxyStripTopology::measurementError ( const LocalPoint lp,
const LocalError le 
) const [virtual]

Implements Topology.

Definition at line 122 of file ProxyStripTopology.cc.

References Topology::measurementError(), and specificTopology().

{
  return specificTopology().measurementError(lp, le);
}
MeasurementError ProxyStripTopology::measurementError ( const LocalPoint lp,
const LocalError le,
const Topology::LocalTrackAngles dir 
) const [virtual]

conversion taking also the angle from the track state

Reimplemented from Topology.

Definition at line 128 of file ProxyStripTopology.cc.

References corr, Topology::measurementError(), positionCorrection(), specificTopology(), surfaceDeformation(), PV3DBase< T, PVType, FrameType >::x(), PV2DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), PV2DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

{
  if (!this->surfaceDeformation()) return specificTopology().measurementError(lp, le);

  // assuming 'lp' comes from a track prediction
  // (i.e. where the track thinks it hits the surface)
  // we need to subtract correction from SurfaceDeformation
  const SurfaceDeformation::Local2DVector corr(this->positionCorrection(lp, dir));
  const LocalPoint posOrig(lp.x() - corr.x(), lp.y() - corr.y(), lp.z());

  return specificTopology().measurementError(posOrig, le);
}
MeasurementPoint ProxyStripTopology::measurementPosition ( const LocalPoint lp) const [virtual]

Implements Topology.

Definition at line 103 of file ProxyStripTopology.cc.

References Topology::measurementPosition(), and specificTopology().

MeasurementPoint ProxyStripTopology::measurementPosition ( const LocalPoint lp,
const Topology::LocalTrackAngles dir 
) const [virtual]

conversion taking also the angle from the track state

Reimplemented from Topology.

Definition at line 109 of file ProxyStripTopology.cc.

References corr, Topology::measurementPosition(), positionCorrection(), specificTopology(), surfaceDeformation(), PV3DBase< T, PVType, FrameType >::x(), PV2DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), PV2DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

{
  if (!this->surfaceDeformation()) return specificTopology().measurementPosition(lp);

  // subtract correction from SurfaceDeformation
  const SurfaceDeformation::Local2DVector corr(this->positionCorrection(lp, dir));
  const LocalPoint posOrig(lp.x() - corr.x(), lp.y() - corr.y(), lp.z());

  return specificTopology().measurementPosition(posOrig);
}
int ProxyStripTopology::nstrips ( ) const [virtual]

Implements StripTopology.

Definition at line 208 of file ProxyStripTopology.cc.

References StripTopology::nstrips(), and specificTopology().

{
  return specificTopology().nstrips();
}
float ProxyStripTopology::pitch ( ) const [virtual]

Implements StripTopology.

Definition at line 178 of file ProxyStripTopology.cc.

References StripTopology::pitch(), and specificTopology().

{
  return specificTopology().pitch();
}
SurfaceDeformation::Local2DVector ProxyStripTopology::positionCorrection ( const Topology::LocalTrackPred trk) const [private]

Internal method to get correction of the position from SurfaceDeformation, must not be called if 'theSurfaceDeformation' is a null pointer.

Definition at line 268 of file ProxyStripTopology.cc.

References Topology::LocalTrackPred::angles(), Topology::LocalTrackPred::point(), SurfaceDeformation::positionCorrection(), surfaceDeformation(), theLength, and theWidth.

{
  return this->surfaceDeformation()->positionCorrection(trk.point(), trk.angles(),
                                                        theLength, theWidth);
}
SurfaceDeformation::Local2DVector ProxyStripTopology::positionCorrection ( const LocalPoint pos,
const Topology::LocalTrackAngles dir 
) const [private]

Internal method to get correction of the position from SurfaceDeformation, must not be called if 'theSurfaceDeformation' is a null pointer.

Definition at line 257 of file ProxyStripTopology.cc.

References SurfaceDeformation::positionCorrection(), surfaceDeformation(), theLength, theWidth, PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().

Referenced by channel(), localPitch(), localPosition(), localStripLength(), measurementError(), measurementPosition(), and strip().

{
  const SurfaceDeformation::Local2DPoint pos2D(pos.x(), pos.y());// change precision and dimension

  return this->surfaceDeformation()->positionCorrection(pos2D, dir,
                                                        theLength, theWidth);
}
void ProxyStripTopology::setSurfaceDeformation ( const SurfaceDeformation deformation) [virtual]

Definition at line 250 of file ProxyStripTopology.cc.

References theSurfaceDeformation.

{ 
  theSurfaceDeformation = deformation;
}
const StripTopology & ProxyStripTopology::specificTopology ( ) const [private, virtual]
StripGeomDetType & ProxyStripTopology::specificType ( ) const [virtual]

Definition at line 241 of file ProxyStripTopology.cc.

References theType.

Referenced by specificTopology().

{ return *theType;}
float ProxyStripTopology::strip ( const LocalPoint lp) const [virtual]

Implements StripTopology.

Definition at line 161 of file ProxyStripTopology.cc.

References specificTopology(), and StripTopology::strip().

{
  return specificTopology().strip(lp);
}
float ProxyStripTopology::strip ( const LocalPoint lp,
const Topology::LocalTrackAngles dir 
) const [virtual]
float ProxyStripTopology::stripAngle ( float  strip) const [virtual]

Implements StripTopology.

Definition at line 202 of file ProxyStripTopology.cc.

References specificTopology(), and StripTopology::stripAngle().

float ProxyStripTopology::stripLength ( ) const [virtual]

Implements StripTopology.

Definition at line 214 of file ProxyStripTopology.cc.

References specificTopology(), and StripTopology::stripLength().

{
  return specificTopology().stripLength();
}
const SurfaceDeformation* ProxyStripTopology::surfaceDeformation ( ) const [inline]
const GeomDetType & ProxyStripTopology::type ( ) const [virtual]

Definition at line 238 of file ProxyStripTopology.cc.

References theType.

{ return *theType;}

Member Data Documentation

Definition at line 112 of file ProxyStripTopology.h.

Referenced by positionCorrection().

Definition at line 113 of file ProxyStripTopology.h.

Referenced by setSurfaceDeformation(), and surfaceDeformation().

Definition at line 111 of file ProxyStripTopology.h.

Referenced by specificType(), and type().

Definition at line 112 of file ProxyStripTopology.h.

Referenced by positionCorrection().