ATLAS Offline Software
Loading...
Searching...
No Matches
TRT_DetDescrDB_ParameterInterface.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/Units.h"
15
16//_________________________________________________________________________________________
23
24//_________________________________________________________________________________________
26
34
35 for (unsigned int iRing = 0; iRing < nBarrelRings; iRing++) {
37 delete[] barrelXOfCoolingTube[iRing];
38 delete[] barrelYOfCoolingTube[iRing];
39 delete[] shellCornerXPosition[iRing];
40 delete[] shellCornerYPosition[iRing];
41
42 // The values get copied to ArrayFunction objects so there are safe to delete.
43 delete[] strawXPosition[iRing];
44 delete[] strawYPosition[iRing];
45 };
46
47 delete[] endCapLayerZPositionA;
48 delete[] endCapLayerZPositionB;
49 delete[] endCapLayerZPositionC;
50
51
53 delete m_placements;
54}
55
56//_________________________________________________________________________________________
58
60 // Initialize Services //
62
63 msg(MSG::DEBUG) << "Starting TRT_DetDescrDB_ParameterInterface" <<endmsg;
64
65 // RDBAccessSvc (Interface to the DD database).
66 IRDBAccessSvc* iAccessSvc = m_athenaComps->rdbAccessSvc();
67
68 // Get tag key and corresponding node
69 DecodeVersionKey versionKey(m_athenaComps->geoDbTagSvc(),"TRT");
70 const std::string& detectorKey = versionKey.tag();
71 const std::string& detectorNode = versionKey.node();
72
73 // Get version tag and node for InnerDetector.
74 DecodeVersionKey indetVersionKey(m_athenaComps->geoDbTagSvc(),"InnerDetector");
75
76
78 // Version Information //
80 if(m_athenaComps->geoDbTagSvc()->getParamSvcName().starts_with("RDB"))
81 versionTag = iAccessSvc->getChildTag("TRT", versionKey.tag(), versionKey.node());
82
84 // Special Flags //
86
87 IRDBRecordset_ptr switchSet = iAccessSvc->getRecordsetPtr("TRTSwitches", detectorKey, detectorNode);
88 const IRDBRecord *switches = (*switchSet)[0];
89
90 oldConfiguration = true;
91 if (!switches->isFieldNull("VERSIONNAME")) {
92 oldConfiguration = false;
93 versionName = switches->getString("VERSIONNAME");
94 layout = switches->getString("LAYOUT");
95 versionDescription = switches->getString("DESCRIPTION");
96 }
97
98 // Flags isCosmicRun and initialLayout don't have any effect if TRTTopLevel table is present.
99 // The latter controls which parts are present.
100 isCosmicRun = false;
101 if (!switches->isFieldNull("COSMICLAYOUT")) {
102 isCosmicRun = switches->getInt("COSMICLAYOUT");
103 }
104 //NB: DONT DO: bool useoldactivegasmixture ( switches->getInt("GASVERSION") == 0 );
105 //Since user might have overriden it from joboptions!!
106
107 initialLayout = switches->getInt("INITIALLAYOUT");
108
109 IRDBRecordset_ptr RDB_DigVersion = iAccessSvc->getRecordsetPtr("TRTDigVersion", detectorKey, detectorNode);
110 const IRDBRecord *RDBVars_DigVersion = (*RDB_DigVersion)[0];
111 digversion = RDBVars_DigVersion->getInt("DIGVERSION");
112 digversionname = RDBVars_DigVersion->getString("DIGVERSIONNAME");
113
115 // Top Level Placements //
117 if (!oldConfiguration) {
118 IRDBRecordset_ptr topLevelTable = iAccessSvc->getRecordsetPtr("TRTTopLevel", detectorKey, detectorNode);
119 m_placements = new TopLevelPlacements(topLevelTable);
120 }
121 else
123
125 // Extra Scaled Material //
127
128 // NB. This is at Inner Detector node level
129 m_scalingTable = iAccessSvc->getRecordsetPtr("TrtMatScaling", indetVersionKey.tag(), indetVersionKey.node());
130
131
133 // ExtraMaterial //
136
137
139 // Variables common between Barrel and End Cap //
141
142 IRDBRecordset_ptr RDB_CommonPars = iAccessSvc->getRecordsetPtr("TRTCommonPars",detectorKey,detectorNode);
143 const IRDBRecord* RDBVars_CommonPars = (*RDB_CommonPars)[0];
144
145 lengthOfDeadRegion = RDBVars_CommonPars->getFloat("LENGTHOFDEADREGION")*GeoModelKernelUnits::mm;
146 outerRadiusOfWire = RDBVars_CommonPars->getFloat("OUTERRADIUSOFWIRE")*GeoModelKernelUnits::mm;
147 innerRadiusOfStraw = RDBVars_CommonPars->getFloat("INNERRADIUSOFSTRAW")*GeoModelKernelUnits::mm;
148 outerRadiusOfStraw = RDBVars_CommonPars->getFloat("OUTERRADIUSOFSTRAW")*GeoModelKernelUnits::mm;
149
151 // Variables related to the Barrel part //
153
154 IRDBRecordset_ptr RDB_BarrelOverallPars = iAccessSvc->getRecordsetPtr("TRTBarrelOverallPars",detectorKey,detectorNode);
155 const IRDBRecord* RDBVars_BarrelOverallPars = (*RDB_BarrelOverallPars)[0];
156 IRDBRecordset_ptr RDB_BarrelStrawCoord = iAccessSvc->getRecordsetPtr("TRTBarrelStrawCoord",detectorKey,detectorNode);
157 IRDBRecordset_ptr RDB_BarrelRingDepPars = iAccessSvc->getRecordsetPtr("TRTBarrelRingDepPars",detectorKey,detectorNode);
158 IRDBRecordset_ptr RDB_BarrelNStrawInLay = iAccessSvc->getRecordsetPtr("TRTBarrelNStrawInLay",detectorKey,detectorNode);
159 IRDBRecordset_ptr RDB_BarrelServices = iAccessSvc->getRecordsetPtr("TRTBarrelServices",detectorKey,detectorNode);
160
161 includeBarServiceAndFlange = (RDB_BarrelServices->size()!=0);
162
164
165 const IRDBRecord* RDBVars_BarrelServices = (*RDB_BarrelServices)[0];
166 barFlangeZMin = RDBVars_BarrelServices->getDouble("BARFLANGEZMIN")*GeoModelKernelUnits::mm;
167 barFlangeZMax = RDBVars_BarrelServices->getDouble("BARFLANGEZMAX")*GeoModelKernelUnits::mm;
168 barFlangeRMin = RDBVars_BarrelServices->getDouble("BARFLANGERMIN")*GeoModelKernelUnits::mm;
169 barFlangeRMax = RDBVars_BarrelServices->getDouble("BARFLANGERMAX")*GeoModelKernelUnits::mm;
170
171 barServicesZMin = RDBVars_BarrelServices->getDouble("BARSERVICESZMIN")*GeoModelKernelUnits::mm;
172 barServicesZMax = RDBVars_BarrelServices->getDouble("BARSERVICESZMAX")*GeoModelKernelUnits::mm;
173 barServicesRMin = RDBVars_BarrelServices->getDouble("BARSERVICESRMIN")*GeoModelKernelUnits::mm;
174 barServicesRMax = RDBVars_BarrelServices->getDouble("BARSERVICESRMAX")*GeoModelKernelUnits::mm;
175
176 } else if (!includeBarServiceAndFlange) {
177
178 barFlangeZMin = -1.;
179 barFlangeZMax = -1.;
180 barFlangeRMin = -1.;
181 barFlangeRMax = -1.;
182
183 barServicesZMin = -1.;
184 barServicesZMax = -1.;
185 barServicesRMin = -1.;
186 barServicesRMax = -1.;
187 }
188
189 if (!RDBVars_BarrelOverallPars->isFieldNull("BRLVIRTVOLZCLEARANCE")) {
190 barrelVirtualVolumeZClearance = RDBVars_BarrelOverallPars->getFloat("BRLVIRTVOLZCLEARANCE")*GeoModelKernelUnits::mm;
191 barrelVirtualVolumeRMinClearance = RDBVars_BarrelOverallPars->getFloat("BRLVIRTVOLRMINCLEAR")*GeoModelKernelUnits::mm;
192 barrelVirtualVolumeRMaxClearance = RDBVars_BarrelOverallPars->getFloat("BRLVIRTVOLRMAXCLEAR")*GeoModelKernelUnits::mm;
193 } else {
194 barrelVirtualVolumeZClearance = 0.001*GeoModelKernelUnits::micrometer;//fixme: use epsilon(?).
195 barrelVirtualVolumeRMinClearance = 0.001*GeoModelKernelUnits::micrometer;
196 barrelVirtualVolumeRMaxClearance = 0.001*GeoModelKernelUnits::micrometer;
197 }
198
199 innerRadiusOfBarrelVolume = RDBVars_BarrelOverallPars->getFloat("INNRADIUSOFBARRELVOL")*GeoModelKernelUnits::mm;
200 outerRadiusOfBarrelVolume = RDBVars_BarrelOverallPars->getFloat("OUTRADIUSOFBARRELVOL")*GeoModelKernelUnits::mm;
201 lengthOfBarrelVolume = RDBVars_BarrelOverallPars->getFloat("LENGTHOFBARRELVOLUME")*GeoModelKernelUnits::mm;
202 barrelOuterRadiusOfCoolingTube = RDBVars_BarrelOverallPars->getFloat("OUTRADIUSOFCOOLTUBE")*GeoModelKernelUnits::mm;
203 barrelInnerRadiusOfCoolingTube = RDBVars_BarrelOverallPars->getFloat("INNRADIUSOFCOOLTUBE")*GeoModelKernelUnits::mm;
204 barrelThicknessOfModuleWalls = RDBVars_BarrelOverallPars->getFloat("THICKOFMODULEWALLS")*GeoModelKernelUnits::mm;
205 barrelNumberOfLayersWithLargeDeadRegion = RDBVars_BarrelOverallPars->getInt("NLAYWTHLRGDEADREGION");
206 thicknessOfBarrelInnerSupport = RDBVars_BarrelOverallPars->getFloat("THICKOFBRLINNSUPPORT")*GeoModelKernelUnits::mm;
207 thicknessOfBarrelOuterSupport = RDBVars_BarrelOverallPars->getFloat("THICKOFBRLOUTSUPPORT")*GeoModelKernelUnits::mm;
208 barrelOuterRadiusOfStrawHole = RDBVars_BarrelOverallPars->getFloat("OUTRADIUSOFSTRAWHOLE")*GeoModelKernelUnits::mm;
209
214
219
220 nBarrelModules = RDBVars_BarrelOverallPars->getInt("NBARRELMODULES");
221 nBarrelModulesUsed = nBarrelModules; //Hardwired to be all modules. Silly variable anyway.
222 nBarrelPhi = RDBVars_BarrelOverallPars->getInt("NBARRELPHI");
223
224 barrelLengthOfStraw = RDBVars_BarrelOverallPars->getFloat("LENGTHOFSTRAW")*GeoModelKernelUnits::mm;
225 barrelLengthOfTwister = RDBVars_BarrelOverallPars->getFloat("LENGTHOFTWISTER")*GeoModelKernelUnits::mm;
226 barrelLengthOfLargeDeadRegion = RDBVars_BarrelOverallPars->getFloat("LENLARGEDEADREGION")*GeoModelKernelUnits::mm;
227
229 for (unsigned int i=0; i<nBarrelRings; i++) {
230 const IRDBRecord* ringVars = (*RDB_BarrelRingDepPars)[i];
231 barrelNumberOfStrawLayersInModule[i] = ringVars->getInt("NSTRAWLAYERSINMODULE");
232 };
233
234
235 for (unsigned int i = 0; i < nBarrelRings; i++)
237
238 unsigned int cumulLayer = 0;
239 for (unsigned int i=0; i<nBarrelRings; i++)
240 for (unsigned int j=0; j<barrelNumberOfStrawLayersInModule[i]; j++) {
241 const IRDBRecord* layerVars = (*RDB_BarrelNStrawInLay)[cumulLayer++];
242 barrelNumberOfStrawsInStrawLayer[i][j] = layerVars->getInt("NSTRAWSINSTRAWLAYER");
243 }
244
249 barrelNumberOfStrawsInModule = new unsigned int[nBarrelRings];
251
252 nCoolingTubes = RDBVars_BarrelOverallPars->getInt("NCOOLINGTUBES");
253 if ( nCoolingTubes != 2 ) {
254 msg(MSG::WARNING) << "DD Database indicates nCoolingTubes != 2, but the code" << " can't cope with that. Putting nCoolingTubes=2" << endmsg;
255 nCoolingTubes = 2;
256 };
257
258 nShellCorners = RDBVars_BarrelOverallPars->getInt("NSHELLCORNERS");
259 if ( nShellCorners != 4 ) {
260 msg(MSG::WARNING) << "DD Database indicates nShellCorners != 4, but the code" << " can't cope with that. Putting nShellCorners=4" << endmsg;
261 nShellCorners = 4;
262 };
263
264 for (unsigned int iRing = 0; iRing < nBarrelRings; iRing++) {
265 const IRDBRecord* row = (*RDB_BarrelRingDepPars)[iRing];
266 barrelXOfFirstGlobalAlignmentStraw[iRing] = row->getFloat("XOFGLOBALALIGNSTRW1")*GeoModelKernelUnits::mm;
267 barrelYOfFirstGlobalAlignmentStraw[iRing] = row->getFloat("YOFGLOBALALIGNSTRW1")*GeoModelKernelUnits::mm;
268 barrelXOfSecondGlobalAlignmentStraw[iRing] = row->getFloat("XOFGLOBALALIGNSTRW2")*GeoModelKernelUnits::mm;
269 barrelYOfSecondGlobalAlignmentStraw[iRing] = row->getFloat("YOFGLOBALALIGNSTRW2")*GeoModelKernelUnits::mm;
270 barrelIndexOfSecondGlobalAlignmentStraw[iRing] = row->getInt("INDEX2NDGLBALGNSTRW");
271 barrelNumberOfStrawsInModule[iRing] = row->getInt("NSTRAWSINMODULE");
272
273 barrelXOfCoolingTube[iRing] = new double[nCoolingTubes];
274 barrelXOfCoolingTube[iRing][0] = row->getFloat("XOFCOOLINGTUBE1")*GeoModelKernelUnits::mm;
275 barrelXOfCoolingTube[iRing][1] = row->getFloat("XOFCOOLINGTUBE2")*GeoModelKernelUnits::mm;
276
277 barrelYOfCoolingTube[iRing] = new double[nCoolingTubes];
278 barrelYOfCoolingTube[iRing][0] = row->getFloat("YOFCOOLINGTUBE1")*GeoModelKernelUnits::mm;
279 barrelYOfCoolingTube[iRing][1] = row->getFloat("YOFCOOLINGTUBE2")*GeoModelKernelUnits::mm;
280
281 shellCornerXPosition[iRing] = new double[nShellCorners];
282 shellCornerXPosition[iRing][0] = row->getFloat("SHELLCORNERXPOS1")*GeoModelKernelUnits::mm;
283 shellCornerXPosition[iRing][1] = row->getFloat("SHELLCORNERXPOS2")*GeoModelKernelUnits::mm;
284 shellCornerXPosition[iRing][2] = row->getFloat("SHELLCORNERXPOS3")*GeoModelKernelUnits::mm;
285 shellCornerXPosition[iRing][3] = row->getFloat("SHELLCORNERXPOS4")*GeoModelKernelUnits::mm;
286
287 shellCornerYPosition[iRing] = new double[nShellCorners];
288 shellCornerYPosition[iRing][0] = row->getFloat("SHELLCORNERYPOS1")*GeoModelKernelUnits::mm;
289 shellCornerYPosition[iRing][1] = row->getFloat("SHELLCORNERYPOS2")*GeoModelKernelUnits::mm;
290 shellCornerYPosition[iRing][2] = row->getFloat("SHELLCORNERYPOS3")*GeoModelKernelUnits::mm;
291 shellCornerYPosition[iRing][3] = row->getFloat("SHELLCORNERYPOS4")*GeoModelKernelUnits::mm;
292
293 };
294
295 unsigned int cumulativeStrawNumber = 0;
296 for (unsigned int i = 0; i < nBarrelRings; i++) {
297 strawXPosition[i] = new double[ barrelNumberOfStrawsInModule[i] ];
298 strawYPosition[i] = new double[ barrelNumberOfStrawsInModule[i] ];
299 for (unsigned int j = 0; j < barrelNumberOfStrawsInModule[i]; j++) {
300 const IRDBRecord* row = (*RDB_BarrelStrawCoord)[cumulativeStrawNumber++];
301 strawXPosition[i][j]=row->getFloat("STRAWXPOSITION")*GeoModelKernelUnits::mm;
302 strawYPosition[i][j]=row->getFloat("STRAWYPOSITION")*GeoModelKernelUnits::mm;
303 };
304 };
305
306
308 // Variables related to the End Cap part //
310
311 IRDBRecordset_ptr RDB_EndCapOverallPars = iAccessSvc->getRecordsetPtr("TRTEndCapOverallPars",detectorKey,detectorNode);
312 const IRDBRecord* RDBVars_EndCapOverallPars = (*RDB_EndCapOverallPars)[0];
313 IRDBRecordset_ptr RDB_ECWheelTypDepPars = iAccessSvc->getRecordsetPtr("TRTECWheelTypDepPars",detectorKey,detectorNode);
314 const IRDBRecord* RDBVars_A_Wheel = (*RDB_ECWheelTypDepPars)[0];
315 const IRDBRecord* RDBVars_B_Wheel = (*RDB_ECWheelTypDepPars)[1];
316 const IRDBRecord* RDBVars_C_Wheel = (*RDB_ECWheelTypDepPars)[2];
317 IRDBRecordset_ptr RDB_EndCapStrwLayZPos = iAccessSvc->getRecordsetPtr("TRTEndCapStrwLayZPos",detectorKey,detectorNode);
318 IRDBRecordset_ptr RDB_ECMembranePars = iAccessSvc->getRecordsetPtr("TRTECMembranePars",detectorKey,detectorNode);
319 IRDBRecordset_ptr RDB_ECHeatExchAndFoil = iAccessSvc->getRecordsetPtr("TRTECHeatExchAndFoil",detectorKey,detectorNode);
320 IRDBRecordset_ptr RDB_ECWheelDepPars = iAccessSvc->getRecordsetPtr("TRTECWheelDepPars",detectorKey,detectorNode);
321 IRDBRecordset_ptr RDB_ECEndCapDepPars = iAccessSvc->getRecordsetPtr("TRTECEndCapDepPars",detectorKey,detectorNode);
322
323 innerRadiusOfEndCapVolumeAB = RDBVars_EndCapOverallPars->getFloat("INNERRADIUSOFECVOLAB")*GeoModelKernelUnits::mm;
324 outerRadiusOfEndCapVolumeAB = RDBVars_EndCapOverallPars->getFloat("OUTERRADIUSOFECVOLAB")*GeoModelKernelUnits::mm;
325 innerRadiusOfEndCapVolumeC = RDBVars_EndCapOverallPars->getFloat("INNERRADIUSOFECVOLC")*GeoModelKernelUnits::mm;
326 outerRadiusOfEndCapVolumeC = RDBVars_EndCapOverallPars->getFloat("OUTERRADIUSOFECVOLC")*GeoModelKernelUnits::mm;
327 lengthOfEndCapVolumeAB = RDBVars_EndCapOverallPars->getFloat("LENGTHOFENDCAPVOLAB")*GeoModelKernelUnits::mm;
328 positionOfEndCapVolumeAB = RDBVars_EndCapOverallPars->getFloat("POSFORENDCAPVOLAB")*GeoModelKernelUnits::mm;
329 lengthOfEndCapVolumeC = RDBVars_EndCapOverallPars->getFloat("LENGTHOFENDCAPVOLC")*GeoModelKernelUnits::mm;
330 positionOfEndCapVolumeC = RDBVars_EndCapOverallPars->getFloat("POSITIONOFENDCAPVOLC")*GeoModelKernelUnits::mm;//rename!!!
331
332 if ( RDBVars_A_Wheel->getFloat("OUTERRADIUSOFINNERSUP") != RDBVars_B_Wheel->getFloat("OUTERRADIUSOFINNERSUP") )
333 msg(MSG::WARNING) << "DD Database indicates different outer radii of inner support for A and B wheels." << " The code assumes otherwise. Using value of A wheel for both!" << endmsg;
334 if ( RDBVars_A_Wheel->getFloat("INNERRADIUSOFOUTERSUP") != RDBVars_B_Wheel->getFloat("INNERRADIUSOFOUTERSUP") )
335 msg(MSG::WARNING) << "DD Database indicates different inner radii of outer support for A and B wheels." << " The code assumes otherwise. Using value of A wheel for both!" << endmsg;
336 endcapOuterRadiusOfInnerSupport_wheelAB = RDBVars_A_Wheel->getFloat("OUTERRADIUSOFINNERSUP")*GeoModelKernelUnits::mm;
337 endcapInnerRadiusOfOuterSupport_wheelAB = RDBVars_A_Wheel->getFloat("INNERRADIUSOFOUTERSUP")*GeoModelKernelUnits::mm;
338 endcapOuterRadiusOfInnerSupport_wheelC = RDBVars_C_Wheel->getFloat("OUTERRADIUSOFINNERSUP")*GeoModelKernelUnits::mm;
339 endcapInnerRadiusOfOuterSupport_wheelC = RDBVars_C_Wheel->getFloat("INNERRADIUSOFOUTERSUP")*GeoModelKernelUnits::mm;
340
341 endCapShiftForEachRotation = RDBVars_EndCapOverallPars->getFloat("SHIFTFOREACHROTATION")*GeoModelKernelUnits::radian;
342
343 endCapPhiOfFirstStraw = 0; // Temporary
344
345
346 endCapInnerRadiusOfSupportA = RDBVars_A_Wheel->getFloat("INNERRADIUSOFSUPPORT")*GeoModelKernelUnits::mm;
347 endCapInnerRadiusOfSupportB = RDBVars_B_Wheel->getFloat("INNERRADIUSOFSUPPORT")*GeoModelKernelUnits::mm;
348 endCapInnerRadiusOfSupportC = RDBVars_C_Wheel->getFloat("INNERRADIUSOFSUPPORT")*GeoModelKernelUnits::mm;
349
350 endCapOuterRadiusOfSupportA = RDBVars_A_Wheel->getFloat("OUTERRADIUSOFSUPPORT")*GeoModelKernelUnits::mm;
351 endCapOuterRadiusOfSupportB = RDBVars_B_Wheel->getFloat("OUTERRADIUSOFSUPPORT")*GeoModelKernelUnits::mm;
352 endCapOuterRadiusOfSupportC = RDBVars_C_Wheel->getFloat("OUTERRADIUSOFSUPPORT")*GeoModelKernelUnits::mm;
353
354 endCapRadialThicknessOfInnerSupportA = RDBVars_A_Wheel->getFloat("RADIALTHICKOFINNERSUP")*GeoModelKernelUnits::mm;
355 endCapRadialThicknessOfInnerSupportB = RDBVars_B_Wheel->getFloat("RADIALTHICKOFINNERSUP")*GeoModelKernelUnits::mm;
356 endCapRadialThicknessOfInnerSupportC = RDBVars_C_Wheel->getFloat("RADIALTHICKOFINNERSUP")*GeoModelKernelUnits::mm;
357
358 endCapRadialThicknessOfOuterSupportA = RDBVars_A_Wheel->getFloat("RADIALTHICKOFOUTERSUP")*GeoModelKernelUnits::mm;
359 endCapRadialThicknessOfOuterSupportB = RDBVars_B_Wheel->getFloat("RADIALTHICKOFOUTERSUP")*GeoModelKernelUnits::mm;
360 endCapRadialThicknessOfOuterSupportC = RDBVars_C_Wheel->getFloat("RADIALTHICKOFOUTERSUP")*GeoModelKernelUnits::mm;
361
362 endCapRadialDistFromRadToOuterSupportA = RDBVars_A_Wheel->getFloat("RADIALDISTRADTOOUTERSUP")*GeoModelKernelUnits::mm;
363 endCapRadialDistFromRadToOuterSupportB = RDBVars_B_Wheel->getFloat("RADIALDISTRADTOOUTERSUP")*GeoModelKernelUnits::mm;
364 endCapRadialDistFromRadToOuterSupportC = RDBVars_C_Wheel->getFloat("RADIALDISTRADTOOUTERSUP")*GeoModelKernelUnits::mm;
365
366 endCapMainRadiatorThicknessA = RDBVars_A_Wheel->getFloat("MAINRADIATORTHICK")*GeoModelKernelUnits::mm;
367 endCapMainRadiatorThicknessB = RDBVars_B_Wheel->getFloat("MAINRADIATORTHICK")*GeoModelKernelUnits::mm;
368 endCapMainRadiatorThicknessC = RDBVars_C_Wheel->getFloat("MAINRADIATORTHICK")*GeoModelKernelUnits::mm;
369
370 endCapThinRadiatorThicknessA = RDBVars_A_Wheel->getFloat("THINRADIATORTHICK")*GeoModelKernelUnits::mm;
371 endCapThinRadiatorThicknessB = RDBVars_B_Wheel->getFloat("THINRADIATORTHICK")*GeoModelKernelUnits::mm;
372 endCapThinRadiatorThicknessC = RDBVars_C_Wheel->getFloat("THINRADIATORTHICK")*GeoModelKernelUnits::mm;
373
374 endCapMiddleRadiatorThicknessB = RDBVars_B_Wheel->getFloat("MIDDLERADIATORTHICK")*GeoModelKernelUnits::mm;
375 if ( RDBVars_A_Wheel->getFloat("MIDDLERADIATORTHICK")*GeoModelKernelUnits::mm != 0 )
376 msg(MSG::WARNING) << "DD Database indicates a nonzero middle radiator thickness in the A wheel" << " where middle radiators doesn't exist. Ignoring parameter." << endmsg;
377 if ( RDBVars_C_Wheel->getFloat("MIDDLERADIATORTHICK")*GeoModelKernelUnits::mm != 0 )
378 msg(MSG::WARNING) << "DD Database indicates a nonzero middle radiator thickness in the C wheel" << " where middle radiators doesn't exist. Ignoring parameter." << endmsg;
379
380 endCapLengthOfWheelsA = RDBVars_A_Wheel->getFloat("LENGTHOFWHEELS")*GeoModelKernelUnits::mm;
381 endCapLengthOfWheelsB = RDBVars_B_Wheel->getFloat("LENGTHOFWHEELS")*GeoModelKernelUnits::mm;
382
383 endCapLengthOfWheelsC = RDBVars_C_Wheel->getFloat("LENGTHOFWHEELS")*GeoModelKernelUnits::mm;
384
385 endCapNumberOfStrawLayersPerWheelA = RDBVars_A_Wheel->getInt("NSTRAWLAYERSPERWHEEL");
386 endCapNumberOfStrawLayersPerWheelB = RDBVars_B_Wheel->getInt("NSTRAWLAYERSPERWHEEL");
387 endCapNumberOfStrawLayersPerWheelC = RDBVars_C_Wheel->getInt("NSTRAWLAYERSPERWHEEL");
388
389
390 endcapNumberOfAWheels = RDBVars_A_Wheel->getInt("NWHEELSOFTYPE");
391 endcapNumberOfBWheels = RDBVars_B_Wheel->getInt("NWHEELSOFTYPE");
392 endcapNumberOfCWheels = RDBVars_C_Wheel->getInt("NWHEELSOFTYPE");
393
394
395
396 endcapNumberOfStrawsInStrawLayer_AWheels = RDBVars_A_Wheel->getInt("NSTRAWSINSTRAWLAYER");
397 endcapNumberOfStrawsInStrawLayer_BWheels = RDBVars_B_Wheel->getInt("NSTRAWSINSTRAWLAYER");
398 endcapNumberOfStrawsInStrawLayer_CWheels = RDBVars_C_Wheel->getInt("NSTRAWSINSTRAWLAYER");
399
400 includeECFoilHeatExchangerAndMembranes = (RDB_ECHeatExchAndFoil->size()!=0);
401
403
404 const IRDBRecord* RDBECEndCapDepPars_EndCap_C = (*RDB_ECEndCapDepPars)[0];
405 const IRDBRecord* RDBECEndCapDepPars_EndCap_A = (*RDB_ECEndCapDepPars)[1];
406
407
408
409 endCapPositionOfFirstWheelA[0] = RDBECEndCapDepPars_EndCap_A->getDouble("ZPOSOFFIRSTAWHEEL")*GeoModelKernelUnits::mm;
410 endCapPositionOfFirstWheelA[1] = RDBECEndCapDepPars_EndCap_C->getDouble("ZPOSOFFIRSTAWHEEL")*GeoModelKernelUnits::mm;
411 endCapPositionOfFirstWheelB[0] = RDBECEndCapDepPars_EndCap_A->getDouble("ZPOSOFFIRSTBWHEEL")*GeoModelKernelUnits::mm;
412 endCapPositionOfFirstWheelB[1] = RDBECEndCapDepPars_EndCap_C->getDouble("ZPOSOFFIRSTBWHEEL")*GeoModelKernelUnits::mm;
413
414 for (unsigned int iiWheel = 0; iiWheel < endcapNumberOfAWheels; iiWheel++) {
415 const IRDBRecord* row = (*RDB_ECWheelDepPars)[iiWheel];
416 endCapDistanceBetweenWheelCentersA[0][iiWheel]=row->getDouble("DISTBETWWHEELCENTECC")*GeoModelKernelUnits::mm;
417 endCapDistanceBetweenWheelCentersA[1][iiWheel]=row->getDouble("DISTBETWWHEELCENTECA")*GeoModelKernelUnits::mm;
418 };
419 for (unsigned int iiWheel = endcapNumberOfAWheels; iiWheel < (endcapNumberOfAWheels+endcapNumberOfBWheels); iiWheel++) {
420 const IRDBRecord* row = (*RDB_ECWheelDepPars)[iiWheel];
421 endCapDistanceBetweenWheelCentersB[0][iiWheel]=row->getDouble("DISTBETWWHEELCENTECC")*GeoModelKernelUnits::mm;
422 endCapDistanceBetweenWheelCentersB[1][iiWheel]=row->getDouble("DISTBETWWHEELCENTECA")*GeoModelKernelUnits::mm;
423 };
424 } else {
425
426 endCapPositionOfFirstWheelA[0] = RDBVars_A_Wheel->getFloat("POSITIONOFFIRSTWHEEL")*GeoModelKernelUnits::mm;
427 endCapPositionOfFirstWheelA[1] = RDBVars_A_Wheel->getFloat("POSITIONOFFIRSTWHEEL")*GeoModelKernelUnits::mm;
428 endCapPositionOfFirstWheelB[0] = RDBVars_B_Wheel->getFloat("POSITIONOFFIRSTWHEEL")*GeoModelKernelUnits::mm;
429 endCapPositionOfFirstWheelB[1] = RDBVars_B_Wheel->getFloat("POSITIONOFFIRSTWHEEL")*GeoModelKernelUnits::mm;
434 for (unsigned int iiWheel = 1; iiWheel < endcapNumberOfAWheels; iiWheel++) {
435 endCapDistanceBetweenWheelCentersA[0][iiWheel]=RDBVars_A_Wheel->getFloat("DISTBETWWHEELCENTERS")*GeoModelKernelUnits::mm;
436 endCapDistanceBetweenWheelCentersA[1][iiWheel]=RDBVars_A_Wheel->getFloat("DISTBETWWHEELCENTERS")*GeoModelKernelUnits::mm;
437 };
438 for (unsigned int iiWheel = (endcapNumberOfAWheels+1); iiWheel < (endcapNumberOfAWheels+endcapNumberOfBWheels); iiWheel++) {
439 endCapDistanceBetweenWheelCentersB[0][iiWheel]=RDBVars_B_Wheel->getFloat("DISTBETWWHEELCENTERS")*GeoModelKernelUnits::mm;
440 endCapDistanceBetweenWheelCentersB[1][iiWheel]=RDBVars_B_Wheel->getFloat("DISTBETWWHEELCENTERS")*GeoModelKernelUnits::mm;
441 };
442 };
443
444 endCapDistanceBetweenWheelCentersC = RDBVars_C_Wheel->getFloat("DISTBETWWHEELCENTERS")*GeoModelKernelUnits::mm;
445 endCapPositionOfFirstWheelC = RDBVars_C_Wheel->getFloat("POSITIONOFFIRSTWHEEL")*GeoModelKernelUnits::mm;
446
447
451
452 for (unsigned int iiPlane = 0; iiPlane < endCapNumberOfStrawLayersPerWheelA; iiPlane++) {
453 const IRDBRecord* row = (*RDB_EndCapStrwLayZPos)[iiPlane];
454 endCapLayerZPositionA[iiPlane] = row->getFloat("LAYERZPOSAWHEELS")*GeoModelKernelUnits::mm;
455 };
456 for (unsigned int iiPlane = 0; iiPlane < endCapNumberOfStrawLayersPerWheelB; iiPlane++) {
457 const IRDBRecord* row = (*RDB_EndCapStrwLayZPos)[iiPlane];
458 endCapLayerZPositionB[iiPlane] = row->getFloat("LAYERZPOSBWHEELS")*GeoModelKernelUnits::mm;
459 };
460 for (unsigned int iiPlane = 0; iiPlane < endCapNumberOfStrawLayersPerWheelC; iiPlane++) {
461 const IRDBRecord* row = (*RDB_EndCapStrwLayZPos)[iiPlane];
462 endCapLayerZPositionC[iiPlane] = row->getFloat("LAYERZPOSCWHEELS")*GeoModelKernelUnits::mm;
463 };
464
465
466
468
469 const IRDBRecord* RDBVars_ECHeatExchAndFoil = (*RDB_ECHeatExchAndFoil)[0];
470
471 // Faraday foils kapton
472 endCapFaradayFoilThickness = RDBVars_ECHeatExchAndFoil->getDouble("ECFARADAYFOILTHICK")*GeoModelKernelUnits::mm;
473
474 // Heat Exchanger
475 endCapRMinOfHeatExchanger = RDBVars_ECHeatExchAndFoil->getDouble("ECHEATEXCHANGERRMIN")*GeoModelKernelUnits::mm;
476 endCapRMaxOfHeatExchanger = RDBVars_ECHeatExchAndFoil->getDouble("ECHEATEXCHANGERRMAX")*GeoModelKernelUnits::mm;
477 endCapHeatExchangerThicknessA = RDBVars_ECHeatExchAndFoil->getDouble("ECHEATEXCHTHICKNESSA")*GeoModelKernelUnits::mm;
478 endCapHeatExchangerThicknessB = RDBVars_ECHeatExchAndFoil->getDouble("ECHEATEXCHTHICKNESSB")*GeoModelKernelUnits::mm;
479
480 // Membranes
481 const IRDBRecord* RDBVars_ECMembranePars = (*RDB_ECMembranePars)[0];
482
483 endCapRMinOfMbrane = RDBVars_ECMembranePars->getDouble("RMINOFENDCAPMBRANE")*GeoModelKernelUnits::mm;
484 endCapRMaxOfMbrane = RDBVars_ECMembranePars->getDouble("RMAXOFENDCAPMBRANE")*GeoModelKernelUnits::mm;
485 endCapZMinOfMbraneWheelA1 = RDBVars_ECMembranePars->getDouble("ZMINPOSMBRANEWHEELA1")*GeoModelKernelUnits::mm;
486 endCapZMaxOfMbraneWheelA1 = RDBVars_ECMembranePars->getDouble("ZMAXPOSMBRANEWHEELA1")*GeoModelKernelUnits::mm;
487 endCapZMinOfMbraneWheelA2 = RDBVars_ECMembranePars->getDouble("ZMINPOSMBRANEWHEELA2")*GeoModelKernelUnits::mm;
488 endCapZMaxOfMbraneWheelA2 = RDBVars_ECMembranePars->getDouble("ZMAXPOSMBRANEWHEELA2")*GeoModelKernelUnits::mm;
489 endCapZMinOfMbraneWheelB1 = RDBVars_ECMembranePars->getDouble("ZMINPOSMBRANEWHEELB1")*GeoModelKernelUnits::mm;
490 endCapZMaxOfMbraneWheelB1 = RDBVars_ECMembranePars->getDouble("ZMAXPOSMBRANEWHEELB1")*GeoModelKernelUnits::mm;
491 endCapZMinOfMbraneWheelB2 = RDBVars_ECMembranePars->getDouble("ZMINPOSMBRANEWHEELB2")*GeoModelKernelUnits::mm;
492 endCapZMaxOfMbraneWheelB2 = RDBVars_ECMembranePars->getDouble("ZMAXPOSMBRANEWHEELB2")*GeoModelKernelUnits::mm;
493
495
496 }
497}
503
504const GeoTrf::Transform3D &
505TRT_DetDescrDB_ParameterInterface::partTransform(const std::string & partName) const
506{
507 if (m_placements) return m_placements->transform(partName);
508 static const GeoTrf::Transform3D unitTransform = GeoTrf::Transform3D::Identity();
509 return unitTransform;
510}
511
512
513bool
514TRT_DetDescrDB_ParameterInterface::partPresent(const std::string & partName) const
515{
516 if (!m_placements) return true;
517 return m_placements->present(partName);
518}
519
#define endmsg
Definition of the abstract IRDBAccessSvc interface.
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
Definition of the abstract IRDBRecord interface.
Definition of the abstract IRDBRecordset interface.
This is a helper class to query the version tags from GeoModelSvc and determine the appropriate tag a...
const std::string & tag() const
Return version tag.
const std::string & node() const
Return the version node.
IRDBAccessSvc is an abstract interface to the athena service that provides the following functionalit...
virtual std::string getChildTag(const std::string &childNode, const std::string &parentTag, const std::string &parentNode, const std::string &connName="ATLASDD")=0
Gets the tag name for the node by giving its parent node tag.
virtual IRDBRecordset_ptr getRecordsetPtr(const std::string &node, const std::string &tag, const std::string &tag2node="", const std::string &connName="ATLASDD")=0
Provides access to the Recordset object containing HVS-tagged data.
IRDBRecord is one record in the IRDBRecordset object.
Definition IRDBRecord.h:27
virtual const std::string & getString(const std::string &fieldName) const =0
Get string field value.
virtual bool isFieldNull(const std::string &fieldName) const =0
Check if the field value is NULL.
virtual int getInt(const std::string &fieldName) const =0
Get int field value.
virtual double getDouble(const std::string &fieldName) const =0
Get double field value.
virtual float getFloat(const std::string &fieldName) const =0
Get float field value.
virtual unsigned int size() const =0
Class to hold various Athena components.
unsigned int endcapNumberOfStrawsInStrawLayer_AWheels
double * strawYPosition[nBarrelRings]
unsigned int endCapNumberOfStrawLayersPerWheelB
unsigned int endcapNumberOfStrawsInStrawLayer_CWheels
unsigned int endcapNumberOfStrawsInStrawLayer_BWheels
unsigned int barrelNumberOfLayersWithLargeDeadRegion
unsigned int endCapNumberOfStrawLayersPerWheelA
unsigned int * barrelIndexOfSecondGlobalAlignmentStraw
double * barrelYOfCoolingTube[nBarrelRings]
double endCapDistanceBetweenWheelCentersA[2][6]
double endCapDistanceBetweenWheelCentersB[2][14]
double * strawXPosition[nBarrelRings]
double * shellCornerYPosition[nBarrelRings]
TRTParameterInterface()=default
unsigned int * barrelNumberOfStrawsInStrawLayer[nBarrelRings]
double * shellCornerXPosition[nBarrelRings]
unsigned int endCapNumberOfStrawLayersPerWheelC
static const unsigned int nBarrelRings
unsigned int * barrelNumberOfStrawsInModule
unsigned int * barrelNumberOfStrawLayersInModule
double * barrelXOfCoolingTube[nBarrelRings]
virtual const GeoTrf::Transform3D & partTransform(const std::string &partName) const override
virtual InDetDD::DistortedMaterialManager * distortedMatManager() override
virtual bool partPresent(const std::string &partName) const override
InDetDD::DistortedMaterialManager * m_distortedMatManager
MsgStream & msg
Definition testRead.cxx:32