ATLAS Offline Software
Loading...
Searching...
No Matches
GeoPixelFluid.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5//
6// This class builds one trapezoid
7//
8//
9#include "GeoPixelFluid.h"
10#include "GeoModelKernel/GeoTrd.h"
11#include "GeoModelKernel/GeoLogVol.h"
12#include "GeoModelKernel/GeoPhysVol.h"
13#include "GeoModelKernel/GeoMaterial.h"
14
15#include<cmath>
16#include <sstream>
17#include <utility>
18
21 GeoModelIO::ReadGeoModel* sqliteReader,
22 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
23 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX,
24 int type)
25 : GeoVPixelFactory (ddmgr, mgr, sqliteReader, std::move(mapFPV), std::move(mapAX))
26{
27 m_index = m_gmt_mgr->PixelFluidIndex(type);
28 double z1 = m_gmt_mgr->PixelFluidZ1(m_index);
29 double z2 = m_gmt_mgr->PixelFluidZ2(m_index);
30 m_posX = m_gmt_mgr->PixelFluidX(m_index);
31 m_posY = m_gmt_mgr->PixelFluidY(m_index);
32 m_posZ = 0.5*(z1+z2);
33}
34
36{
37 //
38 // Dimensions
39 //
40 double z1 = m_gmt_mgr->PixelFluidZ1(m_index);
41 double z2 = m_gmt_mgr->PixelFluidZ2(m_index);
42 double thick1 = m_gmt_mgr->PixelFluidThick1(m_index);
43 double thick2 = m_gmt_mgr->PixelFluidThick2(m_index);
44 double width = m_gmt_mgr->PixelFluidWidth(m_index);
45
46 double length = std::abs(z2 - z1);
47 double thickAtZmin = thick1;
48 // double thickAtZmax = thick2;
49 if (z1 > z2) {
50 thickAtZmin = thick2;
51 // thickAtZmax = thick1;
52 }
53
54 std::ostringstream o;
55 o << "Fluid" << m_gmt_mgr->PixelFluidType(m_index);
56 std::string logName = o.str();
57
58 const GeoMaterial* fluidMat = m_mat_mgr->getMaterial(m_gmt_mgr->PixelFluidMat(m_index));
59 const GeoTrd* fluidShape = new GeoTrd(0.5*thickAtZmin, 0.5*thickAtZmin, 0.5*width, 0.5*width, 0.5*length);
60 GeoLogVol * fluidLV = new GeoLogVol(logName, fluidShape, fluidMat);
61 GeoPhysVol * fluidPhys = new GeoPhysVol(fluidLV);
62
63 return fluidPhys;
64}
double length(const pvec &v)
const double width
GeoPixelFluid(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, int type)
virtual GeoVPhysVol * Build() override
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.