|
ATLAS Offline Software
|
#include <SiLorentzAngleTool.h>
|
| SiLorentzAngleTool (const std::string &type, const std::string &name, const IInterface *parent) |
|
virtual | ~SiLorentzAngleTool ()=default |
|
virtual StatusCode | initialize () override |
| Service init. More...
|
|
virtual StatusCode | finalize () override |
| Service finalize. More...
|
|
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 detector and is generally cached. More...
|
|
virtual double | getLorentzShift (const IdentifierHash &elementHash, const Amg::Vector2D &locPos) const override |
| As above, but provide the local position. More...
|
|
virtual double | getLorentzShiftEta (const IdentifierHash &elementHash) const override |
| Get the Lorentz shift correction in the local y (etaDist) direction Assumes the center of the detector and is generally cached. More...
|
|
virtual double | getLorentzShiftEta (const IdentifierHash &elementHash, const Amg::Vector2D &locPos) const override |
| As above, but provide the local position. More...
|
|
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 and is generally cached. More...
|
|
virtual double | getTanLorentzAngle (const IdentifierHash &elementHash, const Amg::Vector2D &locPos) const override |
| As above, but provide the local position. More...
|
|
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 and is generally cached. More...
|
|
virtual double | getTanLorentzAngleEta (const IdentifierHash &elementHash, const Amg::Vector2D &locPos) const override |
| As above, but provide the local position. More...
|
|
virtual double | getBiasVoltage (const IdentifierHash &elementHash) const override |
| Get bias voltage. More...
|
|
virtual double | getTemperature (const IdentifierHash &elementHash) const override |
| Get temperature. More...
|
|
virtual double | getDepletionVoltage (const IdentifierHash &elementHash) const override |
| Get depletion voltage. More...
|
|
Concrete class for tool providing Lorentz angle (and the corresponding correction for the shift of the measurement) for each detector element.
Definition at line 36 of file SiLorentzAngleTool.h.
◆ Variable
Enumerator |
---|
LorentzShift | |
LorentzShiftEta | |
TanLorentzAngle | |
TanLorentzAngleEta | |
Definition at line 88 of file SiLorentzAngleTool.h.
◆ SiLorentzAngleTool()
SiLorentzAngleTool::SiLorentzAngleTool |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
Definition at line 18 of file SiLorentzAngleTool.cxx.
23 "Treat methods that take a local position as if one called the methods without a local position");
25 declareProperty(
"DetectorName",
m_detectorName=
"Pixel",
"Detector name (Pixel, SCT or PLR)");
28 declareProperty(
"SiLorentzAngleCondData",
m_condData,
"Key of input SiLorentzAngleCondData");
◆ ~SiLorentzAngleTool()
virtual SiLorentzAngleTool::~SiLorentzAngleTool |
( |
| ) |
|
|
virtualdefault |
◆ finalize()
StatusCode SiLorentzAngleTool::finalize |
( |
| ) |
|
|
overridevirtual |
◆ getBiasVoltage()
◆ getCondData()
◆ getCorrectionFactor()
double SiLorentzAngleTool::getCorrectionFactor |
( |
| ) |
const |
|
private |
◆ getDepletionVoltage()
◆ getDetectorElement()
◆ getLorentzShift() [1/2]
As above, but provide the local position.
More accurate but slower.
Definition at line 65 of file SiLorentzAngleTool.cxx.
◆ getLorentzShift() [2/2]
Get the Lorentz shift correction in the local x (phiDist) direction Assumes the center of the detector and is generally cached.
Definition at line 57 of file SiLorentzAngleTool.cxx.
◆ getLorentzShiftEta() [1/2]
Get the Lorentz shift correction in the local y (etaDist) direction Assumes the center of the detector and is generally cached.
Definition at line 71 of file SiLorentzAngleTool.cxx.
◆ getLorentzShiftEta() [2/2]
As above, but provide the local position.
More accurate but slower.
Definition at line 79 of file SiLorentzAngleTool.cxx.
◆ getMagneticField()
Definition at line 210 of file SiLorentzAngleTool.cxx.
214 if (useMagFieldCache) {
217 if (fieldCondObj ==
nullptr) {
219 useMagFieldCache =
false;
221 fieldCondObj->getInitializedCache(fieldCache);
224 if (useMagFieldCache) {
225 ATH_MSG_VERBOSE(
"Getting magnetic field from magnetic field service.");
228 point[0] = pointvec[0];
229 point[1] = pointvec[1];
230 point[2] = pointvec[2];
◆ getTanLorentzAngle() [1/2]
As above, but provide the local position.
More accurate but slower.
Definition at line 93 of file SiLorentzAngleTool.cxx.
◆ getTanLorentzAngle() [2/2]
Get tan af the Lorentz angle in the local x (phiDist) direction Assumes the center of the detector and is generally cached.
Definition at line 85 of file SiLorentzAngleTool.cxx.
◆ getTanLorentzAngleEta() [1/2]
Get tan af the Lorentz angle in the local y (etaDist) direction Assumes the center of the detector and is generally cached.
Definition at line 99 of file SiLorentzAngleTool.cxx.
◆ getTanLorentzAngleEta() [2/2]
◆ getTemperature()
◆ getValue()
Definition at line 137 of file SiLorentzAngleTool.cxx.
151 double depletionDepth{element->
thickness()};
152 if (deplVoltage==0.0)
ATH_MSG_WARNING(
"Depletion voltage in "<<__FILE__<<
" is zero, which might be a bug.");
153 if (std::abs(biasVoltage) < std::abs(deplVoltage)) {
154 depletionDepth *= sqrt(std::abs(biasVoltage / deplVoltage));
156 double meanElectricField{0.};
157 if (depletionDepth) {
158 meanElectricField = biasVoltage / depletionDepth;
175 double tanLorentzAnglePhi{element->design().readoutSide()*mobility*element->hitDepthDirection()*element->hitPhiDirection()*(element->normal().cross(magneticField)).
dot(element->phiAxis())};
177 return correctionFactor*tanLorentzAnglePhi;
181 double lorentzCorrectionPhi{-0.5*element->hitPhiDirection()*tanLorentzAnglePhi*depletionDepth};
182 return correctionFactor*lorentzCorrectionPhi;
189 double tanLorentzAngleEta{element->design().readoutSide()*mobility*element->hitDepthDirection()*element->hitEtaDirection()*(element->normal().cross(magneticField)).
dot(element->etaAxis())};
191 return correctionFactor*tanLorentzAngleEta;
193 double lorentzCorrectionEta{-0.5*element->hitPhiDirection()*tanLorentzAngleEta*depletionDepth};
194 return correctionFactor*lorentzCorrectionEta;
197 ATH_MSG_WARNING(
"You should not see this message. Something is wrong in getValue");
◆ initialize()
StatusCode SiLorentzAngleTool::initialize |
( |
| ) |
|
|
overridevirtual |
Service init.
Definition at line 31 of file SiLorentzAngleTool.cxx.
37 return StatusCode::FAILURE;
46 ATH_MSG_DEBUG(
"Not using Magnetic Field cache - Will be using Nominal Field!");
50 return StatusCode::SUCCESS;
◆ m_condData
◆ m_detectorName
std::string SiLorentzAngleTool::m_detectorName |
|
private |
◆ m_detEleCollKey
◆ m_fieldCondObjInputKey
◆ m_ignoreLocalPos
bool SiLorentzAngleTool::m_ignoreLocalPos |
|
private |
◆ m_nominalField
double SiLorentzAngleTool::m_nominalField |
|
private |
◆ m_useMagFieldCache
bool SiLorentzAngleTool::m_useMagFieldCache |
|
private |
◆ s_invalidValue
const double SiLorentzAngleTool::s_invalidValue {std::numeric_limits<double>::quiet_NaN()} |
|
staticprivate |
The documentation for this class was generated from the following files:
char data[hepevt_bytes_allocation_ATLAS]
double getCorrectionFactor() const
Get correction factor.
double getLorentzShiftEta(const IdentifierHash &elementHash) const
Get the Lorentz shift correction in the local y (etaDist) direction Assumes the center of the detecto...
double getTanLorentzAngleEta(const IdentifierHash &elementHash) const
Get tan af the Lorentz angle in the local y (etaDist) direction Assumes the center of the detector an...
#define ATH_MSG_VERBOSE(x)
double getTanLorentzAngle(const IdentifierHash &elementHash) const
Get tan af the Lorentz angle in the local x (phiDist) direction Assumes the center of the detector an...
const std::string & key() const
Return the StoreGate ID for the referenced object.
double getBiasVoltage(const IdentifierHash &elementHash) const
Get bias voltage.
double getDepletionVoltage(const IdentifierHash &elementHash) const
Get depletion voltage.
def dot(G, fn, nodesToHighlight=[])
StatusCode initialize(bool used=true)
double signedHallMobility(InDetDD::CarrierType carrier) const
Eigen::Matrix< double, 3, 1 > Vector3D
#define ATH_MSG_WARNING(x)
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
double getLorentzShift(const IdentifierHash &elementHash) const
Get the Lorentz shift correction in the local x (phiDist) direction Assumes the center of the detecto...
void getField(const double *ATH_RESTRICT xyz, double *ATH_RESTRICT bxyz, double *ATH_RESTRICT deriv=nullptr)
get B field value at given position xyz[3] is in mm, bxyz[3] is in kT if deriv[9] is given,...
const SiDetectorElement * getDetectorElement(const IdentifierHash &hash) const
void setConditions(double temperature, double electricField)
double getTemperature(const IdentifierHash &elementHash) const
Get temperature.