Skip to content

Commit ce15dd2

Browse files
committed
ALICE3-TRK: indexing scheme now working independently from the chosen geometry layout
1 parent 1160d89 commit ce15dd2

File tree

3 files changed

+23
-15
lines changed

3 files changed

+23
-15
lines changed

Detectors/Upgrades/ALICE3/TRK/base/include/TRKBase/GeometryTGeo.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ class GeometryTGeo : public o2::detectors::DetMatrixCache
6666
int extractVolumeCopy(const char* name, const char* prefix) const;
6767

6868
int getNumberOfLayersMLOT() const { return mNumberOfLayersMLOT; }
69-
int getNumberOffActivePartsVD() const { return mNumberOfActivePartsVD; }
69+
int getNumberOfActivePartsVD() const { return mNumberOfActivePartsVD; }
70+
std::vector<int> getNumberOfHalfStaves() const { return mNumberOfHalfStaves; }
7071

7172
bool isOwner() const { return mOwner; }
7273
void setOwner(bool v) { mOwner = v; }

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

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ GeometryTGeo::GeometryTGeo(bool build, int loadTrans) : DetMatrixCache(detectors
5454
void GeometryTGeo::Build(int loadTrans)
5555
{
5656
///// current geometry organization:
57-
///// total elements = 258 = x staves * 8 layers ML+OT + 4 petal cases * (3 layers + 6 disks)
57+
///// total elements = x staves (*2 half staves if staggered geometry) * 8 layers ML+OT + 4 petal cases * (3 layers + 6 disks)
5858
///// indexing from 0 to 35: VD petals -> layers -> disks
59-
///// indexing from 36 to 257: MLOT staves
59+
///// indexing from 36 to y: MLOT staves
6060

6161
if (isBuilt()) {
6262
LOGP(warning, "Already built");
@@ -107,7 +107,6 @@ void GeometryTGeo::Build(int loadTrans)
107107
mLastChipIndexMLOT[i] = numberOfChipsTotal - 1;
108108
}
109109

110-
// setSize(mNumberOfLayersMLOT + mNumberOfActivePartsVD); /// temporary, number of chips = number of layers and active parts
111110
setSize(numberOfChipsTotal); /// temporary, number of chips = number of staves and active parts
112111
fillMatrixCache(loadTrans);
113112
}
@@ -221,8 +220,12 @@ int GeometryTGeo::getChipIndex(int subDetID, int petalcase, int disk, int lay, i
221220
} else { // layer
222221
return getFirstChipIndex(lay, petalcase, subDetID) + lay;
223222
}
224-
} else if (subDetID == 1) { // MLOT
225-
return getFirstChipIndex(lay, petalcase, subDetID) + stave * mNumberOfHalfStaves[lay] + halfstave;
223+
} else if (subDetID == 1) { // MLOT
224+
if (mNumberOfHalfStaves[lay] == 2) { // staggered geometry
225+
return getFirstChipIndex(lay, petalcase, subDetID) + stave * mNumberOfHalfStaves[lay] + halfstave;
226+
} else if (mNumberOfHalfStaves[lay] == 1) { // turbo geometry
227+
return getFirstChipIndex(lay, petalcase, subDetID) + stave;
228+
}
226229
}
227230
return -1; // not found
228231
}
@@ -233,8 +236,12 @@ int GeometryTGeo::getChipIndex(int subDetID, int volume, int lay, int stave, int
233236
if (subDetID == 0) { // VD
234237
return volume; /// In the current configuration for VD, each volume is the sensor element = chip. // TODO: when the geometry naming scheme will be changed, change this method
235238

236-
} else if (subDetID == 1) { // MLOT
237-
return getFirstChipIndex(lay, -1, subDetID) + stave * mNumberOfHalfStaves[lay] + halfstave;
239+
} else if (subDetID == 1) { // MLOT
240+
if (mNumberOfHalfStaves[lay] == 2) { // staggered geometry
241+
return getFirstChipIndex(lay, -1, subDetID) + stave * mNumberOfHalfStaves[lay] + halfstave;
242+
} else if (mNumberOfHalfStaves[lay] == 1) { // turbo geometry
243+
return getFirstChipIndex(lay, -1, subDetID) + stave;
244+
}
238245
}
239246
return -1; // not found
240247
}
@@ -256,7 +263,6 @@ bool GeometryTGeo::getChipID(int index, int& subDetID, int& petalcase, int& disk
256263
TString GeometryTGeo::getMatrixPath(int index) const
257264
{
258265

259-
// int lay, hba, stav, sstav, mod, chipInMod;
260266
int subDetID, petalcase, disk, lay, stave, halfstave; //// TODO: add chips in a second step
261267
getChipID(index, subDetID, petalcase, disk, lay, stave, halfstave);
262268

@@ -701,8 +707,8 @@ void GeometryTGeo::Print(Option_t*) const
701707
LOGF(info, "Number of staves and half staves per layer MLOT: ");
702708
for (int i = 0; i < mNumberOfLayersMLOT; i++) {
703709
std::string mlot = "";
704-
mlot = (i < 5) ? "ML" : "OT";
705-
LOGF(info, "Layer: %d, %s, %d staves, %d half staves", i, mlot.c_str(), mNumberOfStaves[i], mNumberOfStaves[i] * mNumberOfHalfStaves[i]);
710+
mlot = (i < 4) ? "ML" : "OT";
711+
LOGF(info, "Layer: %d, %s, %d staves, %d half staves per stave", i, mlot.c_str(), mNumberOfStaves[i], mNumberOfHalfStaves[i]);
706712
}
707713
LOGF(info, "Total number of chips: %d", getNumberOfChips());
708714

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -445,8 +445,7 @@ bool Detector::ProcessHits(FairVolume* vol)
445445
TLorentzVector positionStop;
446446
fMC->TrackPosition(positionStop);
447447
// Retrieve the indices with the volume path
448-
// int subDetID, int petalcase, int disk, int lay, int stave
449-
int petal(0), ll(0), stave(0), halfstave(0);
448+
int stave(0), halfstave(0);
450449
if (subDetID == 1) {
451450
fMC->CurrentVolOffID(1, halfstave);
452451
fMC->CurrentVolOffID(2, stave);
@@ -482,11 +481,13 @@ void Detector::Print(FairVolume* vol, int volume, int subDetID, int layer, int s
482481
int currentVol(0);
483482
LOG(INFO) << "Current volume name: " << fMC->CurrentVolName() << " and ID " << fMC->CurrentVolID(currentVol);
484483
LOG(INFO) << "volume: " << volume << "/" << mNumberOfVolumes - 1;
485-
if (subDetID == 1) {
484+
if (subDetID == 1 and mGeometryTGeo->getNumberOfHalfStaves()[layer] == 2) { // staggered geometry
486485
LOG(INFO) << "off volume name 1 " << fMC->CurrentVolOffName(1) << " halfstave: " << halfstave;
487486
LOG(INFO) << "off volume name 2 " << fMC->CurrentVolOffName(2) << " stave: " << stave;
488487
LOG(INFO) << "SubDetector ID: " << subDetID << " Layer: " << layer << " staveinLayer: " << stave << " Chip ID: " << chipID;
489-
488+
} else if (subDetID == 1 and mGeometryTGeo->getNumberOfHalfStaves()[layer] == 1) { // turbo geometry
489+
LOG(INFO) << "off volume name 2 " << fMC->CurrentVolOffName(2) << " stave: " << stave;
490+
LOG(INFO) << "SubDetector ID: " << subDetID << " Layer: " << layer << " staveinLayer: " << stave << " Chip ID: " << chipID;
490491
} else {
491492
LOG(INFO) << "SubDetector ID: " << subDetID << " Chip ID: " << chipID;
492493
}

0 commit comments

Comments
 (0)