ATLAS Offline Software
TileGeoSectionBuilder.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
13 #ifndef TILEGEOMODEL_TILEGEOSECTIONBUILDER_H
14 #define TILEGEOMODEL_TILEGEOSECTIONBUILDER_H
15 
16 #include "StoreGate/StoreGateSvc.h"
19 #include "GeoModelKernel/GeoPhysVol.h"
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 
27 class MsgStream;
28 class GeoPhysVol;
29 class TileDddbManager;
30 class TileDetDescriptor;
32 class GeoMaterial;
33 class GeoTrd;
34 class GeoShape;
35 
36 
38 {
39  public:
40 
43  TileDddbManager* pDbManager,
44  const TileSwitches & switches,
45  MsgStream * log);
46 
49 
60  void fillSection(GeoPhysVol*& mother,
61  int sec_number,
62  double tile_rmax,
63  double rminb,
64  double dzglue,
65  double delta_phi,
66  int ModuleNcp = 0,
67  double zlen_itc2 = 0.,
68  bool neg = false);
69 
77  void fillGirder(GeoPhysVol*& mother,
78  double tile_rmax,
79  double tilb_rmax,
80  double tan_delta_phi_2,
81  double thickness);
82 
91  void fillFinger(GeoPhysVol*& mother,
92  int sec_number,
93  double tile_rmax,
94  double tilb_rmax,
95  double delta_phi_not_used,
96  bool testbeam,
97  int ModuleNcp = 0,
98  double corrected_dz = 0.);
99 
108  void fillPeriod(GeoPhysVol*& mother,
109  double thickness,
110  double dzglue,
111  double tan_delta_phi_2,
112  int period_type,
113  GeoTrd * period=0);
114 
124  void fillDescriptor(TileDetDescriptor*& descriptor,
125  unsigned int detector,
126  int side,
127  bool testbeam,
128  bool addPlates,
129  unsigned int nphi,
130  float zshift); // in mm
131 
140  int detector,
141  bool addPlates,
142  float zShiftPos, // in mm
143  float zShiftNeg); // in mm
144 
150  void calculateZ(int detector,
151  int side,
152  int sample,
153  float zshift,
154  float& zcenter,
155  float& dz);
156 
161  void calculateR(int detector,
162  int sample,
163  bool addPlates,
164  int firstScin,
165  int lastScin,
166  float& rcenter,
167  float& dr);
168 
176  void calculateEta(int detector,
177  int side,
178  int sample,
179  float& etamin,
180  float& etamax,
181  float& deta,
182  unsigned int& neta);
183 
190  void checking(const std::string& VolumeName, bool print, int level,
191  double X1, double X2, double Y1, double Y2, double Z);
192 
193  // These methods should be used when section contents are not built
194  // They initialize private data members used for computing cell dimensions
195  void setBarrelPeriodThickness(double val);
196  void setBarrelGlue(double val);
197  void setExtendedPeriodThickness(double val);
198 
199  private:
200 
203  MsgStream * m_log;
204 
207  double m_barrelGlue;
209 
211  bool m_verbose;
212 
213  GeoIntrusivePtr<GeoMaterial> m_matLArServices{};
214  GeoIntrusivePtr<GeoMaterial> m_matIronHalfDens{};
215 
218 
219  void checktransfunc(double absorber, double period, int np, double center);
220  void printdouble(const char * name, double val);
221 
222  const GeoShape * makeHolesScint(const GeoShape * mother, double R, double H2, double off, double off0 = 0.);
223  const GeoShape * makeHoles(const GeoShape * mother, double R, double H2, double off, double off0 = 0.);
224 };
225 
226 #endif // not TILEGEOMODEL_TILEGEOSECTIONBUILDER_H
TileGeoSectionBuilder::m_matIronHalfDens
GeoIntrusivePtr< GeoMaterial > m_matIronHalfDens
Definition: TileGeoSectionBuilder.h:214
python.AtlRunQueryAMI.period
period
Definition: AtlRunQueryAMI.py:225
TileGeoSectionBuilder::m_switches
TileSwitches m_switches
Definition: TileGeoSectionBuilder.h:205
TileGeoSectionBuilder::calculateR
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):
Definition: TileGeoSectionBuilder.cxx:3283
TRTCalib_cfilter.detector
detector
Definition: TRTCalib_cfilter.py:241
Monitored::Z
@ Z
Definition: HistogramFillerUtils.h:24
TileGeoSectionBuilder::m_log
MsgStream * m_log
Definition: TileGeoSectionBuilder.h:203
TileGeoSectionBuilder::m_matLArServices
GeoIntrusivePtr< GeoMaterial > m_matLArServices
Definition: TileGeoSectionBuilder.h:213
TileGeoSectionBuilder::makeHolesScint
const GeoShape * makeHolesScint(const GeoShape *mother, double R, double H2, double off, double off0=0.)
Definition: TileGeoSectionBuilder.cxx:3507
python.TurnDataReader.dr
dr
Definition: TurnDataReader.py:112
TileGeoSectionBuilder::TileGeoSectionBuilder
TileGeoSectionBuilder(StoredMaterialManager *matManager, TileDddbManager *pDbManager, const TileSwitches &switches, MsgStream *log)
Constructor.
Definition: TileGeoSectionBuilder.cxx:50
TileGeoSectionBuilder::setBarrelGlue
void setBarrelGlue(double val)
Definition: TileGeoSectionBuilder.cxx:3466
PlotPulseshapeFromCool.np
np
Definition: PlotPulseshapeFromCool.py:64
H2
#define H2(x, y, z)
Definition: MD5.cxx:115
TileGeoSectionBuilder::fillGirder
void fillGirder(GeoPhysVol *&mother, double tile_rmax, double tilb_rmax, double tan_delta_phi_2, double thickness)
Girder parameters are the following:
Definition: TileGeoSectionBuilder.cxx:1351
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
TRT::Hit::side
@ side
Definition: HitInfo.h:83
TileGeoSectionBuilder::fillDescriptor
void fillDescriptor(TileDetDescriptor *&descriptor, unsigned int detector, int side, bool testbeam, bool addPlates, unsigned int nphi, float zshift)
Readout Descriptor parameters are the following:
Definition: TileGeoSectionBuilder.cxx:2454
FullCPAlgorithmsTest_eljob.sample
sample
Definition: FullCPAlgorithmsTest_eljob.py:116
TileGeoSectionBuilder::checktransfunc
void checktransfunc(double absorber, double period, int np, double center)
Definition: TileGeoSectionBuilder.cxx:3478
TileGeoSectionBuilder::m_barrelPeriodThickness
double m_barrelPeriodThickness
Definition: TileGeoSectionBuilder.h:206
TileGeoSectionBuilder::checking
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:
Definition: TileGeoSectionBuilder.cxx:2418
TileDetDescrManager
Definition: TileDetDescrManager.h:33
TileDetDescriptor
Definition: TileDetDescriptor.h:46
TileGeoSectionBuilder::m_dbManager
TileDddbManager * m_dbManager
Definition: TileGeoSectionBuilder.h:202
TileGeoSectionBuilder::fillFinger
void fillFinger(GeoPhysVol *&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:
Definition: TileGeoSectionBuilder.cxx:1435
TileSwitches
Definition: TileSwitches.h:15
TileGeoSectionBuilder::fillPeriod
void fillPeriod(GeoPhysVol *&mother, double thickness, double dzglue, double tan_delta_phi_2, int period_type, GeoTrd *period=0)
Period parameters are the following:
Definition: TileGeoSectionBuilder.cxx:1759
TileGeoSectionBuilder::calculateEta
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)
Definition: TileGeoSectionBuilder.cxx:3393
AnalysisUtils::Delta::R
double R(const INavigable4Momentum *p1, const double v_eta, const double v_phi)
Definition: AnalysisMisc.h:49
TileGeoSectionBuilder::calculateZ
void calculateZ(int detector, int side, int sample, float zshift, float &zcenter, float &dz)
Calculator of Z position given sample in region (detector):
Definition: TileGeoSectionBuilder.cxx:3217
TileGeoSectionBuilder::makeHoles
const GeoShape * makeHoles(const GeoShape *mother, double R, double H2, double off, double off0=0.)
Definition: TileGeoSectionBuilder.cxx:3516
TileGeoSectionBuilder::~TileGeoSectionBuilder
~TileGeoSectionBuilder()
Destructor.
Definition: TileGeoSectionBuilder.cxx:69
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
StoredMaterialManager.h
TileGeoSectionBuilder::m_verbose
bool m_verbose
Flag for activation verbose level for debugging.
Definition: TileGeoSectionBuilder.h:211
TileGeoSectionBuilder::setBarrelPeriodThickness
void setBarrelPeriodThickness(double val)
Definition: TileGeoSectionBuilder.cxx:3460
TileGeoSectionBuilder::m_theMaterialManager
StoredMaterialManager * m_theMaterialManager
Definition: TileGeoSectionBuilder.h:201
TileSwitches.h
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
eFEXNTuple.delta_phi
def delta_phi(phi1, phi2)
Definition: eFEXNTuple.py:15
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
StoredMaterialManager
This class holds one or more material managers and makes them storeable, under StoreGate.
Definition: StoredMaterialManager.h:28
TileGeoSectionBuilder::setExtendedPeriodThickness
void setExtendedPeriodThickness(double val)
Definition: TileGeoSectionBuilder.cxx:3472
python.Logging.manager
manager
Definition: PhysicsAnalysis/D3PDTools/AnaAlgorithm/python/Logging.py:92
dbg::print
void print(std::FILE *stream, std::format_string< Args... > fmt, Args &&... args)
Definition: SGImplSvc.cxx:70
TileGeoSectionBuilder::m_extendedPeriodThickness
double m_extendedPeriodThickness
Definition: TileGeoSectionBuilder.h:208
TileGeoSectionBuilder::printdouble
void printdouble(const char *name, double val)
Definition: TileGeoSectionBuilder.cxx:3500
TileGeoSectionBuilder::computeCellDim
void computeCellDim(TileDetDescrManager *&manager, int detector, bool addPlates, float zShiftPos, float zShiftNeg)
Cell dimension parameters are the following:
Definition: TileGeoSectionBuilder.cxx:2709
TileGeoSectionBuilder::fillSection
void fillSection(GeoPhysVol *&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:
Definition: TileGeoSectionBuilder.cxx:74
LArCellBinning.etamin
etamin
Definition: LArCellBinning.py:137
TileDddbManager
This class provides access to constants in the Geometry DB.
Definition: TileDddbManager.h:38
StoreGateSvc.h
TileGeoSectionBuilder::m_barrelGlue
double m_barrelGlue
Definition: TileGeoSectionBuilder.h:207
TileGeoSectionBuilder::m_additionalIronLayer
double m_additionalIronLayer
Makes iron layer a little bit wider to obtain the same sampling fraction for simulation without a glu...
Definition: TileGeoSectionBuilder.h:217
TileGeoSectionBuilder
Definition: TileGeoSectionBuilder.h:38