Skip to content

Commit a761818

Browse files
committed
Added createModule function and adopted in createStave
1 parent fa6ab07 commit a761818

File tree

2 files changed

+45
-20
lines changed

2 files changed

+45
-20
lines changed

Detectors/Upgrades/ALICE3/TRK/base/src/GeometryTGeo.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ std::string GeometryTGeo::sPetalName = "PETALCASE";
2828
std::string GeometryTGeo::sPetalDiskName = "DISK";
2929
std::string GeometryTGeo::sPetalLayerName = "LAYER";
3030
std::string GeometryTGeo::sStaveName = "TRKStave";
31-
std::string GeometryTGeo::sChipName = "TRKChip";
3231
std::string GeometryTGeo::sModuleName = "TRKModule";
32+
std::string GeometryTGeo::sChipName = "TRKChip";
3333
std::string GeometryTGeo::sSensorName = "TRKSensor";
3434

3535
std::string GeometryTGeo::sWrapperVolumeName = "TRKUWrapVol"; ///< Wrapper volume name, not implemented at the moment

Detectors/Upgrades/ALICE3/TRK/simulation/src/TRKLayer.cxx

Lines changed: 44 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ TRKLayer::TRKLayer(int layerNumber, std::string layerName, float rInn, float zLe
4444
TGeoVolume* TRKLayer::createSensor(std::string type, double width)
4545
{
4646
TGeoMedium* medSi = gGeoManager->GetMedium("TRK_SILICON$");
47-
std::string sensName = Form("%s%d", GeometryTGeo::getTRKSensorPattern(), this->mLayerNumber);
47+
std::string sensName = GeometryTGeo::getTRKSensorPattern() + std::to_string(mLayerNumber);
4848

4949
TGeoShape* sensor;
5050

@@ -68,7 +68,7 @@ TGeoVolume* TRKLayer::createSensor(std::string type, double width)
6868
TGeoVolume* TRKLayer::createChip(std::string type, double width)
6969
{
7070
TGeoMedium* medSi = gGeoManager->GetMedium("TRK_SILICON$");
71-
std::string chipName = o2::trk::GeometryTGeo::getTRKChipPattern() + std::to_string(mLayerNumber);
71+
std::string chipName = GeometryTGeo::getTRKChipPattern() + std::to_string(mLayerNumber);
7272

7373
TGeoShape* chip;
7474
TGeoVolume* sensVol;
@@ -96,48 +96,73 @@ TGeoVolume* TRKLayer::createChip(std::string type, double width)
9696

9797
TGeoVolume* TRKLayer::createModule(std::string type, double width)
9898
{
99+
TGeoMedium* medAir = gGeoManager->GetMedium("TRK_AIR$");
100+
std::string moduleName = GeometryTGeo::getTRKModulePattern() + std::to_string(mLayerNumber);
101+
102+
TGeoShape* module;
103+
TGeoVolume* chipVol;
104+
105+
if (type == "cylinder") {
106+
module = new TGeoTube(mInnerRadius, mInnerRadius + mChipThickness, mZ / 2);
107+
chipVol = createChip("cylinder");
108+
} else if (type == "flat") {
109+
if (width < 0) {
110+
LOGP(fatal, "Attempting to create module with invalid width");
111+
}
112+
module = new TGeoBBox(width / 2, mChipThickness / 2, mZ / 2);
113+
chipVol = createChip("flat", width);
114+
} else {
115+
LOGP(fatal, "Chip of type '{}' is not implemented", type);
116+
}
117+
118+
TGeoVolume* moduleVol = new TGeoVolume(moduleName.c_str(), module, medAir);
119+
LOGP(info, "Inserting {} in {} ", chipVol->GetName(), moduleVol->GetName());
120+
moduleVol->AddNode(chipVol, 1, nullptr);
121+
moduleVol->SetLineColor(kYellow);
122+
123+
return moduleVol;
99124
}
100125

101126
TGeoVolume* TRKLayer::createStave(std::string type, double width)
102127
{
103128
TGeoMedium* medAir = gGeoManager->GetMedium("TRK_AIR$");
104-
std::string staveName = o2::trk::GeometryTGeo::getTRKStavePattern() + std::to_string(mLayerNumber);
129+
std::string staveName = GeometryTGeo::getTRKStavePattern() + std::to_string(mLayerNumber);
105130

106131
TGeoShape* stave;
107132
TGeoVolume* staveVol;
108-
TGeoVolume* chipVol;
133+
TGeoVolume* moduleVol;
109134

110135
if (type == "cylinder") {
111136
stave = new TGeoTube(mInnerRadius, mInnerRadius + mChipThickness, mZ / 2);
112-
chipVol = createChip("cylinder");
137+
moduleVol = createModule("cylinder");
113138
staveVol = new TGeoVolume(staveName.c_str(), stave, medAir);
114-
LOGP(info, "Inserting {} in {} ", chipVol->GetName(), staveVol->GetName());
115-
staveVol->AddNode(chipVol, 1, nullptr);
139+
LOGP(info, "Inserting {} in {} ", moduleVol->GetName(), staveVol->GetName());
140+
staveVol->AddNode(moduleVol, 1, nullptr);
116141
} else if (type == "flat") {
117142
if (width < 0) {
118143
LOGP(fatal, "Attempting to create stave with invalid width");
119144
}
120145
stave = new TGeoBBox(width / 2, mChipThickness / 2, mZ / 2);
121-
chipVol = createChip("flat", width);
146+
moduleVol = createModule("flat", width);
122147
staveVol = new TGeoVolume(staveName.c_str(), stave, medAir);
123-
LOGP(info, "Inserting {} in {} ", chipVol->GetName(), staveVol->GetName());
124-
staveVol->AddNode(chipVol, 1, nullptr);
148+
LOGP(info, "Inserting {} in {} ", moduleVol->GetName(), staveVol->GetName());
149+
staveVol->AddNode(moduleVol, 1, nullptr);
125150
} else if (type == "staggered") {
126151
double width = mModuleWidth * 2; // Each stave has two modules (based on the LOI design)
127152
stave = new TGeoBBox(width / 2, mLogicalVolumeThickness / 2, mZ / 2);
128-
TGeoVolume* chipVolLeft = createChip("flat", mModuleWidth);
129-
TGeoVolume* chipVolRight = createChip("flat", mModuleWidth);
153+
TGeoVolume* moduleVolLeft = createModule("flat", mModuleWidth);
154+
TGeoVolume* moduleVolRight = createModule("flat", mModuleWidth);
130155
staveVol = new TGeoVolume(staveName.c_str(), stave, medAir);
131156

132157
TGeoCombiTrans* transLeft = new TGeoCombiTrans();
133158
transLeft->SetTranslation(-mModuleWidth / 2 + 0.05, 0, 0); // 1mm overlap between the modules
134-
LOGP(info, "Inserting {} in {} ", chipVolLeft->GetName(), staveVol->GetName());
135-
staveVol->AddNode(chipVolLeft, 0, transLeft);
159+
LOGP(info, "Inserting {} in {} ", moduleVolLeft->GetName(), staveVol->GetName());
160+
staveVol->AddNode(moduleVolLeft, 0, transLeft);
136161

137162
TGeoCombiTrans* transRight = new TGeoCombiTrans();
138163
transRight->SetTranslation(mModuleWidth / 2 - 0.05, 0.2, 0);
139-
LOGP(info, "Inserting {} in {} ", chipVolRight->GetName(), staveVol->GetName());
140-
staveVol->AddNode(chipVolRight, 1, transRight);
164+
LOGP(info, "Inserting {} in {} ", moduleVolRight->GetName(), staveVol->GetName());
165+
staveVol->AddNode(moduleVolRight, 1, transRight);
141166
} else {
142167
LOGP(fatal, "Chip of type '{}' is not implemented", type);
143168
}
@@ -152,9 +177,9 @@ void TRKLayer::createLayer(TGeoVolume* motherVolume)
152177
TGeoMedium* medSi = gGeoManager->GetMedium("TRK_SILICON$");
153178
TGeoMedium* medAir = gGeoManager->GetMedium("TRK_AIR$");
154179

155-
std::string staveName = o2::trk::GeometryTGeo::getTRKStavePattern() + std::to_string(mLayerNumber),
156-
chipName = o2::trk::GeometryTGeo::getTRKChipPattern() + std::to_string(mLayerNumber),
157-
sensName = Form("%s%d", GeometryTGeo::getTRKSensorPattern(), mLayerNumber);
180+
std::string staveName = GeometryTGeo::getTRKStavePattern() + std::to_string(mLayerNumber),
181+
chipName = GeometryTGeo::getTRKChipPattern() + std::to_string(mLayerNumber),
182+
sensName = GeometryTGeo::getTRKSensorPattern() + std::to_string(mLayerNumber);
158183

159184
double layerThickness = mChipThickness;
160185
if (mLayout != eLayout::kCylinder) {

0 commit comments

Comments
 (0)