ATLAS Offline Software
GeoPixelOldFrame.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 //
6 // New description of the pixel support frame (M.Zdrazil + AR)
7 // The box part (of barrel)
8 //
9 #include "GeoPixelOldFrame.h"
10 #include "PixelLegacyManager.h"
11 #include "GeoModelKernel/GeoBox.h"
12 #include "GeoModelKernel/GeoTrap.h"
13 #include "GeoModelKernel/GeoLogVol.h"
14 #include "GeoModelKernel/GeoNameTag.h"
15 #include "GeoModelKernel/GeoPhysVol.h"
16 #include "GeoModelKernel/GeoFullPhysVol.h"
17 #include "GeoModelKernel/GeoMaterial.h"
18 #include "GeoModelKernel/GeoTransform.h"
19 #include "GaudiKernel/SystemOfUnits.h"
20 
21 // Satisfy interface
22 
25  GeoModelIO::ReadGeoModel* sqliteReader,
26  std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
27  std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX)
28  : GeoVPixelFactory (ddmgr, mgr, sqliteReader, mapFPV, mapAX)
29 {
31 }
32 
33 GeoVPhysVol* GeoPixelOldFrame::Build()
34 {
35  return nullptr;
36 }
37 
39  //
40  std::string logName = "BoxFrBarOutLog";
41  std::string volumeName = "Frame";
42  int typenum = 1;
44  logName = "BoxFrBarInLog";
45  typenum = 0;
46  }
48  logName = "BoxFrEndcapLog";
49  typenum = 2;
50  }
51  //
52  // Dimensions
53  //
55  double thickness = m_legacyManager->PixelBFrameHalfThickness();
57  //
58  const GeoBox* frameBox = new GeoBox(thickness,width,length);
59  std::string matName = m_gmt_mgr->getMaterialName(volumeName, 0, typenum);
60  const GeoMaterial* frameMat = m_mat_mgr->getMaterialForVolume(matName, frameBox->volume());
61  GeoLogVol* theFrame = new GeoLogVol(logName,frameBox,frameMat);
62  GeoPhysVol* framePhys = new GeoPhysVol(theFrame);
63 
64  return framePhys;
65 }
66 
67 //
68 // New description of the pixel support frame (M.Zdrazil + AR)
69 // The trapezoid part (of barrel)
70 //
71 
73  //
74  std::string logName = "TrapFrBarOutLog";
75  std::string volumeName = "Frame";
76  int typenum = 4;
78  logName = "TrapFrBarInLog";
79  typenum = 3;
80  }
82  logName = "TrapFrEndcapLog";
83  typenum = 5;
84  }
86  logName = "TrapFrEndCone";
87  volumeName = "EndCone";
88  typenum = 0;
89  }
90  //
91  // Dimensions
92  //
93  double al1 = 0.;
94  double al2 = 0.;
95  double phi = 0.;
97  double widthy = m_legacyManager->PixelTFrameHalfWidthY();
98  double widthxzn = m_legacyManager->PixelTFrameHalfWidthXzn();
99  double widthxzp = m_legacyManager->PixelTFrameHalfWidthXzp();
100  double tet = m_legacyManager->PixelTFrameDzDr();
101  //
102 
103  const GeoTrap* frameTrap = new GeoTrap(length,tet,phi,widthy,widthxzn,widthxzp,al1,widthy,widthxzn,widthxzp,al2);
104  std::string matName = m_gmt_mgr->getMaterialName(volumeName, 0, typenum);
105  const GeoMaterial* frameMat = m_mat_mgr->getMaterialForVolume(matName, frameTrap->volume());
106  GeoLogVol* theFrame = new GeoLogVol(logName,frameTrap,frameMat);
107  GeoPhysVol* framePhys = new GeoPhysVol(theFrame);
108 
109  return framePhys;
110 }
111 
112 
113 
115 void GeoPixelOldFrame::BuildInBarrel(GeoFullPhysVol * parent) {
116  // It is split into two parts : one is the barrel part and one
117  // is part of the endcap frame.
118  //
119 
120  // First part
122  double alpha = 45.*Gaudi::Units::deg;
125  double off = m_legacyManager->PixelBarrelFrameOffset();
126  for (int ii = 0; ii < m_legacyManager->PixelBarrelNBFrame(); ii++) {
127  GeoNameTag* tag = new GeoNameTag("Inside Box Frame");
128  double thet = ((float)ii+0.5)*alpha;
129  GeoTrf::Translation3D pos(w1*cos(thet),w1*sin(thet),off);
130  GeoTrf::RotateZ3D rm(((float)ii+2.5)*alpha);
131  GeoTransform* xform = new GeoTransform(GeoTrf::Transform3D(pos*rm));
132  parent->add(tag);
133  parent->add(xform);
134  parent->add(BuildBox());
135  }
136 
137  for (int ii = 0; ii < m_legacyManager->PixelBarrelNTFrame(); ii++) {
138  GeoNameTag* tag = new GeoNameTag("Inside Trap Frame");
139  double thet = ((float)ii+1.)*alpha;
140  GeoTrf::Translation3D pos(w2*cos(thet),w2*sin(thet),off);
141  GeoTrf::RotateZ3D rm(((float)ii+3.0)*alpha);
142  GeoTransform* xform = new GeoTransform(GeoTrf::Transform3D(pos*rm));
143  parent->add(tag);
144  parent->add(xform);
145  parent->add(BuildTrap());
146  }
147  //
148  // Second part
153  double radi = m_legacyManager->PixelBarrelFrameECRadius();
154  double zpec = m_legacyManager->PixelBarrelFrameECZPos();
155  double alxec = m_legacyManager->PixelBarrelFrameECAlphaX();
156  for (int ii = 0; ii < m_legacyManager->PixelBarrelNBFrame(); ii++) {
157  GeoNameTag* tag = new GeoNameTag("Outside Box Frame");
158  double thet = ((float)ii+0.5)*alpha;
159  GeoTrf::Translation3D pos(w1*cos(thet),w1*sin(thet),off);
160  GeoTrf::RotateZ3D rm(((float)ii+2.5)*alpha);
161  GeoTransform* xform = new GeoTransform(GeoTrf::Transform3D(pos*rm));
162  parent->add(tag);
163  parent->add(xform);
164  parent->add(BuildBox());
165  pos.z()= -off;
166  GeoTransform* xform2 = new GeoTransform(GeoTrf::Transform3D(pos*rm));
167  parent->add(tag);
168  parent->add(xform2);
169  parent->add(BuildBox());
170  }
171  for (int ii = 0; ii < m_legacyManager->PixelBarrelNTFrame(); ii++) {
173  GeoNameTag* tag = new GeoNameTag("Outside Trap Frame");
174  double thet = ((float)ii+1.)*alpha;
175  GeoTrf::Translation3D pos(w2*cos(thet),w2*sin(thet),off);
176  GeoTrf::RotateZ3D rm(((float)ii+3.0)*alpha);
177  GeoTransform* xform = new GeoTransform(GeoTrf::Transform3D(pos*rm));
178  parent->add(tag);
179  parent->add(xform);
180  parent->add(BuildTrap());
181  pos.z() = -off;
182  GeoTransform* xform2 = new GeoTransform(GeoTrf::Transform3D(pos*rm));
183  parent->add(tag);
184  parent->add(xform2);
185  parent->add(BuildTrap());
186  //
188  GeoNameTag* tag2 = new GeoNameTag("Outside End Cone Trap Frame");
189  thet = ((float)ii+0.5)*alpha;
190  GeoTrf::Translation3D posec(radi*cos(thet),radi*sin(thet),zpec);
191  GeoTrf::Transform3D rm2 = GeoTrf::RotateZ3D(((float)ii+2.5)*alpha)*GeoTrf::RotateX3D(alxec);
192  GeoTransform* xform3 = new GeoTransform(GeoTrf::Transform3D(posec*rm2));
193  parent->add(tag2);
194  parent->add(xform3);
195  parent->add(BuildTrap());
196  posec.z() = -zpec;
197  GeoTrf::Transform3D rm3 = GeoTrf::RotateZ3D(((float)ii+2.5)*alpha)*GeoTrf::RotateX3D(-alxec);
198  GeoTransform* xform4 = new GeoTransform(GeoTrf::Transform3D(posec*rm3));
199  parent->add(tag2);
200  parent->add(xform4);
201  parent->add(BuildTrap());
202  }
203 }
204 
205 void GeoPixelOldFrame::BuildOutBarrel(GeoFullPhysVol * parent) {
206 
207 
208  bool endcapAPresent = m_gmt_mgr->partPresent("EndcapA");
209  bool endcapCPresent = m_gmt_mgr->partPresent("EndcapC");
210 
211  //
212  // Add the pixel frame inside the endcap volume
213  //
215  double alpha = 45.*Gaudi::Units::deg;
219 
220  for (int ii = 0; ii < m_legacyManager->PixelEndcapNBFrame(); ii++) {
221  GeoNameTag* tag = new GeoNameTag("Outside Outer Endcap Box Frame");
222  double thet = ((float)ii+0.5)*alpha;
223  GeoTrf::Translation3D pos(w1*cos(thet),w1*sin(thet),off);
224  GeoTrf::RotateZ3D rm(((float)ii+2.5)*alpha);
225 
226  if (endcapAPresent) {
227  GeoTransform* xform1 = new GeoTransform(GeoTrf::Transform3D(pos*rm));
228  parent->add(tag);
229  parent->add(xform1);
230  parent->add(BuildBox());
231  }
232  if (endcapCPresent) {
233  pos.z() = -off;
234  GeoTransform* xform2 = new GeoTransform(GeoTrf::Transform3D(pos*rm));
235  parent->add(tag);
236  parent->add(xform2);
237  parent->add(BuildBox());
238  }
239  }
240 
241  for (int ii = 0; ii < m_legacyManager->PixelEndcapNTFrame(); ii++) {
242  GeoNameTag* tag = new GeoNameTag("Outside Outer Endcap Trap Frame");
243  double thet = ((float)ii+1.)*alpha;
244  GeoTrf::Translation3D pos(w2*cos(thet),w2*sin(thet),off);
245  GeoTrf::RotateZ3D rm(((float)ii+3.0)*alpha);
246  if (endcapAPresent) {
247  GeoTransform* xform1 = new GeoTransform(GeoTrf::Transform3D(pos*rm));
248  parent->add(tag);
249  parent->add(xform1);
250  parent->add(BuildTrap());
251  }
252  if (endcapCPresent) {
253  pos.z() = -off;
254  GeoTransform* xform2 = new GeoTransform(GeoTrf::Transform3D(pos*rm));
255  parent->add(tag);
256  parent->add(xform2);
257  parent->add(BuildTrap());
258  }
259  }
260 }
261 
PixelLegacyManager::isEndConeSFrame
bool isEndConeSFrame()
Definition: PixelLegacyManager.h:77
GeoPixelOldFrame.h
PixelLegacyManager::PixelBarrelFrameLength
double PixelBarrelFrameLength()
Definition: PixelLegacyManager.cxx:105
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
PixelGeometryManager
Definition: PixelGeometryManager.h:28
PixelLegacyManager::PixelBarrelFrameECZPos
double PixelBarrelFrameECZPos()
Definition: PixelLegacyManager.cxx:283
PixelLegacyManager::PixelEndcapNBFrame
int PixelEndcapNBFrame()
Definition: PixelLegacyManager.cxx:124
deg
#define deg
Definition: SbPolyhedron.cxx:17
GeoPixelOldFrame::BuildTrap
GeoVPhysVol * BuildTrap()
Definition: GeoPixelOldFrame.cxx:72
PixelLegacyManager.h
PixelLegacyManager::PixelBarrelNTFrame
int PixelBarrelNTFrame()
Definition: PixelLegacyManager.cxx:78
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
PixelLegacyManager::isEndcapInSFrame
bool isEndcapInSFrame()
Definition: PixelLegacyManager.h:75
PixelLegacyManager::setEndcapInSFrame
void setEndcapInSFrame()
Definition: PixelLegacyManager.h:76
GeoVPixelFactory::m_gmt_mgr
PixelGeometryManager * m_gmt_mgr
Definition: GeoVPixelFactory.h:43
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
PixelLegacyManager::PixelEndcapNTFrame
int PixelEndcapNTFrame()
Definition: PixelLegacyManager.cxx:129
GeoPixelOldFrame::BuildOutBarrel
void BuildOutBarrel(GeoFullPhysVol *parent)
Definition: GeoPixelOldFrame.cxx:205
PixelLegacyManager::PixelBarrelFrameOffset
double PixelBarrelFrameOffset()
Definition: PixelLegacyManager.cxx:114
PixelLegacyManager::PixelEndcapTFrameWidth
double PixelEndcapTFrameWidth()
Definition: PixelLegacyManager.cxx:139
PixelLegacyManager::PixelTFrameDzDr
double PixelTFrameDzDr()
Definition: PixelLegacyManager.cxx:261
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
InDetMaterialManager::getMaterialForVolume
const GeoMaterial * getMaterialForVolume(const std::string &materialName, double volume, const std::string &newName="")
Create and get material with a density calculated to give weight in predefined weight table.
Definition: InDetMaterialManager.cxx:460
test_pyathena.parent
parent
Definition: test_pyathena.py:15
plotBeamSpotCompare.tag2
string tag2
Definition: plotBeamSpotCompare.py:76
GeoPixelOldFrame::GeoPixelOldFrame
GeoPixelOldFrame(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: GeoPixelOldFrame.cxx:23
PixelLegacyManager::PixelEndcapFrameOffset
double PixelEndcapFrameOffset()
Definition: PixelLegacyManager.cxx:149
GeoPixelOldFrame::BuildInBarrel
void BuildInBarrel(GeoFullPhysVol *parent)
Definition: GeoPixelOldFrame.cxx:115
PixelLegacyManager::PixelBFrameHalfLength
double PixelBFrameHalfLength()
Definition: PixelLegacyManager.cxx:154
InDetDD::PixelDetectorManager
Definition: PixelDetectorManager.h:47
PixelLegacyManager::PixelBarrelNBFrame
int PixelBarrelNBFrame()
Definition: PixelLegacyManager.cxx:69
GeoVPixelFactory::m_mat_mgr
InDetMaterialManager * m_mat_mgr
Definition: GeoVPixelFactory.h:44
PixelLegacyManager::PixelBarrelFrameECRadius
double PixelBarrelFrameECRadius()
Definition: PixelLegacyManager.cxx:278
PixelLegacyManager::PixelBarrelBFrameWidth
double PixelBarrelBFrameWidth()
Definition: PixelLegacyManager.cxx:87
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
GeoPixelOldFrame::Build
virtual GeoVPhysVol * Build() override
Definition: GeoPixelOldFrame.cxx:33
PixelLegacyManager::setBarrelOutSFrame
void setBarrelOutSFrame()
Definition: PixelLegacyManager.h:79
PixelLegacyManager::PixelTFrameHalfWidthXzn
double PixelTFrameHalfWidthXzn()
Definition: PixelLegacyManager.cxx:227
GeoPixelOldFrame::BuildBox
GeoVPhysVol * BuildBox()
Definition: GeoPixelOldFrame.cxx:38
Base_Fragment.width
width
Definition: Sherpa_i/share/common/Base_Fragment.py:59
PixelLegacyManager::setEndConeSFrame
void setEndConeSFrame()
Definition: PixelLegacyManager.h:78
PixelLegacyManager::isBarrelInSFrame
bool isBarrelInSFrame()
Definition: PixelLegacyManager.h:73
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
PixelLegacyManager::PixelBarrelFrameECAlphaX
double PixelBarrelFrameECAlphaX()
Definition: PixelLegacyManager.cxx:288
PixelGeometryManager::legacyManager
virtual PixelLegacyManager * legacyManager()
Definition: PixelGeometryManager.cxx:17
GeoVPixelFactory
This is the base class for all the pieces of the Pixel detector.
Definition: GeoVPixelFactory.h:31
PixelLegacyManager::PixelTFrameHalfWidthY
double PixelTFrameHalfWidthY()
Definition: PixelLegacyManager.cxx:210
PixelLegacyManager::PixelEndcapFrameLength
double PixelEndcapFrameLength()
Definition: PixelLegacyManager.cxx:144
PixelLegacyManager::PixelEndcapBFrameWidth
double PixelEndcapBFrameWidth()
Definition: PixelLegacyManager.cxx:134
PixelGeometryManager::getMaterialName
virtual std::string getMaterialName(const std::string &volumeName, int layerdisk=0, int typenum=0)=0
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
GeoPixelOldFrame::m_legacyManager
PixelLegacyManager * m_legacyManager
Definition: GeoPixelOldFrame.h:30
PixelLegacyManager::setBarrelInSFrame
void setBarrelInSFrame()
Definition: PixelLegacyManager.h:74
length
double length(const pvec &v)
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:26
PixelLegacyManager::PixelBFrameHalfThickness
double PixelBFrameHalfThickness()
Definition: PixelLegacyManager.cxx:180
readCCLHist.float
float
Definition: readCCLHist.py:83
PixelLegacyManager::PixelTFrameHalfWidthXzp
double PixelTFrameHalfWidthXzp()
Definition: PixelLegacyManager.cxx:244
PixelGeometryManager::partPresent
virtual bool partPresent(const std::string &partName) const =0
PixelLegacyManager::PixelTFrameHalfLength
double PixelTFrameHalfLength()
Definition: PixelLegacyManager.cxx:193
PixelLegacyManager::PixelBFrameHalfWidth
double PixelBFrameHalfWidth()
Definition: PixelLegacyManager.cxx:167
PixelLegacyManager::PixelBarrelTFrameWidth
double PixelBarrelTFrameWidth()
Definition: PixelLegacyManager.cxx:96