ATLAS Offline Software
Loading...
Searching...
No Matches
SiDetElementsRoadMaker_xk.h
Go to the documentation of this file.
1// -*- C++ -*-
2
3/*
4 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
5*/
6
7
9// Header file for class SiDetElementsRoadMaker_xk
11// Version 1.0 3/10/2004 I.Gavrilenko
13
14#ifndef SiDetElementsRoadMaker_xk_H
15#define SiDetElementsRoadMaker_xk_H
16
19
28
29#include "GaudiKernel/ToolHandle.h"
30
31// MagField cache
34
35#include <atomic>
36#include <iosfwd>
37#include <list>
38#include <deque>
39#include <vector>
40#include <array>
41
42class MsgStream;
43
44namespace InDet{
55 @author Igor.Gavrilenko@cern.ch
56 */
58
60 public extends<AthAlgTool, ISiDetElementsRoadMaker>
61 {
63 // Public methods:
65
66 public:
67
71
73 (const std::string&, const std::string&, const IInterface*);
74 virtual ~SiDetElementsRoadMaker_xk() = default;
75 virtual StatusCode initialize() override;
76 virtual StatusCode finalize() override;
78
94 virtual void detElementsRoad
95 (std::deque<Amg::Vector3D>& globalPositions,
96 std::vector<const InDetDD::SiDetectorElement*>& Road,
97 bool testDirection,
98 SiDetElementRoadMakerData_xk & roadMakerData,
99 const EventContext& ctx) const override;
100
101
110 virtual void detElementsRoad
111 (const EventContext& ctx,
112 MagField::AtlasFieldCache& fieldCache,
114 Trk::PropDirection direction,
115 std::vector<const InDetDD::SiDetectorElement*>& Road,
116 SiDetElementRoadMakerData_xk & roadMakerData) const override;
118
122
123 MsgStream& dump(MsgStream & out) const override;
124 std::ostream& dump(std::ostream& out) const override;
126
127 private:
128
130 // Protected Data
132
134
135 PublicToolHandle<Trk::IPropagator> m_proptool{this, "PropagatorTool",
136 "Trk::RungeKuttaPropagator/InDetPropagator", "Propagator tool"};
137
138
140
142 "SiDetElementsLayerVectors_xk", "Key of SiDetElementsLayerVectors_xk"};
143
144 SG::ReadCondHandleKey<AtlasFieldCacheCondObj> m_fieldCondObjInputKey{this, "AtlasFieldCacheCondObj", "fieldCondObj",
145 "Name of the Magnetic Field conditions object key"}; // Necessary only for dumpConditions method
146
147
149
150 BooleanProperty m_usePIX{this, "usePixel", true};
151 BooleanProperty m_useSCT{this, "useSCT", true};
152 FloatProperty m_width{this, "RoadWidth", 20., "Width of the road"};
153 DoubleProperty m_step{this, "MaxStep", 40., "Max step allowed"};
154 StringProperty m_pix{this, "PixManagerLocation", "Pixel", "PIX manager location"};
155 StringProperty m_sct{this, "SCTManagerLocation", "SCT", "SCT manager location"};
156 StringProperty m_fieldmode{this, "MagneticFieldMode", "MapSolenoid", "Mode of magnetic field"};
157 BooleanProperty m_ITkGeometry{this, "ITkGeometry", false};
159
161
166
168 // Methods
170
171 void computeBounds();
172 static float stepToDetElement(const InDetDD::SiDetectorElement*&,
174
176 const Trk::TrackParameters&) const;
177
178 MsgStream& dumpConditions(MsgStream& out) const;
179
180 inline
181 const SiDetElementsLayerVectors_xk *getLayers(const EventContext& ctx) const {
183 if (not layerVec.isValid()) {
184 ATH_MSG_ERROR("Failed to get " << m_layerVecKey.key());
185 }
186 return layerVec.cptr();
187 }
188
192
193 };
194
195 MsgStream& operator << (MsgStream& , const SiDetElementsRoadMaker_xk&);
196 std::ostream& operator << (std::ostream&, const SiDetElementsRoadMaker_xk&);
197
198} // end of name space
199
200#endif // SiDetElementsRoadMaker_xk_H
#define ATH_MSG_ERROR(x)
Maintain a set of objects, one per slot.
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
static Double_t Tp(Double_t *t, Double_t *par)
Class to hold geometrical description of a silicon detector element.
InDet::SiDetElementRoadMakerData_xk holds event dependent data used by SiDetElementRoadMaker_xk.
virtual ~SiDetElementsRoadMaker_xk()=default
const SiDetElementsLayerVectors_xk * getLayers(const EventContext &ctx) const
virtual StatusCode initialize() override
MsgStream & dumpConditions(MsgStream &out) const
virtual void detElementsRoad(std::deque< Amg::Vector3D > &globalPositions, std::vector< const InDetDD::SiDetectorElement * > &Road, bool testDirection, SiDetElementRoadMakerData_xk &roadMakerData, const EventContext &ctx) const override
This signature assumes you already have a list of positions along the trajectory.
PublicToolHandle< Trk::IPropagator > m_proptool
static float stepToDetElement(const InDetDD::SiDetectorElement *&, Amg::Vector3D &, Amg::Vector3D &)
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCondObjInputKey
Trk::CylinderBounds getBound(MagField::AtlasFieldCache &fieldCache, const Trk::TrackParameters &) const
static void bookUsageTracker(InDet::SiDetElementRoadMakerData_xk &data, const SiDetElementsLayerVectors_xk &layers)
this method is used to initialize the detector element usage tracker member of the event data struct ...
SG::ReadCondHandleKey< SiDetElementsLayerVectors_xk > m_layerVecKey
Created by SiDetElementsRoadCondAlg_xk.
SiDetElementsRoadMaker_xk(const std::string &, const std::string &, const IInterface *)
std::vector< std::vector< InDet::SiDetElementsLayer_xk > > SiDetElementsLayerVectors_xk
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
const_pointer_type cptr()
Bounds for a cylindrical Surface.
Eigen::Matrix< double, 3, 1 > Vector3D
Primary Vertex Finder.
MsgStream & operator<<(MsgStream &, const GNNTrackFinderTritonTool &)
PropDirection
PropDirection, enum for direction of the propagation.
MagneticFieldMode
MagneticFieldMode describing the field setup within a volume.
@ FullField
Field is set to be realistic, but within a given Volume.
ParametersBase< TrackParametersDim, Charged > TrackParameters
-event-from-file