Skip to content

Commit 1ea137b

Browse files
committed
fix channel ids
1 parent c070c3f commit 1ea137b

2 files changed

Lines changed: 34 additions & 7 deletions

File tree

Detectors/Upgrades/ALICE3/FVD/simulation/include/FVDSimulation/Detector.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,8 @@ class Detector : public o2::base::DetImpl<Detector>
111111

112112
void defineSensitiveVolumes();
113113

114+
int getChannelId(TVector3 vec);
115+
114116
/// Transient data about track passing the sensor, needed by ProcessHits()
115117
struct TrackData { // this is transient
116118
bool mHitStarted; //! hit creation started

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

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,11 @@ bool Detector::ProcessHits(FairVolume* vol)
167167
if (stopHit) {
168168
TLorentzVector positionStop;
169169
fMC->TrackPosition(positionStop);
170-
Int_t trackId = fMC->GetStack()->GetCurrentTrackNumber();
170+
int trackId = fMC->GetStack()->GetCurrentTrackNumber();
171171

172-
Hit *p = addHit(trackId, cellId, mTrackData.mPositionStart.Vect(), positionStop.Vect(),
172+
int chId = getChannelId(mTrackData.mPositionStart.Vect());
173+
174+
Hit *p = addHit(trackId, chId /*cellId*/, mTrackData.mPositionStart.Vect(), positionStop.Vect(),
173175
mTrackData.mMomentumStart.Vect(), mTrackData.mMomentumStart.E(),
174176
positionStop.T(), mTrackData.mEnergyLoss, mTrackData.mTrkStatusStart,
175177
status);
@@ -199,7 +201,6 @@ void Detector::ConstructGeometry()
199201
{
200202
createMaterials();
201203
buildModules();
202-
//defineSensitiveVolumes();
203204
}
204205

205206
void Detector::EndOfEvent()
@@ -271,8 +272,8 @@ void Detector::buildModules()
271272
TGeoVolumeAssembly* vFVDA = buildModuleA();
272273
TGeoVolumeAssembly* vFVDC = buildModuleC();
273274

274-
vCave->AddNode(vFVDA, 1, new TGeoTranslation(0., 0., mZmodA));
275-
vCave->AddNode(vFVDC, 1, new TGeoTranslation(0., 0., mZmodC));
275+
vCave->AddNode(vFVDA, 2, new TGeoTranslation(0., 0., mZmodA));
276+
vCave->AddNode(vFVDC, 2, new TGeoTranslation(0., 0., mZmodC));
276277
}
277278

278279
TGeoVolumeAssembly* Detector::buildModuleA()
@@ -297,7 +298,7 @@ TGeoVolumeAssembly* Detector::buildModuleA()
297298
auto nod = new TGeoVolume(nodeName.c_str(), tbs, medium);
298299
ring->AddNode(nod, cellId);
299300
}
300-
mod->AddNode(ring, ir);
301+
mod->AddNode(ring, 1);
301302
}
302303

303304
return mod;
@@ -325,7 +326,7 @@ TGeoVolumeAssembly* Detector::buildModuleC()
325326
auto nod = new TGeoVolume(nodeName.c_str(), tbs, medium);
326327
ring->AddNode(nod, cellId);
327328
}
328-
mod->AddNode(ring, ir);
329+
mod->AddNode(ring, 1);
329330
}
330331

331332
return mod;
@@ -348,4 +349,28 @@ void Detector::defineSensitiveVolumes()
348349
}
349350
}
350351

352+
int Detector::getChannelId(TVector3 vec)
353+
{
354+
float phi = vec.Phi();
355+
if (phi < 0) phi += TMath::TwoPi();
356+
float r = vec.Perp();
357+
float z = vec.Z();
358+
359+
int isect = int(phi/(TMath::Pi()/4));
360+
361+
std::vector<float>rd = z > 0 ? mRingRadiiA : mRingRadiiC;
362+
int noff = z > 0 ? 0 : mNumberOfRingsA*mNumberOfSectors;
363+
364+
int ir = 0;
365+
366+
for (int i = 1; i < rd.size(); i++) {
367+
if (r < rd[i])
368+
break;
369+
else
370+
ir ++;
371+
}
372+
373+
return ir * mNumberOfSectors + isect + noff;
374+
}
375+
351376
ClassImp(o2::fvd::Detector);

0 commit comments

Comments
 (0)