ATLAS Offline Software
Loading...
Searching...
No Matches
TileGeoSectionBuilder.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
13#ifndef TILEGEOMODEL_TILEGEOSECTIONBUILDER_H
14#define TILEGEOMODEL_TILEGEOSECTIONBUILDER_H
15
18#include "GeoModelKernel/GeoPhysVol.h" //PVLink typedef
19#include <string_view>
20
21// Definition for regions
22#define TILE_REGION_CENTRAL 1
23#define TILE_REGION_EXTENDED 2
24#define TILE_REGION_GAP 3
25#define TILE_REGION_MBSCIN 4
26
27class MsgStream;
28class TileDddbManager;
31class GeoMaterial;
32class GeoTrd;
33class GeoShape;
35
37{
38 public:
39
42 TileDddbManager* pDbManager,
43 const TileSwitches & switches,
44 MsgStream * log);
45
48
59 void fillSection(PVLink& mother,
60 int sec_number,
61 double tile_rmax,
62 double rminb,
63 double dzglue,
64 double delta_phi,
65 int ModuleNcp = 0,
66 double zlen_itc2 = 0.,
67 bool neg = false);
68
76 void fillGirder(PVLink& mother,
77 double tile_rmax,
78 double tilb_rmax,
79 double tan_delta_phi_2,
80 double thickness);
81
90 void fillFinger(PVLink& mother,
91 int sec_number,
92 double tile_rmax,
93 double tilb_rmax,
94 double delta_phi_not_used,
95 bool testbeam,
96 int ModuleNcp = 0,
97 double corrected_dz = 0.);
98
107 void fillPeriod(PVLink& mother,
108 double thickness,
109 double dzglue,
110 double tan_delta_phi_2,
111 int period_type,
112 GeoTrd * period=nullptr);
113
123 void fillDescriptor(TileDetDescriptor*& descriptor,
124 unsigned int detector,
125 int side,
126 bool testbeam,
127 bool addPlates,
128 unsigned int nphi,
129 float zshift); // in mm
130
138 void computeCellDim(TileDetDescrManager*& manager,
139 int detector,
140 bool addPlates,
141 float zShiftPos, // in mm
142 float zShiftNeg); // in mm
143
149 void calculateZ(int detector,
150 int side,
151 int sample,
152 float zshift,
153 float& zcenter,
154 float& dz);
155
160 void calculateR(int detector,
161 int sample,
162 bool addPlates,
163 int firstScin,
164 int lastScin,
165 float& rcenter,
166 float& dr);
167
175 void calculateEta(int detector,
176 int side,
177 int sample,
178 float& etamin,
179 float& etamax,
180 float& deta,
181 unsigned int& neta);
182
189 void checking(std::string_view VolumeName, bool print, int level,
190 double X1, double X2, double Y1, double Y2, double Z);
191
192 // These methods should be used when section contents are not built
193 // They initialize private data members used for computing cell dimensions
194 void setBarrelPeriodThickness(double val);
195 void setBarrelGlue(double val);
196 void setExtendedPeriodThickness(double val);
197
198 private:
199
202 MsgStream * m_log;
203
208
211
212 GeoIntrusivePtr<GeoMaterial> m_matLArServices{};
213 GeoIntrusivePtr<GeoMaterial> m_matIronHalfDens{};
214
217
218 void checktransfunc(double absorber, double period, int np, double center);
219 void printdouble(const char * name, double val);
220
221 const GeoShape * makeHolesScint(const GeoShape * mother, double R, double H2, double off, double off0 = 0.);
222 const GeoShape * makeHoles(const GeoShape * mother, double R, double H2, double off, double off0 = 0.);
223};
224
225#endif // not TILEGEOMODEL_TILEGEOSECTIONBUILDER_H
#define H2(x, y, z)
Definition MD5.cxx:115
void print(char *figname, TCanvas *c1)
This class holds one or more material managers and makes them storeable, under StoreGate.
This class provides access to constants in the Geometry DB.
void fillFinger(PVLink &mother, int sec_number, double tile_rmax, double tilb_rmax, double delta_phi_not_used, bool testbeam, int ModuleNcp=0, double corrected_dz=0.)
Finger parameters are the following:
bool m_verbose
Flag for activation verbose level for debugging.
double m_additionalIronLayer
Makes iron layer a little bit wider to obtain the same sampling fraction for simulation without a glu...
GeoIntrusivePtr< GeoMaterial > m_matLArServices
void fillPeriod(PVLink &mother, double thickness, double dzglue, double tan_delta_phi_2, int period_type, GeoTrd *period=nullptr)
Period parameters are the following:
void setBarrelPeriodThickness(double val)
const GeoShape * makeHolesScint(const GeoShape *mother, double R, double H2, double off, double off0=0.)
void calculateEta(int detector, int side, int sample, float &etamin, float &etamax, float &deta, unsigned int &neta)
calculateEta function calculates are the following parameters given sample in region (detector)
void printdouble(const char *name, double val)
StoredMaterialManager * m_theMaterialManager
void fillDescriptor(TileDetDescriptor *&descriptor, unsigned int detector, int side, bool testbeam, bool addPlates, unsigned int nphi, float zshift)
Readout Descriptor parameters are the following:
const GeoShape * makeHoles(const GeoShape *mother, double R, double H2, double off, double off0=0.)
TileGeoSectionBuilder(StoredMaterialManager *matManager, TileDddbManager *pDbManager, const TileSwitches &switches, MsgStream *log)
Constructor.
void computeCellDim(TileDetDescrManager *&manager, int detector, bool addPlates, float zShiftPos, float zShiftNeg)
Cell dimension parameters are the following:
void checking(std::string_view VolumeName, bool print, int level, double X1, double X2, double Y1, double Y2, double Z)
Function for checking empty volumes:
void calculateZ(int detector, int side, int sample, float zshift, float &zcenter, float &dz)
Calculator of Z position given sample in region (detector):
void calculateR(int detector, int sample, bool addPlates, int firstScin, int lastScin, float &rcenter, float &dr)
Calculator of R position given sample in region (detector):
void setExtendedPeriodThickness(double val)
void fillGirder(PVLink &mother, double tile_rmax, double tilb_rmax, double tan_delta_phi_2, double thickness)
Girder parameters are the following:
~TileGeoSectionBuilder()
Destructor.
GeoIntrusivePtr< GeoMaterial > m_matIronHalfDens
void fillSection(PVLink &mother, int sec_number, double tile_rmax, double rminb, double dzglue, double delta_phi, int ModuleNcp=0, double zlen_itc2=0., bool neg=false)
Section parameters are the following:
void checktransfunc(double absorber, double period, int np, double center)