+ if( trackStore && triggerTrackStore && fTriggerStore && fTrigChamberEff){
+ fTrigChamberEff->EventChamberEff(*fTriggerStore,*triggerTrackStore,*trackStore);
+ }
+
+ FillESD(*trackStore,esd);
+
+ // cleanup
+ delete trackStore;
+ delete triggerTrackStore;
+
+ return 0;
+}
+
+//_____________________________________________________________________________
+void
+AliMUONTracker::FillESD(AliMUONVTrackStore& trackStore, AliESDEvent* esd) const
+{
+ /// Fill the ESD from the trackStore
+
+ AliDebug(1,"");
+
+ // Get vertex
+ Double_t vertex[3] = {0};
+ const AliESDVertex* esdVert = esd->GetVertex();
+ if (esdVert->GetNContributors())
+ {
+ esdVert->GetXYZ(vertex);
+ AliDebug(1,Form("found vertex (%e,%e,%e)",vertex[0],vertex[1],vertex[2]));
+ }
+
+ // setting ESD MUON class
+ AliESDMuonTrack esdTrack;
+
+ AliMUONTrack* track;
+ TIter next(trackStore.CreateIterator());
+
+ while ( ( track = static_cast<AliMUONTrack*>(next()) ) )
+ {
+ AliMUONTrackParam* trackParam = static_cast<AliMUONTrackParam*>((track->GetTrackParamAtHit())->First());
+ AliMUONTrackParam trackParamAtVtx(*trackParam);
+
+ /// Extrapolate to vertex (which is set to (0,0,0) if not available, see above)
+ AliMUONTrackExtrap::ExtrapToVertex(&trackParamAtVtx, vertex[0],vertex[1],vertex[2]);
+
+ // setting data member of ESD MUON
+
+ // at first station
+ esdTrack.SetInverseBendingMomentumUncorrected(trackParam->GetInverseBendingMomentum());
+ esdTrack.SetThetaXUncorrected(TMath::ATan(trackParam->GetNonBendingSlope()));
+ esdTrack.SetThetaYUncorrected(TMath::ATan(trackParam->GetBendingSlope()));
+ esdTrack.SetZUncorrected(trackParam->GetZ());
+ esdTrack.SetBendingCoorUncorrected(trackParam->GetBendingCoor());
+ esdTrack.SetNonBendingCoorUncorrected(trackParam->GetNonBendingCoor());
+ // at vertex
+ esdTrack.SetInverseBendingMomentum(trackParamAtVtx.GetInverseBendingMomentum());
+ esdTrack.SetThetaX(TMath::ATan(trackParamAtVtx.GetNonBendingSlope()));
+ esdTrack.SetThetaY(TMath::ATan(trackParamAtVtx.GetBendingSlope()));
+ esdTrack.SetZ(trackParamAtVtx.GetZ());
+ esdTrack.SetBendingCoor(trackParamAtVtx.GetBendingCoor());
+ esdTrack.SetNonBendingCoor(trackParamAtVtx.GetNonBendingCoor());
+ // global info
+ esdTrack.SetChi2(track->GetFitFMin());
+ esdTrack.SetNHit(track->GetNTrackHits());
+ esdTrack.SetLocalTrigger(track->GetLocalTrigger());
+ esdTrack.SetChi2MatchTrigger(track->GetChi2MatchTrigger());
+ esdTrack.SetHitsPatternInTrigCh(track->GetHitsPatternInTrigCh());
+
+ // storing ESD MUON Track into ESD Event
+ esd->AddMuonTrack(&esdTrack);
+ } // end of loop on tracks