ATLAS Offline Software
Loading...
Searching...
No Matches
CaloDescriptors.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
6
16#include "GaudiKernel/SystemOfUnits.h"
17
18// -- EMBDescriptor --
20 , const AtlasDetectorID* helper
21 , const CaloCell_ID* calo_helper
22 , const EMBDetectorRegion* embRegion
23 , const GeoAlignmentStore* alignStore)
24 : CaloDetDescriptor(id,helper,calo_helper)
25{
26 const Amg::Transform3D &xfDef = embRegion->getDefAbsoluteTransform(alignStore);
27 const Amg::Transform3D &xfAbs = embRegion->getAbsoluteTransform(alignStore);
28
29 m_transform = xfAbs*xfDef.inverse();
30}
31
33= default;
34
35// -- EMECDescriptor --
37 , const AtlasDetectorID* helper
38 , const CaloCell_ID* calo_helper
39 , const EMECDetectorRegion* emecRegion
40 , const GeoAlignmentStore* alignStore)
41 : CaloDetDescriptor(id,helper,calo_helper)
42{
43 // -- m_transform
44 const Amg::Transform3D &xfDef = emecRegion->getDefAbsoluteTransform(alignStore);
45 // we need to apply the famous ZShift.
46 Amg::Transform3D xfNominal;
47 if(emecRegion->getEndcapIndex()==0) {
48 xfNominal = Amg::Translation3D(Amg::Vector3D(0.,0.,emecRegion->getProjectivityDisplacement()*Gaudi::Units::cm))*xfDef; // Negative EMEC
49 }
50 else {
51 xfNominal = Amg::Translation3D(Amg::Vector3D(0.,0.,-emecRegion->getProjectivityDisplacement()*Gaudi::Units::cm))*xfDef; // Positive EMEC
52 }
53 const Amg::Transform3D &xfAbs = emecRegion->getAbsoluteTransform(alignStore);
54
55 m_transform = xfAbs*xfNominal.inverse();
56}
57
59= default;
60
61// -- HECDescriptor --
63 , const AtlasDetectorID* helper
64 , const CaloCell_ID* calo_helper
65 , const HECDetectorRegion* hecRegion
66 , const GeoAlignmentStore* alignStore)
67 : CaloDetDescriptor(id,helper,calo_helper)
68{
69 // -- m_transform
70 const Amg::Transform3D &xfDef = hecRegion->getDefAbsoluteTransform(alignStore);
71 // we need to apply the famous ZShift
72 Amg::Transform3D xfNominal;
73 if(hecRegion->getEndcapIndex()==0) {
74 xfNominal = Amg::Translation3D(Amg::Vector3D(0.,0.,hecRegion->getProjectivityDisplacement()*Gaudi::Units::cm))*xfDef; // Negative HEC
75 }
76 else {
77 xfNominal = Amg::Translation3D(Amg::Vector3D(0.,0.,-hecRegion->getProjectivityDisplacement()*Gaudi::Units::cm))*xfDef; // Positive HEC
78 }
79 const Amg::Transform3D &xfAbs = hecRegion->getAbsoluteTransform(alignStore);
80
81 m_transform = xfAbs*xfNominal.inverse();
82}
83
85= default;
86
87// -- FCALDescriptor --
89 , const AtlasDetectorID* helper
90 , const CaloCell_ID* calo_helper
91 , const FCALModule* fcalModule
92 , const GeoAlignmentStore* alignStore)
93 : CaloDetDescriptor(id,helper,calo_helper)
94{
95 // -- m_transform
96 const Amg::Transform3D &xfDef = fcalModule->getDefAbsoluteTransform(alignStore);
97 // we need to apply the famous ZShift.
98 Amg::Transform3D xfNominal;
99 if(fcalModule->getEndcapIndex()==FCALModule::POS) {
100 xfNominal = Amg::Translation3D(Amg::Vector3D(0.,0.,fcalModule->getProjectivityDisplacement()*Gaudi::Units::cm))*xfDef; // Negative FCAL
101 }
102 else {
103 xfNominal = Amg::Translation3D(Amg::Vector3D(0.,0.,-fcalModule->getProjectivityDisplacement()*Gaudi::Units::cm))*xfDef; // Positive FCAL
104 }
105 const Amg::Transform3D &xfAbs = fcalModule->getAbsoluteTransform(alignStore);
106
107 m_transform = xfAbs*xfNominal.inverse();
108}
109
111= default;
LAr subsystem specific descriptors.
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
Helper class for offline cell identifiers.
Definition CaloCell_ID.h:34
CaloDetDescriptor(const Identifier &id, const AtlasDetectorID *helper, const CaloCell_Base_ID *calo_helper, CaloCell_ID::CaloSample sample=CaloCell_ID::Unknown, int layer=CaloCell_ID::NOT_VALID)
Constructor.
Amg::Transform3D m_transform
misalignment transformation
EMBDescriptor()=delete
default constructor hidden
virtual ~EMBDescriptor()
Destructor.
const Amg::Transform3D & getDefAbsoluteTransform(const GeoAlignmentStore *alignStore=nullptr) const
Returns the absolute transform of this element.
const Amg::Transform3D & getAbsoluteTransform(const GeoAlignmentStore *alignStore=nullptr) const
Returns the absolute transform of this element.
EMECDescriptor()=delete
default constructor hidden
virtual ~EMECDescriptor()
Destructor.
const Amg::Transform3D & getDefAbsoluteTransform(const GeoAlignmentStore *alignStore=nullptr) const
Returns the absolute transform of this element.
const Amg::Transform3D & getAbsoluteTransform(const GeoAlignmentStore *alignStore=nullptr) const
Returns the absolute transform of this element.
EMECDetectorRegion::DetectorSide getEndcapIndex() const
The endcap index.
FCALDescriptor()=delete
default constructor hidden
virtual ~FCALDescriptor()
Destructor.
FCALModule::Endcap getEndcapIndex() const
Returns the side (O=Negative, 1=Positive)
const Amg::Transform3D & getAbsoluteTransform(const GeoAlignmentStore *alignStore=nullptr) const
Returns the absolute transform of this element.
const Amg::Transform3D & getDefAbsoluteTransform(const GeoAlignmentStore *alignStore=nullptr) const
Returns the absolute transform of this element.
Ensure that the extensions for the Vector3D are properly loaded.
HECDescriptor()=delete
default constructor hidden
virtual ~HECDescriptor()
Destructor.
Description of a region of homogenous granularity in the hadronic endcap calorimeter.
const Amg::Transform3D & getDefAbsoluteTransform(const GeoAlignmentStore *alignStore=nullptr) const
Returns the absolute transform of this element.
const Amg::Transform3D & getAbsoluteTransform(const GeoAlignmentStore *alignStore=nullptr) const
Returns the absolute transform of this element.
HECDetectorRegion::DetectorSide getEndcapIndex() const
The endcap index.
Eigen::Affine3d Transform3D