ATLAS Offline Software
SCT_ClusterOnTrackTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // Implementation file for class SCT_ClusterOnTrackTool
8 // (c) ATLAS Detector software
10 // AlgTool used for SCT_ClusterOnTrack object production
12 // started 21/04/2004 I.Gavrilenko -- see ChangeLog
14 
16 
20 
21 #include <cmath>
22 
23 using CLHEP::micrometer;
24 using CLHEP::deg;
25 
27 // Constructor
29 
31  (const std::string &t, const std::string &n, const IInterface *p) :
32  AthAlgTool(t, n, p),
33  m_option_make2dimBarrelClusters(false),
34  m_option_errorStrategy(-1),
35  m_option_correctionStrategy(-1) {
36  // declareInterface<SCT_ClusterOnTrackTool>(this);
37  declareInterface<IRIO_OnTrackCreator>(this);
38 
39  declareProperty("MakeTwoDimBarrelClusters", m_option_make2dimBarrelClusters,
40  "flag if strip length should be part of the measurement");
41  declareProperty("ErrorStrategy", m_option_errorStrategy,
42  "if ErrorStrategy < 0, keep previous errors else recompute");
43  declareProperty("CorrectionStrategy", m_option_correctionStrategy,
44  "if CorrectionStrategy >= 0, apply a correction to the cluster position");
45 }
46 
48 // Initialisation
50 
54 
55  msg(MSG::INFO) << "A strategy to ";
56  switch (m_option_errorStrategy) {
57  case -1: msg(MSG::INFO) << "keep the PRD errors";
58  break;
59 
60  case 0: msg(MSG::INFO) << "apply simple pitch errors";
61  break;
62 
63  case 1: msg(MSG::INFO) << "assign tuned SCT errors";
64  break;
65 
66  case 2: msg(MSG::INFO) << "assign tuned, angle-dependent SCT errors";
67  break;
68 
69  default: msg(MSG::INFO) << " -- NO, UNKNOWN. Pls check jobOptions!";
70  break;
71  }
72  msg(MSG::INFO) << " will be applied during SCT_ClusterOnTrack making" << endmsg;
73  if (m_option_correctionStrategy == 0) {
74  msg(MSG::INFO) << "SCT cluster positions will be corrected" << endmsg;
75  }
76 
77  // get the error scaling tool
78  if (!m_sctErrorScalingKey.key().empty()) {
80  ATH_MSG_DEBUG("Detected need for scaling sct errors.");
81  }
82 
83  ATH_CHECK(m_lorentzAngleTool.retrieve());
84 
85  return sc;
86 }
87 
89 // Finalize
91 
95 
96  return sc;
97 }
98 
100 // Trk::SCT_ClusterOnTrack production
102 
105  (const Trk::PrepRawData &rio, const Trk::TrackParameters &trackPar) const {
106 
108  return nullptr;
109  }
110  const InDet::SCT_Cluster * SC = static_cast<const InDet::SCT_Cluster *> (&rio);
111  const InDet::SiWidth width = SC->width();
112  const Amg::Vector2D &colRow = width.colRow();
113 
114  // Get pointer to detector element
115  //
116  const InDetDD::SiDetectorElement *EL = SC->detectorElement();
117  if (!EL) {
118  return nullptr;
119  }
120  IdentifierHash iH = EL->identifyHash();
121 
122  // Get local position of track
123  //
124  Amg::Vector2D loct = trackPar.localPosition();
125 
126  // Find phi angle of track relative to Lorentz drift direction, if needed
127  //
128  double dphi(0.);
129  double sinAlpha = EL->sinStereoLocal(SC->localPosition());
130  double cosAlpha = std::sqrt(1 - sinAlpha * sinAlpha);
132  double pNormal = trackPar.momentum().dot(EL->normal());
133  double pPhi = trackPar.momentum().dot(Amg::AngleAxis3D(asin(-sinAlpha), Amg::Vector3D::UnitZ()) * EL->phiAxis());
134  dphi = std::atan(pPhi / pNormal) - std::atan(m_lorentzAngleTool->getTanLorentzAngle(iH));
135  }
136  Amg::Vector3D localstripdir(-sinAlpha, cosAlpha, 0.);
137  Amg::Vector3D globalstripdir = trackPar.associatedSurface().transform().linear() * localstripdir;
138  double distance = (trackPar.position() - SC->globalPosition()).mag();
139  const auto *boundsraw = &trackPar.associatedSurface().bounds();
140 
141  const Trk::TrapezoidBounds *tbounds = boundsraw->type() == Trk::SurfaceBounds::Trapezoid ? static_cast<const Trk::TrapezoidBounds *>(boundsraw) : nullptr;
142  const Trk::RectangleBounds *rbounds = boundsraw->type() == Trk::SurfaceBounds::Rectangle ? static_cast<const Trk::RectangleBounds *>(boundsraw) : nullptr;
143 
144  if (!tbounds && !rbounds) {
145  return nullptr;
146  }
147 
148  double boundsy = rbounds ? rbounds->halflengthY() : tbounds->halflengthY();
149  if (distance * cosAlpha > boundsy) {
150  distance = boundsy / cosAlpha - 1;
151  }
152  // SCT_ClusterOnTrack production
153  //
154  Trk::LocalParameters locpar;
155  if (loct.y() < 0) {
156  distance = -distance;
157  }
158  Amg::Vector3D glob(SC->globalPosition() + distance * globalstripdir);
159  Amg::MatrixX oldcov = SC->localCovariance();
160  // Local position and error matrix production
161  //
162  // let's start to re-compute cluster error if errorStrategy >=0
163  // These were derived by the studies reported on 25th September 2006
164  // https://indico.cern.ch/event/430391/contributions/1066157/attachments/929942/1317007/SCTSoft_25Sept06_clusters.pdf
165  // and on 4th February 2008
166  // https://indico.cern.ch/event/22934/contributions/485813/attachments/379647/528096/ClusterErrors_04Feb08.pdf
167  if (m_option_errorStrategy > -1) {
168  Amg::MatrixX mat(2, 2);
169  mat.setZero();
170  switch (m_option_errorStrategy) {
171  case 0:
172  mat(0, 0) = std::pow(width.phiR(), 2) /12.;
173  mat(1, 1) = std::pow(width.z(), 2) /12.;
174  break;
175 
176  case 1:
177  if (colRow.x() == 1) {
178  mat(0, 0) = std::pow(1.05 * width.phiR(), 2) /12.;
179  } else if (colRow.x() == 2) {
180  mat(0, 0) = std::pow(0.27 * width.phiR(), 2) /12.;
181  } else {
182  mat(0, 0) = std::pow(width.phiR(), 2) /12.;
183  }
184  mat(1, 1) = std::pow(width.z() / colRow.y(), 2) /12.;
185  break;
186 
187  case 2:
188  mat(0, 0) = std::pow(getError(dphi, int(colRow.x())) * (EL->phiPitch() / 0.080), 2);
189  mat(1, 1) = std::pow(width.z() / colRow.y(), 2) /12.;
190  break;
191 
192  default:
193  // don't do anything....
194  break;
195  }
196  // rotation for endcap SCT
197  if (EL->design().shape() == InDetDD::Trapezoid) {
198  double sn = EL->sinStereoLocal(SC->localPosition());
199  double sn2 = sn * sn;
200  double cs2 = 1. - sn2;
201  double w = EL->phiPitch(SC->localPosition()) / EL->phiPitch();
202  double v0 = mat(0, 0) * w * w;
203  double v1 = mat(1, 1);
204  mat(0, 0) = (cs2 * v0 + sn2 * v1);
205  mat(1, 0) = (sn * std::sqrt(cs2) * (v0 - v1));
206  mat(0, 1) = mat(1, 0);
207  mat(1, 1) = (sn2 * v0 + cs2 * v1);
208  }
209  oldcov = std::move(mat);
210  }
211 
212  Amg::MatrixX cov(oldcov);
213  if (EL->design().shape() != InDetDD::Trapezoid) { // barrel
214  Trk::DefinedParameter lpos1dim(SC->localPosition().x(), Trk::locX);
216  Trk::LocalParameters(SC->localPosition()) :// PRDformation does 2-dim
217  Trk::LocalParameters(lpos1dim);
219  cov = Amg::MatrixX(1, 1);
220  cov(0, 0) = oldcov(0, 0);
221  }
222 
223  if (!m_sctErrorScalingKey.key().empty()) {
224  //SG::ReadCondHandle<SCTRIO_OnTrackErrorScaling> error_scaling( m_sctErrorScalingKey );
226  cov = Trk::ErrorScalingCast<SCTRIO_OnTrackErrorScaling>(*error_scaling)
227  ->getScaledCovariance(std::move(cov), false, 0.0);
228  }
229  }else { // endcap
230  locpar = Trk::LocalParameters(SC->localPosition());
231  if (!m_sctErrorScalingKey.key().empty()) {
233  cov = Trk::ErrorScalingCast<SCTRIO_OnTrackErrorScaling>(*error_scaling)
234  ->getScaledCovariance(std::move(cov), true,
235  EL->sinStereoLocal(SC->localPosition()));
236  }
237  double Sn = EL->sinStereoLocal(SC->localPosition());
238  double Sn2 = Sn * Sn;
239  double Cs2 = (1. - Sn) * (1. + Sn);
240  double SC = Sn * std::sqrt(Cs2);
241  double W = EL->phiPitch(loct) / EL->phiPitch();
242  double dV0 = (Cs2 * cov(0, 0) + Sn2 * cov(1, 1) +
243  2. * SC * cov(1, 0)) * (W * W - 1.);
244  cov(0, 0) += (Cs2 * dV0);
245  cov(1, 0) += (SC * dV0);
246  cov(0, 1) = cov(1, 0);
247  cov(1, 1) += (Sn2 * dV0);
248  }
249 
250  // Apply correction for cluster position bias
251  //
252  if (m_option_correctionStrategy == 0) {
253  double correction = getCorrection(dphi, int(colRow.x())) * EL->hitDepthDirection();
254  locpar[Trk::locX] += correction;
255  }
256  bool isbroad = m_option_errorStrategy == 0;
257  return new InDet::SCT_ClusterOnTrack(SC, std::move(locpar), std::move(cov), iH, glob, isbroad);
258 }
259 
260 double
262  constexpr float corr1[30] = {
263  0.3, 0.8, 1.1, 1.5, 1.9, 1.9, 2.1, 2.4, 2.3, 2.6,
264  2.6, 2.7, 2.8, 2.7, 2.5, 2.6, 2.8, 2.6, 2.6, 2.7,
265  2.2, 1.8, 1.8, 1.6, 1.5, 0.0, 0.0, 0.0, 0.0, 0.0
266  };
267  constexpr float corr2[30] = {
268  0.0, 0.0, 0.0, 1.0, 1.5, 1.7, 1.7, 2.3, 2.1, 2.5,
269  2.5, 2.7, 2.7, 2.9, 3.0, 3.0, 3.0, 3.0, 3.4, 3.4,
270  3.0, 3.2, 2.6, 2.6, 3.0, 2.7, 2.5, 2.4, 1.7, 1.3
271  };
272 
273  // Phi bins have 1 degree width, and cover 0-30 degrees
274  int phiBin = static_cast<int>(std::abs(phi) / deg);
275 
276  float correction(0.);
277 
278  if (phiBin < 30) {
279  if (nstrip == 1) {
280  correction = corr1[phiBin];
281  }
282  if (nstrip == 2) {
283  correction = corr2[phiBin];
284  }
285  }
286 
287  if (phi > 0.) {
288  correction *= -1.;
289  }
290 
291  return correction * micrometer;
292 }
293 
294 double
296  constexpr float sigma1[60] = {
297  22.1, 21.8, 21.4, 21.0, 20.5, 20.0, 19.6, 19.1, 18.5, 18.0,
298  17.4, 17.0, 16.4, 15.8, 15.4, 14.9, 14.4, 14.1, 13.3, 13.1,
299  12.9, 12.4, 12.6, 12.2, 12.3, 12.6, 13.4, 14.2, 15.6, 19.3,
300  22.8, 29.5, 33.2, 41.8, 44.3, 48.4, 49.9, 54.0, 53.0, 56.3,
301  57.5, 56.3, 64.5, 65.7, 66.1, 69.4, 74.8, 78.3, 78.8, 79.8,
302  73.5, 73.8, 75.8, 84.3, 87.0, 99.9, 86.3, 0.0, 0.0, 0.0
303  };
304  constexpr float sigma2[60] = {
305  22.2, 20.3, 18.8, 16.0, 14.6, 13.8, 12.9, 12.9, 12.7, 12.3,
306  12.7, 12.6, 13.0, 13.3, 14.0, 14.6, 15.3, 15.9, 16.6, 17.6,
307  18.4, 19.3, 19.9, 20.5, 21.0, 21.2, 21.5, 21.4, 21.3, 21.3,
308  20.9, 20.8, 20.6, 20.7, 20.3, 20.7, 21.7, 24.4, 26.5, 29.5,
309  34.6, 41.6, 48.5, 52.3, 54.5, 58.4, 61.8, 66.7, 69.9, 72.1,
310  78.9, 79.2, 81.8, 80.9, 87.5, 99.2, 0.0, 0.0, 0.0, 0.0
311  };
312  constexpr float sigma3[60] = {
313  70.1, 73.6, 71.7, 66.9, 68.3, 66.8, 66.2, 64.8, 66.6, 63.3,
314  63.3, 60.4, 59.0, 57.1, 56.4, 54.4, 54.2, 54.4, 50.3, 48.9,
315  48.1, 41.9, 38.0, 31.8, 28.3, 23.1, 23.0, 20.3, 18.5, 17.6,
316  17.7, 16.8, 18.3, 19.3, 19.0, 20.0, 20.9, 21.6, 22.0, 22.2,
317  22.7, 22.4, 24.3, 24.8, 24.6, 27.0, 29.8, 37.0, 47.7, 49.3,
318  58.2, 60.2, 66.8, 70.8, 77.3, 80.6, 0.0, 0.0, 0.0, 0.0
319  };
320  constexpr float sigma4[60] = {
321  103.2, 100.4, 100.7, 101.2, 107.4, 100.6, 100.9, 100.4, 96.3, 98.2,
322  96.7, 94.5, 96.9, 91.7, 90.5, 89.5, 86.3, 90.6, 82.4, 89.3,
323  87.3, 77.6, 75.7, 77.2, 77.3, 84.1, 80.1, 66.9, 73.7, 72.3,
324  58.1, 65.6, 64.2, 54.7, 47.2, 44.4, 34.6, 36.4, 29.1, 25.8,
325  18.8, 21.6, 18.6, 20.3, 22.7, 23.3, 24.1, 22.4, 24.7, 24.7,
326  27.3, 30.4, 37.0, 46.4, 59.4, 62.6, 65.3, 0.0, 0.0, 0.0
327  };
328  constexpr float sigma5[60] = {
329  150.9, 139.7, 133.9, 139.8, 141.4, 134.9, 138.4, 129.3, 137.9, 128.7,
330  132.4, 130.1, 124.2, 115.8, 131.4, 115.2, 128.7, 112.8, 130.7, 129.0,
331  115.8, 101.3, 115.9, 116.1, 121.7, 109.9, 110.0, 97.2, 96.4, 107.3,
332  98.2, 80.0, 73.2, 87.0, 97.0, 88.5, 72.2, 73.9, 80.8, 75.7,
333  69.5, 67.1, 54.1, 58.9, 47.3, 50.6, 29.5, 26.6, 25.8, 20.9,
334  20.6, 21.9, 22.1, 21.1, 27.9, 41.6, 0.0, 0.0, 0.0, 0.0
335  };
336 
337  // Phi bins have 1 degree width, and cover 0-60 degrees
338  int phiBin = static_cast<int>(std::abs(phi) / deg);
339 
340  float sigma(0.);
341 
342  if (phiBin < 60) {
343  if (nstrip == 1) {
344  sigma = sigma1[phiBin];
345  }
346  if (nstrip == 2) {
347  sigma = sigma2[phiBin];
348  }
349  if (nstrip == 3) {
350  sigma = sigma3[phiBin];
351  }
352  if (nstrip == 4) {
353  sigma = sigma4[phiBin];
354  }
355  if (nstrip == 5) {
356  sigma = sigma5[phiBin];
357  }
358  }
359  if (sigma < 0.1) {
360  sigma = std::max(100., float(nstrip) * 80. / std::sqrt(12));
361  }
362 
363  return sigma * micrometer;
364 }
TrapezoidBounds.h
Trk::LocalParameters
Definition: LocalParameters.h:98
Trk::RectangleBounds
Definition: RectangleBounds.h:38
python.tests.PyTestsLib.finalize
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
Definition: PyTestsLib.py:53
pdg_comparison.sigma
sigma
Definition: pdg_comparison.py:324
Amg::MatrixX
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Definition: EventPrimitives.h:29
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
max
#define max(a, b)
Definition: cfImp.cxx:41
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
RectangleBounds.h
Trk::locX
@ locX
Definition: ParamDefs.h:43
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
JetTiledMap::W
@ W
Definition: TiledEtaPhiMap.h:44
Trk::ParametersBase::associatedSurface
virtual const Surface & associatedSurface() const override=0
Access to the Surface associated to the Parameters.
Trk::SurfaceBounds::Rectangle
@ Rectangle
Definition: SurfaceBounds.h:65
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
InDet::SCT_ClusterOnTrackTool::getCorrection
static double getCorrection(double phi, int nstrip)
Returns a correction to be applied to the SCT cluster local x position in simulated events to remove ...
Definition: SCT_ClusterOnTrackTool.cxx:261
mat
GeoMaterial * mat
Definition: LArDetectorConstructionTBEC.cxx:53
initialize
void initialize()
Definition: run_EoverP.cxx:894
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
Trk::TrapezoidBounds::halflengthY
double halflengthY() const
This method returns the halflength in Y (second coordinate of local surface frame)
InDet::SCT_ClusterOnTrackTool::m_option_errorStrategy
int m_option_errorStrategy
Definition: SCT_ClusterOnTrackTool.h:105
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
deg
#define deg
Definition: SbPolyhedron.cxx:17
Trk::PrepRawData::type
virtual bool type(PrepRawDataType type) const =0
Interface method checking the type.
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
InDet::SCT_ClusterOnTrackTool::initialize
virtual StatusCode initialize() override
AlgTool initialisation.
Definition: SCT_ClusterOnTrackTool.cxx:52
drawFromPickle.atan
atan
Definition: drawFromPickle.py:36
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
Trk::DefinedParameter
std::pair< double, ParamDefs > DefinedParameter
Definition: DefinedParameter.h:27
SCT_ClusterOnTrackTool.h
tools.zlumi_mc_cf.correction
def correction(mu, runmode, campaign, run=None)
Definition: zlumi_mc_cf.py:4
InDet::SCT_ClusterOnTrackTool::m_sctErrorScalingKey
SG::ReadCondHandleKey< RIO_OnTrackErrorScaling > m_sctErrorScalingKey
toolhandle for central error scaling
Definition: SCT_ClusterOnTrackTool.h:98
parseMapping.v0
def v0
Definition: parseMapping.py:149
beamspotman.n
n
Definition: beamspotman.py:731
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
EL
This module defines the arguments passed from the BATCH driver to the BATCH worker.
Definition: AlgorithmWorkerData.h:24
TRT_PAI_gasdata::SC
const float SC[NC]
Cross sections for Carbon.
Definition: TRT_PAI_gasdata.h:255
Trk::ParametersBase
Definition: ParametersBase.h:55
python.SystemOfUnits.micrometer
int micrometer
Definition: SystemOfUnits.py:71
InDet::SCT_Cluster
Definition: InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/SCT_Cluster.h:34
Trk::PrepRawData
Definition: PrepRawData.h:62
Trk::ParametersCommon::localPosition
Amg::Vector2D localPosition() const
Access method for the local coordinates, local parameter definitions differ for each surface type.
InDet::SCT_ClusterOnTrackTool::m_option_correctionStrategy
int m_option_correctionStrategy
Definition: SCT_ClusterOnTrackTool.h:106
Trk::Surface::bounds
virtual const SurfaceBounds & bounds() const =0
Surface Bounds method.
xAOD::phiBin
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setPhiMap phiBin
Definition: L2StandAloneMuon_v2.cxx:144
InDet::SCT_ClusterOnTrackTool::finalize
virtual StatusCode finalize() override
AlgTool termination.
Definition: SCT_ClusterOnTrackTool.cxx:93
Trk::RectangleBounds::halflengthY
double halflengthY() const
for consitant naming
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
Trk::SurfaceBounds::Trapezoid
@ Trapezoid
Definition: SurfaceBounds.h:67
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::RectangleBounds::type
virtual BoundsType type() const override final
Return the type of the bounds for persistency.
Definition: RectangleBounds.h:77
ErrorScalingCast.h
Trk::TrapezoidBounds
Definition: TrapezoidBounds.h:43
InDet::SCT_ClusterOnTrackTool::m_lorentzAngleTool
ToolHandle< ISiLorentzAngleTool > m_lorentzAngleTool
Definition: SCT_ClusterOnTrackTool.h:100
Trk::ParametersBase::momentum
const Amg::Vector3D & momentum() const
Access method for the momentum.
InDet::SCT_ClusterOnTrackTool::getError
static double getError(double phi, int nstrip)
Returns the resolution on the reconstructed position (local x) of SCT clusters in simulated events.
Definition: SCT_ClusterOnTrackTool.cxx:295
Base_Fragment.width
width
Definition: Sherpa_i/share/common/Base_Fragment.py:59
Trk::PrepRawDataType::SCT_Cluster
@ SCT_Cluster
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
InDet::SiWidth
Definition: SiWidth.h:25
InDet::SCT_ClusterOnTrackTool::m_option_make2dimBarrelClusters
bool m_option_make2dimBarrelClusters
flag storing if errors need scaling or should be kept nominal
Definition: SCT_ClusterOnTrackTool.h:104
Amg::AngleAxis3D
Eigen::AngleAxisd AngleAxis3D
Definition: GeoPrimitives.h:45
Trk::TrapezoidBounds::type
virtual BoundsType type() const override
Return the type of the bounds for persistency.
Definition: TrapezoidBounds.h:84
AthAlgTool
Definition: AthAlgTool.h:26
IdentifierHash
Definition: IdentifierHash.h:38
python.IoTestsLib.w
def w
Definition: IoTestsLib.py:200
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54
Trk::Surface::transform
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
InDet::SCT_ClusterOnTrackTool::correct
virtual InDet::SCT_ClusterOnTrack * correct(const Trk::PrepRawData &, const Trk::TrackParameters &) const override
produces an SCT_ClusterOnTrack using the measured SCT_Cluster and the track prediction.
Definition: SCT_ClusterOnTrackTool.cxx:105
mag
Scalar mag() const
mag method
Definition: AmgMatrixBasePlugin.h:25
InDet::SCT_ClusterOnTrackTool::SCT_ClusterOnTrackTool
SCT_ClusterOnTrackTool(const std::string &, const std::string &, const IInterface *)
AlgTool constructor.
Definition: SCT_ClusterOnTrackTool.cxx:31
InDetDD::Trapezoid
@ Trapezoid
Definition: DetectorDesign.h:42
InDet::SCT_ClusterOnTrack
Definition: SCT_ClusterOnTrack.h:44