ATLAS Offline Software
Loading...
Searching...
No Matches
GeoPixelDiskSupports.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
6#include "GeoModelKernel/GeoTube.h"
7#include "GeoModelKernel/GeoLogVol.h"
8#include "GeoModelKernel/GeoPhysVol.h"
9#include "GeoModelKernel/GeoMaterial.h"
10#include "GeoModelKernel/GeoTransform.h"
11
12#include <sstream>
13#include <utility>
14
17 GeoModelIO::ReadGeoModel* sqliteReader,
18 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
19 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX)
20 : GeoVPixelFactory (ddmgr, mgr, sqliteReader, std::move(mapFPV), std::move(mapAX))
21{
22 //
23 // Initialize the vectors
24 //
25 //
26 // zpos is not needed, but it's here just in case...
27 //
28 for (int ii =0; ii< m_gmt_mgr->PixelDiskNumSupports(); ii++) {
29 double rmin = m_gmt_mgr->PixelDiskSupportRMin(ii);
30 double rmax = m_gmt_mgr->PixelDiskSupportRMax(ii);
31 double halflength = m_gmt_mgr->PixelDiskSupportThickness(ii)/2.;
32 double zpos = 0.;
33 int matTypeNum = m_gmt_mgr->PixelDiskSupportMaterialTypeNum(ii);
34 m_rmin.push_back(rmin);
35 m_rmax.push_back(rmax);
36 m_zpos.push_back(zpos);
37 m_halflength.push_back(halflength);
38 m_typeNum.push_back(matTypeNum);
39 }
40 m_nframe = 0;
41}
42
43
45 //
46 // Dimensions: (_nframe set with the SetCylinder method)
47 //
48 double rmin = m_rmin[m_nframe];
49 double rmax = m_rmax[m_nframe];
50 double halflength = m_halflength[m_nframe];
51 int typeNum = m_typeNum[m_nframe];
52
53 const GeoTube* supportTube = new GeoTube(rmin,rmax,halflength);
54 std::string matName = m_gmt_mgr->getMaterialName("DiskSupport", m_gmt_mgr->GetLD(), typeNum);
55 const GeoMaterial* supportMat = m_mat_mgr->getMaterialForVolume(matName, supportTube->volume());
56 std::string logName = "DiskSup";
57 std::ostringstream o;
58 o << m_nframe;
59 logName = logName+o.str();
60 GeoLogVol* theSupport = new GeoLogVol(logName,supportTube,supportMat);
61 GeoPhysVol* supportPhys = new GeoPhysVol(theSupport);
62 return supportPhys;
63}
64
std::vector< double > m_rmax
std::vector< int > m_typeNum
std::vector< double > m_halflength
std::vector< double > m_zpos
virtual GeoVPhysVol * Build() override
GeoPixelDiskSupports(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)
std::vector< double > m_rmin
PixelGeometryManager * m_gmt_mgr
InDetMaterialManager * m_mat_mgr
GeoVPixelFactory(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)
Dedicated detector manager extending the functionality of the SiDetectorManager with dedicated pixel ...
STL namespace.