ATLAS Offline Software
Loading...
Searching...
No Matches
SiLorentzAngleTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
9#ifndef SiLorentzAngleTool_h
10#define SiLorentzAngleTool_h
11
14#include "GaudiKernel/ThreadLocalContext.h"
15
21
22//Gaudi Includes
23#include "GaudiKernel/ServiceHandle.h"
24
25class IdentifierHash;
26namespace InDetDD {
28}
29
35
36class SiLorentzAngleTool: public extends<AthAlgTool, ISiLorentzAngleTool>
37{
38public:
39
40 SiLorentzAngleTool(const std::string& type, const std::string& name, const IInterface* parent);
41 virtual ~SiLorentzAngleTool() = default;
42
43 virtual StatusCode initialize() override;
44 virtual StatusCode finalize() override;
45
48 virtual double getLorentzShift(const IdentifierHash& elementHash, const EventContext& ctx ) const override;
49
52 virtual double getLorentzShift(const IdentifierHash& elementHash, const Amg::Vector2D& locPos) const override;
53
56 virtual double getLorentzShiftEta(const IdentifierHash& elementHash) const override;
57
60 virtual double getLorentzShiftEta(const IdentifierHash& elementHash, const Amg::Vector2D& locPos) const override;
61
64 virtual double getTanLorentzAngle(const IdentifierHash& elementHash, const EventContext& ctx) const override;
65
68 virtual double getTanLorentzAngle(const IdentifierHash& elementHash, const Amg::Vector2D& locPos) const override;
69
72 virtual double getTanLorentzAngleEta(const IdentifierHash& elementHash) const override;
73
76 virtual double getTanLorentzAngleEta(const IdentifierHash& elementHash, const Amg::Vector2D& locPos) const override;
77
79 virtual double getBiasVoltage(const IdentifierHash& elementHash) const override;
80
82 virtual double getTemperature(const IdentifierHash& elementHash) const override;
83
85 virtual double getDepletionVoltage(const IdentifierHash& elementHash) const override;
86
87private:
89
90 double getValue(const IdentifierHash& elementHash, const Amg::Vector2D& locPos, Variable variable) const;
91 double getCorrectionFactor() const;
92 Amg::Vector3D getMagneticField(const Amg::Vector3D& pointvec) const;
93 const SiLorentzAngleCondData* getCondData(const EventContext& ctx) const;
95
96 // Properties
97 std::string m_detectorName;
100 bool m_ignoreLocalPos; // Makes methods using localPosition behave as method without passing localPosition.
102 SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_detEleCollKey{this, "DetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT or Pixel"};
103 SG::ReadCondHandleKey<AtlasFieldCacheCondObj> m_fieldCondObjInputKey{this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"};
104
105 static const double s_invalidValue;
106};
107
108#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
virtual double getDepletionVoltage(const IdentifierHash &elementHash) const override
Get depletion voltage.
virtual double getBiasVoltage(const IdentifierHash &elementHash) const override
Get bias voltage.
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCondObjInputKey
SG::ReadCondHandleKey< SiLorentzAngleCondData > m_condData
static const double s_invalidValue
Amg::Vector3D getMagneticField(const Amg::Vector3D &pointvec) const
virtual StatusCode initialize() override
Service init.
virtual double getTemperature(const IdentifierHash &elementHash) const override
Get temperature.
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...
double getValue(const IdentifierHash &elementHash, const Amg::Vector2D &locPos, Variable variable) const
virtual double getTanLorentzAngleEta(const IdentifierHash &elementHash) const override
Get tan af the Lorentz angle in the local y (etaDist) direction Assumes the center of the detector an...
virtual double getLorentzShiftEta(const IdentifierHash &elementHash) const override
Get the Lorentz shift correction in the local y (etaDist) direction Assumes the center of the detecto...
const InDetDD::SiDetectorElement * getDetectorElement(const IdentifierHash &waferHash) const
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_detEleCollKey
SiLorentzAngleTool(const std::string &type, const std::string &name, const IInterface *parent)
double getCorrectionFactor() const
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...
virtual StatusCode finalize() override
Service finalize.
Wrapper around a histogram which allows for some additional filling patterns and data manipulation.
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D
Message Stream Member.