ATLAS Offline Software
Loading...
Searching...
No Matches
SiLorentzAngleTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
9#ifndef SiLorentzAngleTool_h
10#define SiLorentzAngleTool_h
11
14
20
21//Gaudi Includes
22#include "GaudiKernel/ServiceHandle.h"
23
24class IdentifierHash;
25namespace InDetDD {
27}
28
34
35class SiLorentzAngleTool: public extends<AthAlgTool, ISiLorentzAngleTool>
36{
37public:
38
39 SiLorentzAngleTool(const std::string& type, const std::string& name, const IInterface* parent);
40 virtual ~SiLorentzAngleTool() = default;
41
42 virtual StatusCode initialize() override;
43 virtual StatusCode finalize() override;
44
47 virtual double getLorentzShift(const IdentifierHash& elementHash, const EventContext& ctx) const override;
48
51 virtual double getLorentzShift(const IdentifierHash& elementHash, const Amg::Vector2D& locPos, const EventContext& ctx) const override;
52
55 virtual double getLorentzShiftEta(const IdentifierHash& elementHash, const EventContext& ctx) const override;
56
59 virtual double getLorentzShiftEta(const IdentifierHash& elementHash, const Amg::Vector2D& locPos, const EventContext& ctx) const override;
60
63 virtual double getTanLorentzAngle(const IdentifierHash& elementHash, const EventContext& ctx) const override;
64
67 virtual double getTanLorentzAngle(const IdentifierHash& elementHash, const Amg::Vector2D& locPos, const EventContext& ctx) const override;
68
71 virtual double getTanLorentzAngleEta(const IdentifierHash& elementHash, const EventContext& ctx) const override;
72
75 virtual double getTanLorentzAngleEta(const IdentifierHash& elementHash, const Amg::Vector2D& locPos, const EventContext& ctx) const override;
76
78 virtual double getBiasVoltage(const IdentifierHash& elementHash, const EventContext& ctx) const override;
79
81 virtual double getTemperature(const IdentifierHash& elementHash, const EventContext& ctx) const override;
82
84 virtual double getDepletionVoltage(const IdentifierHash& elementHash, const EventContext& ctx) const override;
85
86private:
88
89 double getValue(const IdentifierHash& elementHash, const Amg::Vector2D& locPos, Variable variable, const EventContext& ctx) const;
90 double getCorrectionFactor(const EventContext& ctx) const;
91 Amg::Vector3D getMagneticField(const Amg::Vector3D& pointvec, const EventContext& ctx) const;
92 const SiLorentzAngleCondData* getCondData(const EventContext& ctx) const;
93 const InDetDD::SiDetectorElement* getDetectorElement(const IdentifierHash& waferHash, const EventContext& ctx) const;
94
95 // Properties
96 std::string m_detectorName;
99 bool m_ignoreLocalPos; // Makes methods using localPosition behave as method without passing localPosition.
101 SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_detEleCollKey{this, "DetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT or Pixel"};
102 SG::ReadCondHandleKey<AtlasFieldCacheCondObj> m_fieldCondObjInputKey{this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"};
103
104 static const double s_invalidValue;
105};
106
107#endif // SiLorentzAngleTool_h
This is a "hash" representation of an Identifier.
Class to hold geometrical description of a silicon detector element.
Concrete class for Lorentz angle conditions data for each detector element.
const SiLorentzAngleCondData * getCondData(const EventContext &ctx) const
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCondObjInputKey
double getCorrectionFactor(const EventContext &ctx) const
SG::ReadCondHandleKey< SiLorentzAngleCondData > m_condData
double getValue(const IdentifierHash &elementHash, const Amg::Vector2D &locPos, Variable variable, const EventContext &ctx) const
static const double s_invalidValue
virtual double getTanLorentzAngleEta(const IdentifierHash &elementHash, const EventContext &ctx) const override
Get tan af the Lorentz angle in the local y (etaDist) direction Assumes the center of the detector an...
virtual StatusCode initialize() override
Service init.
virtual double getDepletionVoltage(const IdentifierHash &elementHash, const EventContext &ctx) const override
Get depletion voltage.
const InDetDD::SiDetectorElement * getDetectorElement(const IdentifierHash &waferHash, const EventContext &ctx) const
virtual double getLorentzShift(const IdentifierHash &elementHash, const EventContext &ctx) const override
Get the Lorentz shift correction in the local x (phiDist) direction Assumes the center of the detecto...
virtual double getLorentzShiftEta(const IdentifierHash &elementHash, const EventContext &ctx) const override
Get the Lorentz shift correction in the local y (etaDist) direction Assumes the center of the detecto...
virtual double getBiasVoltage(const IdentifierHash &elementHash, const EventContext &ctx) const override
Get bias voltage.
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_detEleCollKey
SiLorentzAngleTool(const std::string &type, const std::string &name, const IInterface *parent)
virtual double getTemperature(const IdentifierHash &elementHash, const EventContext &ctx) const override
Get temperature.
virtual ~SiLorentzAngleTool()=default
virtual double getTanLorentzAngle(const IdentifierHash &elementHash, const EventContext &ctx) const override
Get tan af the Lorentz angle in the local x (phiDist) direction Assumes the center of the detector an...
Amg::Vector3D getMagneticField(const Amg::Vector3D &pointvec, const EventContext &ctx) const
virtual StatusCode finalize() override
Service finalize.
Wrapper around a histogram which allows for some additional filling patterns and data manipulation.
Definition Variable.h:41
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D
Message Stream Member.