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
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 override;
52
55 virtual double getLorentzShiftEta(const IdentifierHash& elementHash) const override;
56
59 virtual double getLorentzShiftEta(const IdentifierHash& elementHash, const Amg::Vector2D& locPos) 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 override;
68
71 virtual double getTanLorentzAngleEta(const IdentifierHash& elementHash) const override;
72
75 virtual double getTanLorentzAngleEta(const IdentifierHash& elementHash, const Amg::Vector2D& locPos) const override;
76
78 virtual double getBiasVoltage(const IdentifierHash& elementHash) const override;
79
81 virtual double getTemperature(const IdentifierHash& elementHash) const override;
82
84 virtual double getDepletionVoltage(const IdentifierHash& elementHash) const override;
85
86private:
88
89 double getValue(const IdentifierHash& elementHash, const Amg::Vector2D& locPos, Variable variable) const;
90 double getCorrectionFactor() const;
91 Amg::Vector3D getMagneticField(const Amg::Vector3D& pointvec) const;
92 const SiLorentzAngleCondData* getCondData(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
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.
Definition Variable.h:41
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D
Message Stream Member.