ATLAS Offline Software
ServicesTrackerBuilder.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 "ServicesTracker.h"
9 #include "GaudiKernel/MsgStream.h"
10 #include <string>
11 #include <iostream> // for DEBUG only
12 using namespace std;
13 
15 {
16  MsgStream msg(Athena::getMessageSvc(), "ServiceTrackerBuilder");
17 
18  msg << MSG::INFO << "Entering ServicesTrackerBuilder::buildGeometry" <<endmsg;
19 
20  ServicesTracker* tracker = new ServicesTracker;
21  msg << MSG::INFO << "Created new ServicesTracker()" << endmsg;
22 
23  std::string suffix;
24 
25  // Build pixel barrel layers
26  for (int i = 0; i < geoMgr.pixelNumLayers(); i++) {
27  int nChipsPerModule = geoMgr.pixelChipsPerModule( geoMgr.pixelBarrelModuleType(i));
28  if (i == 0) suffix = "L0";
29  else if (i == 1) suffix = "L1";
30  else suffix = "Outer";
31 
32  int modulesPerStave = geoMgr.pixelModulesPerStave(i)/2; // we need only half-stave modules for services
33 
34  double layerRadius = geoMgr.pixelLayerRadius(i);
35  // Correction is 0 if no bent stave modules defined
36  layerRadius -= double(geoMgr.pixelBentStaveNModule(i))*geoMgr.pixelLadderModuleDeltaZ(i)*sin(geoMgr.pixelLadderBentStaveAngle(i) * M_PI / 180.0);
37 
38  tracker->constructBarrelLayer( layerRadius, 0.5*geoMgr.pixelLayerLength(i),
40  modulesPerStave, nChipsPerModule);
41  }
42 
43  // Build endcap pixel layers
44 
45  for (int i = 0; i < geoMgr.pixelNumDisks(); i++) {
46  int nModulesPerSector = geoMgr.pixelModulesPerEndcapSector(i);
47  int nChipsPerModule = geoMgr.pixelChipsPerModuleForDisk(i);
48 
49  suffix = "Outer"; // endcap pixel disks use same services as outer barrel pixel
50  tracker->constructEndcapLayer( geoMgr.pixelDiskZ(i), geoMgr.pixelDiskRMin(i),
51  geoMgr.pixelDiskRMax(i), DetType::Pixel, i,
53  nModulesPerSector, nChipsPerModule);
54  }
55 
56  // Build sct barrel layers
57  suffix = ""; // strip layers have identical services (so far)
58  for (int i = 0; i < geoMgr.sctNumLayers(); i++) {
60  if ( geoMgr.sctLayerType(i) == 1) type = DetType::ShortStrip;
61  else type = DetType::LongStrip;
62 
63  int modulesPerStave = geoMgr.sctModulesPerLadder(i)/2; // we need only half-stave modules for services
64 
65  tracker->constructBarrelLayer( geoMgr.sctLayerRadius(i), 0.5*geoMgr.sctLayerLength(i),
66  type, i, geoMgr.sctNumSectorsForLayer(i), suffix,
67  modulesPerStave, 4);
68  }
69  // SCT endcap
70  for (int i = 0; i < geoMgr.sctNumDisks(); i++) {
71  DetType::Type type = DetType::ShortStrip; // FIXME: meaningless for a disk, but needed to satisfy interface
72 
73  int nModulesPerSector = 16; // FIXME: hard-wired number!
74  int nChipsPerModule = 1; // FIXME: hard-wired number!
75 
76  tracker->constructEndcapLayer( geoMgr.sctDiskZ(i), geoMgr.sctInnerSupport(),
77  geoMgr.sctDiskRMax(i), type, i,
79  nModulesPerSector, nChipsPerModule);
80  }
81 
82  tracker->setGeoMgr(&geoMgr);
83  return tracker;
84 }
ServicesTrackerBuilder.h
InDetServMatGeometryManager.h
InDetServMatGeometryManager::pixelLayerLength
double pixelLayerLength(int layer) const
Definition: InDetServMatGeometryManager.cxx:165
InDetServMatGeometryManager::pixelNumDisks
int pixelNumDisks() const
Definition: InDetServMatGeometryManager.cxx:259
hotSpotInTAG.suffix
string suffix
Definition: hotSpotInTAG.py:186
InDetServMatGeometryManager::sctNumSectorsForLayer
int sctNumSectorsForLayer(int layer) const
Definition: InDetServMatGeometryManager.cxx:371
InDetServMatGeometryManager::pixelLadderModuleDeltaZ
double pixelLadderModuleDeltaZ(int layer) const
Definition: InDetServMatGeometryManager.cxx:206
getMessageSvc.h
singleton-like access to IMessageSvc via open function and helper
ServicesTracker::constructBarrelLayer
void constructBarrelLayer(double radius, double zHalfLength, DetType::Type type, int num, int nstaves, const std::string &suffix, int nModulesPerStave, int nChipsPerModule)
Definition: ServicesTracker.cxx:37
InDetServMatGeometryManager::pixelLadderBentStaveAngle
double pixelLadderBentStaveAngle(int layer) const
Definition: InDetServMatGeometryManager.cxx:192
InDetServMatGeometryManager::pixelNumLayers
int pixelNumLayers() const
Definition: InDetServMatGeometryManager.cxx:153
ServicesTrackerBuilder::buildGeometry
ServicesTracker * buildGeometry(const InDetServMatGeometryManager &geoMgr) const
Definition: ServicesTrackerBuilder.cxx:14
M_PI
#define M_PI
Definition: ActiveFraction.h:11
InDetServMatGeometryManager::sctModulesPerLadder
int sctModulesPerLadder(int layer) const
Definition: InDetServMatGeometryManager.cxx:376
InDetServMatGeometryManager::sctLayerRadius
double sctLayerRadius(int layer) const
Definition: InDetServMatGeometryManager.cxx:352
InDetServMatGeometryManager::pixelChipsPerModule
int pixelChipsPerModule(int moduleType) const
Definition: InDetServMatGeometryManager.cxx:336
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
InDetServMatGeometryManager::pixelModulesPerEndcapSector
int pixelModulesPerEndcapSector(int disk) const
Definition: InDetServMatGeometryManager.cxx:224
InDetServMatGeometryManager::pixelBarrelModuleType
int pixelBarrelModuleType(int layer) const
Definition: InDetServMatGeometryManager.cxx:316
InDetServMatGeometryManager::sctNumLayers
int sctNumLayers() const
Definition: InDetServMatGeometryManager.cxx:346
ServicesTracker.h
InDetServMatGeometryManager::sctLayerType
int sctLayerType(int layer) const
Definition: InDetServMatGeometryManager.cxx:364
DetType::ShortStrip
@ ShortStrip
Definition: DetType.h:13
InDetServMatGeometryManager::sctDiskZ
double sctDiskZ(int disk) const
Definition: InDetServMatGeometryManager.cxx:396
DetType::Pixel
@ Pixel
Definition: DetType.h:13
lumiFormat.i
int i
Definition: lumiFormat.py:92
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
InDetServMatGeometryManager::sctLayerLength
double sctLayerLength(int layer) const
Definition: InDetServMatGeometryManager.cxx:358
InDetServMatGeometryManager::sctInnerSupport
double sctInnerSupport() const
Definition: InDetServMatGeometryManager.cxx:407
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
InDetServMatGeometryManager::pixelDiskRMin
double pixelDiskRMin(int disk) const
Definition: InDetServMatGeometryManager.cxx:271
ServicesTracker::constructEndcapLayer
void constructEndcapLayer(double zpos, double rmin, double rmax, DetType::Type type, int num, int nstaves, const std::string &suffix, int nModulesPerStave, int nChipsPerModule)
Definition: ServicesTracker.cxx:51
InDetServMatGeometryManager::sctNumDisks
int sctNumDisks() const
Definition: InDetServMatGeometryManager.cxx:390
DetType::Type
Type
Definition: DetType.h:13
ServicesTracker::setGeoMgr
void setGeoMgr(const InDetServMatGeometryManager *mgr)
Definition: ServicesTracker.h:56
InDetServMatGeometryManager::pixelDiskRMax
double pixelDiskRMax(int disk) const
Definition: InDetServMatGeometryManager.cxx:283
InDetServMatGeometryManager::pixelEndcapNumSectorsForLayer
int pixelEndcapNumSectorsForLayer(int layer) const
Definition: InDetServMatGeometryManager.cxx:214
ServicesTracker
Definition: ServicesTracker.h:19
InDetServMatGeometryManager::sctDiskRMax
double sctDiskRMax(int disk) const
Definition: InDetServMatGeometryManager.cxx:402
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
InDetServMatGeometryManager::pixelNumSectorsForLayer
int pixelNumSectorsForLayer(int layer) const
Definition: InDetServMatGeometryManager.cxx:172
InDetServMatGeometryManager
Definition: InDetServMatGeometryManager.h:17
DetType::LongStrip
@ LongStrip
Definition: DetType.h:13
InDetServMatGeometryManager::pixelLayerRadius
double pixelLayerRadius(int layer) const
Definition: InDetServMatGeometryManager.cxx:159
InDetServMatGeometryManager::pixelDiskZ
double pixelDiskZ(int disk) const
Definition: InDetServMatGeometryManager.cxx:265
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
InDetServMatGeometryManager::pixelModulesPerStave
int pixelModulesPerStave(int layer) const
Definition: InDetServMatGeometryManager.cxx:178
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
InDetServMatGeometryManager::pixelChipsPerModuleForDisk
int pixelChipsPerModuleForDisk(int disk) const
Definition: InDetServMatGeometryManager.cxx:239
InDetServMatGeometryManager::pixelBentStaveNModule
int pixelBentStaveNModule(int layer) const
Definition: InDetServMatGeometryManager.cxx:199
InDetServMatGeometryManager::sctEndcapNumSectorsForLayer
int sctEndcapNumSectorsForLayer(int layer) const
Definition: InDetServMatGeometryManager.cxx:383