ATLAS Offline Software
GeoPixelDetailedStaveSupport.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef PIXELGEOMODEL_GEOPIXELDETAILEDSTAVESUPPORT_H
6 #define PIXELGEOMODEL_GEOPIXELDETAILEDSTAVESUPPORT_H
7 
8 #include "GeoPixelStaveSupport.h"
10 #include "GeoModelKernel/GeoDefinitions.h"
11 #include "GeoModelKernel/GeoPhysVol.h"
12 
14 
16 
17 public:
20  GeoModelIO::ReadGeoModel* sqliteReader,
21  std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
22  std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX);
23  virtual GeoVPhysVol* Build() override;
24  virtual GeoVPhysVol* getPhysVol() override {return m_physVol;}
25  virtual const GeoTrf::Transform3D & transform() const override {return m_transform;}
26  virtual double thicknessP() const override {return m_thicknessP;}
27  virtual double thicknessN() const override {return m_thicknessN;}
28  virtual GeoSimplePolygonBrep* computeStaveEnvelopShape( double safetyMargin) override;
29  virtual GeoPhysVol* getEndblockEnvelopShape( int ) override;
30  virtual GeoTransform* getEndblockEnvelopShapeTrf( int ) override;
31  virtual double getEndblockZpos() const override { return m_endblockZpos; };
32  virtual double getServiceZpos() const override { return m_serviceZpos; };
33  virtual double getEndblockLength() const override { return m_endblockLength+m_endblockSrvLength; };
34  virtual void computeStaveEnvelopTransformAndSize(double moduleThickN,double moduleThickP, double moduleWidth,
35  double moduleThickN3D,double moduleThickP3D, double moduleWidth3D) override;
36  virtual int PixelNModule() const override { return m_PlanarModuleNumber+m_3DModuleNumber; }
37  virtual int PixelNPlanarModule() const override{ return m_PlanarModuleNumber; }
38  virtual int PixelN3DModule() const override { return m_3DModuleNumber; }
39 
40 private:
44 
45  GeoPhysVol* m_endblockAPhysVol = nullptr;
46  GeoPhysVol* m_endblockCPhysVol = nullptr;
47  double m_endblockZpos = 0.0, m_endblockLength = 0.0, m_serviceZpos = 0.0;
48  double m_endblockSrvLength = 0.0;
49  GeoPhysVol* m_endblockFlexPhysVol = nullptr;
51  GeoPhysVol* m_serviceCoolPipePhysVol = nullptr;
54 
56  double m_thicknessP = 0.0;
57  double m_thicknessN = 0.0;
58  double m_thicknessN_svc = 0.0;
59  double m_width_svc = 0.0;
60  double m_SafetyMargin = 0.0;
61  bool m_bVerbose{};
62 
63  void RemoveCoincidentAndColinearPointsFromShape(std::vector<double> &xPoint, std::vector<double>&yPoint);
64  void GetSurroundingConvexShape(std::vector<double> &xPoint, std::vector<double>&yPoint,
65  std::vector<int> iExcept = std::vector<int>());
66  void AddSurroundingXYMargin(double vMarginX, double vMarginY, std::vector<double> &xPoint, std::vector<double>&yPoint);
67 
69 
70  double m_StaveLength = 0.0;
71  double m_FoamEdgePointX = 0.0;
72  double m_FoamEdgePointY = 0.0;
73  double m_FoamMiddleThick = 0.0;
74  double m_OmegaEndStaveThick = 0.0;
75  double m_OmegaEndStavePointX = 0.0;
76  double m_OmegaEndStavePointY = 0.0;
77  double m_OmegaMidStaveThick = 0.0;
78  double m_MidStaveSidePointX = 0.0;
79  double m_MidStaveSidePointY = 0.0;
80 
82  GeoTrf::Vector3D IntersectionPoint(double Ax,double Ay,double Bx,double By,double Cx,double Cy,double Dx,double Dy);
86  double ComputeAngle(double ux, double uy, double vx, double vy);
88 
89  static constexpr double m_oneDegree = 180.0/M_PI;
90 
91 };
92 
93 #endif
94 
GeoPixelDetailedStaveSupport::m_width_svc
double m_width_svc
Definition: GeoPixelDetailedStaveSupport.h:59
GeoPixelDetailedStaveSupport::m_thicknessP
double m_thicknessP
Definition: GeoPixelDetailedStaveSupport.h:56
GeoPixelDetailedStaveSupport::m_oneDegree
static constexpr double m_oneDegree
Definition: GeoPixelDetailedStaveSupport.h:89
GeoPixelDetailedStaveSupport::m_OmegaEndStavePointY
double m_OmegaEndStavePointY
Definition: GeoPixelDetailedStaveSupport.h:76
GeoPixelDetailedStaveSupport::getPhysVol
virtual GeoVPhysVol * getPhysVol() override
Definition: GeoPixelDetailedStaveSupport.h:24
GeoPixelDetailedStaveSupport::m_endblockFlexPhysVol
GeoPhysVol * m_endblockFlexPhysVol
Definition: GeoPixelDetailedStaveSupport.h:49
GeoPixelDetailedStaveSupport::m_OmegaEndStaveThick
double m_OmegaEndStaveThick
Definition: GeoPixelDetailedStaveSupport.h:74
GeoPixelDetailedStaveSupport::m_SafetyMargin
double m_SafetyMargin
Definition: GeoPixelDetailedStaveSupport.h:60
GeoPixelDetailedStaveSupport::thicknessN
virtual double thicknessN() const override
Definition: GeoPixelDetailedStaveSupport.h:27
GeoPixelDetailedStaveSupport
Definition: GeoPixelDetailedStaveSupport.h:15
GeoPixelDetailedStaveSupport::Build
virtual GeoVPhysVol * Build() override
Definition: GeoPixelDetailedStaveSupport.cxx:45
PixelGeometryManager
Definition: PixelGeometryManager.h:28
GeoNodePtr.h
GeoPixelDetailedStaveSupport::m_endblockFlexTrf
GeoNodePtr< GeoTransform > m_endblockFlexTrf
Definition: GeoPixelDetailedStaveSupport.h:50
GeoPixelDetailedStaveSupport::m_endblockAPhysVol
GeoPhysVol * m_endblockAPhysVol
Definition: GeoPixelDetailedStaveSupport.h:45
GeoPixelDetailedStaveSupport::getEndblockEnvelopShape
virtual GeoPhysVol * getEndblockEnvelopShape(int) override
Definition: GeoPixelDetailedStaveSupport.cxx:1204
M_PI
#define M_PI
Definition: ActiveFraction.h:11
GeoPixelDetailedStaveSupport::m_serviceCoolPipePhysVol
GeoPhysVol * m_serviceCoolPipePhysVol
Definition: GeoPixelDetailedStaveSupport.h:51
GeoPixelDetailedStaveSupport::m_endblockCPhysVol
GeoPhysVol * m_endblockCPhysVol
Definition: GeoPixelDetailedStaveSupport.h:46
GeoNodePtr
GeoIntrusivePtr< T > GeoNodePtr
Definition: GeoNodePtr.h:12
GeoPixelDetailedStaveSupport::m_serviceCoolPipeTrfA
GeoNodePtr< GeoTransform > m_serviceCoolPipeTrfA
Definition: GeoPixelDetailedStaveSupport.h:52
GeoPixelDetailedStaveSupport::m_FoamEdgePointY
double m_FoamEdgePointY
Definition: GeoPixelDetailedStaveSupport.h:72
GeoPixelDetailedStaveSupport::m_serviceZpos
double m_serviceZpos
Definition: GeoPixelDetailedStaveSupport.h:47
GeoPixelDetailedStaveSupport::m_endblockSrvLength
double m_endblockSrvLength
Definition: GeoPixelDetailedStaveSupport.h:48
GeoPixelDetailedStaveSupport::PixelNPlanarModule
virtual int PixelNPlanarModule() const override
Definition: GeoPixelDetailedStaveSupport.h:37
GeoPixelDetailedStaveSupport::ComputeDistance
double ComputeDistance(GeoTrf::Vector3D p, GeoTrf::Vector3D q)
Definition: GeoPixelDetailedStaveSupport.cxx:1692
GeoPixelDetailedStaveSupport::thicknessP
virtual double thicknessP() const override
Definition: GeoPixelDetailedStaveSupport.h:26
GeoPixelDetailedStaveSupport::getEndblockLength
virtual double getEndblockLength() const override
Definition: GeoPixelDetailedStaveSupport.h:33
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
GeoPixelDetailedStaveSupport::ComputeStaveExternalShape
void ComputeStaveExternalShape()
Definition: GeoPixelDetailedStaveSupport.cxx:1518
GeoPrimitives.h
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
GeoPixelDetailedStaveSupport::m_thicknessN_svc
double m_thicknessN_svc
Definition: GeoPixelDetailedStaveSupport.h:58
GeoPixelDetailedStaveSupport::m_MidStaveSidePointX
double m_MidStaveSidePointX
Definition: GeoPixelDetailedStaveSupport.h:78
GeoPixelDetailedStaveSupport::NormalizeDir
GeoTrf::Vector3D NormalizeDir(GeoTrf::Vector3D v)
Definition: GeoPixelDetailedStaveSupport.cxx:1654
GeoPixelDetailedStaveSupport::m_endblockZpos
double m_endblockZpos
Definition: GeoPixelDetailedStaveSupport.h:47
GeoPixelDetailedStaveSupport::transform
virtual const GeoTrf::Transform3D & transform() const override
Definition: GeoPixelDetailedStaveSupport.h:25
GeoPixelDetailedStaveSupport::computeStaveEnvelopShape
virtual GeoSimplePolygonBrep * computeStaveEnvelopShape(double safetyMargin) override
Definition: GeoPixelDetailedStaveSupport.cxx:1233
GeoPixelDetailedStaveSupport::m_MidStaveSidePointY
double m_MidStaveSidePointY
Definition: GeoPixelDetailedStaveSupport.h:79
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
GeoPixelDetailedStaveSupport::AddSurroundingXYMargin
void AddSurroundingXYMargin(double vMarginX, double vMarginY, std::vector< double > &xPoint, std::vector< double > &yPoint)
Definition: GeoPixelDetailedStaveSupport.cxx:1434
GeoPixelDetailedStaveSupport::m_endblockLength
double m_endblockLength
Definition: GeoPixelDetailedStaveSupport.h:47
GeoPixelDetailedStaveSupport::m_StaveLength
double m_StaveLength
Definition: GeoPixelDetailedStaveSupport.h:70
GeoPixelDetailedStaveSupport::getEndblockEnvelopShapeTrf
virtual GeoTransform * getEndblockEnvelopShapeTrf(int) override
Definition: GeoPixelDetailedStaveSupport.cxx:1218
GeoPixelDetailedStaveSupport::m_bVerbose
bool m_bVerbose
Definition: GeoPixelDetailedStaveSupport.h:61
GeoPixelDetailedStaveSupport::m_3DModuleNumber
int m_3DModuleNumber
Definition: GeoPixelDetailedStaveSupport.h:68
GeoPixelDetailedStaveSupport::RemoveCoincidentAndColinearPointsFromShape
void RemoveCoincidentAndColinearPointsFromShape(std::vector< double > &xPoint, std::vector< double > &yPoint)
Definition: GeoPixelDetailedStaveSupport.cxx:1307
GeoPixelDetailedStaveSupport::m_FoamEdgePointX
double m_FoamEdgePointX
Definition: GeoPixelDetailedStaveSupport.h:71
InDetDD::PixelDetectorManager
Definition: PixelDetectorManager.h:47
GeoPixelDetailedStaveSupport::m_serviceCoolPipeTrfC
GeoNodePtr< GeoTransform > m_serviceCoolPipeTrfC
Definition: GeoPixelDetailedStaveSupport.h:53
GeoPixelDetailedStaveSupport::m_PlanarModuleNumber
int m_PlanarModuleNumber
Definition: GeoPixelDetailedStaveSupport.h:68
GeoPixelDetailedStaveSupport::m_physVol
GeoNodePtr< GeoVPhysVol > m_physVol
Definition: GeoPixelDetailedStaveSupport.h:41
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
GeoPixelDetailedStaveSupport::IntersectionPoint
GeoTrf::Vector3D IntersectionPoint(double Ax, double Ay, double Bx, double By, double Cx, double Cy, double Dx, double Dy)
Definition: GeoPixelDetailedStaveSupport.cxx:1641
python.PyAthena.v
v
Definition: PyAthena.py:154
GeoPixelDetailedStaveSupport::NeighbourPoint_Rad
GeoTrf::Vector3D NeighbourPoint_Rad(GeoTrf::Vector3D p, GeoTrf::Vector3D v, double delta)
Definition: GeoPixelDetailedStaveSupport.cxx:1661
GeoPixelDetailedStaveSupport::PixelNModule
virtual int PixelNModule() const override
Definition: GeoPixelDetailedStaveSupport.h:36
GeoPixelStaveSupport
Definition: GeoPixelStaveSupport.h:14
GeoPixelDetailedStaveSupport::getEndblockZpos
virtual double getEndblockZpos() const override
Definition: GeoPixelDetailedStaveSupport.h:31
GeoPixelDetailedStaveSupport::PixelN3DModule
virtual int PixelN3DModule() const override
Definition: GeoPixelDetailedStaveSupport.h:38
GeoPixelDetailedStaveSupport::m_OmegaMidStaveThick
double m_OmegaMidStaveThick
Definition: GeoPixelDetailedStaveSupport.h:77
extractSporadic.q
list q
Definition: extractSporadic.py:98
GeoPixelDetailedStaveSupport::m_OmegaEndStavePointX
double m_OmegaEndStavePointX
Definition: GeoPixelDetailedStaveSupport.h:75
GeoPixelDetailedStaveSupport::m_basicStaveEnvelopShape
GeoNodePtr< GeoSimplePolygonBrep > m_basicStaveEnvelopShape
Definition: GeoPixelDetailedStaveSupport.h:43
GeoPixelDetailedStaveSupport::m_transform
GeoTrf::Transform3D m_transform
Definition: GeoPixelDetailedStaveSupport.h:55
GeoPixelDetailedStaveSupport::m_staveEnvelopShape
GeoNodePtr< GeoSimplePolygonBrep > m_staveEnvelopShape
Definition: GeoPixelDetailedStaveSupport.h:42
GeoPixelDetailedStaveSupport::GeoPixelDetailedStaveSupport
GeoPixelDetailedStaveSupport(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr, GeoModelIO::ReadGeoModel *sqliteReader, std::shared_ptr< std::map< std::string, GeoFullPhysVol * >> mapFPV, std::shared_ptr< std::map< std::string, GeoAlignableTransform * >> mapAX)
Definition: GeoPixelDetailedStaveSupport.cxx:32
GeoPixelDetailedStaveSupport::NeighbourPoint_Perp
GeoTrf::Vector3D NeighbourPoint_Perp(GeoTrf::Vector3D p, GeoTrf::Vector3D v, double delta, int iDir)
Definition: GeoPixelDetailedStaveSupport.cxx:1669
GeoPixelDetailedStaveSupport::getServiceZpos
virtual double getServiceZpos() const override
Definition: GeoPixelDetailedStaveSupport.h:32
GeoPixelDetailedStaveSupport::computeStaveEnvelopTransformAndSize
virtual void computeStaveEnvelopTransformAndSize(double moduleThickN, double moduleThickP, double moduleWidth, double moduleThickN3D, double moduleThickP3D, double moduleWidth3D) override
Definition: GeoPixelDetailedStaveSupport.cxx:1118
GeoPixelDetailedStaveSupport::m_FoamMiddleThick
double m_FoamMiddleThick
Definition: GeoPixelDetailedStaveSupport.h:73
GeoPixelDetailedStaveSupport::GetSurroundingConvexShape
void GetSurroundingConvexShape(std::vector< double > &xPoint, std::vector< double > &yPoint, std::vector< int > iExcept=std::vector< int >())
Definition: GeoPixelDetailedStaveSupport.cxx:1364
GeoPixelDetailedStaveSupport::m_thicknessN
double m_thicknessN
Definition: GeoPixelDetailedStaveSupport.h:57
GeoPixelStaveSupport.h
GeoPixelDetailedStaveSupport::ComputeAngle
double ComputeAngle(double ux, double uy, double vx, double vy)
Definition: GeoPixelDetailedStaveSupport.cxx:1677