CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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(), phase1PixelTopology::layer, DTEnums::Left, DTRecHit1D::localPosition(), DTRecHit1D::localPositionError(), DTEnums::Right, GeomDet::toGlobal(), GeomDet::toLocal(), and DTRecHit1DPair::wireId().

22  {
23  theWireId = pair.wireId();
24  theDigiTime = pair.digiTime();
25 
26  const DTLayer* layer = dtGeom->layer(theWireId.layerId());
27 
28  // transform the Local position in Layer-rf in a SL local position
31 
32  // TODO how do I transform an error from local to global?
34  // theError =
35  // layer->surface().toLocal(sl.surface().toGlobal(pair.componentRecHit(DTEnums::Left)->localPositionError()));
36 }
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:49
LocalPoint theRightPos
LocalPoint toLocal(const GlobalPoint &gp) const
Conversion to the R.F. of the GeomDet.
Definition: GeomDet.h:58
const DTRecHit1D * componentRecHit(DTEnums::DTCellSide lrSide) const
Return the left/right DTRecHit1D.
constexpr std::array< uint8_t, layerIndexSize > layer
LocalPoint theLeftPos
LocalError theError
LocalError localPositionError() const override
Return the 3-dimensional error on the local position.
Definition: DTRecHit1D.h:50
DTLayerId layerId() const
Return the corresponding LayerId.
Definition: DTWireId.h:45
DTWireId wireId() const
LocalPoint localPosition() const override
Return the 3-dimensional local position.
Definition: DTRecHit1D.h:47
DTHitPairForFit::~DTHitPairForFit ( )

Destructor.

Definition at line 39 of file DTHitPairForFit.cc.

39 {}

Member Function Documentation

float DTHitPairForFit::digiTime ( ) const
inline

Returns the time of the corresponding digi.

Definition at line 57 of file DTHitPairForFit.h.

References theDigiTime.

Referenced by operator==().

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

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

Definition at line 54 of file DTHitPairForFit.h.

References theWireId.

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

54 { 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 53 of file DTHitPairForFit.cc.

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

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

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

Definition at line 45 of file DTHitPairForFit.h.

References theLeftPos.

Referenced by operator<<().

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

Returns the local position in the layer.

Definition at line 42 of file DTHitPairForFit.cc.

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

Referenced by operator<().

42  {
43  if (s == DTEnums::Left)
44  return theLeftPos;
45  else if (s == DTEnums::Right)
46  return theRightPos;
47  else {
48  throw cms::Exception("DTHitPairForFit") << " localPosition called with undef LR code" << endl;
49  return LocalPoint();
50  }
51 }
Point3DBase< Scalar, LocalTag > LocalPoint
Definition: Definitions.h:30
LocalPoint theRightPos
LocalPoint theLeftPos
LocalError DTHitPairForFit::localPositionError ( ) const
inline

Definition at line 51 of file DTHitPairForFit.h.

References theError.

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

define the order by increasing z

Definition at line 75 of file DTHitPairForFit.cc.

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

75  {
76  //SL if same layer use x() for strict ordering
77  if (id() == hit.id())
78  return (theLeftPos.x() < hit.localPosition(DTEnums::Left).x());
79  return (id() < hit.id());
80 }
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:59
bool DTHitPairForFit::operator== ( const DTHitPairForFit hit) const

Definition at line 82 of file DTHitPairForFit.cc.

References digiTime(), and id().

82  {
83  return (id() == hit.id() && fabs(digiTime() - hit.digiTime()) < 0.1);
84 }
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 48 of file DTHitPairForFit.h.

References theRightPos.

Referenced by operator<<().

48 { return theRightPos; }
LocalPoint theRightPos

Member Data Documentation

float DTHitPairForFit::theDigiTime
private

Definition at line 75 of file DTHitPairForFit.h.

Referenced by digiTime().

LocalError DTHitPairForFit::theError
private

Definition at line 73 of file DTHitPairForFit.h.

Referenced by localPositionError().

LocalPoint DTHitPairForFit::theLeftPos
private

Definition at line 71 of file DTHitPairForFit.h.

Referenced by leftPos().

LocalPoint DTHitPairForFit::theRightPos
private

Definition at line 72 of file DTHitPairForFit.h.

Referenced by rightPos().

DTWireId DTHitPairForFit::theWireId
private

Definition at line 74 of file DTHitPairForFit.h.

Referenced by id().