CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
DTHitPairForFit Class Reference

#include <DTHitPairForFit.h>

Public Member Functions

float digiTime () const
 Returns the time of the corresponding digi. More...
 
 DTHitPairForFit (const DTRecHit1DPair &pair, const DTSuperLayer &sl, const edm::ESHandle< DTGeometry > &dtGeom)
 Constructor. More...
 
const DTWireIdid () const
 Returns the Id of the wire on which the rechit rely. More...
 
std::pair< bool, bool > isCompatible (const LocalPoint &posIni, const LocalVector &dirIni) const
 
LocalPoint leftPos () const
 Returns the position in the layer r.f. of the left rechit. More...
 
LocalPoint localPosition (DTEnums::DTCellSide s) const
 Returns the local position in the layer. More...
 
LocalError localPositionError () const
 
bool operator< (const DTHitPairForFit &hit) const
 define the order by increasing z More...
 
bool operator== (const DTHitPairForFit &hit) const
 
LocalPoint rightPos () const
 Returns the position in the layer r.f. of the right rechit. More...
 
 ~DTHitPairForFit ()
 Destructor. More...
 

Private Attributes

float theDigiTime
 
LocalError theError
 
LocalPoint theLeftPos
 
LocalPoint theRightPos
 
DTWireId theWireId
 

Detailed Description

Hit pair used for the segments fit

This class is useful for segment fitting, which is done in SL or Chamber reference frame, while the DT hits live on the layer.

Author
Stefano Lacaprara - INFN Legnaro stefa.nosp@m.no.l.nosp@m.acapr.nosp@m.ara@.nosp@m.pd.in.nosp@m.fn.i.nosp@m.t
Riccardo Bellan - INFN TO ricca.nosp@m.rdo..nosp@m.bella.nosp@m.n@ce.nosp@m.rn.ch

Definition at line 31 of file DTHitPairForFit.h.

Constructor & Destructor Documentation

DTHitPairForFit::DTHitPairForFit ( const DTRecHit1DPair pair,
const DTSuperLayer sl,
const edm::ESHandle< DTGeometry > &  dtGeom 
)

Constructor.

Definition at line 20 of file DTHitPairForFit.cc.

References DTRecHit1DPair::componentRecHit(), DTRecHit1DPair::digiTime(), DTGeometry::layer(), DTEnums::Left, DTRecHit1D::localPosition(), DTRecHit1D::localPositionError(), DTEnums::Right, GeomDet::toGlobal(), GeomDet::toLocal(), and DTRecHit1DPair::wireId().

22  {
23 
24  theWireId = pair.wireId();
25  theDigiTime = pair.digiTime();
26 
27  const DTLayer* layer = dtGeom->layer(theWireId.layerId());
28 
29  // transform the Local position in Layer-rf in a SL local position
30  theLeftPos =
32  theRightPos =
34 
35  // TODO how do I transform an error from local to global?
37  // theError =
38  // layer->surface().toLocal(sl.surface().toGlobal(pair.componentRecHit(DTEnums::Left)->localPositionError()));
39 
40 }
float digiTime() const
Return the digi time (ns) used to build the rechits.
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:54
LocalPoint theRightPos
LocalPoint toLocal(const GlobalPoint &gp) const
Conversion to the R.F. of the GeomDet.
Definition: GeomDet.h:69
const DTRecHit1D * componentRecHit(DTEnums::DTCellSide lrSide) const
Return the left/right DTRecHit1D.
const DTLayer * layer(DTLayerId id) const
Return a layer given its id.
Definition: DTGeometry.cc:110
LocalPoint theLeftPos
LocalError theError
virtual LocalError localPositionError() const
Return the 3-dimensional error on the local position.
Definition: DTRecHit1D.h:66
virtual LocalPoint localPosition() const
Return the 3-dimensional local position.
Definition: DTRecHit1D.h:60
DTLayerId layerId() const
Return the corresponding LayerId.
Definition: DTWireId.h:62
DTWireId wireId() const
DTHitPairForFit::~DTHitPairForFit ( )

Destructor.

Definition at line 43 of file DTHitPairForFit.cc.

43  {
44 }

Member Function Documentation

float DTHitPairForFit::digiTime ( ) const
inline

Returns the time of the corresponding digi.

Definition at line 61 of file DTHitPairForFit.h.

References isCompatible(), operator<(), operator==(), and theDigiTime.

Referenced by operator==().

61 {return theDigiTime;}
const DTWireId& DTHitPairForFit::id ( void  ) const
inline

Returns the Id of the wire on which the rechit rely.

Definition at line 58 of file DTHitPairForFit.h.

References theWireId.

Referenced by operator<(), and operator==().

58 { return theWireId; }
pair< bool, bool > DTHitPairForFit::isCompatible ( const LocalPoint posIni,
const LocalVector dirIni 
) const

check for compatibility of the hit pair with a given position and direction: the first bool of the returned pair is for the left hit, the second for the right one

Definition at line 57 of file DTHitPairForFit.cc.

References hpstanc_transforms::max, min(), mathSSE::sqrt(), PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by digiTime().

58  {
59 
60 
61  pair<bool,bool> ret;
62  LocalPoint segPosAtZLeft = posIni+dirIni*(theLeftPos.z() -posIni.z())/dirIni.z();
63  LocalPoint segPosAtZRight = posIni+dirIni*(theRightPos.z()-posIni.z())/dirIni.z();
64  float dxLeft = fabs(theLeftPos.x() - segPosAtZLeft.x());
65  float dxRight = fabs(theRightPos.x() - segPosAtZRight.x());
66  float exx = sqrt(theError.xx());
67  // if both below 3 sigma, return both
68  // if both at 10 sigma or above, return none
69  // if one is below N sigma and one above, for 10>=N>=3, match only that one, otherwise none
70  if (std::max(dxLeft, dxRight) < 3*exx) {
71  ret = make_pair(true,true);
72  } else if (std::min(dxLeft, dxRight) >= 10*exx) {
73  ret = make_pair(false,false);
74  } else {
75  float sigmasL = floorf(dxLeft/exx), sigmasR = floorf(dxRight/exx);
76  ret.first = ( sigmasL < sigmasR );
77  ret.second = ( sigmasR < sigmasL );
78  }
79  return ret;
80 }
float xx() const
Definition: LocalError.h:24
LocalPoint theRightPos
LocalPoint theLeftPos
T sqrt(T t)
Definition: SSEVec.h:18
T z() const
Definition: PV3DBase.h:64
LocalError theError
T min(T a, T b)
Definition: MathUtil.h:58
T x() const
Definition: PV3DBase.h:62
LocalPoint DTHitPairForFit::leftPos ( ) const
inline

Returns the position in the layer r.f. of the left rechit.

Definition at line 49 of file DTHitPairForFit.h.

References theLeftPos.

Referenced by operator<<().

49 { return theLeftPos; }
LocalPoint theLeftPos
LocalPoint DTHitPairForFit::localPosition ( DTEnums::DTCellSide  s) const

Returns the local position in the layer.

Definition at line 47 of file DTHitPairForFit.cc.

References Exception, DTEnums::Left, and DTEnums::Right.

Referenced by operator<().

47  {
48  if (s==DTEnums::Left) return theLeftPos;
49  else if (s==DTEnums::Right) return theRightPos;
50  else{
51  throw cms::Exception("DTHitPairForFit")<<" localPosition called with undef LR code"<<endl;
52  return LocalPoint();
53  }
54 }
LocalPoint theRightPos
LocalPoint theLeftPos
Local3DPoint LocalPoint
Definition: LocalPoint.h:11
LocalError DTHitPairForFit::localPositionError ( ) const
inline

Definition at line 55 of file DTHitPairForFit.h.

References theError.

55 { return theError; }
LocalError theError
bool DTHitPairForFit::operator< ( const DTHitPairForFit hit) const

define the order by increasing z

Definition at line 82 of file DTHitPairForFit.cc.

References id(), DTEnums::Left, localPosition(), and PV3DBase< T, PVType, FrameType >::x().

Referenced by digiTime().

82  {
83  //SL if same layer use x() for strict ordering
84  if (id()==hit.id())
85  return (theLeftPos.x() < hit.localPosition(DTEnums::Left).x());
86  return (id() < hit.id());
87 }
LocalPoint localPosition(DTEnums::DTCellSide s) const
Returns the local position in the layer.
const DTWireId & id() const
Returns the Id of the wire on which the rechit rely.
LocalPoint theLeftPos
T x() const
Definition: PV3DBase.h:62
bool DTHitPairForFit::operator== ( const DTHitPairForFit hit) const

Definition at line 89 of file DTHitPairForFit.cc.

References digiTime(), and id().

Referenced by digiTime().

89  {
90  return (id() == hit.id() && fabs(digiTime() - hit.digiTime()) < 0.1 );
91 }
const DTWireId & id() const
Returns the Id of the wire on which the rechit rely.
float digiTime() const
Returns the time of the corresponding digi.
LocalPoint DTHitPairForFit::rightPos ( ) const
inline

Returns the position in the layer r.f. of the right rechit.

Definition at line 52 of file DTHitPairForFit.h.

References theRightPos.

Referenced by operator<<().

52 { return theRightPos; }
LocalPoint theRightPos

Member Data Documentation

float DTHitPairForFit::theDigiTime
private

Definition at line 80 of file DTHitPairForFit.h.

Referenced by digiTime().

LocalError DTHitPairForFit::theError
private

Definition at line 78 of file DTHitPairForFit.h.

Referenced by localPositionError().

LocalPoint DTHitPairForFit::theLeftPos
private

Definition at line 76 of file DTHitPairForFit.h.

Referenced by leftPos().

LocalPoint DTHitPairForFit::theRightPos
private

Definition at line 77 of file DTHitPairForFit.h.

Referenced by rightPos().

DTWireId DTHitPairForFit::theWireId
private

Definition at line 79 of file DTHitPairForFit.h.

Referenced by id().