Skip to content

Commit a346105

Browse files
authored
[ALICE 3] Fix cylindrical MLOT layout (#15168)
* Fix cylindrical version * Fix print * Remove commented lines
1 parent b7a497b commit a346105

File tree

2 files changed

+59
-41
lines changed

2 files changed

+59
-41
lines changed

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

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,17 @@ void GeometryTGeo::Build(int loadTrans)
101101
mLastChipIndexMLOT.resize(mNumberOfLayersMLOT); /// ML and OT are part of TRK as the same detector, without disks
102102

103103
for (int i = 0; i < mNumberOfLayersMLOT; i++) {
104-
mNumberOfStaves[i] = extractNumberOfStavesMLOT(i);
105-
mNumberOfHalfStaves[i] = extractNumberOfHalfStavesMLOT(i);
106-
mNumberOfModules[i] = extractNumberOfModulesMLOT(i);
107-
mNumberOfChips[i] = extractNumberOfChipsMLOT(i);
104+
if (mLayoutMLOT == eMLOTLayout::kCylindrical) {
105+
mNumberOfStaves[i] = 1;
106+
mNumberOfHalfStaves[i] = 1;
107+
mNumberOfModules[i] = 1;
108+
mNumberOfChips[i] = 1;
109+
} else {
110+
mNumberOfStaves[i] = extractNumberOfStavesMLOT(i);
111+
mNumberOfHalfStaves[i] = extractNumberOfHalfStavesMLOT(i);
112+
mNumberOfModules[i] = extractNumberOfModulesMLOT(i);
113+
mNumberOfChips[i] = extractNumberOfChipsMLOT(i);
114+
}
108115
}
109116

110117
int numberOfChipsTotal = 0;
@@ -398,19 +405,8 @@ TString GeometryTGeo::getMatrixPath(int index) const
398405

399406
// PrintChipID(index, subDetID, petalcase, disk, layer, stave, halfstave, mod, chip);
400407

401-
// TString path = "/cave_1/barrel_1/TRKV_2/TRKLayer0_1/TRKStave0_1/TRKChip0_1/TRKSensor0_1/"; /// dummy path, to be used for tests
402408
TString path = Form("/cave_1/barrel_1/%s_2/", GeometryTGeo::getTRKVolPattern());
403409

404-
// handling cylindrical configuration for ML and/or OT
405-
// needed because of the different numbering scheme in the geometry for the cylindrical case wrt the staggered and turbo ones
406-
if (subDetID == 1) {
407-
if ((layer < 4 && mLayoutMLOT == eMLOTLayout::kCylindrical) || (layer > 3 && mLayoutMLOT == eMLOTLayout::kCylindrical)) {
408-
stave = 1;
409-
mod = 1;
410-
chip = 1;
411-
}
412-
}
413-
414410
// build the path
415411
if (subDetID == 0) { // VD
416412
if (disk >= 0) {
@@ -425,15 +421,19 @@ TString GeometryTGeo::getMatrixPath(int index) const
425421
path += Form("%s%d_%s%d_%s%d_1/", getTRKPetalPattern(), petalcase, getTRKPetalLayerPattern(), layer, getTRKChipPattern(), layer); // PETALCASEx_LAYERy_TRKChipy_1
426422
path += Form("%s%d_%s%d_%s%d_1/", getTRKPetalPattern(), petalcase, getTRKPetalLayerPattern(), layer, getTRKSensorPattern(), layer); // PETALCASEx_LAYERy_TRKSensory_1
427423
}
428-
} else if (subDetID == 1) { // MLOT
429-
path += Form("%s%d_1/", getTRKLayerPattern(), layer); // TRKLayerx_1
430-
path += Form("%s%d_%d/", getTRKStavePattern(), layer, stave); // TRKStavex_y
431-
if (mNumberOfHalfStaves[layer] == 2) { // staggered geometry
432-
path += Form("%s%d_%d/", getTRKHalfStavePattern(), layer, halfstave); // TRKHalfStavex_y
424+
} else if (subDetID == 1) { // MLOT
425+
path += Form("%s%d_1/", getTRKLayerPattern(), layer); // TRKLayerx_1
426+
if (mLayoutMLOT == eMLOTLayout::kCylindrical) {
427+
path += Form("%s%d_1/", getTRKSensorPattern(), layer); // TRKSensorx_1
428+
} else {
429+
path += Form("%s%d_%d/", getTRKStavePattern(), layer, stave); // TRKStavex_y
430+
if (mNumberOfHalfStaves[layer] == 2) { // staggered geometry
431+
path += Form("%s%d_%d/", getTRKHalfStavePattern(), layer, halfstave); // TRKHalfStavex_y
432+
}
433+
path += Form("%s%d_%d/", getTRKModulePattern(), layer, mod); // TRKModulx_y
434+
path += Form("%s%d_%d/", getTRKChipPattern(), layer, chip); // TRKChipx_y
435+
path += Form("%s%d_1/", getTRKSensorPattern(), layer); // TRKSensorx_1
433436
}
434-
path += Form("%s%d_%d/", getTRKModulePattern(), layer, mod); // TRKModulx_y
435-
path += Form("%s%d_%d/", getTRKChipPattern(), layer, chip); // TRKChipx_y
436-
path += Form("%s%d_1/", getTRKSensorPattern(), layer); // TRKSensorx_1
437437
}
438438
return path;
439439
}

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

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -475,18 +475,24 @@ bool Detector::ProcessHits(FairVolume* vol)
475475
if (stopHit) {
476476
TLorentzVector positionStop;
477477
fMC->TrackPosition(positionStop);
478+
478479
// Retrieve the indices with the volume path
479480
int stave(0), halfstave(0), mod(0), chip(0);
481+
482+
auto& trkPars = TRKBaseParam::Instance();
483+
480484
if (subDetID == 1) {
481-
fMC->CurrentVolOffID(1, chip);
482-
fMC->CurrentVolOffID(2, mod);
483-
if (mGeometryTGeo->getNumberOfHalfStaves(layer) == 2) {
484-
fMC->CurrentVolOffID(3, halfstave);
485-
fMC->CurrentVolOffID(4, stave);
486-
} else if (mGeometryTGeo->getNumberOfHalfStaves(layer) == 1) {
487-
fMC->CurrentVolOffID(3, stave);
488-
} else {
489-
LOGP(fatal, "Wrong number of halfstaves for layer {}", layer);
485+
if (trkPars.layoutMLOT == o2::trk::eMLOTLayout::kSegmented) {
486+
fMC->CurrentVolOffID(1, chip);
487+
fMC->CurrentVolOffID(2, mod);
488+
if (mGeometryTGeo->getNumberOfHalfStaves(layer) == 2) {
489+
fMC->CurrentVolOffID(3, halfstave);
490+
fMC->CurrentVolOffID(4, stave);
491+
} else if (mGeometryTGeo->getNumberOfHalfStaves(layer) == 1) {
492+
fMC->CurrentVolOffID(3, stave);
493+
} else {
494+
LOGP(fatal, "Wrong number of halfstaves for layer {}", layer);
495+
}
490496
}
491497
} /// if VD, for the moment the volume is the "chipID" so no need to retrieve other elments
492498

@@ -522,18 +528,30 @@ void Detector::Print(FairVolume* vol, int volume, int subDetID, int layer, int s
522528
int currentVol(0);
523529
LOG(info) << "Current volume name: " << fMC->CurrentVolName() << " and ID " << fMC->CurrentVolID(currentVol);
524530
LOG(info) << "volume: " << volume << "/" << mNumberOfVolumes - 1;
525-
LOG(info) << "off volume name 1 " << fMC->CurrentVolOffName(1) << " chip: " << chip;
526-
LOG(info) << "off volume name 2 " << fMC->CurrentVolOffName(2) << " module: " << mod;
527-
if (subDetID == 1 && mGeometryTGeo->getNumberOfHalfStaves(layer) == 2) { // staggered geometry
528-
LOG(info) << "off volume name 3 " << fMC->CurrentVolOffName(3) << " halfstave: " << halfstave;
529-
LOG(info) << "off volume name 4 " << fMC->CurrentVolOffName(4) << " stave: " << stave;
530-
LOG(info) << "SubDetector ID: " << subDetID << " Layer: " << layer << " staveinLayer: " << stave << " Chip ID: " << chipID;
531-
} else if (subDetID == 1 && mGeometryTGeo->getNumberOfHalfStaves(layer) == 1) { // turbo geometry
532-
LOG(info) << "off volume name 3 " << fMC->CurrentVolOffName(3) << " stave: " << stave;
533-
LOG(info) << "SubDetector ID: " << subDetID << " Layer: " << layer << " staveinLayer: " << stave << " Chip ID: " << chipID;
531+
532+
auto& trkPars = TRKBaseParam::Instance();
533+
534+
if (subDetID == 1) { // MLOT
535+
if (trkPars.layoutMLOT == o2::trk::eMLOTLayout::kCylindrical) {
536+
LOG(info) << "off volume name 1 " << fMC->CurrentVolOffName(1) << " chip: " << chip;
537+
LOG(info) << "SubDetector ID: " << subDetID << " Layer: " << layer << " Chip ID: " << chipID;
538+
} else {
539+
LOG(info) << "off volume name 1 " << fMC->CurrentVolOffName(1) << " chip: " << chip;
540+
LOG(info) << "off volume name 2 " << fMC->CurrentVolOffName(2) << " module: " << mod;
541+
if (mGeometryTGeo->getNumberOfHalfStaves(layer) == 2) { // staggered geometry
542+
LOG(info) << "off volume name 3 " << fMC->CurrentVolOffName(3) << " halfstave: " << halfstave;
543+
LOG(info) << "off volume name 4 " << fMC->CurrentVolOffName(4) << " stave: " << stave;
544+
LOG(info) << "SubDetector ID: " << subDetID << " Layer: " << layer << " staveinLayer: " << stave << " Chip ID: " << chipID;
545+
} else if (mGeometryTGeo->getNumberOfHalfStaves(layer) == 1) { // turbo geometry
546+
LOG(info) << "off volume name 3 " << fMC->CurrentVolOffName(3) << " stave: " << stave;
547+
LOG(info) << "SubDetector ID: " << subDetID << " Layer: " << layer << " staveinLayer: " << stave << " Chip ID: " << chipID;
548+
}
549+
}
534550
} else {
551+
// VD
535552
LOG(info) << "SubDetector ID: " << subDetID << " Chip ID: " << chipID;
536553
}
554+
537555
LOG(info);
538556
}
539557

0 commit comments

Comments
 (0)