ATLAS Offline Software
Loading...
Searching...
No Matches
ServicesTrackerBuilder Class Reference

#include <ServicesTrackerBuilder.h>

Collaboration diagram for ServicesTrackerBuilder:

Public Member Functions

ServicesTrackerbuildGeometry (const InDetServMatGeometryManager &geoMgr) const

Detailed Description

Definition at line 11 of file ServicesTrackerBuilder.h.

Member Function Documentation

◆ buildGeometry()

ServicesTracker * ServicesTrackerBuilder::buildGeometry ( const InDetServMatGeometryManager & geoMgr) const

Definition at line 14 of file ServicesTrackerBuilder.cxx.

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),
39 DetType::Pixel, i, geoMgr.pixelNumSectorsForLayer(i), suffix,
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,
52 geoMgr.pixelEndcapNumSectorsForLayer(i), suffix,
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;
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,
78 geoMgr.sctEndcapNumSectorsForLayer(i), suffix,
79 nModulesPerSector, nChipsPerModule);
80 }
81
82 tracker->setGeoMgr(&geoMgr);
83 return tracker;
84}
#define M_PI
#define endmsg
double pixelLadderModuleDeltaZ(int layer) const
int pixelChipsPerModule(int moduleType) const
double pixelLadderBentStaveAngle(int layer) const
void constructEndcapLayer(double zpos, double rmin, double rmax, DetType::Type type, int num, int nstaves, const std::string &suffix, int nModulesPerStave, int nChipsPerModule)
void setGeoMgr(const InDetServMatGeometryManager *mgr)
void constructBarrelLayer(double radius, double zHalfLength, DetType::Type type, int num, int nstaves, const std::string &suffix, int nModulesPerStave, int nChipsPerModule)
IMessageSvc * getMessageSvc(bool quiet=false)
@ ShortStrip
Definition DetType.h:13
@ LongStrip
Definition DetType.h:13
@ Pixel
Definition DetType.h:13
MsgStream & msg
Definition testRead.cxx:32

The documentation for this class was generated from the following files: