102 Int_t copyNoStickSens;
103 Int_t copyNoSTICKSENSCom, copyNoSTICKCom;
106 TLorentzVector tPos1, tMom1;
107 TLorentzVector tPos, tMom;
109 Int_t sticksens, stick;
122 if (gMC->CurrentVolID(copyNoStickSens) != fHodoStickSensVolId)
125 ivol = vol->getMCid();
127 if (gMC->CurrentVolID(copyNoStickSens) == fHodoStickSensVolId) {
128 gMC->CurrentVolOffID(0, sticksens);
129 gMC->CurrentVolOffID(1, stick);
130 copyNoSTICKSENSCom = sticksens;
131 copyNoSTICKCom = stick;
137 if (gMC->IsTrackEntering()) {
145 TLorentzVector PosIn;
146 gMC->TrackPosition(PosIn);
147 fPos.SetXYZ(PosIn.X(), PosIn.Y(), PosIn.Z());
149 TLorentzVector MomIn;
150 gMC->TrackMomentum(MomIn);
151 fMom.SetXYZ(MomIn.Px(), MomIn.Py(), MomIn.Pz());
153 fTime = gMC->TrackTime() * 1.0e09;
154 fLength = gMC->TrackLength();
157 if (gMC->IsTrackInside()) {
159 gMC->TrackPosition(tPos);
160 gMC->TrackMomentum(tMom);
161 length += gMC->TrackStep();
163 fELoss += gMC->Edep();
170 time += gMC->TrackTime() * 1.0e09;
172 if (gMC->IsTrackStop() || gMC->IsTrackDisappeared()) {
178 fTrackID = gMC->GetStack()->GetCurrentTrackNumber();
187 if (copyNoSTICKSENSCom == sticksens && copyNoSTICKCom == stick) {
188 if (!
GetHit(sticksens, stick)) {
189 AddHit(fTrackID, ivol, sticksens, stick, TVector3(tPos.X(), tPos.Y(), tPos.Z()),
190 TVector3(tMom.Px(), tMom.Py(), tMom.Pz()), time, length, fELoss);
193 ->
AddSTICK(fTrackID, ivol, sticksens, stick, TVector3(tPos.X(), tPos.Y(), tPos.Z()),
194 TVector3(tMom.Px(), tMom.Py(), tMom.Pz()), time, length, fELoss);
202 if (gMC->IsTrackExiting()) {
206 fTrackID = gMC->GetStack()->GetCurrentTrackNumber();
207 time += gMC->TrackTime() * 1.0e09;
208 length += gMC->TrackLength();
210 fELoss += gMC->Edep();
218 gMC->TrackPosition(tPos);
219 gMC->TrackMomentum(tMom);
222 if (copyNoSTICKSENSCom == sticksens && copyNoSTICKCom == stick) {
223 if (!
GetHit(sticksens, stick)) {
224 AddHit(fTrackID, ivol, sticksens, stick, TVector3(tPos.X(), tPos.Y(), tPos.Z()),
225 TVector3(tMom.Px(), tMom.Py(), tMom.Pz()), time, length, fELoss);
228 ->
AddSTICK(fTrackID, ivol, sticksens, stick, TVector3(tPos.X(), tPos.Y(), tPos.Z()),
229 TVector3(tMom.Px(), tMom.Py(), tMom.Pz()), time, length, fELoss);
236 Int_t points = gMC->GetStack()->GetCurrentTrack()->GetMother(1);
237 points = (points & (~(1 << 30))) | (1 << 30);
239 gMC->GetStack()->GetCurrentTrack()->SetMother(1, points);