@@ -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
205206void 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
278279TGeoVolumeAssembly* 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+
351376ClassImp (o2::fvd::Detector);
0 commit comments