+
+ // skip internal train tasks in main loop
+ if(!die->DoEventProcess()) continue;
+
+ // mix remaining
+ AliDielectronMixingHandler *mix=die->GetMixingHandler();
+ if (!mix || !mix->GetMixUncomplete()) continue;
+
+ // loop over all pools
+ for (Int_t ipool=0; ipool<mix->GetNumberOfBins(); ++ipool){
+ // printf("mix remaining %04d/%04d \n",ipool,mix->GetNumberOfBins());
+ if(! mix->MixRemaining(die, ipool) ) { fPairArray=0x0; continue; }
+
+ fPairArray = (*(die->GetPairArraysPointer()));
+ if(!fPairArray) continue;
+
+ // loop over internal train task candidates
+ for(Int_t i=ic; i<fListDielectron.GetEntries(); i++) {
+ die2 = static_cast<AliDielectron*>(fListDielectron.At(i));
+ // abort if tasks following are not internal wagons
+ if(die2->DoEventProcess()) break;
+ // fill internal train output
+ die2->SetPairArraysPointer(fPairArray);
+ // printf(" --> fill internal train output %s \n",die2->GetName());
+ die2->FillHistogramsFromPairArray(kTRUE);
+ }
+ // printf("\n\n\n===============\ncall mix in Terminate: %p (%p)\n=================\n\n",mix,die);
+
+ }
+