ROOT logo
// $Id$
//
// Task to skim ESD files.
//
// Author: C.Loizides

#include "AliEsdSkimTask.h"
#include <TClonesArray.h>
#include <TFile.h>
#include <TTree.h>
#include "AliAnalysisManager.h"
#include "AliCentrality.h"
#include "AliESDEvent.h"
#include "AliESDFMD.h"
#include "AliESDMuonTrack.h"
#include "AliESDtrackCuts.h"
#include "AliESDtrackCuts.h"
#include "AliEsdTrackExt.h"
#include "AliEventplane.h"
#include "AliInputEventHandler.h"
#include "AliMultiplicity.h"
#include "AliPicoTrack.h"
#include "AliVEventHandler.h"

//_________________________________________________________________________________________________
AliEsdSkimTask::AliEsdSkimTask(const char *opt) :
  AliAnalysisTaskSE(opt), fEvent(0), fTree(0), fCuts(0),
  fDoZDC(1), fDoV0(1), fDoT0(1), fDoTPCv(1), fDoSPDv(1), fDoPriv(1),
  fDoEmCs(1), fDoPCs(0), fDoEmT(1), fDoPT(0), fDoTracks(0), fDoFmd(1),
  fDoMult(1), fDoTof(0), fDoPileup(1), fDoClus(0), fDoMuonTracks(0), fEmcNames(""), 
  fDoMiniTracks(0), fTracks("Tracks"), fPhosClusOnly(0), fEmcalClusOnly(0),
  fDoSaveBytes(0), fDoCent(1), fDoRP(1), fRemoveCP(0), fResetCov(1), 
  fDoPicoTracks(0), fCheckCond(0)
{
  // Constructor.

  if (!opt)
    return;

  fBranchNames = "ESD:AliESDHeader.,AliESDRun.";

  DefineOutput(1, TTree::Class());
}

//_________________________________________________________________________________________________
void AliEsdSkimTask::UserExec(Option_t */*opt*/) 
{
  // Process event.

  AliESDEvent *esdin = dynamic_cast<AliESDEvent*>(InputEvent());
  if (!esdin)
    return;

  AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();

  fEvent->ResetStdContent();

  TList* objsin  = esdin->GetList();
  TList* objsout = fEvent->GetList();

  if (fCheckCond!=0) {
    Int_t mult = AliESDtrackCuts::GetReferenceMultiplicity(esdin, AliESDtrackCuts::kTrackletsITSTPC, 0.8);           
    if (mult<10)
      return;
  }

  AliESDHeader *header = dynamic_cast<AliESDHeader*>(objsout->FindObject("AliESDHeader"));
  if (header) {
    am->LoadBranch("AliESDHeader.");
    if (!fDoSaveBytes) {
      *header = *esdin->GetHeader();
    } else {
      AliESDHeader *hin = esdin->GetHeader();
      header->SetTriggerMask(hin->GetTriggerMask());
      header->SetOrbitNumber(hin->GetOrbitNumber());
      header->SetTimeStamp(hin->GetTimeStamp());
      header->SetEventType(hin->GetEventType());
      header->SetEventSpecie(hin->GetEventSpecie());
      header->SetEventNumberInFile(hin->GetEventNumberInFile());
      header->SetBunchCrossNumber(hin->GetBunchCrossNumber());
      header->SetPeriodNumber(hin->GetPeriodNumber());
      header->SetTriggerCluster(hin->GetTriggerCluster());
      header->SetL0TriggerInputs(hin->GetL0TriggerInputs());
      header->SetL1TriggerInputs(hin->GetL1TriggerInputs());
      header->SetL2TriggerInputs(hin->GetL2TriggerInputs());
      for (Int_t i=0;i<24;++i) {
        const char *name = hin->GetTriggerInputName(i,0);
        if (name)
          header->SetActiveTriggerInputs(name,i);
      }
      for (Int_t i=0;i<24;++i) {
        const char *name = hin->GetTriggerInputName(i,1);
        if (name)
          header->SetActiveTriggerInputs(name,i+24);
      }
      for (Int_t i=0;i<12;++i) {
        const char *name = hin->GetTriggerInputName(i,2);
        if (name)
          header->SetActiveTriggerInputs(name,i+48);
      }
    }
    header->SetUniqueID(((AliInputEventHandler*)(am->GetInputEventHandler()))->IsEventSelected());
    if (am->GetInputEventHandler()) {
      TTree *tree = am->GetInputEventHandler()->GetTree();
      if (tree) {
        TFile *cfile = tree->GetCurrentFile();
        if (cfile) {
          TString cname(cfile->GetName());
          header->SetTitle(cname);
        }
      }
    }
  }
  AliESDRun *run = dynamic_cast<AliESDRun*>(objsout->FindObject("AliESDRun"));
  if (run) {
    am->LoadBranch("AliESDRun.");
    *run = *esdin->GetESDRun();
  }
  AliCentrality *cent = dynamic_cast<AliCentrality*>(objsout->FindObject("Centrality"));
  if (cent) {
    cent->Reset();
    AliCentrality *centin = esdin->GetCentrality();
    cent->SetQuality(centin->GetQuality());
    cent->SetCentralityV0M(centin->GetCentralityPercentileUnchecked("V0M"));
    cent->SetCentralityFMD(centin->GetCentralityPercentileUnchecked("FMD"));
    cent->SetCentralityTRK(centin->GetCentralityPercentileUnchecked("TRK"));
    cent->SetCentralityTKL(centin->GetCentralityPercentileUnchecked("TKL"));
    cent->SetCentralityCL0(centin->GetCentralityPercentileUnchecked("CL0"));
    cent->SetCentralityCL1(centin->GetCentralityPercentileUnchecked("CL1"));
    cent->SetCentralityV0MvsFMD(centin->GetCentralityPercentileUnchecked("V0MvsFMD"));
    cent->SetCentralityTKLvsV0M(centin->GetCentralityPercentileUnchecked("TKLvsV0M"));
    cent->SetCentralityZEMvsZDC(centin->GetCentralityPercentileUnchecked("ZEMvsZDC"));
  }
  AliEventplane *ep = dynamic_cast<AliEventplane*>(objsout->FindObject("Eventplane"));
  if (ep) {
    ep->Reset();
    AliEventplane *epin = esdin->GetEventplane();
    if (!fDoSaveBytes) {
      *ep = *epin;
    } else {
      if (epin->GetQVector()) {
        ep->SetQVector(new TVector2(*epin->GetQVector()));
        ep->SetEventplaneQ(epin->GetEventplane("Q"));
        ep->SetQsub(new TVector2(*epin->GetQsub1()),new TVector2(*epin->GetQsub2()));
        ep->SetQsubRes(epin->GetQsubRes());
      }
    }
  }
  if (fDoZDC) {
    AliESDZDC *zdc = dynamic_cast<AliESDZDC*>(objsout->FindObject("AliESDZDC"));
    if (zdc) {
      am->LoadBranch("AliESDZDC.");
      *zdc = *esdin->GetESDZDC();
    }
  }
  if (fDoV0) {
    AliESDVZERO *v0 = dynamic_cast<AliESDVZERO*>(objsout->FindObject("AliESDVZERO"));
    if (v0) {
      am->LoadBranch("AliESDVZERO.");
      *v0 = *esdin->GetVZEROData();
    }
  }
  if (fDoT0) {
    AliESDTZERO *t0 = dynamic_cast<AliESDTZERO*>(objsout->FindObject("AliESDTZERO"));
    if (t0) {
      am->LoadBranch("AliESDTZERO.");
      *t0 = *esdin->GetESDTZERO();
    }
  }
  if (fDoTPCv) {
    AliESDVertex *tpcv = dynamic_cast<AliESDVertex*>(objsout->FindObject("TPCVertex"));
    if (tpcv) {
      am->LoadBranch("TPCVertex.");
      *tpcv = *esdin->GetPrimaryVertexTPC();
    }
  }
  if (fDoSPDv) {
    AliESDVertex *spdv = dynamic_cast<AliESDVertex*>(objsout->FindObject("SPDVertex"));
    if (spdv) {
      am->LoadBranch("SPDVertex.");
      *spdv = *esdin->GetPrimaryVertexSPD();
    }
  }
  if (fDoPriv) {
    AliESDVertex *priv = dynamic_cast<AliESDVertex*>(objsout->FindObject("PrimaryVertex"));
    if (priv) {
      am->LoadBranch("PrimaryVertex.");
      *priv = *esdin->GetPrimaryVertexTracks();
    }
  }
  if (fDoEmCs) {
    AliESDCaloCells *ecells = dynamic_cast<AliESDCaloCells*>(objsout->FindObject("EMCALCells"));
    if (ecells) {
      am->LoadBranch("EMCALCells.");
      *ecells = *esdin->GetEMCALCells();
    }
  }
  if (fDoPCs) {
    AliESDCaloCells *pcells = dynamic_cast<AliESDCaloCells*>(objsout->FindObject("PHOSCells"));
    if (pcells) {
      am->LoadBranch("PHOSCells.");
      *pcells = *esdin->GetPHOSCells();
    }
  }
  if (fDoEmT) {
    AliESDCaloTrigger *etrig = dynamic_cast<AliESDCaloTrigger*>(objsout->FindObject("EMCALTrigger"));
    if (etrig) {
      am->LoadBranch("EMCALTrigger.");
      *etrig = *esdin->GetCaloTrigger("EMCAL");
    }
  }
  if (fDoPT) {
    AliESDCaloTrigger *ptrig = dynamic_cast<AliESDCaloTrigger*>(objsout->FindObject("PHOSTrigger"));
    if (ptrig) {
      am->LoadBranch("PHOSTrigger.");
      *ptrig = *esdin->GetCaloTrigger("PHOS");
    }
  }
  if (fDoFmd) {
    AliESDFMD *fmd = dynamic_cast<AliESDFMD*>(objsout->FindObject("AliESDFMD"));
    if (fmd) {
      am->LoadBranch("AliESDFMD.");
      if (!fDoSaveBytes) {
        *fmd = *esdin->GetFMDData();
      }
    }
  }
  if (fDoMult) {
    AliMultiplicity *mult = dynamic_cast<AliMultiplicity*>(objsout->FindObject("AliMultiplicity"));
    if (mult) {
      am->LoadBranch("AliMultiplicity.");
      if (!fDoSaveBytes) {
        *mult = *esdin->GetMultiplicity();
      } else {
        const AliMultiplicity *multin = esdin->GetMultiplicity();;
        mult->SetFiredChips(0, multin->GetNumberOfFiredChips(0));
        mult->SetFiredChips(1, multin->GetNumberOfFiredChips(1));
        for (Int_t i=0; i<6; ++i) 
          mult->SetITSClusters(i,multin->GetNumberOfITSClusters(i));
      }
    }
  }
  if (fDoTof) {
    AliTOFHeader *tofh = dynamic_cast<AliTOFHeader*>(objsout->FindObject("AliTOFHeader"));
    if (tofh) {
      am->LoadBranch("AliTOFHeader.");
      *tofh = *esdin->GetTOFHeader();
    }
  }
  if (fDoPileup) {
    TClonesArray *spup = dynamic_cast<TClonesArray*>(objsout->FindObject("SPDPileupVertices"));
    if (spup) {
      am->LoadBranch("SPDPileupVertices");
      Int_t N = esdin->GetNumberOfPileupVerticesSPD();
      for (Int_t i=0; i<N; ++i) {
        const AliESDVertex *vtx = esdin->GetPileupVertexSPD(i);
        if (vtx)
          fEvent->AddPileupVertexSPD(vtx);
      }
    }
    TClonesArray *tpup = dynamic_cast<TClonesArray*>(objsout->FindObject("TrkPileupVertices"));
    if (tpup) {
      am->LoadBranch("TrkPileupVertices");
      Int_t N = esdin->GetNumberOfPileupVerticesTracks();
      for (Int_t i=0; i<N; ++i) {
        const AliESDVertex *vtx = esdin->GetPileupVertexTracks(i);
        if (vtx)
          fEvent->AddPileupVertexTracks(vtx);
      }
    }
  }
  if (fDoClus) {
    TClonesArray *clus = dynamic_cast<TClonesArray*>(objsout->FindObject("CaloClusters"));
    if (clus) {
      am->LoadBranch("CaloClusters");
      Int_t N = esdin->GetNumberOfCaloClusters();
      for (Int_t i=0; i<N; ++i) {
        AliESDCaloCluster *c = esdin->GetCaloCluster(i);
        if (!c)
          continue;
        if (fPhosClusOnly && c->IsEMCAL())
          continue;
        if (fEmcalClusOnly && c->IsPHOS())
          continue;
        fEvent->AddCaloCluster(c);
      }
    }
  }
  TObjArray *namearr = fEmcNames.Tokenize(";");
  if (namearr) {
    for (Int_t i=0; i<namearr->GetEntries(); ++i) {
      TString cname(namearr->At(i)->GetName());
      if (cname.Length()<=0)
        continue;
      TClonesArray *arrin  = dynamic_cast<TClonesArray*>(objsin->FindObject(cname));
      if (!arrin) {
        AliFatal(Form("Can not find input clusters with name %s", cname.Data()));
        delete namearr;
	return;
      }
      TClonesArray *arrout = dynamic_cast<TClonesArray*>(objsout->FindObject(cname));
      if (!arrout) {
        AliFatal(Form("Can not find output clusters with name %s", cname.Data()));
        return;
      }
      arrout->Delete();
      Double_t emin=0.1;
      if (cname.Contains("FEE"))
        emin = 1;
      const Int_t N = arrin->GetEntries();
      for (Int_t iC=0, nC=0; iC<N; ++iC) {
        AliESDCaloCluster *c = dynamic_cast<AliESDCaloCluster*>(arrin->At(iC));
        if (!c)
          continue;
        if (c->E()<emin)
          continue;
        AliESDCaloCluster *newCluster = new ((*arrout)[nC]) AliESDCaloCluster(*c);
        newCluster->SetID(nC);
        ++nC;
      }
    }
    delete namearr;
  }
  if (fDoTracks) {
    if (fTracks == "Tracks")
      am->LoadBranch("Tracks");
    TClonesArray *tracksin = dynamic_cast<TClonesArray*>(objsin->FindObject(fTracks));
    if (!tracksin) {
      AliFatal(Form("Can not find tracks with name %s", fTracks.Data()));
      return;
    }
    TString trkoutname("Tracks");
    if (fDoPicoTracks) 
      trkoutname = "PicoTracks";
    TClonesArray *tracksout = 0;
    tracksout = dynamic_cast<TClonesArray*>(objsout->FindObject(trkoutname));
    if (!tracksout) {
      AliFatal(Form("Can not find tracks with name %s", trkoutname.Data()));
      return;
    }
    tracksout->Delete();
    TString classname(tracksin->GetClass()->GetName());
    if (classname == "AliPicoTrack") {
      if (!fDoPicoTracks) {
        AliFatal(Form("Need to enable fDoPicoTracks when reading AliPicoTracks"));
        return;
      }
      const Int_t Ntracks = tracksin->GetEntries();
      for (Int_t iTracks = 0, nacc = 0; iTracks < Ntracks; ++iTracks) {
        AliPicoTrack *track = dynamic_cast<AliPicoTrack*>(tracksin->At(iTracks));
        if (!track)
          continue;
        new ((*tracksout)[nacc]) AliPicoTrack(*track);
        ++nacc;
      }
    } else {
      const Int_t Ntracks = tracksin->GetEntries();
      for (Int_t iTracks = 0, nacc = 0; iTracks < Ntracks; ++iTracks) {
        AliESDtrack *track = dynamic_cast<AliESDtrack*>(tracksin->At(iTracks));
        if (!track)
          continue;
        if (fCuts) {
          if (!fCuts->IsSelected(track))
            continue;
        }
        if (fDoPicoTracks) {
          AliEsdTrackExt newtrack(*track);
          Double_t etaemc = 0;
          Double_t phiemc = 0;
          if (newtrack.IsEMCAL()) {
            etaemc = newtrack.GetEmcEta();
            phiemc = newtrack.GetEmcPhi();
          }
          new ((*tracksout)[nacc]) AliPicoTrack(newtrack.Pt(), newtrack.Eta(), newtrack.Phi(), 
                                                newtrack.Charge(), newtrack.GetLabel(), 0, 
                                                etaemc, phiemc, newtrack.IsEMCAL());
          ++nacc;
        } else {
          AliEsdTrackExt *newtrack = new ((*tracksout)[nacc]) AliEsdTrackExt(*track);
          if (fDoMiniTracks) {
            newtrack->MakeMiniTrack(0,fRemoveCP);
            newtrack->ResetCovariance(fResetCov);
          } else {
            newtrack->DeleteParams();
          }
          newtrack->SetID(nacc);
          ++nacc;
        }
      }
    }
  }
  if (fDoMuonTracks) {
    TClonesArray *muons = dynamic_cast<TClonesArray*>(objsout->FindObject("MuonTracks"));
    if (muons) {
      am->LoadBranch("MuonTracks");
      Int_t N = esdin->GetNumberOfMuonTracks();
      for (Int_t i=0; i<N; ++i) {
        const AliESDMuonTrack *mt = esdin->GetMuonTrack(i);
        new ((*muons)[i]) AliESDMuonTrack(*mt);
      }
    }
  }
  fTree->Fill();
}

//_________________________________________________________________________________________________
void AliEsdSkimTask::UserCreateOutputObjects() 
{
  // Create output objects.

  TFile *file = OpenFile(1);
  fTree = new TTree("esdTree", "Tree with skimmed ESD objects");
  file->SetCompressionLevel(5);
  fTree->SetDirectory(file);
  fTree->SetAutoFlush(-10*1024*1024);

  fEvent = new AliESDEvent;
  fEvent->CreateStdContent();
  if (fDoCent) {
    AliCentrality *cent = new AliCentrality;
    fEvent->AddObject(cent);
  }
  if (fDoRP) {
    AliEventplane *ep = new AliEventplane;
    fEvent->AddObject(ep);
  }
  TObjArray *namearr = fEmcNames.Tokenize(";");
  if (namearr) {
    for (Int_t i=0; i<namearr->GetEntries(); ++i) {
      TString cname(namearr->At(i)->GetName());
      if (cname.Length()<=0)
        continue;
      TClonesArray *arr = new TClonesArray("AliESDCaloCluster",0);
      arr->SetName(cname);
      fEvent->AddObject(arr);
    }
    delete namearr;
  }
  if (fDoTracks) {
    if (fDoPicoTracks) {
      TClonesArray *arr = new TClonesArray("AliPicoTrack",0);
      arr->SetName("PicoTracks");
      fEvent->AddObject(arr);
    } else {
      TObject *obj = fEvent->GetList()->FindObject("Tracks");
      fEvent->GetList()->Remove(obj);
      TClonesArray *arr = new TClonesArray("AliEsdTrackExt",0);
      arr->SetName("Tracks");
      fEvent->AddObject(arr);
    }
  }
  fEvent->GetStdContent();
  fEvent->WriteToTree(fTree);
  fTree->GetUserInfo()->Add(fEvent);
  PostData(1,fTree);
}
 AliEsdSkimTask.cxx:1
 AliEsdSkimTask.cxx:2
 AliEsdSkimTask.cxx:3
 AliEsdSkimTask.cxx:4
 AliEsdSkimTask.cxx:5
 AliEsdSkimTask.cxx:6
 AliEsdSkimTask.cxx:7
 AliEsdSkimTask.cxx:8
 AliEsdSkimTask.cxx:9
 AliEsdSkimTask.cxx:10
 AliEsdSkimTask.cxx:11
 AliEsdSkimTask.cxx:12
 AliEsdSkimTask.cxx:13
 AliEsdSkimTask.cxx:14
 AliEsdSkimTask.cxx:15
 AliEsdSkimTask.cxx:16
 AliEsdSkimTask.cxx:17
 AliEsdSkimTask.cxx:18
 AliEsdSkimTask.cxx:19
 AliEsdSkimTask.cxx:20
 AliEsdSkimTask.cxx:21
 AliEsdSkimTask.cxx:22
 AliEsdSkimTask.cxx:23
 AliEsdSkimTask.cxx:24
 AliEsdSkimTask.cxx:25
 AliEsdSkimTask.cxx:26
 AliEsdSkimTask.cxx:27
 AliEsdSkimTask.cxx:28
 AliEsdSkimTask.cxx:29
 AliEsdSkimTask.cxx:30
 AliEsdSkimTask.cxx:31
 AliEsdSkimTask.cxx:32
 AliEsdSkimTask.cxx:33
 AliEsdSkimTask.cxx:34
 AliEsdSkimTask.cxx:35
 AliEsdSkimTask.cxx:36
 AliEsdSkimTask.cxx:37
 AliEsdSkimTask.cxx:38
 AliEsdSkimTask.cxx:39
 AliEsdSkimTask.cxx:40
 AliEsdSkimTask.cxx:41
 AliEsdSkimTask.cxx:42
 AliEsdSkimTask.cxx:43
 AliEsdSkimTask.cxx:44
 AliEsdSkimTask.cxx:45
 AliEsdSkimTask.cxx:46
 AliEsdSkimTask.cxx:47
 AliEsdSkimTask.cxx:48
 AliEsdSkimTask.cxx:49
 AliEsdSkimTask.cxx:50
 AliEsdSkimTask.cxx:51
 AliEsdSkimTask.cxx:52
 AliEsdSkimTask.cxx:53
 AliEsdSkimTask.cxx:54
 AliEsdSkimTask.cxx:55
 AliEsdSkimTask.cxx:56
 AliEsdSkimTask.cxx:57
 AliEsdSkimTask.cxx:58
 AliEsdSkimTask.cxx:59
 AliEsdSkimTask.cxx:60
 AliEsdSkimTask.cxx:61
 AliEsdSkimTask.cxx:62
 AliEsdSkimTask.cxx:63
 AliEsdSkimTask.cxx:64
 AliEsdSkimTask.cxx:65
 AliEsdSkimTask.cxx:66
 AliEsdSkimTask.cxx:67
 AliEsdSkimTask.cxx:68
 AliEsdSkimTask.cxx:69
 AliEsdSkimTask.cxx:70
 AliEsdSkimTask.cxx:71
 AliEsdSkimTask.cxx:72
 AliEsdSkimTask.cxx:73
 AliEsdSkimTask.cxx:74
 AliEsdSkimTask.cxx:75
 AliEsdSkimTask.cxx:76
 AliEsdSkimTask.cxx:77
 AliEsdSkimTask.cxx:78
 AliEsdSkimTask.cxx:79
 AliEsdSkimTask.cxx:80
 AliEsdSkimTask.cxx:81
 AliEsdSkimTask.cxx:82
 AliEsdSkimTask.cxx:83
 AliEsdSkimTask.cxx:84
 AliEsdSkimTask.cxx:85
 AliEsdSkimTask.cxx:86
 AliEsdSkimTask.cxx:87
 AliEsdSkimTask.cxx:88
 AliEsdSkimTask.cxx:89
 AliEsdSkimTask.cxx:90
 AliEsdSkimTask.cxx:91
 AliEsdSkimTask.cxx:92
 AliEsdSkimTask.cxx:93
 AliEsdSkimTask.cxx:94
 AliEsdSkimTask.cxx:95
 AliEsdSkimTask.cxx:96
 AliEsdSkimTask.cxx:97
 AliEsdSkimTask.cxx:98
 AliEsdSkimTask.cxx:99
 AliEsdSkimTask.cxx:100
 AliEsdSkimTask.cxx:101
 AliEsdSkimTask.cxx:102
 AliEsdSkimTask.cxx:103
 AliEsdSkimTask.cxx:104
 AliEsdSkimTask.cxx:105
 AliEsdSkimTask.cxx:106
 AliEsdSkimTask.cxx:107
 AliEsdSkimTask.cxx:108
 AliEsdSkimTask.cxx:109
 AliEsdSkimTask.cxx:110
 AliEsdSkimTask.cxx:111
 AliEsdSkimTask.cxx:112
 AliEsdSkimTask.cxx:113
 AliEsdSkimTask.cxx:114
 AliEsdSkimTask.cxx:115
 AliEsdSkimTask.cxx:116
 AliEsdSkimTask.cxx:117
 AliEsdSkimTask.cxx:118
 AliEsdSkimTask.cxx:119
 AliEsdSkimTask.cxx:120
 AliEsdSkimTask.cxx:121
 AliEsdSkimTask.cxx:122
 AliEsdSkimTask.cxx:123
 AliEsdSkimTask.cxx:124
 AliEsdSkimTask.cxx:125
 AliEsdSkimTask.cxx:126
 AliEsdSkimTask.cxx:127
 AliEsdSkimTask.cxx:128
 AliEsdSkimTask.cxx:129
 AliEsdSkimTask.cxx:130
 AliEsdSkimTask.cxx:131
 AliEsdSkimTask.cxx:132
 AliEsdSkimTask.cxx:133
 AliEsdSkimTask.cxx:134
 AliEsdSkimTask.cxx:135
 AliEsdSkimTask.cxx:136
 AliEsdSkimTask.cxx:137
 AliEsdSkimTask.cxx:138
 AliEsdSkimTask.cxx:139
 AliEsdSkimTask.cxx:140
 AliEsdSkimTask.cxx:141
 AliEsdSkimTask.cxx:142
 AliEsdSkimTask.cxx:143
 AliEsdSkimTask.cxx:144
 AliEsdSkimTask.cxx:145
 AliEsdSkimTask.cxx:146
 AliEsdSkimTask.cxx:147
 AliEsdSkimTask.cxx:148
 AliEsdSkimTask.cxx:149
 AliEsdSkimTask.cxx:150
 AliEsdSkimTask.cxx:151
 AliEsdSkimTask.cxx:152
 AliEsdSkimTask.cxx:153
 AliEsdSkimTask.cxx:154
 AliEsdSkimTask.cxx:155
 AliEsdSkimTask.cxx:156
 AliEsdSkimTask.cxx:157
 AliEsdSkimTask.cxx:158
 AliEsdSkimTask.cxx:159
 AliEsdSkimTask.cxx:160
 AliEsdSkimTask.cxx:161
 AliEsdSkimTask.cxx:162
 AliEsdSkimTask.cxx:163
 AliEsdSkimTask.cxx:164
 AliEsdSkimTask.cxx:165
 AliEsdSkimTask.cxx:166
 AliEsdSkimTask.cxx:167
 AliEsdSkimTask.cxx:168
 AliEsdSkimTask.cxx:169
 AliEsdSkimTask.cxx:170
 AliEsdSkimTask.cxx:171
 AliEsdSkimTask.cxx:172
 AliEsdSkimTask.cxx:173
 AliEsdSkimTask.cxx:174
 AliEsdSkimTask.cxx:175
 AliEsdSkimTask.cxx:176
 AliEsdSkimTask.cxx:177
 AliEsdSkimTask.cxx:178
 AliEsdSkimTask.cxx:179
 AliEsdSkimTask.cxx:180
 AliEsdSkimTask.cxx:181
 AliEsdSkimTask.cxx:182
 AliEsdSkimTask.cxx:183
 AliEsdSkimTask.cxx:184
 AliEsdSkimTask.cxx:185
 AliEsdSkimTask.cxx:186
 AliEsdSkimTask.cxx:187
 AliEsdSkimTask.cxx:188
 AliEsdSkimTask.cxx:189
 AliEsdSkimTask.cxx:190
 AliEsdSkimTask.cxx:191
 AliEsdSkimTask.cxx:192
 AliEsdSkimTask.cxx:193
 AliEsdSkimTask.cxx:194
 AliEsdSkimTask.cxx:195
 AliEsdSkimTask.cxx:196
 AliEsdSkimTask.cxx:197
 AliEsdSkimTask.cxx:198
 AliEsdSkimTask.cxx:199
 AliEsdSkimTask.cxx:200
 AliEsdSkimTask.cxx:201
 AliEsdSkimTask.cxx:202
 AliEsdSkimTask.cxx:203
 AliEsdSkimTask.cxx:204
 AliEsdSkimTask.cxx:205
 AliEsdSkimTask.cxx:206
 AliEsdSkimTask.cxx:207
 AliEsdSkimTask.cxx:208
 AliEsdSkimTask.cxx:209
 AliEsdSkimTask.cxx:210
 AliEsdSkimTask.cxx:211
 AliEsdSkimTask.cxx:212
 AliEsdSkimTask.cxx:213
 AliEsdSkimTask.cxx:214
 AliEsdSkimTask.cxx:215
 AliEsdSkimTask.cxx:216
 AliEsdSkimTask.cxx:217
 AliEsdSkimTask.cxx:218
 AliEsdSkimTask.cxx:219
 AliEsdSkimTask.cxx:220
 AliEsdSkimTask.cxx:221
 AliEsdSkimTask.cxx:222
 AliEsdSkimTask.cxx:223
 AliEsdSkimTask.cxx:224
 AliEsdSkimTask.cxx:225
 AliEsdSkimTask.cxx:226
 AliEsdSkimTask.cxx:227
 AliEsdSkimTask.cxx:228
 AliEsdSkimTask.cxx:229
 AliEsdSkimTask.cxx:230
 AliEsdSkimTask.cxx:231
 AliEsdSkimTask.cxx:232
 AliEsdSkimTask.cxx:233
 AliEsdSkimTask.cxx:234
 AliEsdSkimTask.cxx:235
 AliEsdSkimTask.cxx:236
 AliEsdSkimTask.cxx:237
 AliEsdSkimTask.cxx:238
 AliEsdSkimTask.cxx:239
 AliEsdSkimTask.cxx:240
 AliEsdSkimTask.cxx:241
 AliEsdSkimTask.cxx:242
 AliEsdSkimTask.cxx:243
 AliEsdSkimTask.cxx:244
 AliEsdSkimTask.cxx:245
 AliEsdSkimTask.cxx:246
 AliEsdSkimTask.cxx:247
 AliEsdSkimTask.cxx:248
 AliEsdSkimTask.cxx:249
 AliEsdSkimTask.cxx:250
 AliEsdSkimTask.cxx:251
 AliEsdSkimTask.cxx:252
 AliEsdSkimTask.cxx:253
 AliEsdSkimTask.cxx:254
 AliEsdSkimTask.cxx:255
 AliEsdSkimTask.cxx:256
 AliEsdSkimTask.cxx:257
 AliEsdSkimTask.cxx:258
 AliEsdSkimTask.cxx:259
 AliEsdSkimTask.cxx:260
 AliEsdSkimTask.cxx:261
 AliEsdSkimTask.cxx:262
 AliEsdSkimTask.cxx:263
 AliEsdSkimTask.cxx:264
 AliEsdSkimTask.cxx:265
 AliEsdSkimTask.cxx:266
 AliEsdSkimTask.cxx:267
 AliEsdSkimTask.cxx:268
 AliEsdSkimTask.cxx:269
 AliEsdSkimTask.cxx:270
 AliEsdSkimTask.cxx:271
 AliEsdSkimTask.cxx:272
 AliEsdSkimTask.cxx:273
 AliEsdSkimTask.cxx:274
 AliEsdSkimTask.cxx:275
 AliEsdSkimTask.cxx:276
 AliEsdSkimTask.cxx:277
 AliEsdSkimTask.cxx:278
 AliEsdSkimTask.cxx:279
 AliEsdSkimTask.cxx:280
 AliEsdSkimTask.cxx:281
 AliEsdSkimTask.cxx:282
 AliEsdSkimTask.cxx:283
 AliEsdSkimTask.cxx:284
 AliEsdSkimTask.cxx:285
 AliEsdSkimTask.cxx:286
 AliEsdSkimTask.cxx:287
 AliEsdSkimTask.cxx:288
 AliEsdSkimTask.cxx:289
 AliEsdSkimTask.cxx:290
 AliEsdSkimTask.cxx:291
 AliEsdSkimTask.cxx:292
 AliEsdSkimTask.cxx:293
 AliEsdSkimTask.cxx:294
 AliEsdSkimTask.cxx:295
 AliEsdSkimTask.cxx:296
 AliEsdSkimTask.cxx:297
 AliEsdSkimTask.cxx:298
 AliEsdSkimTask.cxx:299
 AliEsdSkimTask.cxx:300
 AliEsdSkimTask.cxx:301
 AliEsdSkimTask.cxx:302
 AliEsdSkimTask.cxx:303
 AliEsdSkimTask.cxx:304
 AliEsdSkimTask.cxx:305
 AliEsdSkimTask.cxx:306
 AliEsdSkimTask.cxx:307
 AliEsdSkimTask.cxx:308
 AliEsdSkimTask.cxx:309
 AliEsdSkimTask.cxx:310
 AliEsdSkimTask.cxx:311
 AliEsdSkimTask.cxx:312
 AliEsdSkimTask.cxx:313
 AliEsdSkimTask.cxx:314
 AliEsdSkimTask.cxx:315
 AliEsdSkimTask.cxx:316
 AliEsdSkimTask.cxx:317
 AliEsdSkimTask.cxx:318
 AliEsdSkimTask.cxx:319
 AliEsdSkimTask.cxx:320
 AliEsdSkimTask.cxx:321
 AliEsdSkimTask.cxx:322
 AliEsdSkimTask.cxx:323
 AliEsdSkimTask.cxx:324
 AliEsdSkimTask.cxx:325
 AliEsdSkimTask.cxx:326
 AliEsdSkimTask.cxx:327
 AliEsdSkimTask.cxx:328
 AliEsdSkimTask.cxx:329
 AliEsdSkimTask.cxx:330
 AliEsdSkimTask.cxx:331
 AliEsdSkimTask.cxx:332
 AliEsdSkimTask.cxx:333
 AliEsdSkimTask.cxx:334
 AliEsdSkimTask.cxx:335
 AliEsdSkimTask.cxx:336
 AliEsdSkimTask.cxx:337
 AliEsdSkimTask.cxx:338
 AliEsdSkimTask.cxx:339
 AliEsdSkimTask.cxx:340
 AliEsdSkimTask.cxx:341
 AliEsdSkimTask.cxx:342
 AliEsdSkimTask.cxx:343
 AliEsdSkimTask.cxx:344
 AliEsdSkimTask.cxx:345
 AliEsdSkimTask.cxx:346
 AliEsdSkimTask.cxx:347
 AliEsdSkimTask.cxx:348
 AliEsdSkimTask.cxx:349
 AliEsdSkimTask.cxx:350
 AliEsdSkimTask.cxx:351
 AliEsdSkimTask.cxx:352
 AliEsdSkimTask.cxx:353
 AliEsdSkimTask.cxx:354
 AliEsdSkimTask.cxx:355
 AliEsdSkimTask.cxx:356
 AliEsdSkimTask.cxx:357
 AliEsdSkimTask.cxx:358
 AliEsdSkimTask.cxx:359
 AliEsdSkimTask.cxx:360
 AliEsdSkimTask.cxx:361
 AliEsdSkimTask.cxx:362
 AliEsdSkimTask.cxx:363
 AliEsdSkimTask.cxx:364
 AliEsdSkimTask.cxx:365
 AliEsdSkimTask.cxx:366
 AliEsdSkimTask.cxx:367
 AliEsdSkimTask.cxx:368
 AliEsdSkimTask.cxx:369
 AliEsdSkimTask.cxx:370
 AliEsdSkimTask.cxx:371
 AliEsdSkimTask.cxx:372
 AliEsdSkimTask.cxx:373
 AliEsdSkimTask.cxx:374
 AliEsdSkimTask.cxx:375
 AliEsdSkimTask.cxx:376
 AliEsdSkimTask.cxx:377
 AliEsdSkimTask.cxx:378
 AliEsdSkimTask.cxx:379
 AliEsdSkimTask.cxx:380
 AliEsdSkimTask.cxx:381
 AliEsdSkimTask.cxx:382
 AliEsdSkimTask.cxx:383
 AliEsdSkimTask.cxx:384
 AliEsdSkimTask.cxx:385
 AliEsdSkimTask.cxx:386
 AliEsdSkimTask.cxx:387
 AliEsdSkimTask.cxx:388
 AliEsdSkimTask.cxx:389
 AliEsdSkimTask.cxx:390
 AliEsdSkimTask.cxx:391
 AliEsdSkimTask.cxx:392
 AliEsdSkimTask.cxx:393
 AliEsdSkimTask.cxx:394
 AliEsdSkimTask.cxx:395
 AliEsdSkimTask.cxx:396
 AliEsdSkimTask.cxx:397
 AliEsdSkimTask.cxx:398
 AliEsdSkimTask.cxx:399
 AliEsdSkimTask.cxx:400
 AliEsdSkimTask.cxx:401
 AliEsdSkimTask.cxx:402
 AliEsdSkimTask.cxx:403
 AliEsdSkimTask.cxx:404
 AliEsdSkimTask.cxx:405
 AliEsdSkimTask.cxx:406
 AliEsdSkimTask.cxx:407
 AliEsdSkimTask.cxx:408
 AliEsdSkimTask.cxx:409
 AliEsdSkimTask.cxx:410
 AliEsdSkimTask.cxx:411
 AliEsdSkimTask.cxx:412
 AliEsdSkimTask.cxx:413
 AliEsdSkimTask.cxx:414
 AliEsdSkimTask.cxx:415
 AliEsdSkimTask.cxx:416
 AliEsdSkimTask.cxx:417
 AliEsdSkimTask.cxx:418
 AliEsdSkimTask.cxx:419
 AliEsdSkimTask.cxx:420
 AliEsdSkimTask.cxx:421
 AliEsdSkimTask.cxx:422
 AliEsdSkimTask.cxx:423
 AliEsdSkimTask.cxx:424
 AliEsdSkimTask.cxx:425
 AliEsdSkimTask.cxx:426
 AliEsdSkimTask.cxx:427
 AliEsdSkimTask.cxx:428
 AliEsdSkimTask.cxx:429
 AliEsdSkimTask.cxx:430
 AliEsdSkimTask.cxx:431
 AliEsdSkimTask.cxx:432
 AliEsdSkimTask.cxx:433
 AliEsdSkimTask.cxx:434
 AliEsdSkimTask.cxx:435
 AliEsdSkimTask.cxx:436
 AliEsdSkimTask.cxx:437
 AliEsdSkimTask.cxx:438
 AliEsdSkimTask.cxx:439
 AliEsdSkimTask.cxx:440
 AliEsdSkimTask.cxx:441
 AliEsdSkimTask.cxx:442
 AliEsdSkimTask.cxx:443
 AliEsdSkimTask.cxx:444
 AliEsdSkimTask.cxx:445
 AliEsdSkimTask.cxx:446
 AliEsdSkimTask.cxx:447
 AliEsdSkimTask.cxx:448
 AliEsdSkimTask.cxx:449
 AliEsdSkimTask.cxx:450
 AliEsdSkimTask.cxx:451
 AliEsdSkimTask.cxx:452
 AliEsdSkimTask.cxx:453
 AliEsdSkimTask.cxx:454
 AliEsdSkimTask.cxx:455
 AliEsdSkimTask.cxx:456