- if(xyze[3] > 0.){// Track is inside the crystal and deposits some energy
- absid = (id[0]-1)*(fGeom->GetNPhi()) + id[1];
- if((absid/fGeom->GetNPhi()) < (2*fGeom->GetNZ()))
- {xyze[3] = fLayerToPreshowerRatio*xyze[3] ;} // Preshower readout must be scaled
- AddHit(fIshunt, primary,tracknumber, iparent, ienergy, absid, xyze, pmom);
+ if( (depositedEnergy = gMC->Edep()) > 0.){// Track is inside a scintillator and deposits some energy
+
+ // use sampling fraction to get original energy --HG
+ depositedEnergy = depositedEnergy * geom->GetSampling();
+
+ gMC->TrackPosition(pos);
+ xyzte[0] = pos[0];
+ xyzte[1] = pos[1];
+ xyzte[2] = pos[2];
+ xyzte[3] = gMC->TrackTime() ;
+
+ gMC->TrackMomentum(mom);
+ pmom[0] = mom[0];
+ pmom[1] = mom[1];
+ pmom[2] = mom[2];
+ pmom[3] = mom[3];
+
+ gMC->CurrentVolOffID(1, id[0]); // get the POLY copy number;
+ gMC->CurrentVolID(id[1]); // get the phi number inside the layer
+
+ Int_t tower = (id[0]-1) % geom->GetNZ() + 1 + (id[1] - 1) * geom->GetNZ() ;
+ Int_t layer = static_cast<Int_t>((id[0]-1)/(geom->GetNZ())) + 1 ;
+ Int_t absid = tower;
+ Int_t nlayers = geom->GetNECLayers();
+ if ((layer > nlayers)||(layer<1))
+ Fatal("StepManager", "Wrong calculation of layer number: layer = %d > %d\n", layer, nlayers) ;
+
+
+ Float_t lightYield = depositedEnergy ;
+ xyzte[4] = lightYield ;
+
+ primary = gAlice->GetMCApp()->GetPrimary(tracknumber);
+
+ if (gDebug == 2)
+ printf("StepManager: id0 = %d, id1 = %d, absid = %d tower = %d layer = %d energy = %f\n", id[0], id[1], absid, tower, layer, xyzte[4]) ;
+
+ AddHit(fIshunt, primary,tracknumber, iparent, ienergy, absid, xyzte, pmom);