ATLAS Offline Software
SCTinformation.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 
3 /*
4  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 
9 // Header file for class SCTinformation
11 // (c) ATLAS Detector software
13 // Class for sct strips information
15 // Version 1.0 19/04/2018 I.Gavrilenko
17 
18 #ifndef SCTinformation_h
19 #define SCTinformation_h
20 
21 namespace InDet {
22 
23  class SCTinformation final {
24 
26  // Public methods:
28 
29  public:
32  const Amg::Vector3D& strip_start,
33  const Amg::Vector3D& strip_end,
34  const Amg::Vector3D& vec,
35  const double& locx);
36 
37  SCTinformation(const SCTinformation&) = default;
38  ~SCTinformation() = default;
40 
41  const InDet::SiCluster* cluster() const {return m_cluster;}
42  const Amg::Vector3D& strip_center () const {return m_center ;}
43  const Amg::Vector3D& strip_direction () const {return m_sdir ;}
44  const Amg::Vector3D& traj_direction () const {return m_tdir ;}
45  const Amg::Vector3D& normal() const {return m_normal;}
46  const double& oneOverStrip() const {return m_oneOverStrip;}
47  const double& locX() const {return m_locX;}
48 
49  double step(SCTinformation&) const;
50  Amg::Vector3D position(const double& s) const;
51  void set(const InDet::SiCluster* CL,
52  const Amg::Vector3D& strip_start,
53  const Amg::Vector3D& strip_end,
54  const Amg::Vector3D& vec,
55  const double& locx);
56 
57 
58  private:
59 
60  const InDet::SiCluster* m_cluster; // SCT cluster
61  Amg::Vector3D m_center; // Center of strip
62  Amg::Vector3D m_sdir; // Direction of strip (strip_start-strip_end)
63  Amg::Vector3D m_tdir; // Direction of trajectory (strip_start+strip_end-2*vertexVec)
64  Amg::Vector3D m_normal; // Normal to strip diretion and trjectory direction plane
65  double m_oneOverStrip; // Invert length of the strip
66  double m_locX; // cluster local X
67  };
68 
69 
71  // Inline methods
73  inline SCTinformation::SCTinformation() : m_cluster(nullptr) {}
74 
76  // Constructor with initialisation
78 
80  const Amg::Vector3D& strip_start,
81  const Amg::Vector3D& strip_end,
82  const Amg::Vector3D& vec,
83  const double& locx) {
84  this->set(cluster, strip_start, strip_end, vec, locx);
85  }
86 
87 
89  // Step along strip
91 
92  inline double SCTinformation::step(SCTinformation& In) const
93  {
94  // this function returns the ratio between the components of the
95  // In normal vector over the strip direction and trajectory direction.
96 
97  // first evaluate the denominator:
98  // a is component of the In normal vector on the strip direction.
99  double a = m_sdir.dot(In.m_normal);
100 
101  // a = 0 if the In.m_normal and m_sdir are perpendicular.
102  // If so, return a very big number.
103  // Otherwise, evaluate the numerator and return
104  if (a!=0.) return (-m_tdir.dot(In.m_normal)/a);
105  else return 10000.;
106  }
107 
108  inline Amg::Vector3D SCTinformation::position(const double& s) const
109  {
110  return (m_center+(0.5*s)*m_sdir);
111  }
112  inline void SCTinformation::set (const InDet::SiCluster* cluster,
113  const Amg::Vector3D& strip_start,
114  const Amg::Vector3D& strip_end,
115  const Amg::Vector3D& vec,
116  const double& locx) {
117  m_cluster = cluster;
118  m_center = 0.5*(strip_start+strip_end);
119  m_sdir = strip_start-strip_end;
120  m_tdir = 2.*(m_center-vec);
121  m_normal = m_sdir.cross(m_tdir);
122  m_oneOverStrip = 1./m_sdir.mag();
123  m_locX = locx;
124  }
125 
126 } // end of name space
127 
128 #endif // SCTinformation_h
InDet::SCTinformation::normal
const Amg::Vector3D & normal() const
Definition: SCTinformation.h:45
InDet::SCTinformation::oneOverStrip
const double & oneOverStrip() const
Definition: SCTinformation.h:46
InDet::SCTinformation::SCTinformation
SCTinformation()
Definition: SCTinformation.h:73
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
InDet::SCTinformation::m_oneOverStrip
double m_oneOverStrip
Definition: SCTinformation.h:65
InDet::SCTinformation::m_center
Amg::Vector3D m_center
Definition: SCTinformation.h:61
InDet::SCTinformation::set
void set(const InDet::SiCluster *CL, const Amg::Vector3D &strip_start, const Amg::Vector3D &strip_end, const Amg::Vector3D &vec, const double &locx)
Definition: SCTinformation.h:112
InDet
DUMMY Primary Vertex Finder.
Definition: VP1ErrorUtils.h:36
InDet::SCTinformation::cluster
const InDet::SiCluster * cluster() const
Definition: SCTinformation.h:41
InDet::SCTinformation
Definition: SCTinformation.h:23
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:12
InDet::SCTinformation::SCTinformation
SCTinformation(const SCTinformation &)=default
CxxUtils::vec
typename vecDetail::vec_typedef< T, N >::type vec
Define a nice alias for the vectorized type.
Definition: vec.h:207
InDet::SCTinformation::m_locX
double m_locX
Definition: SCTinformation.h:66
InDet::SCTinformation::traj_direction
const Amg::Vector3D & traj_direction() const
Definition: SCTinformation.h:44
InDet::SCTinformation::operator=
SCTinformation & operator=(const SCTinformation &)=default
InDet::SCTinformation::m_tdir
Amg::Vector3D m_tdir
Definition: SCTinformation.h:63
InDet::SCTinformation::m_sdir
Amg::Vector3D m_sdir
Definition: SCTinformation.h:62
InDet::SCTinformation::~SCTinformation
~SCTinformation()=default
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
a
TList * a
Definition: liststreamerinfos.cxx:10
InDet::SCTinformation::locX
const double & locX() const
Definition: SCTinformation.h:47
InDet::SCTinformation::strip_direction
const Amg::Vector3D & strip_direction() const
Definition: SCTinformation.h:43
InDet::SCTinformation::m_normal
Amg::Vector3D m_normal
Definition: SCTinformation.h:64
InDet::SCTinformation::position
Amg::Vector3D position(const double &s) const
Definition: SCTinformation.h:108
InDet::SCTinformation::strip_center
const Amg::Vector3D & strip_center() const
Definition: SCTinformation.h:42
InDet::SCTinformation::m_cluster
const InDet::SiCluster * m_cluster
Definition: SCTinformation.h:60
InDet::SiCluster
Definition: InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/SiCluster.h:40
InDet::SCTinformation::step
double step(SCTinformation &) const
Definition: SCTinformation.h:92