ATLAS Offline Software
AlignResidualCalculator.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
10 
18 
19 #include "muonEvent/CaloEnergy.h"
20 
21 #include <vector>
22 
23 namespace Trk {
24 
25  //______________________________________________________________
26  AlignResidualCalculator::AlignResidualCalculator(const std::string& type, const std::string& name,
27  const IInterface* parent)
28 
30  , m_pullCalculator("Trk::ResidualPullCalculator/ResidualPullCalculator")
31  , m_updator("Trk::KalmanUpdator/TrkKalmanUpdator")
32  , m_qOverP{}
33  , m_previousQOverP{}
34  , m_nDoF{}
35  , m_chi2ForMeasType(nullptr)
36  {
37  declareInterface<IAlignResidualCalculator>(this);
38 
39  declareProperty("ResidualPullCalculator", m_pullCalculator);
40  declareProperty("ResidualType", m_resType = HitOnly);
41  declareProperty("IncludeScatterers", m_includeScatterers = false );
42 
43  declareProperty("UpdatorTool", m_updator);
44  }
45 
46  //________________________________________________________________________
48  {
49  delete [] m_chi2ForMeasType;
50  }
51 
52  //________________________________________________________________________
54  {
55  // get residual pull calculator
56  if (m_pullCalculator.retrieve().isFailure()) {
57  msg(MSG::FATAL) << "Could not get " << m_pullCalculator << endmsg;
58  return StatusCode::FAILURE;
59  }
60  ATH_MSG_INFO("Retrieved " << m_pullCalculator);
61 
62  // get updator
63  if(m_resType==Unbiased) {
64  if (m_updator.retrieve().isFailure()) {
65  msg(MSG::FATAL) << "Could not get " << m_updator << endmsg;
66  return StatusCode::FAILURE;
67  }
68  ATH_MSG_INFO("Retrieved " << m_pullCalculator);
69  }
70 
71  ATH_MSG_INFO("Using"<<AlignResidualType(m_resType)<<"residuals.");
72 
73  return StatusCode::SUCCESS;
74  }
75 
76  //________________________________________________________________________
78  {
79  return StatusCode::SUCCESS;
80  }
81 
82  //________________________________________________________________________
84  {
85  bool useNewTrack = (track!=nullptr);
86  return setResiduals(atsosColl->begin(), atsosColl->end(), track, useNewTrack);
87  }
88 
89  //________________________________________________________________________
91  {
92  bool useNewTrack = (track!=nullptr);
93  const Track* newTrack = (useNewTrack) ? track : alignTrack;
94  return setResiduals(alignTrack->firstAtsos(), alignTrack->lastAtsos(), newTrack, useNewTrack);
95  }
96 
97  //________________________________________________________________________
100  const Track* track, bool newTrack)
101  {
102  m_nDoF=0;
103  m_matchedTSOS.clear();
104 
105  delete [] m_chi2ForMeasType;
108  m_chi2ForMeasType[i]=0.;
109 
110  //ATH_MSG_DEBUG("in setResiduals with newTrack="<<newTrack);
111 
112  if (!track&&newTrack) { ATH_MSG_ERROR("no track!"); return 0.; }
113 
114  int ntsos(0);
115  double chi2(0.);
116  for (AlignTSOSCollection::iterator atsos=firstAtsos; atsos != lastAtsos; ++atsos,ntsos++) {
117 
118  const AlignTSOS* atsosp = *atsos;
119  // get TSOS from AlignTSOS or closest TSOS if track given
120  const TrackStateOnSurface* tsos =
121  (newTrack) ? getMatchingTSOS(*atsos,track) : dynamic_cast<const TrackStateOnSurface*>(atsosp);
122 
123  ATH_MSG_DEBUG("ntsos "<<ntsos);
124 
125  const MaterialEffectsBase* meb = tsos->materialEffectsOnTrack();
126  const Trk::MaterialEffectsOnTrack* meot = dynamic_cast<const MaterialEffectsOnTrack*>(meb);
127  //const ScatteringAngles* scatterer = (meot) ? meot->scatteringAngles() : 0;
128 
129  // if scatterer, add scattering parameters
130  //int nScattererDim=0;
131  if (m_includeScatterers && meb && meot) {
132  //nScattererDim = (scatterer) ? 2 : 1;
133  accumulateScattering(tsos);
134  }
135  //ATH_MSG_DEBUG("scattererDim="<<nScattererDim);
136  //(**atsos).setScatteringAngle(scatteringAngle);
137 
138  // set residuals for alignTSOS
139  double dchi2 = setResidualsOnATSOS(*atsos,tsos);
140  chi2 += dchi2;
141  int imeasType=(**atsos).measType();
142  m_chi2ForMeasType[imeasType] += dchi2;
143  ATH_MSG_DEBUG("adding "<<dchi2<<", m_chi2ForMeasType["<<imeasType<<"]="<<m_chi2ForMeasType[imeasType]);
144  }
145 
146  return chi2;
147  }
148 
149  //_______________________________________________________________________
150  double
152  {
153  // this method does the following:
154  // 1. gets residuals (measurement and scattering dimensions),
155  // 2. adds to AlignTSOS, and
156  // 3. returns contribution to chi2 from this ATSOS
157 
158  ATH_MSG_DEBUG("in setResidualsOnATSOS");
159 
160  atsos->clearResiduals();
161 
162  double dchi2(0.);
163 
164  // scattering residual(s) and/or energy loss first
165  if (m_includeScatterers) {
166  ATH_MSG_DEBUG("scatterer");
167 
168  // when using unbiased residuals including scatterers doesn't make sense
169  if(m_resType == Unbiased)
170  ATH_MSG_WARNING("When using unbiased residuals including scatterers doesn't make sense!");
171 
172  const MaterialEffectsBase* meb = tsos->materialEffectsOnTrack();
173  const Trk::MaterialEffectsOnTrack* meot = dynamic_cast<const MaterialEffectsOnTrack*>(meb);
174  const ScatteringAngles* scatterer = (meot) ? meot->scatteringAngles() : nullptr;
175 
176  int nscatparam=0;
177  if (meb && meot)
178  nscatparam = (scatterer) ? 2 : 1;
179 
180  for (int iparam=0;iparam<nscatparam;iparam++) {
181 
182  double errSq=0.;
183  double residual(-999.);
184 
185  if (nscatparam==2) {
186 
187  const Trk::TrackParameters * tparp = tsos->trackParameters();
188  if (tparp) {
189  if (iparam==0) {
190  residual=-scatterer->deltaPhi()* sin (tparp->parameters()[Trk::theta]);
191  errSq = scatterer->sigmaDeltaTheta();
192  ATH_MSG_DEBUG("sigmaDeltaTheta="<<scatterer->sigmaDeltaTheta());
193  ATH_MSG_DEBUG("sigmaDeltaPhi ="<<scatterer->sigmaDeltaPhi());
194  ATH_MSG_DEBUG("residual:"<<residual<<", errSq: "<<errSq<<", err="<<std::sqrt(errSq));
195  errSq *= errSq;
196  }
197  else{
198  residual=-scatterer->deltaTheta();
199  errSq = scatterer->sigmaDeltaTheta();
200  errSq *= errSq;
201  }
202  }
203  else{
204  ATH_MSG_WARNING("scatterer has no TrackParameters!");
205  }
206 
208  atsos->addResidual(res);
209 
210  dchi2 += res.residualNorm()*res.residualNorm();
211  m_nDoF++;
212  }
213  else if (!atsos->rio() && !atsos->crio()) {
214  ATH_MSG_DEBUG("energy deposit");
215 
216  // energy deposit
217  double E0 = 1./std::fabs(m_previousQOverP);
218  double E1 = 1./std::fabs(m_qOverP);
219  double energyLoss= std::fabs(meot->energyLoss()->deltaE());
220 
221  double residual = .001*(E0-E1-energyLoss);
222  double errSq = .001*meot->energyLoss()->sigmaDeltaE();
223 
224  ATH_MSG_DEBUG("E0/E1/energyLoss: "<<E0<<"/"<<E1<<"/"<<energyLoss);
225  ATH_MSG_DEBUG("calorimeter residual: "<<residual/errSq);
226 
227  errSq*=errSq;
228 
230  atsos->addResidual(res);
231  dchi2 += res.residualNorm()*res.residualNorm();
232  m_nDoF++;
233  }
234  }
235  }
236 
237  // residuals from measurement
238  if (atsos->rio() || atsos->crio()) {
239 
240  int nparams = (atsos->measType()==TrackState::Pixel) ? 2 : 1;
241  for (int iparam=0;iparam<nparams;iparam++) {
242 
243  double errSq=0.;
244  double residual(-999.);
245 
246  if ( atsos->measType()!=TrackState::unidentified &&
247  (atsos->rio()!=nullptr || atsos->crio()!=nullptr) ) {
248 
249  const MeasurementBase* mesb = tsos->measurementOnTrack();
250 
251  const TrackParameters * trackPars = tsos->trackParameters();
252  std::optional<ResidualPull> resPull = std::nullopt;
253 
254  if ( trackPars ) {
255 
256  if (m_resType == Unbiased) {
257  // Get unbiased state
258  const Trk::TrackParameters * unbiasedTrackPars =
259  m_updator->removeFromState(*trackPars,
260  mesb->localParameters(),
261  mesb->localCovariance()).release();
262  if (unbiasedTrackPars) {
263  trackPars = unbiasedTrackPars;
264  // AlignTSOS desctructor takes care of deleting unbiasedTrackPars
265  atsos->setUnbiasedTrackPars(unbiasedTrackPars);
266  }
267  else
268  ATH_MSG_WARNING("Could not get unbiased track parameters, use normal parameters");
269  }
270 
271  ATH_MSG_DEBUG("Calling ResidualPullCalculator for residual type "
273  <<" (AlignResidualType "<<AlignResidualType(m_resType)
274  <<" "<<m_resType<<")");
275  ATH_MSG_DEBUG("mesb->localErrorMatrix().covValue(Trk::loc1): "<<mesb->localCovariance()(Trk::loc1,Trk::loc1));
276  resPull = m_pullCalculator->residualPull(mesb, trackPars,
278  atsos->measType());
279  if ( resPull ) {
280  residual = (resPull->residual())[iparam];
281  double pull=(resPull->pull())[iparam];
282  if (pull!=0.) {
283  errSq = residual/pull;
284  errSq *= errSq;
285  }
286  ATH_MSG_DEBUG("residual="<<residual<<", pull="<<pull);
287  ATH_MSG_DEBUG("pos: ("<<mesb->globalPosition().x()<<", "
288  <<mesb->globalPosition().y()<<", "
289  <<mesb->globalPosition().z()<<")");
290  ATH_MSG_DEBUG("residual:"<<residual<<", errSq: "<<errSq<<", err="<<std::sqrt(errSq));
291  }
292  }
293  }
294  else {
295  ATH_MSG_WARNING("Expected measurement for atsos of type "
296  << atsos->dumpType()<<", meas type "<<atsos->measType() );
297  }
298 
300  atsos->addResidual(res);
301  dchi2 += res.residualNorm()*res.residualNorm();
302  m_nDoF++;
303  }
304  }
305  return dchi2;
306  }
307 
308  //________________________________________________________________________
310  {
311 
312  const MaterialEffectsOnTrack* meot = dynamic_cast<const MaterialEffectsOnTrack*>(tsos->materialEffectsOnTrack());
313  const TrackParameters* tpar = tsos->trackParameters();
314 
315  m_qOverP = tpar->charge()/tpar->pT()*sin( tpar->parameters()[Trk::theta]);
316 
317  if(!meot) return;
318  const EnergyLoss* energyLoss = meot->energyLoss();
319 
320 
321  if (!dynamic_cast<const CaloEnergy*>(energyLoss)) {
323  }
324 
325  }
326 
327  //________________________________________________________________________
328  const TrackStateOnSurface*
330  {
331  const TrackStateOnSurface* tsos(nullptr);
332 
333  if (atsos->rio() || atsos->crio()) {
334 
335  for (const TrackStateOnSurface* itTsos : *track->trackStateOnSurfaces()) {
336  if (itTsos->type(TrackStateOnSurface::Outlier))
337  continue;
338 
339  const MeasurementBase* mesb = itTsos->measurementOnTrack();
340  const RIO_OnTrack* rio = dynamic_cast<const RIO_OnTrack*>(mesb);
341  const CompetingRIOsOnTrack* crio = dynamic_cast<const CompetingRIOsOnTrack*>(mesb);
342 
343  if (!rio && crio) {
344  rio = &(crio->rioOnTrack(0));
345  }
346  if (!rio) continue;
347  if (rio->identify() == atsos->rio()->identify()) {
348  ATH_MSG_DEBUG("matched TSOS with identifier: "<<rio->identify());
349  tsos=itTsos;
350  break;
351  }
352  }
353  ATH_MSG_DEBUG("done with measurement");
354  }
355  else {
356 
357  const Amg::Vector3D origPosition=atsos->trackParameters()->position();
358  double distance2(1.e27);
359 
360  // loop over track and get closest TSOS
361  for (const TrackStateOnSurface* itTsos : *track->trackStateOnSurfaces()) {
362  if (itTsos->type(TrackStateOnSurface::Outlier))
363  continue;
364  if (!dynamic_cast<const MaterialEffectsOnTrack*>(itTsos->materialEffectsOnTrack())) continue;
365  if (!itTsos->trackParameters()) { ATH_MSG_WARNING("no track parameters!"); continue; }
366  const Amg::Vector3D newPosition=itTsos->trackParameters()->position();
367  ATH_MSG_DEBUG("origPos: "<<origPosition<<", newPos: "<<newPosition);
368  double newdist2=(newPosition - origPosition).mag2();
369  if (newdist2<distance2) {
370  distance2=newdist2;
371  tsos=itTsos;
372  }
373  }
374  ATH_MSG_DEBUG("done with scatterer");
375  }
376  if (!tsos) return nullptr;
377  const Amg::Vector3D addPosition=tsos->trackParameters()->position();
378  if (std::find(m_matchedTSOS.begin(),m_matchedTSOS.end(),tsos)==m_matchedTSOS.end()) {
379  m_matchedTSOS.push_back(tsos);
380  ATH_MSG_DEBUG("added tsos with pos: "<<addPosition);
381  }
382  else {
383  ATH_MSG_WARNING("TSOS already found with position "<<addPosition<<"!");
384  //return 0;
385  }
386  return tsos;
387  }
388 
389 } // end namespace
Trk::AlignTSOS::clearResiduals
void clearResiduals()
clears vector of residuals
Definition: AlignTSOS.h:101
Trk::ScatteringAngles::deltaPhi
double deltaPhi() const
returns the
Definition: ScatteringAngles.h:82
Trk::TrackStateOnSurface::trackParameters
const TrackParameters * trackParameters() const
return ptr to trackparameters const overload
Trk::AlignTSOS::setUnbiasedTrackPars
void setUnbiasedTrackPars(const TrackParameters *trkPars)
setter for unbiased track parameters
Definition: AlignTSOS.h:137
Trk::AlignTSOS::measType
TrackState::MeasurementType measType() const
returns measurement type enum
Definition: AlignTSOS.h:80
EnergyLoss.h
ScatteringAngles.h
Trk::TrackState::Pixel
@ Pixel
Definition: TrackStateDefs.h:28
AlignResidualCalculator.h
Trk::HitOnly
@ HitOnly
Definition: AlignResidualType.h:27
TrackParameters.h
Trk::AlignTSOS::rio
const RIO_OnTrack * rio() const
returns RIO_OnTrack or leading RIO of CompetingRIOsOnTrack (assigned by c'tor)
Definition: AlignTSOS.cxx:157
MeasurementBase.h
python.Constants.FATAL
int FATAL
Definition: Control/AthenaCommon/python/Constants.py:19
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
CaloEnergy
class extending the basic Trk::EnergyLoss to describe the measured or parameterised muon energy loss ...
Definition: CaloEnergy.h:28
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
Trk::ParametersBase::charge
double charge() const
Returns the charge.
DataVector::iterator
DataModel_detail::iterator< DataVector > iterator
Standard iterator.
Definition: DataVector.h:841
CompetingRIOsOnTrack.h
Trk::AlignResidualCalculator::accumulateScattering
void accumulateScattering(const TrackStateOnSurface *tsos)
Definition: AlignResidualCalculator.cxx:309
Trk::AlignResidualCalculator::m_matchedTSOS
std::vector< const TrackStateOnSurface * > m_matchedTSOS
Definition: AlignResidualCalculator.h:84
ClusterSeg::residual
@ residual
Definition: ClusterNtuple.h:20
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
Trk::AlignResidualType
AlignResidualType
Definition: AlignResidualType.h:26
Trk::ParamDefs
ParamDefs
Definition: ParamDefs.h:38
Trk::AlignTSOS
Definition: AlignTSOS.h:37
Trk::EnergyLoss::sigmaDeltaE
double sigmaDeltaE() const
returns the symmatric error
Trk::TrackStateOnSurface::dumpType
std::string dumpType() const
returns a string with the expanded type of the object (i.e.
Definition: TrackStateOnSurface.cxx:147
Trk::ScatteringAngles
represents a deflection of the track caused through multiple scattering in material.
Definition: ScatteringAngles.h:26
Trk::TrackStateOnSurface::measurementOnTrack
const MeasurementBase * measurementOnTrack() const
returns MeasurementBase const overload
Trk::RIO_OnTrack
Definition: RIO_OnTrack.h:70
Trk::ResidualPullType
ResidualPull::ResidualType ResidualPullType(AlignResidualType type)
Definition: AlignResidualType.cxx:41
Trk::Unbiased
@ Unbiased
Definition: AlignResidualType.h:28
Trk::MaterialEffectsBase
base class to integrate material effects on Trk::Track in a flexible way.
Definition: MaterialEffectsBase.h:35
Trk::TrackState::unidentified
@ unidentified
Definition: TrackStateDefs.h:27
Trk::AlignResidualCalculator::m_resType
int m_resType
Definition: AlignResidualCalculator.h:74
IUpdator.h
Trk::EnergyDeposit
@ EnergyDeposit
Definition: AlignResidualType.h:35
Trk::TrackStateOnSurface::Outlier
@ Outlier
This TSoS contains an outlier, that is, it contains a MeasurementBase/RIO_OnTrack which was not used ...
Definition: TrackStateOnSurface.h:122
MaterialEffectsOnTrack.h
Trk::AlignResidualCalculator::finalize
virtual StatusCode finalize() override
Definition: AlignResidualCalculator.cxx:77
Trk::MaterialEffectsOnTrack
represents the full description of deflection and e-loss of a track in material.
Definition: MaterialEffectsOnTrack.h:40
Trk::AlignResidualCalculator::m_chi2ForMeasType
double * m_chi2ForMeasType
Definition: AlignResidualCalculator.h:82
Trk::CompetingRIOsOnTrack::rioOnTrack
virtual const RIO_OnTrack & rioOnTrack(unsigned int) const =0
returns the RIO_OnTrack (also known as ROT) objects depending on the integer.
Trk::ScatteringAngles::sigmaDeltaTheta
double sigmaDeltaTheta() const
returns the
Definition: ScatteringAngles.h:100
Trk::AlignResidualCalculator::m_includeScatterers
bool m_includeScatterers
Definition: AlignResidualCalculator.h:76
AlignTrack.h
Trk::Measurement
@ Measurement
Definition: AlignResidualType.h:33
Trk::AlignResidualCalculator::m_qOverP
double m_qOverP
Definition: AlignResidualCalculator.h:77
Trk::Scatterer
@ Scatterer
Definition: AlignResidualType.h:34
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
Trk::AlignTrack::firstAtsos
AlignTSOSCollection::const_iterator firstAtsos() const
retrieve iterator pointer to first element in collection
Definition: AlignTrack.h:279
DataModel_detail::iterator
(Non-const) Iterator class for DataVector/DataList.
Definition: DVLIterator.h:184
lumiFormat.i
int i
Definition: lumiFormat.py:92
Trk::TrackStateOnSurface::materialEffectsOnTrack
const MaterialEffectsBase * materialEffectsOnTrack() const
return material effects const overload
AlignTSOS
AlignTSOS is a TSOS with extra variables useful for alignment. It is created using an implementation ...
Trk::theta
@ theta
Definition: ParamDefs.h:72
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
res
std::pair< std::vector< unsigned int >, bool > res
Definition: JetGroupProductTest.cxx:14
Trk::CompetingRIOsOnTrack
Base class for all CompetingRIOsOnTack implementations, extends the common MeasurementBase.
Definition: CompetingRIOsOnTrack.h:64
chi2
double chi2(TH1 *h0, TH1 *h1)
Definition: comparitor.cxx:522
Trk::EnergyLoss::deltaE
double deltaE() const
returns the
test_pyathena.parent
parent
Definition: test_pyathena.py:15
python.StandardJetMods.pull
pull
Definition: StandardJetMods.py:264
Trk::ParametersBase
Definition: ParametersBase.h:55
Trk::AlignResidualCalculator::initialize
virtual StatusCode initialize() override
Definition: AlignResidualCalculator.cxx:53
Trk::AlignResidualCalculator::~AlignResidualCalculator
virtual ~AlignResidualCalculator()
Definition: AlignResidualCalculator.cxx:47
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
Trk::MeasurementBase::localCovariance
const Amg::MatrixX & localCovariance() const
Interface method to get the localError.
Definition: MeasurementBase.h:138
Trk::AlignResidualCalculator::setResidualsOnATSOS
double setResidualsOnATSOS(AlignTSOS *atsos, const TrackStateOnSurface *tsos)
Definition: AlignResidualCalculator.cxx:151
Trk::MeasurementBase
Definition: MeasurementBase.h:58
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::ParametersBase::pT
double pT() const
Access method for transverse momentum.
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition: TrackStateOnSurface.h:71
Trk::AlignResidualCalculator::m_nDoF
int m_nDoF
Definition: AlignResidualCalculator.h:80
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
RIO_OnTrack.h
Trk::EnergyLoss
This class describes energy loss material effects in the ATLAS tracking EDM.
Definition: EnergyLoss.h:34
Trk::MeasurementBase::globalPosition
virtual const Amg::Vector3D & globalPosition() const =0
Interface method to get the global Position.
Trk::AlignResidualCalculator::m_pullCalculator
ToolHandle< IResidualPullCalculator > m_pullCalculator
Definition: AlignResidualCalculator.h:71
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::AlignTrack
Definition: AlignTrack.h:41
Trk::AlignResidualCalculator::setResiduals
virtual double setResiduals(DataVector< AlignTSOS > *alignTSOSColl, const Track *track) override
sets residuals for AlignTSOS on AlignTrack and returns total chi2
Trk::MeasurementBase::localParameters
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
Definition: MeasurementBase.h:132
Trk::AlignResidualCalculator::m_updator
ToolHandle< IUpdator > m_updator
Definition: AlignResidualCalculator.h:72
IResidualPullCalculator.h
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
Trk::MaterialEffectsOnTrack::energyLoss
const EnergyLoss * energyLoss() const
returns the energy loss object.
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
Trk::AlignTSOS::crio
const CompetingRIOsOnTrack * crio() const
returns CompetingRIOsOnTrack
Definition: AlignTSOS.h:92
Trk::AlignResidualCalculator::m_previousQOverP
double m_previousQOverP
Definition: AlignResidualCalculator.h:78
Trk::AlignResidualCalculator::AlignResidualCalculator
AlignResidualCalculator(const std::string &type, const std::string &name, const IInterface *parent)
Definition: AlignResidualCalculator.cxx:26
Trk::MaterialEffectsOnTrack::scatteringAngles
const ScatteringAngles * scatteringAngles() const
returns the MCS-angles object.
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
Trk::AlignTSOS::addResidual
void addResidual(const Residual &residual)
pushes back vector of Residuals to alignTSOS residuals
Definition: AlignTSOS.h:95
Trk::RIO_OnTrack::identify
virtual Identifier identify() const final
return the identifier -extends MeasurementBase
Definition: RIO_OnTrack.h:155
Trk::ScatteringAngles::sigmaDeltaPhi
double sigmaDeltaPhi() const
returns the
Definition: ScatteringAngles.h:94
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
Trk::Residual
Definition: Tracking/TrkAlignment/TrkAlignEvent/TrkAlignEvent/Residual.h:24
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
Trk::ScatteringAngles::deltaTheta
double deltaTheta() const
returns the
Definition: ScatteringAngles.h:88
Amg::distance2
float distance2(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the squared distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:48
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
AthAlgTool
Definition: AthAlgTool.h:26
Trk::loc1
@ loc1
Definition: ParamDefs.h:40
mag2
Scalar mag2() const
mag2 method - forward to squaredNorm()
Definition: AmgMatrixBasePlugin.h:30
Trk::AlignResidualCalculator::getMatchingTSOS
const TrackStateOnSurface * getMatchingTSOS(const AlignTSOS *atsos, const Track *track)
Definition: AlignResidualCalculator.cxx:329
Trk::TrackState::NumberOfMeasurementTypes
@ NumberOfMeasurementTypes
Definition: TrackStateDefs.h:43
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
Trk::AlignTrack::lastAtsos
AlignTSOSCollection::const_iterator lastAtsos() const
returns iterator pointer to last element in collection
Definition: AlignTrack.h:280
CaloEnergy.h