- for (Int_t iHit = iHitMin; iHit < trackRefs->GetEntries(); ++iHit)
- {
- AliTrackReference* trackReference = static_cast<AliTrackReference*>(trackRefs->At(iHit));
-
- Float_t x = trackReference->X();
- Float_t y = trackReference->Y();
- Float_t z = trackReference->Z();
- Float_t pX = trackReference->Px();
- Float_t pY = trackReference->Py();
- Float_t pZ = trackReference->Pz();
-
- Int_t track = trackReference->GetTrack();
-
- if ( track >= max )
- {
- AliWarningStream()
- << "Track ID " << track
- << " larger than max number of particles " << max << endl;
- isNewTrack = kFALSE;
- break;
- }
- if (track != trackSave && iHit != 0) {
- iHitMin = iHit;
- trackSave = track;
- break;
- }
-
- Float_t bendingSlope = 0;
- Float_t nonBendingSlope = 0;
- Float_t inverseBendingMomentum = 0;
-
- AliMUONTrackParam trackParam;
-
- // track parameters at hit
- trackParam.SetBendingCoor(y);
- trackParam.SetNonBendingCoor(x);
- trackParam.SetZ(z);
-
- if (TMath::Abs(pZ) > 0)
- {
- bendingSlope = pY/pZ;
- nonBendingSlope = pX/pZ;
- }
- Float_t pYZ = TMath::Sqrt(pY*pY+pZ*pZ);
- if (pYZ >0) inverseBendingMomentum = 1/pYZ;
-
- trackParam.SetBendingSlope(bendingSlope);
- trackParam.SetNonBendingSlope(nonBendingSlope);
- trackParam.SetInverseBendingMomentum(inverseBendingMomentum);
-
- AliMUONHitForRec hitForRec;
-
- hitForRec.SetBendingCoor(y);
- hitForRec.SetNonBendingCoor(x);
- hitForRec.SetZ(z);
- hitForRec.SetBendingReso2(0.0);
- hitForRec.SetNonBendingReso2(0.0);
- Int_t detElemId = hitForRec.GetDetElemId();
- Int_t iChamber;
- if (detElemId)
- {
- iChamber = detElemId / 100 - 1;
- }
- else
- {
- iChamber = AliMUONConstants::ChamberNumber(z);
- }
- hitForRec.SetChamberNumber(iChamber);
-
- muonTrack.AddTrackParamAtHit(&trackParam,0);
- muonTrack.AddHitForRecAtHit(&hitForRec);
- muonTrack.SetTrackID(track);
-
- trackSave = track;
- if (iHit == trackRefs->GetEntries()-1) isNewTrack = kFALSE;
- }