ATLAS Offline Software
TRT_DriftCircleOnTrackUniversalTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // Implementation file for class TRT_DriftCircleOnTrackUniversalTool
8 // (c) ATLAS Detector software
10 // AlgTool used for TRT_DriftCircleOnTrack object production
12 
13 
16 
18 // Constructor
20 
22 (const std::string& ty,const std::string& na,const IInterface* pa)
23  : AthAlgTool(ty,na,pa),
24  m_scalefactor(2.)
25 {
26  declareInterface<IRIO_OnTrackCreator>(this);
27  declareProperty("ScaleHitUncertainty" ,m_scalefactor );
28 }
29 
31 // Destructor
33 
35 
37 // Initialisation
39 
41 {
43 
44  if(m_riontrackTube.retrieve().isFailure()){
45  msg(MSG::FATAL) << "Failed to retrieve tool " << m_riontrackTube << endmsg;
46  return StatusCode::FAILURE;
47  }
48 
49  if(m_riontrackDrift.retrieve().isFailure()){
50  msg(MSG::FATAL) << "Failed to retrieve tool " << m_riontrackDrift << endmsg;
51  return StatusCode::FAILURE;
52  }
53 
54  return sc;
55 }
56 
58 // Finalize
60 
62 {
63  StatusCode sc = AlgTool::finalize(); return sc;
64 }
65 
67 // Trk::TRT_DriftCircleOnTrack production
69 
71 (const Trk::PrepRawData& rio,const Trk::TrackParameters& TP) const
72 {
73  const InDet::TRT_DriftCircle* DC = dynamic_cast<const InDet::TRT_DriftCircle*>(&rio);
74  if(!DC) return nullptr;
75 
76  Trk::RIO_OnTrack *rot=nullptr;
77 
78  //now decide about tube or precision hit
79 
81  double driftradius = DC->localPosition()[Trk::driftRadius];
82  double distance2 = fabs(TP.parameters()[0])-driftradius; distance2 *= distance2;
83 
84 
85  if(distance2 > error2){
86  //tube hit
87  rot=m_riontrackTube->correct(rio,TP);
88  }else {
89  //precision hit
90  rot=m_riontrackDrift->correct(rio,TP);
91  }
92 
93  return rot;
94 }
95 
96 
python.tests.PyTestsLib.finalize
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
Definition: PyTestsLib.py:53
python.Constants.FATAL
int FATAL
Definition: Control/AthenaCommon/python/Constants.py:19
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
initialize
void initialize()
Definition: run_EoverP.cxx:894
Trk::PrepRawData::localCovariance
const Amg::MatrixX & localCovariance() const
return const ref to the error matrix
Trk::RIO_OnTrack
Definition: RIO_OnTrack.h:70
InDet::TRT_DriftCircleOnTrackUniversalTool::~TRT_DriftCircleOnTrackUniversalTool
virtual ~TRT_DriftCircleOnTrackUniversalTool()
InDet::TRT_DriftCircle
Definition: TRT_DriftCircle.h:32
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
InDet::TRT_DriftCircleOnTrackUniversalTool::finalize
virtual StatusCode finalize() override
Definition: TRT_DriftCircleOnTrackUniversalTool.cxx:61
InDet::TRT_DriftCircleOnTrackUniversalTool::m_riontrackDrift
ToolHandle< Trk::IRIO_OnTrackCreator > m_riontrackDrift
Definition: TRT_DriftCircleOnTrackUniversalTool.h:54
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
Trk::driftRadius
@ driftRadius
trt, straws
Definition: ParamDefs.h:59
InDet::TRT_DriftCircleOnTrackUniversalTool::m_scalefactor
double m_scalefactor
Definition: TRT_DriftCircleOnTrackUniversalTool.h:57
Trk::ParametersBase
Definition: ParametersBase.h:55
TRT_DriftCircleOnTrack.h
InDet::TRT_DriftCircleOnTrackUniversalTool::TRT_DriftCircleOnTrackUniversalTool
TRT_DriftCircleOnTrackUniversalTool(const std::string &, const std::string &, const IInterface *)
Definition: TRT_DriftCircleOnTrackUniversalTool.cxx:22
Trk::PrepRawData
Definition: PrepRawData.h:62
TRT_DriftCircleOnTrackUniversalTool.h
Trk::PrepRawData::localPosition
const Amg::Vector2D & localPosition() const
return the local position reference
InDet::TRT_DriftCircleOnTrackUniversalTool::initialize
virtual StatusCode initialize() override
Definition: TRT_DriftCircleOnTrackUniversalTool.cxx:40
InDet::TRT_DriftCircleOnTrackUniversalTool::m_riontrackTube
ToolHandle< Trk::IRIO_OnTrackCreator > m_riontrackTube
Definition: TRT_DriftCircleOnTrackUniversalTool.h:56
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
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
AthAlgTool
Definition: AthAlgTool.h:26
InDet::TRT_DriftCircleOnTrackUniversalTool::correct
virtual Trk::RIO_OnTrack * correct(const Trk::PrepRawData &, const Trk::TrackParameters &) const override
abstract base method for the creation of RIO_OnTrack it takes a RIO (PrepRawData) and the given Track...
Definition: TRT_DriftCircleOnTrackUniversalTool.cxx:71