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
20// Definition for regions
21#define TILE_REGION_CENTRAL 1
22#define TILE_REGION_EXTENDED 2
23#define TILE_REGION_GAP 3
24#define TILE_REGION_MBSCIN 4
25
26class MsgStream;
27class TileDddbManager;
30class GeoMaterial;
31class GeoTrd;
32class GeoShape;
34
36{
37 public:
38
41 TileDddbManager* pDbManager,
42 const TileSwitches & switches,
43 MsgStream * log);
44
47
58 void fillSection(PVLink& mother,
59 int sec_number,
60 double tile_rmax,
61 double rminb,
62 double dzglue,
63 double delta_phi,
64 int ModuleNcp = 0,
65 double zlen_itc2 = 0.,
66 bool neg = false);
67
75 void fillGirder(PVLink& mother,
76 double tile_rmax,
77 double tilb_rmax,
78 double tan_delta_phi_2,
79 double thickness);
80
89 void fillFinger(PVLink& mother,
90 int sec_number,
91 double tile_rmax,
92 double tilb_rmax,
93 double delta_phi_not_used,
94 bool testbeam,
95 int ModuleNcp = 0,
96 double corrected_dz = 0.);
97
106 void fillPeriod(PVLink& mother,
107 double thickness,
108 double dzglue,
109 double tan_delta_phi_2,
110 int period_type,
111 GeoTrd * period=nullptr);
112
122 void fillDescriptor(TileDetDescriptor*& descriptor,
123 unsigned int detector,
124 int side,
125 bool testbeam,
126 bool addPlates,
127 unsigned int nphi,
128 float zshift); // in mm
129
137 void computeCellDim(TileDetDescrManager*& manager,
138 int detector,
139 bool addPlates,
140 float zShiftPos, // in mm
141 float zShiftNeg); // in mm
142
148 void calculateZ(int detector,
149 int side,
150 int sample,
151 float zshift,
152 float& zcenter,
153 float& dz);
154
159 void calculateR(int detector,
160 int sample,
161 bool addPlates,
162 int firstScin,
163 int lastScin,
164 float& rcenter,
165 float& dr);
166
174 void calculateEta(int detector,
175 int side,
176 int sample,
177 float& etamin,
178 float& etamax,
179 float& deta,
180 unsigned int& neta);
181
188 void checking(const std::string& VolumeName, bool print, int level,
189 double X1, double X2, double Y1, double Y2, double Z);
190
191 // These methods should be used when section contents are not built
192 // They initialize private data members used for computing cell dimensions
193 void setBarrelPeriodThickness(double val);
194 void setBarrelGlue(double val);
195 void setExtendedPeriodThickness(double val);
196
197 private:
198
201 MsgStream * m_log;
202
207
210
211 GeoIntrusivePtr<GeoMaterial> m_matLArServices{};
212 GeoIntrusivePtr<GeoMaterial> m_matIronHalfDens{};
213
216
217 void checktransfunc(double absorber, double period, int np, double center);
218 void printdouble(const char * name, double val);
219
220 const GeoShape * makeHolesScint(const GeoShape * mother, double R, double H2, double off, double off0 = 0.);
221 const GeoShape * makeHoles(const GeoShape * mother, double R, double H2, double off, double off0 = 0.);
222};
223
224#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:
void checking(const std::string &VolumeName, bool print, int level, double X1, double X2, double Y1, double Y2, double Z)
Function for checking empty volumes:
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 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)