ATLAS Offline Software
Public Member Functions | Private Attributes | List of all members
TrkDriftCircleMath::IsSubsetSegment< CDC > Struct Template Reference

#include <IsSubsetSegment.h>

Collaboration diagram for TrkDriftCircleMath::IsSubsetSegment< CDC >:

Public Member Functions

 IsSubsetSegment ()=default
 
 IsSubsetSegment (double phiCut, double y0Cut)
 
int operator() (const Segment &seg1, const Segment &seg2) const
 

Private Attributes

double m_phiCut {0.05}
 
double m_y0Cut {0.5}
 

Detailed Description

template<class CDC>
struct TrkDriftCircleMath::IsSubsetSegment< CDC >

Definition at line 18 of file IsSubsetSegment.h.

Constructor & Destructor Documentation

◆ IsSubsetSegment() [1/2]

template<class CDC >
TrkDriftCircleMath::IsSubsetSegment< CDC >::IsSubsetSegment ( )
default

◆ IsSubsetSegment() [2/2]

template<class CDC >
TrkDriftCircleMath::IsSubsetSegment< CDC >::IsSubsetSegment ( double  phiCut,
double  y0Cut 
)
inline

Definition at line 20 of file IsSubsetSegment.h.

20 : m_phiCut(phiCut), m_y0Cut(y0Cut) {}

Member Function Documentation

◆ operator()()

template<class CDC >
int TrkDriftCircleMath::IsSubsetSegment< CDC >::operator() ( const Segment seg1,
const Segment seg2 
) const
inline

Definition at line 23 of file IsSubsetSegment.h.

23  {
24  // check angular distance between segments and distance from origine
25  // only segments that have similar angles and offsets are considered subsets
26  if (std::abs(xAOD::P4Helpers::deltaPhi(seg1.line().phi(), seg2.line().phi())) < m_phiCut &&
27  std::abs(seg1.line().y0() - seg2.line().y0()) < m_y0Cut) {
28  SharedHitsSegments sharedHitsSegments(true);
29  sharedHitsSegments(seg1, seg2);
30 
31  unsigned int onlyInSeg1 = sharedHitsSegments.onlyInSeg1();
32  unsigned int onlyInSeg2 = sharedHitsSegments.onlyInSeg2();
33  // segment 1 contains no hits that are not in segment 2
34  if (onlyInSeg1 == 0) {
35  // check is segment 1 is a single ml segment that should be kept for the curved segment finder
36  if (seg1.hitsMl1() == 0 || seg1.hitsMl2() == 0) {
37  if (seg2.hitsMl2() < 3 || seg2.hitsMl1() < 3) { return ResolvedCollection<SegVec, IsSubsetSegment>::Different; }
38  if (seg2.hitsOutOfTime() > 0) { return ResolvedCollection<SegVec, IsSubsetSegment>::Different; }
39  }
40  // segment 1 contains the same hits as segment 2
41  if (onlyInSeg2 == 0) {
42  // chose segment with best chi2
43  if (seg1.chi2() < seg2.chi2())
45  else
47  }
49  } else {
50  if (onlyInSeg2 == 0) { return ResolvedCollection<SegVec, IsSubsetSegment>::SuperSet; }
51  }
52  }
54  }

Member Data Documentation

◆ m_phiCut

template<class CDC >
double TrkDriftCircleMath::IsSubsetSegment< CDC >::m_phiCut {0.05}
private

Definition at line 57 of file IsSubsetSegment.h.

◆ m_y0Cut

template<class CDC >
double TrkDriftCircleMath::IsSubsetSegment< CDC >::m_y0Cut {0.5}
private

Definition at line 58 of file IsSubsetSegment.h.


The documentation for this struct was generated from the following file:
xAOD::P4Helpers::deltaPhi
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
Definition: xAODP4Helpers.h:69
TrkDriftCircleMath::ResolvedCollection::SuperSet
@ SuperSet
Definition: ResolvedCollection.h:16
TrkDriftCircleMath::ResolvedCollection::SubSet
@ SubSet
Definition: ResolvedCollection.h:16
TrkDriftCircleMath::IsSubsetSegment::m_y0Cut
double m_y0Cut
Definition: IsSubsetSegment.h:58
TrkDriftCircleMath::IsSubsetSegment::m_phiCut
double m_phiCut
Definition: IsSubsetSegment.h:57
TrkDriftCircleMath::ResolvedCollection::Different
@ Different
Definition: ResolvedCollection.h:16