+ // fill the local trigger decisions not matched with tracks (associate them to "ghost" tracks)
+ UInt_t ghostId = 0xFFFFFFFF - 1;
+ Bool_t matched = kFALSE;
+ AliMUONTriggerTrack *triggerTrack;
+ TIter itTriggerTrack(fTriggerTrackStore->CreateIterator());
+ while ( ( triggerTrack = static_cast<AliMUONTriggerTrack*>(itTriggerTrack()) ) ) {
+
+ locTrg = static_cast<AliMUONLocalTrigger*>(fTriggerStore->FindLocal(triggerTrack->GetLoTrgNum()));
+
+ // check if this local trigger has already been matched
+ TIter itTrack(trackStore.CreateIterator());
+ while ( ( track = static_cast<AliMUONTrack*>(itTrack()) ) ) {
+ matched = (track->LoCircuit() == locTrg->LoCircuit());
+ if (matched) break;
+ }
+ if (matched) continue;
+
+ AliMUONESDInterface::MUONToESD(*locTrg, esdTrack, ghostId, triggerTrack);
+
+ esd->AddMuonTrack(&esdTrack);
+ ghostId -= 1;
+ }
+