ATLAS Offline Software
TRT_DriftCircleOnTrackTool.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 TRT_DriftCircleOnTrackTool
8 // (c) ATLAS Detector software
10 // AlgTool used for TRT_DriftCircleOnTrack object production
12 // Version 1.0 21/04/2004 I.Gavrilenko
14 
19 
20 
22 // Constructor
24 
26 (const std::string& ty,const std::string& na,const IInterface* pa)
27  : AthAlgTool(ty,na,pa),
28  m_useErrorCorrection(false)
29 {
30  declareInterface<IRIO_OnTrackCreator>(this);
31  declareProperty("UseErrorCorrection",m_useErrorCorrection);
32 }
33 
35 // Destructor
37 
39 
41 // Initialisation
43 
45 {
47 
48  // get the error scaling tool
51  if (m_lumiDataKey.key().empty()) {
52  ATH_MSG_DEBUG("Luminosity conditions data key not set. No mu correction." );
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  // Straw identification
77  //
78  const InDetDD::TRT_BaseElement* pE = DC->detectorElement(); if(!pE) return nullptr;
79 
80  // Identifier iD = DC->identify();
81  // IdentifierHash iH = trt_id->straw_layer_hash(trt_id->layer_id(iD));
82  IdentifierHash iH = pE->identifyHash();
83 
84 
85  // Global direction of the track parameters
86  //
87  const AmgVector(5)& P = TP.parameters();
88  double se = sin(P[3]);
89  Amg::Vector3D dir(cos(P[2])*se,sin(P[2])*se,cos(P[3]));
90 
91  double predictedLocZ=P[1];
92 
93  double sign = (TP.parameters()[0] < 0.) ? -1. : 1.;
94 
95 
96  //only create objects within the active area
97  if(predictedLocZ>pE->strawLength()/2.){
98  predictedLocZ=pE->strawLength()/2.;
99  }else if(predictedLocZ<-pE->strawLength()/2.){
100  predictedLocZ=-pE->strawLength()/2.;
101  }
102 
103 
104 
105  // TRT_DriftCircleOnTrack production
106  //
108  if (!m_trtErrorScalingKey.key().empty()) {
109  const EventContext& ctx = Gaudi::Hive::currentContext();
110  double mu=0.;
111  if (!m_lumiDataKey.empty()) {
113  mu = lumiData->lbAverageInteractionsPerCrossing();
114  }
115 
116  bool endcap = false;
117  if(dynamic_cast<const InDetDD::TRT_EndcapElement*>(pE)) endcap = true;
119  cov = Trk::ErrorScalingCast<TRTRIO_OnTrackErrorScaling>(*error_scaling)
120  ->getScaledCovariance(std::move(cov), endcap, mu);
121  }
122 
123  if(!m_useErrorCorrection || DC->localPosition().x() > .30) {
126  return new InDet::TRT_DriftCircleOnTrack(DC, std::move(lp), std::move(cov),
127  iH, predictedLocZ, dir,
128  Trk::DECIDED);
129  }
130 
131  cov(0,0) = DC->localPosition().x()*DC->localPosition().x() +.09;
132 
135 
137  DC, std::move(lp), std::move(cov), iH, predictedLocZ, dir, Trk::DECIDED);
138 }
139 
Trk::LocalParameters
Definition: LocalParameters.h:98
TRT_DriftCircleOnTrackTool.h
python.tests.PyTestsLib.finalize
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
Definition: PyTestsLib.py:53
InDetDD::TRT_BaseElement::strawLength
virtual const double & strawLength() const =0
Active straw length.
Amg::MatrixX
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Definition: EventPrimitives.h:29
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
Trk::locX
@ locX
Definition: ParamDefs.h:43
InDet::TRT_DriftCircleOnTrackTool::TRT_DriftCircleOnTrackTool
TRT_DriftCircleOnTrackTool(const std::string &, const std::string &, const IInterface *)
Definition: TRT_DriftCircleOnTrackTool.cxx:26
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
InDet::TRT_DriftCircle::detectorElement
virtual const InDetDD::TRT_BaseElement * detectorElement() const override final
return the detector element corresponding to this PRD
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
InDetDD::TRT_EndcapElement
Definition: TRT_EndcapElement.h:44
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
SG::VarHandleKey::empty
bool empty() const
Test if the key is blank.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:150
keylayer_zslicemap.se
se
Definition: keylayer_zslicemap.py:194
InDet::TRT_DriftCircleOnTrack
Definition: TRT_DriftCircleOnTrack.h:53
InDet::TRT_DriftCircle
Definition: TRT_DriftCircle.h:32
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
Trk::DefinedParameter
std::pair< double, ParamDefs > DefinedParameter
Definition: DefinedParameter.h:27
TRT_EndcapElement.h
InDet::TRT_DriftCircleOnTrackTool::m_lumiDataKey
SG::ReadCondHandleKey< LuminosityCondData > m_lumiDataKey
Definition: TRT_DriftCircleOnTrackTool.h:61
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
AmgVector
AmgVector(4) T2BSTrackFilterTool
Definition: T2BSTrackFilterTool.cxx:114
InDet::TRT_DriftCircleOnTrackTool::m_useErrorCorrection
bool m_useErrorCorrection
Definition: TRT_DriftCircleOnTrackTool.h:68
sign
int sign(int a)
Definition: TRT_StrawNeighbourSvc.h:127
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Trk::ParametersBase
Definition: ParametersBase.h:55
InDetDD::TRT_BaseElement::identifyHash
virtual IdentifierHash identifyHash() const override final
identifier hash
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk::DECIDED
@ DECIDED
sign of drift radius has been determined
Definition: DriftCircleStatus.h:18
Trk::PrepRawData
Definition: PrepRawData.h:62
InDet::TRT_DriftCircleOnTrackTool::m_trtErrorScalingKey
SG::ReadCondHandleKey< RIO_OnTrackErrorScaling > m_trtErrorScalingKey
Definition: TRT_DriftCircleOnTrackTool.h:65
LuminosityCondData::lbAverageInteractionsPerCrossing
float lbAverageInteractionsPerCrossing() const
Definition: LuminosityCondData.cxx:26
Trk::PrepRawData::localPosition
const Amg::Vector2D & localPosition() const
return the local position reference
InDet::TRT_DriftCircleOnTrackTool::~TRT_DriftCircleOnTrackTool
virtual ~TRT_DriftCircleOnTrackTool()
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
LocalParameters.h
ParticleGun_SamplingFraction.radius
radius
Definition: ParticleGun_SamplingFraction.py:96
InDet::TRT_DriftCircleOnTrackTool::initialize
virtual StatusCode initialize() override
Definition: TRT_DriftCircleOnTrackTool.cxx:44
ErrorScalingCast.h
InDet::TRT_DriftCircleOnTrackTool::finalize
virtual StatusCode finalize() override
Definition: TRT_DriftCircleOnTrackTool.cxx:61
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
InDet::TRT_DriftCircleOnTrackTool::correct
virtual InDet::TRT_DriftCircleOnTrack * 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_DriftCircleOnTrackTool.cxx:71
AthAlgTool
Definition: AthAlgTool.h:26
IdentifierHash
Definition: IdentifierHash.h:38
CaloNoise_fillDB.mu
mu
Definition: CaloNoise_fillDB.py:53
InDetDD::TRT_BaseElement
Definition: TRT_BaseElement.h:57