ROOT logo
/*************************************************************************
* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
*                                                                        *
* Author: The ALICE Off-line Project.                                    *
* Contributors are mentioned in the code where appropriate.              *
*                                                                        *
* Permission to use, copy, modify and distribute this software and its   *
* documentation strictly for non-commercial purposes is hereby granted   *
* without fee, provided that the above copyright notice appears in all   *
* copies and that both the copyright notice and this permission notice   *
* appear in the supporting documentation. The authors make no claims     *
* about the suitability of this software for any purpose. It is          *
* provided "as is" without express or implied warranty.                  *
**************************************************************************/

///////////////////////////////////////////////////////////////////////////
//                                                                       //
//    Analysis task for creating a reduced data tree                     //
//                                                                       //
///////////////////////////////////////////////////////////////////////////


#include <TChain.h>
#include <TH1D.h>
#include <TFile.h>

#include <AliCFContainer.h>
#include <AliInputEventHandler.h>
#include <AliESDInputHandler.h>
#include <AliAODInputHandler.h>
#include <AliAnalysisManager.h>
#include <AliVEvent.h>
#include <AliESDEvent.h>
#include <AliAODEvent.h>
#include <AliESDHeader.h>
#include <AliAODHeader.h>
#include <AliAODTrack.h>
//#include <AliAODForwardMult.h>
//#include <AliForwardUtil.h>
#include <AliTriggerAnalysis.h>
#include <AliESDtrackCuts.h>
#include <AliVZDC.h>
#include <AliESDv0.h>
#include <AliESDv0Cuts.h>
#include <AliESDv0KineCuts.h>
#include <AliESDFMD.h>
#include <AliVCluster.h>
#include <AliAODTracklets.h>
#include <AliMultiplicity.h>
#include <AliPIDResponse.h>
#include "AliDielectron.h"
#include "AliDielectronHistos.h"
#include "AliDielectronMC.h"
#include "AliDielectronVarManager.h"
#include "AliFlowTrackCuts.h"
#include "AliFlowBayesianPID.h"

#include "AliReducedEvent.h"
#include "AliAnalysisTaskReducedTree.h"

#include <iostream>
using std::cout;
using std::endl;

ClassImp(AliAnalysisTaskReducedTree)


//_________________________________________________________________________________
AliAnalysisTaskReducedTree::AliAnalysisTaskReducedTree() :
  AliAnalysisTaskSE(),
  fListDielectron(),
  fListHistos(),
  fSelectPhysics(kFALSE),
  fTriggerMask(AliVEvent::kAny),
  fRejectPileup(kFALSE),
  fFillTrackInfo(kTRUE),
  fFillDielectronInfo(kTRUE),
  fFillV0Info(kTRUE),
  fFillGammaConversions(kTRUE),
  fFillK0s(kTRUE),
  fFillLambda(kTRUE),
  fFillALambda(kTRUE),
  fFillCaloClusterInfo(kTRUE),
  fFillFMDSectorInfo(kFALSE),
  fFillFMDChannelInfo(kFALSE),
  //fFillCorrectedFMDInfo(kTRUE),
  fFillFriendInfo(kTRUE),
  fEventFilter(0x0),
  fTrackFilter(0x0),
  fFlowTrackFilter(0x0),
  fK0sCuts(0x0),
  fLambdaCuts(0x0),
  fGammaConvCuts(0x0),
  fK0sPionCuts(0x0),
  fLambdaProtonCuts(0x0),
  fLambdaPionCuts(0x0),
  fGammaElectronCuts(0x0),
  fV0OpenCuts(0x0),
  fV0StrongCuts(0x0),
  fK0sMassRange(),
  fLambdaMassRange(),
  fGammaMassRange(),
  fV0Histos(0x0),
  fTreeFile(0x0),
  fTree(0x0),
  fFriendTreeFile(0x0),
  fFriendTree(0x0),
  fReducedEvent(0x0),
  fReducedEventFriend(0x0)
{
  //
  // Constructor
  //
}

//_________________________________________________________________________________
AliAnalysisTaskReducedTree::AliAnalysisTaskReducedTree(const char *name) :
  AliAnalysisTaskSE(name),
  fListDielectron(),
  fListHistos(),
  fSelectPhysics(kFALSE),
  fTriggerMask(AliVEvent::kAny),
  fRejectPileup(kFALSE),
  fFillTrackInfo(kTRUE),
  fFillDielectronInfo(kTRUE),
  fFillV0Info(kTRUE),
  fFillGammaConversions(kTRUE),
  fFillK0s(kTRUE),
  fFillLambda(kTRUE),
  fFillALambda(kTRUE),
  fFillCaloClusterInfo(kTRUE),
  fFillFMDSectorInfo(kFALSE),
  fFillFMDChannelInfo(kFALSE),
  //fFillCorrectedFMDInfo(kTRUE),
  fFillFriendInfo(kTRUE),
  fEventFilter(0x0),
  fTrackFilter(0x0),
  fFlowTrackFilter(0x0),
  fK0sCuts(0x0),
  fLambdaCuts(0x0),
  fGammaConvCuts(0x0),
  fK0sPionCuts(0x0),
  fLambdaProtonCuts(0x0),
  fLambdaPionCuts(0x0),
  fGammaElectronCuts(0x0),
  fV0OpenCuts(0x0),
  fV0StrongCuts(0x0),
  fK0sMassRange(),
  fLambdaMassRange(),
  fGammaMassRange(),
  fV0Histos(0x0),
  fTreeFile(0x0),
  fTree(0x0),
  fFriendTreeFile(0x0),
  fFriendTree(0x0),
  fReducedEvent(0x0),
  fReducedEventFriend(0x0)
{
  //
  // Constructor
  //
  fK0sMassRange[0] = 0.4; fK0sMassRange[1] = 0.6;
  fLambdaMassRange[0] = 1.08; fLambdaMassRange[1] = 1.15;
  fGammaMassRange[0] = 0.0; fGammaMassRange[1] = 0.1;
  
  DefineInput(0,TChain::Class());
  //DefineInput(2,AliAODForwardMult::Class());
  DefineOutput(1, TList::Class());   // QA histograms
  DefineOutput(2, TTree::Class());   // reduced information tree
  //if(fFillFriendInfo) DefineOutput(3, TTree::Class());   // reduced information tree with friends
  //DefineOutput(2, TTree::Class());   // reduced information tree with friends
  //DefineOutput(2, TTree::Class());   // reduced information tree  

  fListHistos.SetName("QAhistograms");
  fListDielectron.SetOwner();
  fListHistos.SetOwner(kFALSE);
}


//_________________________________________________________________________________
void AliAnalysisTaskReducedTree::UserCreateOutputObjects()
{
  //
  // Add all histogram manager histogram lists to the output TList
  //

  if (!fListHistos.IsEmpty() || fTree || fFriendTree) return; //already initialised

  TIter nextDie(&fListDielectron);
  AliDielectron *die=0;
  while ( (die=static_cast<AliDielectron*>(nextDie())) ){
    die->Init();
    if (die->GetHistogramList()) fListHistos.Add(const_cast<THashList*>(die->GetHistogramList()));
  }  
  if(fV0Histos) fListHistos.Add(const_cast<THashList*>(fV0Histos->GetHistogramList()));

  if(fFillFriendInfo) {
    fFriendTree = new TTree("DstFriendTree","Reduced ESD information");
    fReducedEventFriend = new AliReducedEventFriend();
    fFriendTree->Branch("Event",&fReducedEventFriend,16000,99);
  }
  
  //fTreeFile = new TFile("dstTree.root", "RECREATE");
  OpenFile(2);
  fTree = new TTree("DstTree","Reduced ESD information");
  fReducedEvent = new AliReducedEvent("DstEvent");
  fTree->Branch("Event",&fReducedEvent,16000,99);
    
  PostData(1, &fListHistos);
  PostData(2, fTree);
  //if(fFillFriendInfo) PostData(3, fFriendTree);
  //PostData(2, fFriendTree);
  //PostData(1, fTree);
}

//_________________________________________________________________________________
void AliAnalysisTaskReducedTree::UserExec(Option_t *)
{
  //
  // Main loop. Called for every event
  //
  AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
  Bool_t isESD=man->GetInputEventHandler()->IsA()==AliESDInputHandler::Class();
  Bool_t isAOD=man->GetInputEventHandler()->IsA()==AliAODInputHandler::Class();
  
  AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
  if (!inputHandler) return;
  
  if ( inputHandler->GetPIDResponse() ){
    AliDielectronVarManager::SetPIDResponse( inputHandler->GetPIDResponse() );
  } else {
    AliFatal("This task needs the PID response attached to the input event handler!");
  }

  // Was event selected ?
  UInt_t isSelected = AliVEvent::kAny;
  if(fSelectPhysics && inputHandler){
    if((isESD && inputHandler->GetEventSelection()) || isAOD){
      isSelected = inputHandler->IsEventSelected();
      isSelected&=fTriggerMask;
    }
  }

  if(isSelected==0) {
    return;
  }
/*
  cout<<"get AOD"<<endl;
  
  AliAODEvent* aodEvent = AliForwardUtil::GetAODEvent(this);
  if (!aodEvent) return;
  cout<<"got AOD"<<endl;

  TObject* obj = aodEvent->FindListObject("Forward");  
  if (!obj) return;
  cout<<"got AOD forward"<<endl;

  AliAODForwardMult* aodForward = static_cast<AliAODForwardMult*>(obj);

   //if (!aodForward->CheckEvent(mask,ipZmin,ipZmax,cMin,cMax)) return 0;

  Double_t ret = 0;
  const TH2D& d2Ndetadphi = aodForward->GetHistogram();


  cout<<d2Ndetadphi.GetXaxis()->GetNbins()<<endl;
*/

  // FMD corrections
//  AliAODEvent* aodEvent;
//  TObject* obj;
//  AliAODForwardMult* aodForward=NULL;
//
//  if(fFillCorrectedFMDInfo){
//  aodEvent = AliForwardUtil::GetAODEvent(this);
//  if (!aodEvent) return;
//
//  obj = aodEvent->FindListObject("Forward");  
//  if (!obj) return;}
//
//  aodForward = static_cast<AliAODForwardMult*>(obj);
//
//   //if (!aodForward->CheckE	vent(fTriggerMask,ipZmin,ipZmax,cMin,cMax)) return 0;
//
//  const TH2D& d2Ndetadphi = aodForward->GetHistogram();
  
  
  // fill event histograms before event filter
  Double_t values[AliDielectronVarManager::kNMaxValues]={0};
  AliDielectronVarManager::Fill(InputEvent(),values);
  
  TIter nextDie(&fListDielectron);
  AliDielectron *die=0;
  while ( (die=static_cast<AliDielectron*>(nextDie())) ){
    AliDielectronHistos *h=die->GetHistoManager();
    if (h){
      if (h->GetHistogramList()->FindObject("Event_noCuts"))
        h->FillClass("Event_noCuts",AliDielectronVarManager::kNMaxValues,values);
    }
  }
  nextDie.Reset();

  //event filter
  if (fEventFilter) {
    if (!fEventFilter->IsSelected(InputEvent())) return;
  }
  
  //pileup
  if (fRejectPileup){
    if (InputEvent()->IsPileupFromSPD(3,0.8,3.,2.,5.)) return;
  }

  //bz for AliKF
  Double_t bz = InputEvent()->GetMagneticField();
  AliKFParticle::SetField( bz );

  //Process event in all AliDielectron instances
  fReducedEvent->ClearEvent();
  if(fFillFriendInfo) fReducedEventFriend->ClearEvent();
  FillEventInfo();
  //if(fFillCorrectedFMDInfo) FillCorrectedFMDInfo(d2Ndetadphi);   //Fill corrected FMD info
  if(fFillV0Info) FillV0PairInfo();
  
  Short_t idie=0;
  if(fFillDielectronInfo) {
    while((die=static_cast<AliDielectron*>(nextDie()))){
      die->Process(InputEvent());
      FillDielectronPairInfo(die, idie);
      ++idie;
    }
  }
  nextDie.Reset();
  
  if(fFillTrackInfo) FillTrackInfo();
  if(fFillFriendInfo) FillFriendEventInfo();              // Q-vector calculation
  
  fTree->Fill();
  if(fFillFriendInfo) fFriendTree->Fill();
      
  // if there are candidate pairs, add the information to the reduced tree
  PostData(1, &fListHistos);
  PostData(2, fTree);
  //if(fFillFriendInfo) PostData(3, fFriendTree);
  //PostData(2, fFriendTree);
  //PostData(2, fTree);
}


//_________________________________________________________________________________
void AliAnalysisTaskReducedTree::FillEventInfo() 
{
  //
  // fill reduced event information
  //
  AliVEvent* event = InputEvent();
  // Was event selected ?
  AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
  Bool_t isESD = (event->IsA()==AliESDEvent::Class());
  Bool_t isAOD = (event->IsA()==AliAODEvent::Class());
  
  AliESDEvent* esdEvent = 0x0;
  if(isESD) esdEvent = static_cast<AliESDEvent*>(event);
  AliAODEvent* aodEvent = 0x0;
  if(isAOD) aodEvent = static_cast<AliAODEvent*>(event);
  
  AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
  UInt_t isSelected = AliVEvent::kAny;
  if(inputHandler){
    if((isESD && inputHandler->GetEventSelection()) || isAOD){
      isSelected = inputHandler->IsEventSelected();
      isSelected&=fTriggerMask;
    }
  }
  Double_t values[AliDielectronVarManager::kNMaxValues];
  AliDielectronVarManager::Fill(event, values);
  
  fReducedEvent->fRunNo       = event->GetRunNumber();
  fReducedEvent->fBC          = event->GetBunchCrossNumber();
  fReducedEvent->fEventType   = event->GetEventType();
  fReducedEvent->fTriggerMask = event->GetTriggerMask();
  fReducedEvent->fIsPhysicsSelection = (isSelected!=0 ? kTRUE : kFALSE);
  fReducedEvent->fIsSPDPileup = event->IsPileupFromSPD(3,0.8,3.,2.,5.);
  fReducedEvent->fIsSPDPileupMultBins = event->IsPileupFromSPDInMultBins();
  AliVVertex* eventVtx = 0x0;
  if(isESD) eventVtx = const_cast<AliESDVertex*>(esdEvent->GetPrimaryVertexTracks());
  if(isAOD) eventVtx = const_cast<AliAODVertex*>(aodEvent->GetPrimaryVertex());
  if(eventVtx) {
    fReducedEvent->fVtx[0] = (isESD ? ((AliESDVertex*)eventVtx)->GetX() : ((AliAODVertex*)eventVtx)->GetX());
    fReducedEvent->fVtx[1] = (isESD ? ((AliESDVertex*)eventVtx)->GetY() : ((AliAODVertex*)eventVtx)->GetY());
    fReducedEvent->fVtx[2] = (isESD ? ((AliESDVertex*)eventVtx)->GetZ() : ((AliAODVertex*)eventVtx)->GetZ());
    fReducedEvent->fNVtxContributors = eventVtx->GetNContributors();
  }
  if(isESD) {
    eventVtx = const_cast<AliESDVertex*>(esdEvent->GetPrimaryVertexTPC());
    fReducedEvent->fEventNumberInFile = esdEvent->GetEventNumberInFile();
    fReducedEvent->fL0TriggerInputs = esdEvent->GetHeader()->GetL0TriggerInputs();
    fReducedEvent->fL1TriggerInputs = esdEvent->GetHeader()->GetL1TriggerInputs();
    fReducedEvent->fL2TriggerInputs = esdEvent->GetHeader()->GetL2TriggerInputs();
    fReducedEvent->fIRIntClosestIntMap[0] = esdEvent->GetHeader()->GetIRInt1ClosestInteractionMap();
    fReducedEvent->fIRIntClosestIntMap[1] = esdEvent->GetHeader()->GetIRInt2ClosestInteractionMap();
    if(eventVtx) {
      fReducedEvent->fVtxTPC[0] = ((AliESDVertex*)eventVtx)->GetX();
      fReducedEvent->fVtxTPC[1] = ((AliESDVertex*)eventVtx)->GetY();
      fReducedEvent->fVtxTPC[2] = ((AliESDVertex*)eventVtx)->GetZ();
      fReducedEvent->fNVtxTPCContributors = eventVtx->GetNContributors();
    }
    fReducedEvent->fTimeStamp     = esdEvent->GetTimeStamp();
    fReducedEvent->fNpileupSPD    = esdEvent->GetNumberOfPileupVerticesSPD();
    fReducedEvent->fNpileupTracks = esdEvent->GetNumberOfPileupVerticesTracks();
    fReducedEvent->fNPMDtracks    = esdEvent->GetNumberOfPmdTracks();
    fReducedEvent->fNTRDtracks    = esdEvent->GetNumberOfTrdTracks();
    fReducedEvent->fNTRDtracklets = esdEvent->GetNumberOfTrdTracklets();
    
    AliESDZDC* zdc = esdEvent->GetESDZDC();
    if(zdc) {
      for(Int_t i=0; i<5; ++i)  fReducedEvent->fZDCnEnergy[i]   = zdc->GetZN1TowerEnergy()[i];
      for(Int_t i=5; i<10; ++i)  fReducedEvent->fZDCnEnergy[i]   = zdc->GetZN2TowerEnergy()[i-5];
      for(Int_t i=0; i<5; ++i)  fReducedEvent->fZDCpEnergy[i]   = zdc->GetZP1TowerEnergy()[i];
      for(Int_t i=5; i<10; ++i)  fReducedEvent->fZDCpEnergy[i]   = zdc->GetZP2TowerEnergy()[i-5];
    }
  }
  if(isAOD) {
    AliAODHeader * header = dynamic_cast<AliAODHeader*>(aodEvent->GetHeader());
    if(!header) AliFatal("Not a standard AOD");


    fReducedEvent->fIRIntClosestIntMap[0] = header->GetIRInt1ClosestInteractionMap();
    fReducedEvent->fIRIntClosestIntMap[1] = header->GetIRInt2ClosestInteractionMap();
    fReducedEvent->fEventNumberInFile = header->GetEventNumberESDFile();
    fReducedEvent->fL0TriggerInputs = header->GetL0TriggerInputs();
    fReducedEvent->fL1TriggerInputs = header->GetL1TriggerInputs();
    fReducedEvent->fL2TriggerInputs = header->GetL2TriggerInputs();
    fReducedEvent->fTimeStamp     = 0;
    fReducedEvent->fNpileupSPD    = aodEvent->GetNumberOfPileupVerticesSPD();
    fReducedEvent->fNpileupTracks = aodEvent->GetNumberOfPileupVerticesTracks();
    fReducedEvent->fNPMDtracks    = aodEvent->GetNPmdClusters();
    fReducedEvent->fNTRDtracks    = 0;
    fReducedEvent->fNTRDtracklets = 0;
    
    AliAODZDC* zdc = aodEvent->GetZDCData();
    if(zdc) {
      for(Int_t i=0; i<5; ++i)  fReducedEvent->fZDCnEnergy[i]   = zdc->GetZNATowerEnergy()[i];
      for(Int_t i=5; i<10; ++i)  fReducedEvent->fZDCnEnergy[i]   = zdc->GetZNCTowerEnergy()[i-5];
      for(Int_t i=0; i<5; ++i)  fReducedEvent->fZDCpEnergy[i]   = zdc->GetZPATowerEnergy()[i];
      for(Int_t i=5; i<10; ++i)  fReducedEvent->fZDCpEnergy[i]   = zdc->GetZPCTowerEnergy()[i-5];
    }
  }
  
  // Fill TZERO information
  if(isESD) {
    const AliESDTZERO* tzero = esdEvent->GetESDTZERO();
    if(tzero) {
      fReducedEvent->fT0start = tzero->GetT0();
      fReducedEvent->fT0zVertex = tzero->GetT0zVertex();
      for(Int_t i = 0;i<24;i++)
        fReducedEvent->fT0amplitude[i] = tzero->GetT0amplitude()[i];
      for(Int_t i = 0;i<3;i++)
        fReducedEvent->fT0TOF[i] = tzero->GetT0TOF()[i];
      for(Int_t i = 0;i<3;i++)
        fReducedEvent->fT0TOFbest[i] = tzero->GetT0TOFbest()[i];
      fReducedEvent->fT0pileup = tzero->GetPileupFlag();
      fReducedEvent->fT0sattelite = tzero->GetSatellite();
    }
  }
  if(isAOD) {
    AliAODTZERO* tzero = aodEvent->GetTZEROData();
    if(tzero) {
      fReducedEvent->fT0start = -999.;   // not available
      fReducedEvent->fT0zVertex = tzero->GetT0zVertex();
      for(Int_t i = 0;i<26;i++)
        fReducedEvent->fT0amplitude[i] = tzero->GetAmp(i);
      for(Int_t i = 0;i<3;i++)
        fReducedEvent->fT0TOF[i] = tzero->GetT0TOF()[i];
      for(Int_t i = 0;i<3;i++)
        fReducedEvent->fT0TOFbest[i] = tzero->GetT0TOFbest()[i];
      fReducedEvent->fT0pileup = tzero->GetPileupFlag();
      fReducedEvent->fT0sattelite = tzero->GetSatellite();
    }
  }
  
  if(fFillFMDChannelInfo&&isESD) fReducedEvent->fIsFMDReduced = kFALSE;
  if((fFillFMDSectorInfo||fFillFMDChannelInfo)&&isESD) FillFMDInfo();
  
  AliCentrality *centrality = event->GetCentrality();
  if(centrality) {
    fReducedEvent->fCentrality[0] = centrality->GetCentralityPercentile("V0M");
    fReducedEvent->fCentrality[1] = centrality->GetCentralityPercentile("CL1");
    fReducedEvent->fCentrality[2] = centrality->GetCentralityPercentile("TRK");
    fReducedEvent->fCentrality[3] = centrality->GetCentralityPercentile("ZEMvsZDC");    
    fReducedEvent->fCentQuality   = centrality->GetQuality();
  }
  
  //cout << "event vtxZ/cent: " << fReducedEvent->fVtx[2] << "/" << fReducedEvent->fCentrality[0] << endl;
  
  fReducedEvent->fNtracks[0] = event->GetNumberOfTracks();
  fReducedEvent->fSPDntracklets = GetSPDTrackletMultiplicity(event, -1.0, 1.0);
  for(Int_t ieta=0; ieta<32; ++ieta)
    fReducedEvent->fSPDntrackletsEta[ieta] = GetSPDTrackletMultiplicity(event, -1.6+0.1*ieta, -1.6+0.1*(ieta+1));
  
  AliVVZERO* vzero = event->GetVZEROData();
  for(Int_t i=0;i<64;++i) 
    fReducedEvent->fVZEROMult[i] = vzero->GetMultiplicity(i);  
  
  // EMCAL/PHOS clusters
  if(fFillCaloClusterInfo) FillCaloClusters();
  
  // TODO FMD multiplicities
  
}


//_________________________________________________________________________________
void AliAnalysisTaskReducedTree::FillCaloClusters() {
  //
  // Fill info about the calorimeter clusters
  //
  AliVEvent* event = InputEvent();
  Int_t nclusters = event->GetNumberOfCaloClusters();

  fReducedEvent->fNCaloClusters = 0;
  for(Int_t iclus=0; iclus<nclusters; ++iclus) {
    AliVCluster* cluster = event->GetCaloCluster(iclus);
    
    TClonesArray& clusters = *(fReducedEvent->fCaloClusters);
    AliReducedCaloCluster *reducedCluster=new(clusters[fReducedEvent->fNCaloClusters]) AliReducedCaloCluster();
    
    reducedCluster->fType    = (cluster->IsEMCAL() ? AliReducedCaloCluster::kEMCAL : AliReducedCaloCluster::kPHOS);
    reducedCluster->fEnergy  = cluster->E();
    reducedCluster->fTrackDx = cluster->GetTrackDx();
    reducedCluster->fTrackDz = cluster->GetTrackDz();
    reducedCluster->fM20     = cluster->GetM20();
    reducedCluster->fM02     = cluster->GetM02();
    reducedCluster->fDispersion = cluster->GetDispersion();
    fReducedEvent->fNCaloClusters += 1;
  }  // end loop over clusters
}


//_________________________________________________________________________________
void AliAnalysisTaskReducedTree::FillFriendEventInfo() {
  //
  // Fill event info into the friend tree
  //
  // Add here calculated Q-vector components from all detectors
  for(Int_t idet=0; idet<AliReducedEventFriend::kNdetectors; ++idet) {
    fReducedEvent->GetQvector(fReducedEventFriend->fQvector[idet], idet);
    for(Int_t ih=0; ih<fgkNMaxHarmonics; ++ih)
      fReducedEventFriend->fEventPlaneStatus[idet][ih] = AliReducedEventFriend::kRaw;
  }
}


//_________________________________________________________________________________
void AliAnalysisTaskReducedTree::FillFMDInfo()
{
  //
  // fill reduced FMD information
  //
  AliVEvent* event = InputEvent();
  Bool_t isESD = (event->IsA()==AliESDEvent::Class());

  if(!isESD) return;

  AliESDEvent* esdEvent = 0x0;
  if(isESD) esdEvent = static_cast<AliESDEvent*>(event);

  AliESDFMD* esdFmd = esdEvent->GetFMDData();
  //const AliFMDFloatMap multMap = esdFmd->MultiplicityMap();
  //const AliFMDFloatMap etaMap  = esdFmd->EtaMap();

  //esdFmd->Print();
  Int_t nFMD=0;
  Int_t id=-1;
  Int_t maxDet=3;
  Int_t maxRing=2;
  Int_t maxSector;
  Int_t maxStrip;
  Float_t m=0.0;
  Double_t phi;
  Char_t ring;
  Float_t fmdMult;
  Float_t msum=0;
  UShort_t fmdDet=0;
  Int_t phiBin=0;
    
  for(UShort_t det = 1; det <= maxDet; ++det) {
    (det == 1 ? maxRing=1 : maxRing=2);
    for(UShort_t ir = 0; ir < maxRing; ++ir) {
      ring = (ir == 0 ? 'I' : 'O');
      (ir == 0 ? maxSector=20 : maxSector=40);
      (ir == 0 ? maxStrip=512 : maxStrip=256);
      nFMD=-1;
      for(UShort_t sec = 0; sec < maxSector; ++sec) {
        phi  =  esdFmd->Phi(det, ring, sec, 0)/180.*TMath::Pi();
        phiBin = Int_t (phi/2/TMath::Pi()*maxSector);
	fmdMult = 0;
        for(UShort_t str = 0; str < maxStrip; ++str) {
          ++id;
          m  =  esdFmd->Multiplicity(det, ring, sec, str);
	  //cout << "det/ir/sec/str/m :: " << det << "/" << ir << "/" << sec << "/" << str << "/" << m << endl;
          if(fFillFMDChannelInfo) 
	    if(m<1.e-6) continue;
          if(m ==  AliESDFMD::kInvalidMult) m=0;
          fmdMult += m;
          msum+=m;
          ++nFMD;
            
	  if(fFillFMDChannelInfo){
            if(m>15.) m=15.;
            m = UShort_t(m*4369+0.5);
            TClonesArray& fmd = *(fReducedEvent->GetFMD(fmdDet));
            AliReducedFMD   *reducedFMD=new(fmd[nFMD]) AliReducedFMD();
	    fReducedEvent->fNFMDchannels[fmdDet] += 1;
            reducedFMD->fMultiplicity     =  m;    
            //reducedFMD->fEta              =  esdFmd->Eta(det, ring, 0, str);
            reducedFMD->fId               =  id;
          }  
        }  // end loop over strips
        
        if(fFillFMDSectorInfo) {
          TClonesArray& fmd = *(fReducedEvent->GetFMD(fmdDet));
          AliReducedFMD   *reducedFMD=new(fmd[phiBin]) AliReducedFMD();
          reducedFMD->fMultiplicity     = fmdMult;
	  fReducedEvent->fNFMDchannels[fmdDet] += 1;
          //cout<<sec<<"  "<<fmdMult<<endl;
          fmdMult=0.0;
        }
      }  // end loop over sectors      
      
      fReducedEvent->fFMDtotalMult[fmdDet] = msum;
      msum=0.0;
      ++fmdDet;
      id=-1;
    }  // end loop over rings
  } // end loop over detectors
}

////_________________________________________________________________________________
//void AliAnalysisTaskReducedTree::FillCorrectedFMDInfo(const TH2D& fmdhist) 
//{
//
//
//Int_t nEta = fmdhist.GetXaxis()->GetNbins();
//Int_t nPhi = fmdhist.GetYaxis()->GetNbins();
////Int_t nBins= fmdhist.GetNbins();
//Float_t eta=0.0;
//Float_t phi=0.0;
//Float_t mult=0.0;
//
//
//Int_t nFMD=0;
////fReducedEvent->fNCorFmdChannels = 0;
//for (Int_t e = 1; e <= nEta; e++) {
//    eta = fmdhist.GetXaxis()->GetBinCenter(e);
//    for (Int_t p = 1; p <= nPhi; p++) {
//         phi = fmdhist.GetYaxis()->GetBinCenter(p);
//         mult = fmdhist.GetBinContent(e, p);
//  	 //TClonesArray& Corfmd = *(fReducedEvent->fCorFMD);
//  	 //AliReducedFMD *reducedCorFMD=new(Corfmd[nFMD]) AliReducedCorFMD();
//    std::cout<<mult<<"  "<<eta<<"  "<<phi<<std::endl;
//	}
//
//	//fReducedEvent->fNCorFmdChannels += 1;
//	nFMD += 1;
////reducedFMD->fCorMultiplicity = mult;
////reducedFMD->fCorEta          = eta;
////reducedFMD->fCorPhi          = phi;
//
//
//}
//
//
//}


//_________________________________________________________________________________
void AliAnalysisTaskReducedTree::FillTrackInfo() 
{
  //
  // fill reduced track information
  //
  AliVEvent* event = InputEvent();
  Bool_t isESD = (event->IsA()==AliESDEvent::Class());
  Bool_t isAOD = (event->IsA()==AliAODEvent::Class());

  AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
  AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
  AliPIDResponse* pidResponse = inputHandler->GetPIDResponse();
  
  // find all the tracks which belong to a V0 stored in the reduced event
  UShort_t trackIdsV0[4][20000]={{0}};
  UShort_t trackIdsPureV0[4][20000]={{0}};
  Int_t nV0LegsTagged[4] = {0}; Int_t nPureV0LegsTagged[4] = {0};
  Bool_t leg1Found[4]; Bool_t leg2Found[4];
  for(Int_t iv0=0;iv0<fReducedEvent->fNV0candidates[1];++iv0) {
    AliReducedPair* pair = fReducedEvent->GetV0Pair(iv0);
    if(!pair) continue;
    Int_t pairId = 0; Bool_t isPureV0 = kFALSE;
    if(pair->fCandidateId==AliReducedPair::kGammaConv) {
      pairId=0;
      if(pair->IsPureV0Gamma()) isPureV0 = kTRUE;
    }
    if(pair->fCandidateId==AliReducedPair::kK0sToPiPi) {
      pairId=1;
      if(pair->IsPureV0K0s()) isPureV0 = kTRUE;
    }
    if(pair->fCandidateId==AliReducedPair::kLambda0ToPPi) {
      pairId=2;
      if(pair->IsPureV0Lambda()) isPureV0 = kTRUE;
    }
    if(pair->fCandidateId==AliReducedPair::kALambda0ToPPi) {
      pairId=3;
      if(pair->IsPureV0ALambda()) isPureV0 = kTRUE;
    }
    
    leg1Found[pairId] = kFALSE; leg2Found[pairId] = kFALSE;
    for(Int_t it=0;it<nV0LegsTagged[pairId];++it) {
      if(trackIdsV0[pairId][it]==pair->fLegIds[0]) leg1Found[pairId]=kTRUE;
      if(trackIdsV0[pairId][it]==pair->fLegIds[1]) leg2Found[pairId]=kTRUE;
    }
    // if the legs of this V0 were not already stored then add them now to the list
    if(!leg1Found[pairId]) {trackIdsV0[pairId][nV0LegsTagged[pairId]] = pair->fLegIds[0]; ++nV0LegsTagged[pairId];}
    if(!leg2Found[pairId]) {trackIdsV0[pairId][nV0LegsTagged[pairId]] = pair->fLegIds[1]; ++nV0LegsTagged[pairId];}
    
    if(isPureV0) {
      leg1Found[pairId] = kFALSE; leg2Found[pairId] = kFALSE;
      for(Int_t it=0;it<nPureV0LegsTagged[pairId];++it) {
        if(trackIdsPureV0[pairId][it]==pair->fLegIds[0]) leg1Found[pairId]=kTRUE;
        if(trackIdsPureV0[pairId][it]==pair->fLegIds[1]) leg2Found[pairId]=kTRUE;
      }
      // if the legs of this pure V0 were not already stored then add them now to the list
      if(!leg1Found[pairId]) {trackIdsPureV0[pairId][nPureV0LegsTagged[pairId]] = pair->fLegIds[0]; ++nPureV0LegsTagged[pairId];}
      if(!leg2Found[pairId]) {trackIdsPureV0[pairId][nPureV0LegsTagged[pairId]] = pair->fLegIds[1]; ++nPureV0LegsTagged[pairId];}
    }
  }
  
  // find all the tracks which belong to a stored dielectron pair
  UShort_t trackIdsDiele[20000]={0};
  Int_t nDieleLegsTagged = 0;
  for(Int_t idie=0;idie<fReducedEvent->NDielectrons();++idie) {
    AliReducedPair* pair = fReducedEvent->GetDielectronPair(idie);
    leg1Found[0]=kFALSE; leg2Found[0]=kFALSE;
    for(Int_t it=0; it<nDieleLegsTagged; ++it) {
      if(trackIdsDiele[it]==pair->fLegIds[0]) leg1Found[0]=kTRUE;
      if(trackIdsDiele[it]==pair->fLegIds[1]) leg2Found[0]=kTRUE;
    }
    // if the legs of this dielectron were not already stored then add them now to the list
    if(!leg1Found[0]) {trackIdsDiele[nDieleLegsTagged] = pair->fLegIds[0]; ++nDieleLegsTagged;}
    if(!leg2Found[0]) {trackIdsDiele[nDieleLegsTagged] = pair->fLegIds[1]; ++nDieleLegsTagged;}
  }
    
  AliESDtrack* esdTrack=0;
  AliAODTrack* aodTrack=0;
  Int_t ntracks=event->GetNumberOfTracks();
  Int_t trackId = 0; 
  Bool_t usedForV0[4] = {kFALSE}; 
  Bool_t usedForPureV0[4] = {kFALSE};
  Bool_t usedForV0Or = kFALSE;
  Bool_t usedForDielectron = kFALSE;
  for(Int_t itrack=0; itrack<ntracks; ++itrack){
    AliVParticle *particle=event->GetTrack(itrack);
    if(isESD) {
      esdTrack=static_cast<AliESDtrack*>(particle);
      trackId = esdTrack->GetID();
    }
    if(isAOD) {
      aodTrack=static_cast<AliAODTrack*>(particle);
      trackId = aodTrack->GetID();
    }
    // check whether this track belongs to a V0 stored in the reduced event
    usedForV0Or = kFALSE;
    for(Int_t i=0; i<4; ++i) {
      usedForV0[i] = kFALSE;
      for(Int_t ii=0; ii<nV0LegsTagged[i]; ++ii) {
        if(UShort_t(trackId)==trackIdsV0[i][ii]) {
          usedForV0[i] = kTRUE;
          //cout << "track " << trackId << " used for V0 type " << i << endl;
          break;
        }
      }
      usedForV0Or = usedForV0Or || usedForV0[i];
      usedForPureV0[i] = kFALSE;
      for(Int_t ii=0; ii<nPureV0LegsTagged[i]; ++ii) {
        if(UShort_t(trackId)==trackIdsPureV0[i][ii]) {
          usedForPureV0[i] = kTRUE;
          //cout << "track " << trackId << " used for pure V0 type " << i << endl;
          break;
        }
      }
    }
    // check whether this track belongs to a dielectron stored in the reduced event
    usedForDielectron = kFALSE;
    for(Int_t ii=0; ii<nDieleLegsTagged; ++ii) {
      if(UShort_t(trackId)==trackIdsDiele[ii]) {
        usedForDielectron = kTRUE;
        break;
      }
    }
    
    ULong_t status = (isESD ? esdTrack->GetStatus() : aodTrack->GetStatus());
    //cout << "TRACK" << endl;
    for(Int_t ibit=0; ibit<32; ++ibit) {
      if(status & (ULong_t(1)<<ibit)) {
        //cout << "bit " << ibit << endl;
        fReducedEvent->fNtracksPerTrackingFlag[ibit] += 1;
      }
    }
    
    //apply track cuts
    if(!usedForV0Or && !usedForDielectron && fTrackFilter && !fTrackFilter->IsSelected(particle)) continue;
    //cout << "storing track " << trackId << endl;
    
    TClonesArray& tracks = *(fReducedEvent->fTracks);
    AliReducedTrack *reducedParticle=new(tracks[fReducedEvent->fNtracks[1]]) AliReducedTrack();
        
    Double_t values[AliDielectronVarManager::kNMaxValues];
    AliDielectronVarManager::Fill(particle, values);
    reducedParticle->fStatus        = status;//(ULong_t)values[AliDielectronVarManager::kTrackStatus];
    reducedParticle->fGlobalPhi     = values[AliDielectronVarManager::kPhi];
    reducedParticle->fGlobalPt      = values[AliDielectronVarManager::kPt]*values[AliDielectronVarManager::kCharge];
    reducedParticle->fGlobalEta     = values[AliDielectronVarManager::kEta];    
    reducedParticle->fMomentumInner = values[AliDielectronVarManager::kPIn];
    reducedParticle->fDCA[0]        = values[AliDielectronVarManager::kImpactParXY];
    reducedParticle->fDCA[1]        = values[AliDielectronVarManager::kImpactParZ];
    reducedParticle->fTrackLength   = values[AliDielectronVarManager::kTrackLength];
    
    reducedParticle->fITSclusterMap = (UChar_t)values[AliDielectronVarManager::kITSclusterMap];
    reducedParticle->fITSsignal     = values[AliDielectronVarManager::kITSsignal];
    reducedParticle->fITSnSig[0]    = values[AliDielectronVarManager::kITSnSigmaEle];
    reducedParticle->fITSnSig[1]    = values[AliDielectronVarManager::kITSnSigmaPio];
    reducedParticle->fITSnSig[2]    = values[AliDielectronVarManager::kITSnSigmaKao];
    reducedParticle->fITSnSig[3]    = values[AliDielectronVarManager::kITSnSigmaPro];
    reducedParticle->fITSchi2       = values[AliDielectronVarManager::kITSchi2Cl];
    
    reducedParticle->fTPCNcls      = (UChar_t)values[AliDielectronVarManager::kNclsTPC];
    reducedParticle->fTPCNclsF     = (UChar_t)values[AliDielectronVarManager::kNFclsTPC];
    reducedParticle->fTPCNclsIter1 = (UChar_t)values[AliDielectronVarManager::kNclsTPCiter1];
    reducedParticle->fTPCsignal    = values[AliDielectronVarManager::kTPCsignal];
    reducedParticle->fTPCsignalN   = values[AliDielectronVarManager::kTPCsignalN];
    reducedParticle->fTPCnSig[0]   = values[AliDielectronVarManager::kTPCnSigmaEle];
    reducedParticle->fTPCnSig[1]   = values[AliDielectronVarManager::kTPCnSigmaPio];
    reducedParticle->fTPCnSig[2]   = values[AliDielectronVarManager::kTPCnSigmaKao];
    reducedParticle->fTPCnSig[3]   = values[AliDielectronVarManager::kTPCnSigmaPro];
    reducedParticle->fTPCClusterMap = EncodeTPCClusterMap(particle, isAOD);
    reducedParticle->fTPCchi2       = values[AliDielectronVarManager::kTPCchi2Cl];
    
    reducedParticle->fTOFbeta      = values[AliDielectronVarManager::kTOFbeta];
    reducedParticle->fTOFnSig[0]   = values[AliDielectronVarManager::kTOFnSigmaEle];
    reducedParticle->fTOFnSig[1]   = values[AliDielectronVarManager::kTOFnSigmaPio];
    reducedParticle->fTOFnSig[2]   = values[AliDielectronVarManager::kTOFnSigmaKao];
    reducedParticle->fTOFnSig[3]   = values[AliDielectronVarManager::kTOFnSigmaPro];
    
    Double_t trdProbab[AliPID::kSPECIES]={0.0};
        
    if(fFlowTrackFilter) {
      // switch on the first bit if this particle should be used for the event plane
      if(fFlowTrackFilter->IsSelected(particle)) reducedParticle->fFlags |= (UShort_t(1)<<0);
    }
    for(Int_t iV0type=0;iV0type<4;++iV0type) {
      if(usedForV0[iV0type]) reducedParticle->fFlags |= (UShort_t(1)<<(iV0type+1));
      if(usedForPureV0[iV0type]) reducedParticle->fFlags |= (UShort_t(1)<<(iV0type+8));
    }
    
    if(isESD){
      //AliESDtrack *track=static_cast<AliESDtrack*>(particle);
      reducedParticle->fTrackId          = (UShort_t)esdTrack->GetID();
      reducedParticle->fTPCCrossedRows   = (UChar_t)esdTrack->GetTPCCrossedRows();
      //reducedParticle->fTPCClusterMap    = EncodeTPCClusterMap(esdTrack);
      const AliExternalTrackParam* tpcInner = esdTrack->GetInnerParam();
      reducedParticle->fTPCPhi        = (tpcInner ? tpcInner->Phi() : 0.0);
      reducedParticle->fTPCPt         = (tpcInner ? tpcInner->Pt() : 0.0);
      reducedParticle->fTPCEta        = (tpcInner ? tpcInner->Eta() : 0.0);
      
      reducedParticle->fTOFdeltaBC    = esdTrack->GetTOFDeltaBC();
      
      reducedParticle->fTRDntracklets[0] = esdTrack->GetTRDntracklets();
      reducedParticle->fTRDntracklets[1] = esdTrack->GetTRDntrackletsPID();
      pidResponse->ComputeTRDProbability(esdTrack,AliPID::kSPECIES,trdProbab,AliTRDPIDResponse::kLQ1D);
      reducedParticle->fTRDpid[0]    = trdProbab[AliPID::kElectron];
      reducedParticle->fTRDpid[1]    = trdProbab[AliPID::kPion];
      pidResponse->ComputeTRDProbability(esdTrack,AliPID::kSPECIES,trdProbab,AliTRDPIDResponse::kLQ2D);
      reducedParticle->fTRDpidLQ2D[0]    = trdProbab[AliPID::kElectron];
      reducedParticle->fTRDpidLQ2D[1]    = trdProbab[AliPID::kPion];
            
      for(Int_t idx=0; idx<3; ++idx) if(esdTrack->GetKinkIndex(idx)>0) reducedParticle->fFlags |= (1<<(5+idx));
      if(esdTrack->IsEMCAL()) reducedParticle->fCaloClusterId = esdTrack->GetEMCALcluster();
      if(esdTrack->IsPHOS()) reducedParticle->fCaloClusterId = esdTrack->GetPHOScluster();
    }
    if(isAOD) {
      //AliAODTrack *track=static_cast<AliAODTrack*>(particle);
      const AliExternalTrackParam* tpcInner = aodTrack->GetInnerParam();
      reducedParticle->fTPCPhi        = (tpcInner ? tpcInner->Phi() : 0.0);
      reducedParticle->fTPCPt         = (tpcInner ? tpcInner->Pt() : 0.0);
      reducedParticle->fTPCEta        = (tpcInner ? tpcInner->Eta() : 0.0);
      
      reducedParticle->fTrackId = aodTrack->GetID(); 
      reducedParticle->fITSsignal = aodTrack->GetITSsignal();
      if(pidResponse) {
        reducedParticle->fITSnSig[0]    = pidResponse->NumberOfSigmasITS(aodTrack,AliPID::kElectron);
        reducedParticle->fITSnSig[1]    = pidResponse->NumberOfSigmasITS(aodTrack,AliPID::kPion);
        reducedParticle->fITSnSig[2]    = pidResponse->NumberOfSigmasITS(aodTrack,AliPID::kKaon);
        reducedParticle->fITSnSig[3]    = pidResponse->NumberOfSigmasITS(aodTrack,AliPID::kProton);
      }
      reducedParticle->fTRDntracklets[0] = aodTrack->GetTRDntrackletsPID();
      reducedParticle->fTRDntracklets[1] = aodTrack->GetTRDntrackletsPID();
      pidResponse->ComputeTRDProbability(aodTrack,AliPID::kSPECIES,trdProbab,AliTRDPIDResponse::kLQ1D);
      reducedParticle->fTRDpid[0]    = trdProbab[AliPID::kElectron];
      reducedParticle->fTRDpid[1]    = trdProbab[AliPID::kPion];
      pidResponse->ComputeTRDProbability(aodTrack,AliPID::kSPECIES,trdProbab,AliTRDPIDResponse::kLQ2D);
      reducedParticle->fTRDpidLQ2D[0]    = trdProbab[AliPID::kElectron];
      reducedParticle->fTRDpidLQ2D[1]    = trdProbab[AliPID::kPion];
      
      if(aodTrack->IsEMCAL()) reducedParticle->fCaloClusterId = aodTrack->GetEMCALcluster();
      if(aodTrack->IsPHOS()) reducedParticle->fCaloClusterId = aodTrack->GetPHOScluster();
      if(values[AliDielectronVarManager::kKinkIndex0]>0.0) reducedParticle->fFlags |= (1<<5);
    }

    fReducedEvent->fNtracks[1] += 1;
  }
}


//_________________________________________________________________________________
void AliAnalysisTaskReducedTree::FillDielectronPairInfo(AliDielectron* die, Short_t iDie) 
{
  //
  // fill reduced pair information
  //
  Bool_t hasMC=AliDielectronMC::Instance()->HasMC();

  for(Int_t iType=0; iType<3; ++iType) {
    
    const TObjArray* array = die->GetPairArray(iType);
    if(!array || array->GetEntriesFast()==0) continue;
    
    for(Int_t iCandidate=0; iCandidate<array->GetEntriesFast(); ++iCandidate) {
      AliDielectronPair* pair = (AliDielectronPair*)array->At(iCandidate);
      Double_t values[AliDielectronVarManager::kNMaxValues];
      AliDielectronVarManager::Fill(pair, values);
      
      TClonesArray& tracks = *(fReducedEvent->fCandidates);
      AliReducedPair *reducedParticle= 
         new (tracks[fReducedEvent->fNV0candidates[1]+fReducedEvent->fNDielectronCandidates]) AliReducedPair();
      // !!! hardcoded flag for dielectron id 
      reducedParticle->fCandidateId  = (iDie==0 ? AliReducedPair::kJpsiToEE : AliReducedPair::kPhiToKK);
      reducedParticle->fPairType     = (Char_t)values[AliDielectronVarManager::kPairType];
      reducedParticle->fLegIds[0]    = (UShort_t)(static_cast<AliVTrack*>(pair->GetFirstDaughterP()))->GetID();
      reducedParticle->fLegIds[1]    = (UShort_t)(static_cast<AliVTrack*>(pair->GetSecondDaughterP()))->GetID();
      reducedParticle->fMass[0]      = values[AliDielectronVarManager::kM];
      reducedParticle->fMass[1]      = -999.;
      reducedParticle->fMass[2]      = -999.;
      reducedParticle->fMass[3]      = -999.;
      reducedParticle->fPhi          = values[AliDielectronVarManager::kPhi];  // in the [-pi,pi] interval
      if(reducedParticle->fPhi<0.0) reducedParticle->fPhi = 2.0*TMath::Pi() + reducedParticle->fPhi;  // converted to [0,2pi]
      reducedParticle->fPt           = values[AliDielectronVarManager::kPt];
      reducedParticle->fEta          = values[AliDielectronVarManager::kEta];
      reducedParticle->fLxy          = values[AliDielectronVarManager::kPseudoProperTime];
      reducedParticle->fLxyErr       = values[AliDielectronVarManager::kPseudoProperTimeErr];
      reducedParticle->fPointingAngle = values[AliDielectronVarManager::kCosPointingAngle];
      
      reducedParticle->fMCid         = 0;
      if(hasMC) {
	AliDielectronMC::Instance()->ConnectMCEvent();
	const TObjArray* mcSignals = die->GetMCSignals();
	for(Int_t iSig=0; iSig<mcSignals->GetEntries(); ++iSig) {
	  if(iSig>31) break;
	  AliDielectronMC *mc=AliDielectronMC::Instance();
	  if(mc->IsMCTruth(pair, (AliDielectronSignalMC*)mcSignals->At(iSig))) {
	    reducedParticle->fMCid = reducedParticle->fMCid | (1<<iSig);
	  }
	}
      }   // end if has MC
      fReducedEvent->fNDielectronCandidates += 1;
    }    // end loop over candidates
  }    // end loop over pair type
}


//_________________________________________________________________________________
void AliAnalysisTaskReducedTree::FillV0PairInfo() 
{
  //
  // fill reduced pair information
  //
  AliESDEvent* esd = (AliESDEvent*)InputEvent();
  const AliESDVertex *primaryVertex = esd->GetPrimaryVertex();
  AliKFVertex primaryVertexKF(*primaryVertex);
  
  fReducedEvent->fNV0candidates[0] = InputEvent()->GetNumberOfV0s();
  
  if(!(fFillK0s || fFillLambda || fFillALambda || fFillGammaConversions)) return;
    
  Double_t valuesPos[AliDielectronVarManager::kNMaxValues];
  Double_t valuesNeg[AliDielectronVarManager::kNMaxValues];
  
  if(fV0OpenCuts) {
    fV0OpenCuts->SetEvent(esd);
    fV0OpenCuts->SetPrimaryVertex(&primaryVertexKF);
  }
  if(fV0StrongCuts) {
    fV0StrongCuts->SetEvent(esd);
    fV0StrongCuts->SetPrimaryVertex(&primaryVertexKF);
  }
  
  Int_t pdgV0=0; Int_t pdgP=0; Int_t pdgN=0;
  for(Int_t iV0=0; iV0<InputEvent()->GetNumberOfV0s(); ++iV0) {   // loop over V0s
    AliESDv0 *v0 = esd->GetV0(iV0);
       
    AliESDtrack* legPos = esd->GetTrack(v0->GetPindex());
    AliESDtrack* legNeg = esd->GetTrack(v0->GetNindex());
 
    if(legPos->GetSign() == legNeg->GetSign()) {
      continue;
    }

    Bool_t v0ChargesAreCorrect = (legPos->GetSign()==+1 ? kTRUE : kFALSE);
    legPos = (!v0ChargesAreCorrect ? esd->GetTrack(v0->GetNindex()) : legPos);
    legNeg = (!v0ChargesAreCorrect ? esd->GetTrack(v0->GetPindex()) : legNeg); 
    
    pdgV0=0; pdgP=0; pdgN=0;
    Bool_t goodK0s = kTRUE; Bool_t goodLambda = kTRUE; Bool_t goodALambda = kTRUE; Bool_t goodGamma = kTRUE;
    if(fV0OpenCuts) {
      goodK0s = kFALSE; goodLambda = kFALSE; goodALambda = kFALSE; goodGamma = kFALSE;
      Bool_t processV0 = fV0OpenCuts->ProcessV0(v0, pdgV0, pdgP, pdgN);
      if(processV0 && TMath::Abs(pdgV0)==310 && TMath::Abs(pdgP)==211 && TMath::Abs(pdgN)==211) {
        goodK0s = kTRUE;
        if(fK0sPionCuts && (!fK0sPionCuts->IsSelected(legPos) || !fK0sPionCuts->IsSelected(legNeg))) goodK0s = kFALSE;
      }
      if(processV0 && pdgV0==3122 && (TMath::Abs(pdgP)==211 || TMath::Abs(pdgP)==2212) && (TMath::Abs(pdgN)==211 || TMath::Abs(pdgN)==2212)) {
        goodLambda = kTRUE;
        if(fLambdaProtonCuts && !fLambdaProtonCuts->IsSelected(legPos)) goodLambda = kFALSE;
        if(fLambdaPionCuts && !fLambdaPionCuts->IsSelected(legNeg)) goodLambda = kFALSE;
      }
      if(processV0 && pdgV0==-3122 && (TMath::Abs(pdgP)==211 || TMath::Abs(pdgP)==2212) && (TMath::Abs(pdgN)==211 || TMath::Abs(pdgN)==2212)) {
        goodALambda = kTRUE;
        if(fLambdaProtonCuts && !fLambdaProtonCuts->IsSelected(legNeg)) goodALambda = kFALSE;
        if(fLambdaPionCuts && !fLambdaPionCuts->IsSelected(legPos)) goodALambda = kFALSE;
      }
      if(processV0 && TMath::Abs(pdgV0)==22 && TMath::Abs(pdgP)==11 && TMath::Abs(pdgN)==11) {
        goodGamma = kTRUE;
        if(fGammaElectronCuts && (!fGammaElectronCuts->IsSelected(legPos) || !fGammaElectronCuts->IsSelected(legNeg))) goodGamma = kFALSE;
      }
      //cout << "open cuts  pdgV0/pdgP/pdgN/processV0 : " << pdgV0 << "/" << pdgP << "/" << pdgN << "/" << processV0 << endl;     
      //cout << "good K0s/Lambda/ALambda/Gamma : " << goodK0s << "/" << goodLambda << "/" << goodALambda << "/" << goodGamma << endl;
    }
    
    Bool_t veryGoodK0s = kFALSE; Bool_t veryGoodLambda = kFALSE; Bool_t veryGoodALambda = kFALSE; Bool_t veryGoodGamma = kFALSE;
    if(fV0StrongCuts && (goodK0s || goodLambda || goodALambda || goodGamma)) {
      pdgV0=0; pdgP=0; pdgN=0;
      Bool_t processV0 = fV0StrongCuts->ProcessV0(v0, pdgV0, pdgP, pdgN);
      if(processV0 && goodK0s && TMath::Abs(pdgV0)==310 && TMath::Abs(pdgP)==211 && TMath::Abs(pdgN)==211)
        veryGoodK0s = kTRUE;
      if(processV0 && goodLambda && pdgV0==3122 && (TMath::Abs(pdgP)==211 || TMath::Abs(pdgP)==2212) && (TMath::Abs(pdgN)==211 || TMath::Abs(pdgN)==2212))
        veryGoodLambda = kTRUE;
      if(processV0 && goodALambda && pdgV0==-3122 && (TMath::Abs(pdgP)==211 || TMath::Abs(pdgP)==2212) && (TMath::Abs(pdgN)==211 || TMath::Abs(pdgN)==2212))
        veryGoodALambda = kTRUE;
      if(processV0 && goodGamma && TMath::Abs(pdgV0)==22 && TMath::Abs(pdgP)==11 && TMath::Abs(pdgN)==11)
        veryGoodGamma = kTRUE;
      //cout << "strong cuts  pdgV0/pdgP/pdgN/processV0 : " << pdgV0 << "/" << pdgP << "/" << pdgN << "/" << processV0 << endl;     
      //cout << "very good K0s/Lambda/ALambda/Gamma : " << veryGoodK0s << "/" << veryGoodLambda << "/" << veryGoodALambda << "/" << veryGoodGamma << endl;
    }
              
    if(!((goodK0s && fFillK0s) || 
         (goodLambda && fFillLambda) || 
         (goodALambda && fFillALambda) || 
         (goodGamma && fFillGammaConversions))) continue;
    
    // Fill the V0 information into the tree for 4 hypothesis: K0s, Lambda, Anti-Lambda and gamma conversion
    AliReducedPair* k0sReducedPair     = FillV0PairInfo(v0, AliReducedPair::kK0sToPiPi,     legPos, legNeg, &primaryVertexKF, v0ChargesAreCorrect);
    AliReducedPair* lambdaReducedPair  = FillV0PairInfo(v0, AliReducedPair::kLambda0ToPPi,  legPos, legNeg, &primaryVertexKF, v0ChargesAreCorrect);
    AliReducedPair* alambdaReducedPair = FillV0PairInfo(v0, AliReducedPair::kALambda0ToPPi, legPos, legNeg, &primaryVertexKF, v0ChargesAreCorrect);
    AliReducedPair* gammaReducedPair   = FillV0PairInfo(v0, AliReducedPair::kGammaConv,     legPos, legNeg, &primaryVertexKF, v0ChargesAreCorrect);
    
    if(fFillK0s && goodK0s && k0sReducedPair->fMass[0]>fK0sMassRange[0] && k0sReducedPair->fMass[0]<fK0sMassRange[1]) {
      TClonesArray& tracks = *(fReducedEvent->fCandidates);
      AliReducedPair *goodK0sPair = new (tracks[fReducedEvent->fNV0candidates[1]]) AliReducedPair(*k0sReducedPair);
      goodK0sPair->fMass[0] = k0sReducedPair->fMass[0];
      goodK0sPair->fMass[1] = lambdaReducedPair->fMass[0];
      goodK0sPair->fMass[2] = alambdaReducedPair->fMass[0];
      goodK0sPair->fMass[3] = gammaReducedPair->fMass[0];
      if(veryGoodK0s) goodK0sPair->fMCid |= (UInt_t(1)<<1);
      fReducedEvent->fNV0candidates[1] += 1;
    } else {goodK0s=kFALSE;}
    if(fFillLambda && goodLambda && lambdaReducedPair->fMass[0]>fLambdaMassRange[0] && lambdaReducedPair->fMass[0]<fLambdaMassRange[1]) {
      TClonesArray& tracks = *(fReducedEvent->fCandidates);
      AliReducedPair *goodLambdaPair = new (tracks[fReducedEvent->fNV0candidates[1]]) AliReducedPair(*lambdaReducedPair);
      goodLambdaPair->fMass[0] = k0sReducedPair->fMass[0];
      goodLambdaPair->fMass[1] = lambdaReducedPair->fMass[0];
      goodLambdaPair->fMass[2] = alambdaReducedPair->fMass[0];
      goodLambdaPair->fMass[3] = gammaReducedPair->fMass[0];
      if(veryGoodLambda) goodLambdaPair->fMCid |= (UInt_t(1)<<2);
      fReducedEvent->fNV0candidates[1] += 1;
    } else {goodLambda=kFALSE;}
    if(fFillALambda && goodALambda && alambdaReducedPair->fMass[0]>fLambdaMassRange[0] && alambdaReducedPair->fMass[0]<fLambdaMassRange[1]) {
      TClonesArray& tracks = *(fReducedEvent->fCandidates);
      AliReducedPair *goodALambdaPair = new (tracks[fReducedEvent->fNV0candidates[1]]) AliReducedPair(*alambdaReducedPair);
      goodALambdaPair->fMass[0] = k0sReducedPair->fMass[0];
      goodALambdaPair->fMass[1] = lambdaReducedPair->fMass[0];
      goodALambdaPair->fMass[2] = alambdaReducedPair->fMass[0];
      goodALambdaPair->fMass[3] = gammaReducedPair->fMass[0];
      if(veryGoodALambda) goodALambdaPair->fMCid |= (UInt_t(1)<<3);
      fReducedEvent->fNV0candidates[1] += 1;
    } else {goodALambda = kFALSE;}
    //cout << "gamma mass: " << gammaReducedPair->fMass[0] << endl;
    if(fFillGammaConversions && goodGamma && gammaReducedPair->fMass[0]>fGammaMassRange[0] && gammaReducedPair->fMass[0]<fGammaMassRange[1]) {
      TClonesArray& tracks = *(fReducedEvent->fCandidates);
      AliReducedPair *goodGammaPair = new (tracks[fReducedEvent->fNV0candidates[1]]) AliReducedPair(*gammaReducedPair);
      goodGammaPair->fMass[0] = k0sReducedPair->fMass[0];
      goodGammaPair->fMass[1] = lambdaReducedPair->fMass[0];
      goodGammaPair->fMass[2] = alambdaReducedPair->fMass[0];
      goodGammaPair->fMass[3] = gammaReducedPair->fMass[0];
      if(veryGoodGamma) goodGammaPair->fMCid |= (UInt_t(1)<<4);
      fReducedEvent->fNV0candidates[1] += 1;
    } else {goodGamma=kFALSE;}
    delete k0sReducedPair;
    delete lambdaReducedPair;
    delete alambdaReducedPair;
    delete gammaReducedPair;
    
    if(!(goodK0s || goodLambda || goodALambda || goodGamma)) continue;
    
    //  Fill histograms and the CF container
    AliDielectronVarManager::Fill(legPos, valuesPos);
    AliDielectronVarManager::Fill(legNeg, valuesNeg);
    
    if(fV0Histos && fV0Histos->GetHistogramList()->FindObject("V0Track_Pos"))
      fV0Histos->FillClass("V0Track_Pos", AliDielectronVarManager::kNMaxValues, valuesPos);
    if(fV0Histos && fV0Histos->GetHistogramList()->FindObject("V0Track_Neg"))
      fV0Histos->FillClass("V0Track_Neg", AliDielectronVarManager::kNMaxValues, valuesNeg);    
  }   // end loop over V0s
}


//_________________________________________________________________________________
AliReducedPair* AliAnalysisTaskReducedTree::FillV0PairInfo(AliESDv0* v0, Int_t id, 
						    AliESDtrack* legPos, AliESDtrack* legNeg,
						    AliKFVertex* vtxKF, Bool_t chargesAreCorrect) {
  //
  // Create a reduced V0 object and fill it
  //
  AliReducedPair* reducedPair=new AliReducedPair();  
  reducedPair->fCandidateId = id;
  reducedPair->fPairType    = v0->GetOnFlyStatus();    // on the fly status
  reducedPair->fLegIds[0]   = legPos->GetID();
  reducedPair->fLegIds[1]   = legNeg->GetID();
  if(!reducedPair->fPairType) {    // offline
    UInt_t pidPos = AliPID::kPion;
    if(id==AliReducedPair::kLambda0ToPPi) pidPos = AliPID::kProton;
    if(id==AliReducedPair::kGammaConv) pidPos = AliPID::kElectron;
    UInt_t pidNeg = AliPID::kPion;
    if(id==AliReducedPair::kALambda0ToPPi) pidNeg = AliPID::kProton;
    if(id==AliReducedPair::kGammaConv) pidNeg = AliPID::kElectron;
    reducedPair->fMass[0]      = v0->GetEffMass(pidPos, pidNeg);
    reducedPair->fPhi          = v0->Phi();
    if(reducedPair->fPhi<0.0) reducedPair->fPhi = 2.0*TMath::Pi() + reducedPair->fPhi;  // converted to [0,2pi]
    reducedPair->fPt           = v0->Pt();
    reducedPair->fEta          = v0->Eta();
    reducedPair->fLxy          = v0->GetRr();
    reducedPair->fPointingAngle = v0->GetV0CosineOfPointingAngle(vtxKF->GetX(), vtxKF->GetY(), vtxKF->GetZ());
    reducedPair->fChisquare    = v0->GetChi2V0();
  }
  else {
    const AliExternalTrackParam *negHelix=v0->GetParamN();
    const AliExternalTrackParam *posHelix=v0->GetParamP();
    if(!chargesAreCorrect) {
      negHelix = v0->GetParamP();
      posHelix = v0->GetParamN();
    }
    Int_t pdgPos = 211;
    if(id==AliReducedPair::kLambda0ToPPi) pdgPos = 2212;
    if(id==AliReducedPair::kGammaConv) pdgPos = -11;
    Int_t pdgNeg = -211;
    if(id==AliReducedPair::kALambda0ToPPi) pdgNeg = -2212;
    if(id==AliReducedPair::kGammaConv) pdgNeg = 11;
    AliKFParticle negKF(*(negHelix), pdgPos);
    AliKFParticle posKF(*(posHelix), pdgNeg);
    AliKFParticle v0Refit;
    v0Refit += negKF;
    v0Refit += posKF;
    Double_t massFit=0.0, massErrFit=0.0;
    v0Refit.GetMass(massFit,massErrFit);
    reducedPair->fMass[0] = massFit;
    reducedPair->fPhi          = v0Refit.GetPhi();
    if(reducedPair->fPhi<0.0) reducedPair->fPhi = 2.0*TMath::Pi() + reducedPair->fPhi;  // converted to [0,2pi]
    reducedPair->fPt           = v0Refit.GetPt();
    reducedPair->fEta          = v0Refit.GetEta();
    reducedPair->fLxy          = v0Refit.GetPseudoProperDecayTime(*vtxKF, massFit);
    Double_t deltaPos[3];
    deltaPos[0] = v0Refit.GetX() - vtxKF->GetX(); deltaPos[1] = v0Refit.GetY() - vtxKF->GetY(); deltaPos[2] = v0Refit.GetZ() - vtxKF->GetZ();
    Double_t momV02 = v0Refit.GetPx()*v0Refit.GetPx() + v0Refit.GetPy()*v0Refit.GetPy() + v0Refit.GetPz()*v0Refit.GetPz();
    Double_t deltaPos2 = deltaPos[0]*deltaPos[0] + deltaPos[1]*deltaPos[1] + deltaPos[2]*deltaPos[2];
    reducedPair->fPointingAngle = (deltaPos[0]*v0Refit.GetPx() + deltaPos[1]*v0Refit.GetPy() + deltaPos[2]*v0Refit.GetPz()) / 
                                  TMath::Sqrt(momV02*deltaPos2);
    reducedPair->fChisquare = v0Refit.GetChi2();                              
  }
  return reducedPair;
}


//_________________________________________________________________________________
UChar_t AliAnalysisTaskReducedTree::EncodeTPCClusterMap(AliVParticle* track, Bool_t isAOD) {
  //
  // Encode the TPC cluster map into an UChar_t
  // Divide the 159 bits from the bit map into 8 groups of adiacent clusters
  // For each group enable its corresponding bit if in that group there are more clusters compared to
  // a threshold.
  //
  AliESDtrack* esdTrack=0x0;
  AliAODTrack* aodTrack=0x0;
  if(isAOD)
    aodTrack=static_cast<AliAODTrack*>(track);
  else
    esdTrack=static_cast<AliESDtrack*>(track);
  
  const UChar_t threshold=5;
  TBits tpcClusterMap = (isAOD ? aodTrack->GetTPCClusterMap() : esdTrack->GetTPCClusterMap());
  UChar_t map=0;
  UChar_t n=0;
  UChar_t j=0;
  for(UChar_t i=0; i<8; ++i) {
    n=0;
    for(j=i*20; j<(i+1)*20 && j<159; ++j) n+=tpcClusterMap.TestBitNumber(j);
    if(n>=threshold) map |= (1<<i);
  }
  return map;
}


//_________________________________________________________________________________
Int_t AliAnalysisTaskReducedTree::GetSPDTrackletMultiplicity(AliVEvent* event, Float_t lowEta, Float_t highEta) {
  //
  // Count the number of SPD tracklets in a given eta range
  //
  if (!event) return -1;
  
  Int_t nTracklets = 0;
  Int_t nAcc = 0;
  
  if(event->IsA() == AliAODEvent::Class()) {
    AliAODTracklets *tracklets = ((AliAODEvent*)event)->GetTracklets();
    nTracklets = tracklets->GetNumberOfTracklets();
    for(Int_t nn=0; nn<nTracklets; ++nn) {
      Double_t theta = tracklets->GetTheta(nn);
      Double_t eta = -TMath::Log(TMath::Tan(theta/2.0));
      if(eta < lowEta) continue;
      if(eta > highEta) continue;
      ++nAcc;
    }
  } else if(event->IsA() == AliESDEvent::Class()) {
    nTracklets = ((AliESDEvent*)event)->GetMultiplicity()->GetNumberOfTracklets();
    for(Int_t nn=0; nn<nTracklets; ++nn) {
      Double_t eta = ((AliESDEvent*)event)->GetMultiplicity()->GetEta(nn);
      if(eta < lowEta) continue;
      if(eta > highEta) continue; 
      ++nAcc;
    }
  } else return -1;
  
  return nAcc;
}


//_________________________________________________________________________________
void AliAnalysisTaskReducedTree::FinishTaskOutput()
{
  //
  // Finish Task 
  //
  
  //fTreeFile->Write();
  //fTreeFile->Close();
}
 AliAnalysisTaskReducedTree.cxx:1
 AliAnalysisTaskReducedTree.cxx:2
 AliAnalysisTaskReducedTree.cxx:3
 AliAnalysisTaskReducedTree.cxx:4
 AliAnalysisTaskReducedTree.cxx:5
 AliAnalysisTaskReducedTree.cxx:6
 AliAnalysisTaskReducedTree.cxx:7
 AliAnalysisTaskReducedTree.cxx:8
 AliAnalysisTaskReducedTree.cxx:9
 AliAnalysisTaskReducedTree.cxx:10
 AliAnalysisTaskReducedTree.cxx:11
 AliAnalysisTaskReducedTree.cxx:12
 AliAnalysisTaskReducedTree.cxx:13
 AliAnalysisTaskReducedTree.cxx:14
 AliAnalysisTaskReducedTree.cxx:15
 AliAnalysisTaskReducedTree.cxx:16
 AliAnalysisTaskReducedTree.cxx:17
 AliAnalysisTaskReducedTree.cxx:18
 AliAnalysisTaskReducedTree.cxx:19
 AliAnalysisTaskReducedTree.cxx:20
 AliAnalysisTaskReducedTree.cxx:21
 AliAnalysisTaskReducedTree.cxx:22
 AliAnalysisTaskReducedTree.cxx:23
 AliAnalysisTaskReducedTree.cxx:24
 AliAnalysisTaskReducedTree.cxx:25
 AliAnalysisTaskReducedTree.cxx:26
 AliAnalysisTaskReducedTree.cxx:27
 AliAnalysisTaskReducedTree.cxx:28
 AliAnalysisTaskReducedTree.cxx:29
 AliAnalysisTaskReducedTree.cxx:30
 AliAnalysisTaskReducedTree.cxx:31
 AliAnalysisTaskReducedTree.cxx:32
 AliAnalysisTaskReducedTree.cxx:33
 AliAnalysisTaskReducedTree.cxx:34
 AliAnalysisTaskReducedTree.cxx:35
 AliAnalysisTaskReducedTree.cxx:36
 AliAnalysisTaskReducedTree.cxx:37
 AliAnalysisTaskReducedTree.cxx:38
 AliAnalysisTaskReducedTree.cxx:39
 AliAnalysisTaskReducedTree.cxx:40
 AliAnalysisTaskReducedTree.cxx:41
 AliAnalysisTaskReducedTree.cxx:42
 AliAnalysisTaskReducedTree.cxx:43
 AliAnalysisTaskReducedTree.cxx:44
 AliAnalysisTaskReducedTree.cxx:45
 AliAnalysisTaskReducedTree.cxx:46
 AliAnalysisTaskReducedTree.cxx:47
 AliAnalysisTaskReducedTree.cxx:48
 AliAnalysisTaskReducedTree.cxx:49
 AliAnalysisTaskReducedTree.cxx:50
 AliAnalysisTaskReducedTree.cxx:51
 AliAnalysisTaskReducedTree.cxx:52
 AliAnalysisTaskReducedTree.cxx:53
 AliAnalysisTaskReducedTree.cxx:54
 AliAnalysisTaskReducedTree.cxx:55
 AliAnalysisTaskReducedTree.cxx:56
 AliAnalysisTaskReducedTree.cxx:57
 AliAnalysisTaskReducedTree.cxx:58
 AliAnalysisTaskReducedTree.cxx:59
 AliAnalysisTaskReducedTree.cxx:60
 AliAnalysisTaskReducedTree.cxx:61
 AliAnalysisTaskReducedTree.cxx:62
 AliAnalysisTaskReducedTree.cxx:63
 AliAnalysisTaskReducedTree.cxx:64
 AliAnalysisTaskReducedTree.cxx:65
 AliAnalysisTaskReducedTree.cxx:66
 AliAnalysisTaskReducedTree.cxx:67
 AliAnalysisTaskReducedTree.cxx:68
 AliAnalysisTaskReducedTree.cxx:69
 AliAnalysisTaskReducedTree.cxx:70
 AliAnalysisTaskReducedTree.cxx:71
 AliAnalysisTaskReducedTree.cxx:72
 AliAnalysisTaskReducedTree.cxx:73
 AliAnalysisTaskReducedTree.cxx:74
 AliAnalysisTaskReducedTree.cxx:75
 AliAnalysisTaskReducedTree.cxx:76
 AliAnalysisTaskReducedTree.cxx:77
 AliAnalysisTaskReducedTree.cxx:78
 AliAnalysisTaskReducedTree.cxx:79
 AliAnalysisTaskReducedTree.cxx:80
 AliAnalysisTaskReducedTree.cxx:81
 AliAnalysisTaskReducedTree.cxx:82
 AliAnalysisTaskReducedTree.cxx:83
 AliAnalysisTaskReducedTree.cxx:84
 AliAnalysisTaskReducedTree.cxx:85
 AliAnalysisTaskReducedTree.cxx:86
 AliAnalysisTaskReducedTree.cxx:87
 AliAnalysisTaskReducedTree.cxx:88
 AliAnalysisTaskReducedTree.cxx:89
 AliAnalysisTaskReducedTree.cxx:90
 AliAnalysisTaskReducedTree.cxx:91
 AliAnalysisTaskReducedTree.cxx:92
 AliAnalysisTaskReducedTree.cxx:93
 AliAnalysisTaskReducedTree.cxx:94
 AliAnalysisTaskReducedTree.cxx:95
 AliAnalysisTaskReducedTree.cxx:96
 AliAnalysisTaskReducedTree.cxx:97
 AliAnalysisTaskReducedTree.cxx:98
 AliAnalysisTaskReducedTree.cxx:99
 AliAnalysisTaskReducedTree.cxx:100
 AliAnalysisTaskReducedTree.cxx:101
 AliAnalysisTaskReducedTree.cxx:102
 AliAnalysisTaskReducedTree.cxx:103
 AliAnalysisTaskReducedTree.cxx:104
 AliAnalysisTaskReducedTree.cxx:105
 AliAnalysisTaskReducedTree.cxx:106
 AliAnalysisTaskReducedTree.cxx:107
 AliAnalysisTaskReducedTree.cxx:108
 AliAnalysisTaskReducedTree.cxx:109
 AliAnalysisTaskReducedTree.cxx:110
 AliAnalysisTaskReducedTree.cxx:111
 AliAnalysisTaskReducedTree.cxx:112
 AliAnalysisTaskReducedTree.cxx:113
 AliAnalysisTaskReducedTree.cxx:114
 AliAnalysisTaskReducedTree.cxx:115
 AliAnalysisTaskReducedTree.cxx:116
 AliAnalysisTaskReducedTree.cxx:117
 AliAnalysisTaskReducedTree.cxx:118
 AliAnalysisTaskReducedTree.cxx:119
 AliAnalysisTaskReducedTree.cxx:120
 AliAnalysisTaskReducedTree.cxx:121
 AliAnalysisTaskReducedTree.cxx:122
 AliAnalysisTaskReducedTree.cxx:123
 AliAnalysisTaskReducedTree.cxx:124
 AliAnalysisTaskReducedTree.cxx:125
 AliAnalysisTaskReducedTree.cxx:126
 AliAnalysisTaskReducedTree.cxx:127
 AliAnalysisTaskReducedTree.cxx:128
 AliAnalysisTaskReducedTree.cxx:129
 AliAnalysisTaskReducedTree.cxx:130
 AliAnalysisTaskReducedTree.cxx:131
 AliAnalysisTaskReducedTree.cxx:132
 AliAnalysisTaskReducedTree.cxx:133
 AliAnalysisTaskReducedTree.cxx:134
 AliAnalysisTaskReducedTree.cxx:135
 AliAnalysisTaskReducedTree.cxx:136
 AliAnalysisTaskReducedTree.cxx:137
 AliAnalysisTaskReducedTree.cxx:138
 AliAnalysisTaskReducedTree.cxx:139
 AliAnalysisTaskReducedTree.cxx:140
 AliAnalysisTaskReducedTree.cxx:141
 AliAnalysisTaskReducedTree.cxx:142
 AliAnalysisTaskReducedTree.cxx:143
 AliAnalysisTaskReducedTree.cxx:144
 AliAnalysisTaskReducedTree.cxx:145
 AliAnalysisTaskReducedTree.cxx:146
 AliAnalysisTaskReducedTree.cxx:147
 AliAnalysisTaskReducedTree.cxx:148
 AliAnalysisTaskReducedTree.cxx:149
 AliAnalysisTaskReducedTree.cxx:150
 AliAnalysisTaskReducedTree.cxx:151
 AliAnalysisTaskReducedTree.cxx:152
 AliAnalysisTaskReducedTree.cxx:153
 AliAnalysisTaskReducedTree.cxx:154
 AliAnalysisTaskReducedTree.cxx:155
 AliAnalysisTaskReducedTree.cxx:156
 AliAnalysisTaskReducedTree.cxx:157
 AliAnalysisTaskReducedTree.cxx:158
 AliAnalysisTaskReducedTree.cxx:159
 AliAnalysisTaskReducedTree.cxx:160
 AliAnalysisTaskReducedTree.cxx:161
 AliAnalysisTaskReducedTree.cxx:162
 AliAnalysisTaskReducedTree.cxx:163
 AliAnalysisTaskReducedTree.cxx:164
 AliAnalysisTaskReducedTree.cxx:165
 AliAnalysisTaskReducedTree.cxx:166
 AliAnalysisTaskReducedTree.cxx:167
 AliAnalysisTaskReducedTree.cxx:168
 AliAnalysisTaskReducedTree.cxx:169
 AliAnalysisTaskReducedTree.cxx:170
 AliAnalysisTaskReducedTree.cxx:171
 AliAnalysisTaskReducedTree.cxx:172
 AliAnalysisTaskReducedTree.cxx:173
 AliAnalysisTaskReducedTree.cxx:174
 AliAnalysisTaskReducedTree.cxx:175
 AliAnalysisTaskReducedTree.cxx:176
 AliAnalysisTaskReducedTree.cxx:177
 AliAnalysisTaskReducedTree.cxx:178
 AliAnalysisTaskReducedTree.cxx:179
 AliAnalysisTaskReducedTree.cxx:180
 AliAnalysisTaskReducedTree.cxx:181
 AliAnalysisTaskReducedTree.cxx:182
 AliAnalysisTaskReducedTree.cxx:183
 AliAnalysisTaskReducedTree.cxx:184
 AliAnalysisTaskReducedTree.cxx:185
 AliAnalysisTaskReducedTree.cxx:186
 AliAnalysisTaskReducedTree.cxx:187
 AliAnalysisTaskReducedTree.cxx:188
 AliAnalysisTaskReducedTree.cxx:189
 AliAnalysisTaskReducedTree.cxx:190
 AliAnalysisTaskReducedTree.cxx:191
 AliAnalysisTaskReducedTree.cxx:192
 AliAnalysisTaskReducedTree.cxx:193
 AliAnalysisTaskReducedTree.cxx:194
 AliAnalysisTaskReducedTree.cxx:195
 AliAnalysisTaskReducedTree.cxx:196
 AliAnalysisTaskReducedTree.cxx:197
 AliAnalysisTaskReducedTree.cxx:198
 AliAnalysisTaskReducedTree.cxx:199
 AliAnalysisTaskReducedTree.cxx:200
 AliAnalysisTaskReducedTree.cxx:201
 AliAnalysisTaskReducedTree.cxx:202
 AliAnalysisTaskReducedTree.cxx:203
 AliAnalysisTaskReducedTree.cxx:204
 AliAnalysisTaskReducedTree.cxx:205
 AliAnalysisTaskReducedTree.cxx:206
 AliAnalysisTaskReducedTree.cxx:207
 AliAnalysisTaskReducedTree.cxx:208
 AliAnalysisTaskReducedTree.cxx:209
 AliAnalysisTaskReducedTree.cxx:210
 AliAnalysisTaskReducedTree.cxx:211
 AliAnalysisTaskReducedTree.cxx:212
 AliAnalysisTaskReducedTree.cxx:213
 AliAnalysisTaskReducedTree.cxx:214
 AliAnalysisTaskReducedTree.cxx:215
 AliAnalysisTaskReducedTree.cxx:216
 AliAnalysisTaskReducedTree.cxx:217
 AliAnalysisTaskReducedTree.cxx:218
 AliAnalysisTaskReducedTree.cxx:219
 AliAnalysisTaskReducedTree.cxx:220
 AliAnalysisTaskReducedTree.cxx:221
 AliAnalysisTaskReducedTree.cxx:222
 AliAnalysisTaskReducedTree.cxx:223
 AliAnalysisTaskReducedTree.cxx:224
 AliAnalysisTaskReducedTree.cxx:225
 AliAnalysisTaskReducedTree.cxx:226
 AliAnalysisTaskReducedTree.cxx:227
 AliAnalysisTaskReducedTree.cxx:228
 AliAnalysisTaskReducedTree.cxx:229
 AliAnalysisTaskReducedTree.cxx:230
 AliAnalysisTaskReducedTree.cxx:231
 AliAnalysisTaskReducedTree.cxx:232
 AliAnalysisTaskReducedTree.cxx:233
 AliAnalysisTaskReducedTree.cxx:234
 AliAnalysisTaskReducedTree.cxx:235
 AliAnalysisTaskReducedTree.cxx:236
 AliAnalysisTaskReducedTree.cxx:237
 AliAnalysisTaskReducedTree.cxx:238
 AliAnalysisTaskReducedTree.cxx:239
 AliAnalysisTaskReducedTree.cxx:240
 AliAnalysisTaskReducedTree.cxx:241
 AliAnalysisTaskReducedTree.cxx:242
 AliAnalysisTaskReducedTree.cxx:243
 AliAnalysisTaskReducedTree.cxx:244
 AliAnalysisTaskReducedTree.cxx:245
 AliAnalysisTaskReducedTree.cxx:246
 AliAnalysisTaskReducedTree.cxx:247
 AliAnalysisTaskReducedTree.cxx:248
 AliAnalysisTaskReducedTree.cxx:249
 AliAnalysisTaskReducedTree.cxx:250
 AliAnalysisTaskReducedTree.cxx:251
 AliAnalysisTaskReducedTree.cxx:252
 AliAnalysisTaskReducedTree.cxx:253
 AliAnalysisTaskReducedTree.cxx:254
 AliAnalysisTaskReducedTree.cxx:255
 AliAnalysisTaskReducedTree.cxx:256
 AliAnalysisTaskReducedTree.cxx:257
 AliAnalysisTaskReducedTree.cxx:258
 AliAnalysisTaskReducedTree.cxx:259
 AliAnalysisTaskReducedTree.cxx:260
 AliAnalysisTaskReducedTree.cxx:261
 AliAnalysisTaskReducedTree.cxx:262
 AliAnalysisTaskReducedTree.cxx:263
 AliAnalysisTaskReducedTree.cxx:264
 AliAnalysisTaskReducedTree.cxx:265
 AliAnalysisTaskReducedTree.cxx:266
 AliAnalysisTaskReducedTree.cxx:267
 AliAnalysisTaskReducedTree.cxx:268
 AliAnalysisTaskReducedTree.cxx:269
 AliAnalysisTaskReducedTree.cxx:270
 AliAnalysisTaskReducedTree.cxx:271
 AliAnalysisTaskReducedTree.cxx:272
 AliAnalysisTaskReducedTree.cxx:273
 AliAnalysisTaskReducedTree.cxx:274
 AliAnalysisTaskReducedTree.cxx:275
 AliAnalysisTaskReducedTree.cxx:276
 AliAnalysisTaskReducedTree.cxx:277
 AliAnalysisTaskReducedTree.cxx:278
 AliAnalysisTaskReducedTree.cxx:279
 AliAnalysisTaskReducedTree.cxx:280
 AliAnalysisTaskReducedTree.cxx:281
 AliAnalysisTaskReducedTree.cxx:282
 AliAnalysisTaskReducedTree.cxx:283
 AliAnalysisTaskReducedTree.cxx:284
 AliAnalysisTaskReducedTree.cxx:285
 AliAnalysisTaskReducedTree.cxx:286
 AliAnalysisTaskReducedTree.cxx:287
 AliAnalysisTaskReducedTree.cxx:288
 AliAnalysisTaskReducedTree.cxx:289
 AliAnalysisTaskReducedTree.cxx:290
 AliAnalysisTaskReducedTree.cxx:291
 AliAnalysisTaskReducedTree.cxx:292
 AliAnalysisTaskReducedTree.cxx:293
 AliAnalysisTaskReducedTree.cxx:294
 AliAnalysisTaskReducedTree.cxx:295
 AliAnalysisTaskReducedTree.cxx:296
 AliAnalysisTaskReducedTree.cxx:297
 AliAnalysisTaskReducedTree.cxx:298
 AliAnalysisTaskReducedTree.cxx:299
 AliAnalysisTaskReducedTree.cxx:300
 AliAnalysisTaskReducedTree.cxx:301
 AliAnalysisTaskReducedTree.cxx:302
 AliAnalysisTaskReducedTree.cxx:303
 AliAnalysisTaskReducedTree.cxx:304
 AliAnalysisTaskReducedTree.cxx:305
 AliAnalysisTaskReducedTree.cxx:306
 AliAnalysisTaskReducedTree.cxx:307
 AliAnalysisTaskReducedTree.cxx:308
 AliAnalysisTaskReducedTree.cxx:309
 AliAnalysisTaskReducedTree.cxx:310
 AliAnalysisTaskReducedTree.cxx:311
 AliAnalysisTaskReducedTree.cxx:312
 AliAnalysisTaskReducedTree.cxx:313
 AliAnalysisTaskReducedTree.cxx:314
 AliAnalysisTaskReducedTree.cxx:315
 AliAnalysisTaskReducedTree.cxx:316
 AliAnalysisTaskReducedTree.cxx:317
 AliAnalysisTaskReducedTree.cxx:318
 AliAnalysisTaskReducedTree.cxx:319
 AliAnalysisTaskReducedTree.cxx:320
 AliAnalysisTaskReducedTree.cxx:321
 AliAnalysisTaskReducedTree.cxx:322
 AliAnalysisTaskReducedTree.cxx:323
 AliAnalysisTaskReducedTree.cxx:324
 AliAnalysisTaskReducedTree.cxx:325
 AliAnalysisTaskReducedTree.cxx:326
 AliAnalysisTaskReducedTree.cxx:327
 AliAnalysisTaskReducedTree.cxx:328
 AliAnalysisTaskReducedTree.cxx:329
 AliAnalysisTaskReducedTree.cxx:330
 AliAnalysisTaskReducedTree.cxx:331
 AliAnalysisTaskReducedTree.cxx:332
 AliAnalysisTaskReducedTree.cxx:333
 AliAnalysisTaskReducedTree.cxx:334
 AliAnalysisTaskReducedTree.cxx:335
 AliAnalysisTaskReducedTree.cxx:336
 AliAnalysisTaskReducedTree.cxx:337
 AliAnalysisTaskReducedTree.cxx:338
 AliAnalysisTaskReducedTree.cxx:339
 AliAnalysisTaskReducedTree.cxx:340
 AliAnalysisTaskReducedTree.cxx:341
 AliAnalysisTaskReducedTree.cxx:342
 AliAnalysisTaskReducedTree.cxx:343
 AliAnalysisTaskReducedTree.cxx:344
 AliAnalysisTaskReducedTree.cxx:345
 AliAnalysisTaskReducedTree.cxx:346
 AliAnalysisTaskReducedTree.cxx:347
 AliAnalysisTaskReducedTree.cxx:348
 AliAnalysisTaskReducedTree.cxx:349
 AliAnalysisTaskReducedTree.cxx:350
 AliAnalysisTaskReducedTree.cxx:351
 AliAnalysisTaskReducedTree.cxx:352
 AliAnalysisTaskReducedTree.cxx:353
 AliAnalysisTaskReducedTree.cxx:354
 AliAnalysisTaskReducedTree.cxx:355
 AliAnalysisTaskReducedTree.cxx:356
 AliAnalysisTaskReducedTree.cxx:357
 AliAnalysisTaskReducedTree.cxx:358
 AliAnalysisTaskReducedTree.cxx:359
 AliAnalysisTaskReducedTree.cxx:360
 AliAnalysisTaskReducedTree.cxx:361
 AliAnalysisTaskReducedTree.cxx:362
 AliAnalysisTaskReducedTree.cxx:363
 AliAnalysisTaskReducedTree.cxx:364
 AliAnalysisTaskReducedTree.cxx:365
 AliAnalysisTaskReducedTree.cxx:366
 AliAnalysisTaskReducedTree.cxx:367
 AliAnalysisTaskReducedTree.cxx:368
 AliAnalysisTaskReducedTree.cxx:369
 AliAnalysisTaskReducedTree.cxx:370
 AliAnalysisTaskReducedTree.cxx:371
 AliAnalysisTaskReducedTree.cxx:372
 AliAnalysisTaskReducedTree.cxx:373
 AliAnalysisTaskReducedTree.cxx:374
 AliAnalysisTaskReducedTree.cxx:375
 AliAnalysisTaskReducedTree.cxx:376
 AliAnalysisTaskReducedTree.cxx:377
 AliAnalysisTaskReducedTree.cxx:378
 AliAnalysisTaskReducedTree.cxx:379
 AliAnalysisTaskReducedTree.cxx:380
 AliAnalysisTaskReducedTree.cxx:381
 AliAnalysisTaskReducedTree.cxx:382
 AliAnalysisTaskReducedTree.cxx:383
 AliAnalysisTaskReducedTree.cxx:384
 AliAnalysisTaskReducedTree.cxx:385
 AliAnalysisTaskReducedTree.cxx:386
 AliAnalysisTaskReducedTree.cxx:387
 AliAnalysisTaskReducedTree.cxx:388
 AliAnalysisTaskReducedTree.cxx:389
 AliAnalysisTaskReducedTree.cxx:390
 AliAnalysisTaskReducedTree.cxx:391
 AliAnalysisTaskReducedTree.cxx:392
 AliAnalysisTaskReducedTree.cxx:393
 AliAnalysisTaskReducedTree.cxx:394
 AliAnalysisTaskReducedTree.cxx:395
 AliAnalysisTaskReducedTree.cxx:396
 AliAnalysisTaskReducedTree.cxx:397
 AliAnalysisTaskReducedTree.cxx:398
 AliAnalysisTaskReducedTree.cxx:399
 AliAnalysisTaskReducedTree.cxx:400
 AliAnalysisTaskReducedTree.cxx:401
 AliAnalysisTaskReducedTree.cxx:402
 AliAnalysisTaskReducedTree.cxx:403
 AliAnalysisTaskReducedTree.cxx:404
 AliAnalysisTaskReducedTree.cxx:405
 AliAnalysisTaskReducedTree.cxx:406
 AliAnalysisTaskReducedTree.cxx:407
 AliAnalysisTaskReducedTree.cxx:408
 AliAnalysisTaskReducedTree.cxx:409
 AliAnalysisTaskReducedTree.cxx:410
 AliAnalysisTaskReducedTree.cxx:411
 AliAnalysisTaskReducedTree.cxx:412
 AliAnalysisTaskReducedTree.cxx:413
 AliAnalysisTaskReducedTree.cxx:414
 AliAnalysisTaskReducedTree.cxx:415
 AliAnalysisTaskReducedTree.cxx:416
 AliAnalysisTaskReducedTree.cxx:417
 AliAnalysisTaskReducedTree.cxx:418
 AliAnalysisTaskReducedTree.cxx:419
 AliAnalysisTaskReducedTree.cxx:420
 AliAnalysisTaskReducedTree.cxx:421
 AliAnalysisTaskReducedTree.cxx:422
 AliAnalysisTaskReducedTree.cxx:423
 AliAnalysisTaskReducedTree.cxx:424
 AliAnalysisTaskReducedTree.cxx:425
 AliAnalysisTaskReducedTree.cxx:426
 AliAnalysisTaskReducedTree.cxx:427
 AliAnalysisTaskReducedTree.cxx:428
 AliAnalysisTaskReducedTree.cxx:429
 AliAnalysisTaskReducedTree.cxx:430
 AliAnalysisTaskReducedTree.cxx:431
 AliAnalysisTaskReducedTree.cxx:432
 AliAnalysisTaskReducedTree.cxx:433
 AliAnalysisTaskReducedTree.cxx:434
 AliAnalysisTaskReducedTree.cxx:435
 AliAnalysisTaskReducedTree.cxx:436
 AliAnalysisTaskReducedTree.cxx:437
 AliAnalysisTaskReducedTree.cxx:438
 AliAnalysisTaskReducedTree.cxx:439
 AliAnalysisTaskReducedTree.cxx:440
 AliAnalysisTaskReducedTree.cxx:441
 AliAnalysisTaskReducedTree.cxx:442
 AliAnalysisTaskReducedTree.cxx:443
 AliAnalysisTaskReducedTree.cxx:444
 AliAnalysisTaskReducedTree.cxx:445
 AliAnalysisTaskReducedTree.cxx:446
 AliAnalysisTaskReducedTree.cxx:447
 AliAnalysisTaskReducedTree.cxx:448
 AliAnalysisTaskReducedTree.cxx:449
 AliAnalysisTaskReducedTree.cxx:450
 AliAnalysisTaskReducedTree.cxx:451
 AliAnalysisTaskReducedTree.cxx:452
 AliAnalysisTaskReducedTree.cxx:453
 AliAnalysisTaskReducedTree.cxx:454
 AliAnalysisTaskReducedTree.cxx:455
 AliAnalysisTaskReducedTree.cxx:456
 AliAnalysisTaskReducedTree.cxx:457
 AliAnalysisTaskReducedTree.cxx:458
 AliAnalysisTaskReducedTree.cxx:459
 AliAnalysisTaskReducedTree.cxx:460
 AliAnalysisTaskReducedTree.cxx:461
 AliAnalysisTaskReducedTree.cxx:462
 AliAnalysisTaskReducedTree.cxx:463
 AliAnalysisTaskReducedTree.cxx:464
 AliAnalysisTaskReducedTree.cxx:465
 AliAnalysisTaskReducedTree.cxx:466
 AliAnalysisTaskReducedTree.cxx:467
 AliAnalysisTaskReducedTree.cxx:468
 AliAnalysisTaskReducedTree.cxx:469
 AliAnalysisTaskReducedTree.cxx:470
 AliAnalysisTaskReducedTree.cxx:471
 AliAnalysisTaskReducedTree.cxx:472
 AliAnalysisTaskReducedTree.cxx:473
 AliAnalysisTaskReducedTree.cxx:474
 AliAnalysisTaskReducedTree.cxx:475
 AliAnalysisTaskReducedTree.cxx:476
 AliAnalysisTaskReducedTree.cxx:477
 AliAnalysisTaskReducedTree.cxx:478
 AliAnalysisTaskReducedTree.cxx:479
 AliAnalysisTaskReducedTree.cxx:480
 AliAnalysisTaskReducedTree.cxx:481
 AliAnalysisTaskReducedTree.cxx:482
 AliAnalysisTaskReducedTree.cxx:483
 AliAnalysisTaskReducedTree.cxx:484
 AliAnalysisTaskReducedTree.cxx:485
 AliAnalysisTaskReducedTree.cxx:486
 AliAnalysisTaskReducedTree.cxx:487
 AliAnalysisTaskReducedTree.cxx:488
 AliAnalysisTaskReducedTree.cxx:489
 AliAnalysisTaskReducedTree.cxx:490
 AliAnalysisTaskReducedTree.cxx:491
 AliAnalysisTaskReducedTree.cxx:492
 AliAnalysisTaskReducedTree.cxx:493
 AliAnalysisTaskReducedTree.cxx:494
 AliAnalysisTaskReducedTree.cxx:495
 AliAnalysisTaskReducedTree.cxx:496
 AliAnalysisTaskReducedTree.cxx:497
 AliAnalysisTaskReducedTree.cxx:498
 AliAnalysisTaskReducedTree.cxx:499
 AliAnalysisTaskReducedTree.cxx:500
 AliAnalysisTaskReducedTree.cxx:501
 AliAnalysisTaskReducedTree.cxx:502
 AliAnalysisTaskReducedTree.cxx:503
 AliAnalysisTaskReducedTree.cxx:504
 AliAnalysisTaskReducedTree.cxx:505
 AliAnalysisTaskReducedTree.cxx:506
 AliAnalysisTaskReducedTree.cxx:507
 AliAnalysisTaskReducedTree.cxx:508
 AliAnalysisTaskReducedTree.cxx:509
 AliAnalysisTaskReducedTree.cxx:510
 AliAnalysisTaskReducedTree.cxx:511
 AliAnalysisTaskReducedTree.cxx:512
 AliAnalysisTaskReducedTree.cxx:513
 AliAnalysisTaskReducedTree.cxx:514
 AliAnalysisTaskReducedTree.cxx:515
 AliAnalysisTaskReducedTree.cxx:516
 AliAnalysisTaskReducedTree.cxx:517
 AliAnalysisTaskReducedTree.cxx:518
 AliAnalysisTaskReducedTree.cxx:519
 AliAnalysisTaskReducedTree.cxx:520
 AliAnalysisTaskReducedTree.cxx:521
 AliAnalysisTaskReducedTree.cxx:522
 AliAnalysisTaskReducedTree.cxx:523
 AliAnalysisTaskReducedTree.cxx:524
 AliAnalysisTaskReducedTree.cxx:525
 AliAnalysisTaskReducedTree.cxx:526
 AliAnalysisTaskReducedTree.cxx:527
 AliAnalysisTaskReducedTree.cxx:528
 AliAnalysisTaskReducedTree.cxx:529
 AliAnalysisTaskReducedTree.cxx:530
 AliAnalysisTaskReducedTree.cxx:531
 AliAnalysisTaskReducedTree.cxx:532
 AliAnalysisTaskReducedTree.cxx:533
 AliAnalysisTaskReducedTree.cxx:534
 AliAnalysisTaskReducedTree.cxx:535
 AliAnalysisTaskReducedTree.cxx:536
 AliAnalysisTaskReducedTree.cxx:537
 AliAnalysisTaskReducedTree.cxx:538
 AliAnalysisTaskReducedTree.cxx:539
 AliAnalysisTaskReducedTree.cxx:540
 AliAnalysisTaskReducedTree.cxx:541
 AliAnalysisTaskReducedTree.cxx:542
 AliAnalysisTaskReducedTree.cxx:543
 AliAnalysisTaskReducedTree.cxx:544
 AliAnalysisTaskReducedTree.cxx:545
 AliAnalysisTaskReducedTree.cxx:546
 AliAnalysisTaskReducedTree.cxx:547
 AliAnalysisTaskReducedTree.cxx:548
 AliAnalysisTaskReducedTree.cxx:549
 AliAnalysisTaskReducedTree.cxx:550
 AliAnalysisTaskReducedTree.cxx:551
 AliAnalysisTaskReducedTree.cxx:552
 AliAnalysisTaskReducedTree.cxx:553
 AliAnalysisTaskReducedTree.cxx:554
 AliAnalysisTaskReducedTree.cxx:555
 AliAnalysisTaskReducedTree.cxx:556
 AliAnalysisTaskReducedTree.cxx:557
 AliAnalysisTaskReducedTree.cxx:558
 AliAnalysisTaskReducedTree.cxx:559
 AliAnalysisTaskReducedTree.cxx:560
 AliAnalysisTaskReducedTree.cxx:561
 AliAnalysisTaskReducedTree.cxx:562
 AliAnalysisTaskReducedTree.cxx:563
 AliAnalysisTaskReducedTree.cxx:564
 AliAnalysisTaskReducedTree.cxx:565
 AliAnalysisTaskReducedTree.cxx:566
 AliAnalysisTaskReducedTree.cxx:567
 AliAnalysisTaskReducedTree.cxx:568
 AliAnalysisTaskReducedTree.cxx:569
 AliAnalysisTaskReducedTree.cxx:570
 AliAnalysisTaskReducedTree.cxx:571
 AliAnalysisTaskReducedTree.cxx:572
 AliAnalysisTaskReducedTree.cxx:573
 AliAnalysisTaskReducedTree.cxx:574
 AliAnalysisTaskReducedTree.cxx:575
 AliAnalysisTaskReducedTree.cxx:576
 AliAnalysisTaskReducedTree.cxx:577
 AliAnalysisTaskReducedTree.cxx:578
 AliAnalysisTaskReducedTree.cxx:579
 AliAnalysisTaskReducedTree.cxx:580
 AliAnalysisTaskReducedTree.cxx:581
 AliAnalysisTaskReducedTree.cxx:582
 AliAnalysisTaskReducedTree.cxx:583
 AliAnalysisTaskReducedTree.cxx:584
 AliAnalysisTaskReducedTree.cxx:585
 AliAnalysisTaskReducedTree.cxx:586
 AliAnalysisTaskReducedTree.cxx:587
 AliAnalysisTaskReducedTree.cxx:588
 AliAnalysisTaskReducedTree.cxx:589
 AliAnalysisTaskReducedTree.cxx:590
 AliAnalysisTaskReducedTree.cxx:591
 AliAnalysisTaskReducedTree.cxx:592
 AliAnalysisTaskReducedTree.cxx:593
 AliAnalysisTaskReducedTree.cxx:594
 AliAnalysisTaskReducedTree.cxx:595
 AliAnalysisTaskReducedTree.cxx:596
 AliAnalysisTaskReducedTree.cxx:597
 AliAnalysisTaskReducedTree.cxx:598
 AliAnalysisTaskReducedTree.cxx:599
 AliAnalysisTaskReducedTree.cxx:600
 AliAnalysisTaskReducedTree.cxx:601
 AliAnalysisTaskReducedTree.cxx:602
 AliAnalysisTaskReducedTree.cxx:603
 AliAnalysisTaskReducedTree.cxx:604
 AliAnalysisTaskReducedTree.cxx:605
 AliAnalysisTaskReducedTree.cxx:606
 AliAnalysisTaskReducedTree.cxx:607
 AliAnalysisTaskReducedTree.cxx:608
 AliAnalysisTaskReducedTree.cxx:609
 AliAnalysisTaskReducedTree.cxx:610
 AliAnalysisTaskReducedTree.cxx:611
 AliAnalysisTaskReducedTree.cxx:612
 AliAnalysisTaskReducedTree.cxx:613
 AliAnalysisTaskReducedTree.cxx:614
 AliAnalysisTaskReducedTree.cxx:615
 AliAnalysisTaskReducedTree.cxx:616
 AliAnalysisTaskReducedTree.cxx:617
 AliAnalysisTaskReducedTree.cxx:618
 AliAnalysisTaskReducedTree.cxx:619
 AliAnalysisTaskReducedTree.cxx:620
 AliAnalysisTaskReducedTree.cxx:621
 AliAnalysisTaskReducedTree.cxx:622
 AliAnalysisTaskReducedTree.cxx:623
 AliAnalysisTaskReducedTree.cxx:624
 AliAnalysisTaskReducedTree.cxx:625
 AliAnalysisTaskReducedTree.cxx:626
 AliAnalysisTaskReducedTree.cxx:627
 AliAnalysisTaskReducedTree.cxx:628
 AliAnalysisTaskReducedTree.cxx:629
 AliAnalysisTaskReducedTree.cxx:630
 AliAnalysisTaskReducedTree.cxx:631
 AliAnalysisTaskReducedTree.cxx:632
 AliAnalysisTaskReducedTree.cxx:633
 AliAnalysisTaskReducedTree.cxx:634
 AliAnalysisTaskReducedTree.cxx:635
 AliAnalysisTaskReducedTree.cxx:636
 AliAnalysisTaskReducedTree.cxx:637
 AliAnalysisTaskReducedTree.cxx:638
 AliAnalysisTaskReducedTree.cxx:639
 AliAnalysisTaskReducedTree.cxx:640
 AliAnalysisTaskReducedTree.cxx:641
 AliAnalysisTaskReducedTree.cxx:642
 AliAnalysisTaskReducedTree.cxx:643
 AliAnalysisTaskReducedTree.cxx:644
 AliAnalysisTaskReducedTree.cxx:645
 AliAnalysisTaskReducedTree.cxx:646
 AliAnalysisTaskReducedTree.cxx:647
 AliAnalysisTaskReducedTree.cxx:648
 AliAnalysisTaskReducedTree.cxx:649
 AliAnalysisTaskReducedTree.cxx:650
 AliAnalysisTaskReducedTree.cxx:651
 AliAnalysisTaskReducedTree.cxx:652
 AliAnalysisTaskReducedTree.cxx:653
 AliAnalysisTaskReducedTree.cxx:654
 AliAnalysisTaskReducedTree.cxx:655
 AliAnalysisTaskReducedTree.cxx:656
 AliAnalysisTaskReducedTree.cxx:657
 AliAnalysisTaskReducedTree.cxx:658
 AliAnalysisTaskReducedTree.cxx:659
 AliAnalysisTaskReducedTree.cxx:660
 AliAnalysisTaskReducedTree.cxx:661
 AliAnalysisTaskReducedTree.cxx:662
 AliAnalysisTaskReducedTree.cxx:663
 AliAnalysisTaskReducedTree.cxx:664
 AliAnalysisTaskReducedTree.cxx:665
 AliAnalysisTaskReducedTree.cxx:666
 AliAnalysisTaskReducedTree.cxx:667
 AliAnalysisTaskReducedTree.cxx:668
 AliAnalysisTaskReducedTree.cxx:669
 AliAnalysisTaskReducedTree.cxx:670
 AliAnalysisTaskReducedTree.cxx:671
 AliAnalysisTaskReducedTree.cxx:672
 AliAnalysisTaskReducedTree.cxx:673
 AliAnalysisTaskReducedTree.cxx:674
 AliAnalysisTaskReducedTree.cxx:675
 AliAnalysisTaskReducedTree.cxx:676
 AliAnalysisTaskReducedTree.cxx:677
 AliAnalysisTaskReducedTree.cxx:678
 AliAnalysisTaskReducedTree.cxx:679
 AliAnalysisTaskReducedTree.cxx:680
 AliAnalysisTaskReducedTree.cxx:681
 AliAnalysisTaskReducedTree.cxx:682
 AliAnalysisTaskReducedTree.cxx:683
 AliAnalysisTaskReducedTree.cxx:684
 AliAnalysisTaskReducedTree.cxx:685
 AliAnalysisTaskReducedTree.cxx:686
 AliAnalysisTaskReducedTree.cxx:687
 AliAnalysisTaskReducedTree.cxx:688
 AliAnalysisTaskReducedTree.cxx:689
 AliAnalysisTaskReducedTree.cxx:690
 AliAnalysisTaskReducedTree.cxx:691
 AliAnalysisTaskReducedTree.cxx:692
 AliAnalysisTaskReducedTree.cxx:693
 AliAnalysisTaskReducedTree.cxx:694
 AliAnalysisTaskReducedTree.cxx:695
 AliAnalysisTaskReducedTree.cxx:696
 AliAnalysisTaskReducedTree.cxx:697
 AliAnalysisTaskReducedTree.cxx:698
 AliAnalysisTaskReducedTree.cxx:699
 AliAnalysisTaskReducedTree.cxx:700
 AliAnalysisTaskReducedTree.cxx:701
 AliAnalysisTaskReducedTree.cxx:702
 AliAnalysisTaskReducedTree.cxx:703
 AliAnalysisTaskReducedTree.cxx:704
 AliAnalysisTaskReducedTree.cxx:705
 AliAnalysisTaskReducedTree.cxx:706
 AliAnalysisTaskReducedTree.cxx:707
 AliAnalysisTaskReducedTree.cxx:708
 AliAnalysisTaskReducedTree.cxx:709
 AliAnalysisTaskReducedTree.cxx:710
 AliAnalysisTaskReducedTree.cxx:711
 AliAnalysisTaskReducedTree.cxx:712
 AliAnalysisTaskReducedTree.cxx:713
 AliAnalysisTaskReducedTree.cxx:714
 AliAnalysisTaskReducedTree.cxx:715
 AliAnalysisTaskReducedTree.cxx:716
 AliAnalysisTaskReducedTree.cxx:717
 AliAnalysisTaskReducedTree.cxx:718
 AliAnalysisTaskReducedTree.cxx:719
 AliAnalysisTaskReducedTree.cxx:720
 AliAnalysisTaskReducedTree.cxx:721
 AliAnalysisTaskReducedTree.cxx:722
 AliAnalysisTaskReducedTree.cxx:723
 AliAnalysisTaskReducedTree.cxx:724
 AliAnalysisTaskReducedTree.cxx:725
 AliAnalysisTaskReducedTree.cxx:726
 AliAnalysisTaskReducedTree.cxx:727
 AliAnalysisTaskReducedTree.cxx:728
 AliAnalysisTaskReducedTree.cxx:729
 AliAnalysisTaskReducedTree.cxx:730
 AliAnalysisTaskReducedTree.cxx:731
 AliAnalysisTaskReducedTree.cxx:732
 AliAnalysisTaskReducedTree.cxx:733
 AliAnalysisTaskReducedTree.cxx:734
 AliAnalysisTaskReducedTree.cxx:735
 AliAnalysisTaskReducedTree.cxx:736
 AliAnalysisTaskReducedTree.cxx:737
 AliAnalysisTaskReducedTree.cxx:738
 AliAnalysisTaskReducedTree.cxx:739
 AliAnalysisTaskReducedTree.cxx:740
 AliAnalysisTaskReducedTree.cxx:741
 AliAnalysisTaskReducedTree.cxx:742
 AliAnalysisTaskReducedTree.cxx:743
 AliAnalysisTaskReducedTree.cxx:744
 AliAnalysisTaskReducedTree.cxx:745
 AliAnalysisTaskReducedTree.cxx:746
 AliAnalysisTaskReducedTree.cxx:747
 AliAnalysisTaskReducedTree.cxx:748
 AliAnalysisTaskReducedTree.cxx:749
 AliAnalysisTaskReducedTree.cxx:750
 AliAnalysisTaskReducedTree.cxx:751
 AliAnalysisTaskReducedTree.cxx:752
 AliAnalysisTaskReducedTree.cxx:753
 AliAnalysisTaskReducedTree.cxx:754
 AliAnalysisTaskReducedTree.cxx:755
 AliAnalysisTaskReducedTree.cxx:756
 AliAnalysisTaskReducedTree.cxx:757
 AliAnalysisTaskReducedTree.cxx:758
 AliAnalysisTaskReducedTree.cxx:759
 AliAnalysisTaskReducedTree.cxx:760
 AliAnalysisTaskReducedTree.cxx:761
 AliAnalysisTaskReducedTree.cxx:762
 AliAnalysisTaskReducedTree.cxx:763
 AliAnalysisTaskReducedTree.cxx:764
 AliAnalysisTaskReducedTree.cxx:765
 AliAnalysisTaskReducedTree.cxx:766
 AliAnalysisTaskReducedTree.cxx:767
 AliAnalysisTaskReducedTree.cxx:768
 AliAnalysisTaskReducedTree.cxx:769
 AliAnalysisTaskReducedTree.cxx:770
 AliAnalysisTaskReducedTree.cxx:771
 AliAnalysisTaskReducedTree.cxx:772
 AliAnalysisTaskReducedTree.cxx:773
 AliAnalysisTaskReducedTree.cxx:774
 AliAnalysisTaskReducedTree.cxx:775
 AliAnalysisTaskReducedTree.cxx:776
 AliAnalysisTaskReducedTree.cxx:777
 AliAnalysisTaskReducedTree.cxx:778
 AliAnalysisTaskReducedTree.cxx:779
 AliAnalysisTaskReducedTree.cxx:780
 AliAnalysisTaskReducedTree.cxx:781
 AliAnalysisTaskReducedTree.cxx:782
 AliAnalysisTaskReducedTree.cxx:783
 AliAnalysisTaskReducedTree.cxx:784
 AliAnalysisTaskReducedTree.cxx:785
 AliAnalysisTaskReducedTree.cxx:786
 AliAnalysisTaskReducedTree.cxx:787
 AliAnalysisTaskReducedTree.cxx:788
 AliAnalysisTaskReducedTree.cxx:789
 AliAnalysisTaskReducedTree.cxx:790
 AliAnalysisTaskReducedTree.cxx:791
 AliAnalysisTaskReducedTree.cxx:792
 AliAnalysisTaskReducedTree.cxx:793
 AliAnalysisTaskReducedTree.cxx:794
 AliAnalysisTaskReducedTree.cxx:795
 AliAnalysisTaskReducedTree.cxx:796
 AliAnalysisTaskReducedTree.cxx:797
 AliAnalysisTaskReducedTree.cxx:798
 AliAnalysisTaskReducedTree.cxx:799
 AliAnalysisTaskReducedTree.cxx:800
 AliAnalysisTaskReducedTree.cxx:801
 AliAnalysisTaskReducedTree.cxx:802
 AliAnalysisTaskReducedTree.cxx:803
 AliAnalysisTaskReducedTree.cxx:804
 AliAnalysisTaskReducedTree.cxx:805
 AliAnalysisTaskReducedTree.cxx:806
 AliAnalysisTaskReducedTree.cxx:807
 AliAnalysisTaskReducedTree.cxx:808
 AliAnalysisTaskReducedTree.cxx:809
 AliAnalysisTaskReducedTree.cxx:810
 AliAnalysisTaskReducedTree.cxx:811
 AliAnalysisTaskReducedTree.cxx:812
 AliAnalysisTaskReducedTree.cxx:813
 AliAnalysisTaskReducedTree.cxx:814
 AliAnalysisTaskReducedTree.cxx:815
 AliAnalysisTaskReducedTree.cxx:816
 AliAnalysisTaskReducedTree.cxx:817
 AliAnalysisTaskReducedTree.cxx:818
 AliAnalysisTaskReducedTree.cxx:819
 AliAnalysisTaskReducedTree.cxx:820
 AliAnalysisTaskReducedTree.cxx:821
 AliAnalysisTaskReducedTree.cxx:822
 AliAnalysisTaskReducedTree.cxx:823
 AliAnalysisTaskReducedTree.cxx:824
 AliAnalysisTaskReducedTree.cxx:825
 AliAnalysisTaskReducedTree.cxx:826
 AliAnalysisTaskReducedTree.cxx:827
 AliAnalysisTaskReducedTree.cxx:828
 AliAnalysisTaskReducedTree.cxx:829
 AliAnalysisTaskReducedTree.cxx:830
 AliAnalysisTaskReducedTree.cxx:831
 AliAnalysisTaskReducedTree.cxx:832
 AliAnalysisTaskReducedTree.cxx:833
 AliAnalysisTaskReducedTree.cxx:834
 AliAnalysisTaskReducedTree.cxx:835
 AliAnalysisTaskReducedTree.cxx:836
 AliAnalysisTaskReducedTree.cxx:837
 AliAnalysisTaskReducedTree.cxx:838
 AliAnalysisTaskReducedTree.cxx:839
 AliAnalysisTaskReducedTree.cxx:840
 AliAnalysisTaskReducedTree.cxx:841
 AliAnalysisTaskReducedTree.cxx:842
 AliAnalysisTaskReducedTree.cxx:843
 AliAnalysisTaskReducedTree.cxx:844
 AliAnalysisTaskReducedTree.cxx:845
 AliAnalysisTaskReducedTree.cxx:846
 AliAnalysisTaskReducedTree.cxx:847
 AliAnalysisTaskReducedTree.cxx:848
 AliAnalysisTaskReducedTree.cxx:849
 AliAnalysisTaskReducedTree.cxx:850
 AliAnalysisTaskReducedTree.cxx:851
 AliAnalysisTaskReducedTree.cxx:852
 AliAnalysisTaskReducedTree.cxx:853
 AliAnalysisTaskReducedTree.cxx:854
 AliAnalysisTaskReducedTree.cxx:855
 AliAnalysisTaskReducedTree.cxx:856
 AliAnalysisTaskReducedTree.cxx:857
 AliAnalysisTaskReducedTree.cxx:858
 AliAnalysisTaskReducedTree.cxx:859
 AliAnalysisTaskReducedTree.cxx:860
 AliAnalysisTaskReducedTree.cxx:861
 AliAnalysisTaskReducedTree.cxx:862
 AliAnalysisTaskReducedTree.cxx:863
 AliAnalysisTaskReducedTree.cxx:864
 AliAnalysisTaskReducedTree.cxx:865
 AliAnalysisTaskReducedTree.cxx:866
 AliAnalysisTaskReducedTree.cxx:867
 AliAnalysisTaskReducedTree.cxx:868
 AliAnalysisTaskReducedTree.cxx:869
 AliAnalysisTaskReducedTree.cxx:870
 AliAnalysisTaskReducedTree.cxx:871
 AliAnalysisTaskReducedTree.cxx:872
 AliAnalysisTaskReducedTree.cxx:873
 AliAnalysisTaskReducedTree.cxx:874
 AliAnalysisTaskReducedTree.cxx:875
 AliAnalysisTaskReducedTree.cxx:876
 AliAnalysisTaskReducedTree.cxx:877
 AliAnalysisTaskReducedTree.cxx:878
 AliAnalysisTaskReducedTree.cxx:879
 AliAnalysisTaskReducedTree.cxx:880
 AliAnalysisTaskReducedTree.cxx:881
 AliAnalysisTaskReducedTree.cxx:882
 AliAnalysisTaskReducedTree.cxx:883
 AliAnalysisTaskReducedTree.cxx:884
 AliAnalysisTaskReducedTree.cxx:885
 AliAnalysisTaskReducedTree.cxx:886
 AliAnalysisTaskReducedTree.cxx:887
 AliAnalysisTaskReducedTree.cxx:888
 AliAnalysisTaskReducedTree.cxx:889
 AliAnalysisTaskReducedTree.cxx:890
 AliAnalysisTaskReducedTree.cxx:891
 AliAnalysisTaskReducedTree.cxx:892
 AliAnalysisTaskReducedTree.cxx:893
 AliAnalysisTaskReducedTree.cxx:894
 AliAnalysisTaskReducedTree.cxx:895
 AliAnalysisTaskReducedTree.cxx:896
 AliAnalysisTaskReducedTree.cxx:897
 AliAnalysisTaskReducedTree.cxx:898
 AliAnalysisTaskReducedTree.cxx:899
 AliAnalysisTaskReducedTree.cxx:900
 AliAnalysisTaskReducedTree.cxx:901
 AliAnalysisTaskReducedTree.cxx:902
 AliAnalysisTaskReducedTree.cxx:903
 AliAnalysisTaskReducedTree.cxx:904
 AliAnalysisTaskReducedTree.cxx:905
 AliAnalysisTaskReducedTree.cxx:906
 AliAnalysisTaskReducedTree.cxx:907
 AliAnalysisTaskReducedTree.cxx:908
 AliAnalysisTaskReducedTree.cxx:909
 AliAnalysisTaskReducedTree.cxx:910
 AliAnalysisTaskReducedTree.cxx:911
 AliAnalysisTaskReducedTree.cxx:912
 AliAnalysisTaskReducedTree.cxx:913
 AliAnalysisTaskReducedTree.cxx:914
 AliAnalysisTaskReducedTree.cxx:915
 AliAnalysisTaskReducedTree.cxx:916
 AliAnalysisTaskReducedTree.cxx:917
 AliAnalysisTaskReducedTree.cxx:918
 AliAnalysisTaskReducedTree.cxx:919
 AliAnalysisTaskReducedTree.cxx:920
 AliAnalysisTaskReducedTree.cxx:921
 AliAnalysisTaskReducedTree.cxx:922
 AliAnalysisTaskReducedTree.cxx:923
 AliAnalysisTaskReducedTree.cxx:924
 AliAnalysisTaskReducedTree.cxx:925
 AliAnalysisTaskReducedTree.cxx:926
 AliAnalysisTaskReducedTree.cxx:927
 AliAnalysisTaskReducedTree.cxx:928
 AliAnalysisTaskReducedTree.cxx:929
 AliAnalysisTaskReducedTree.cxx:930
 AliAnalysisTaskReducedTree.cxx:931
 AliAnalysisTaskReducedTree.cxx:932
 AliAnalysisTaskReducedTree.cxx:933
 AliAnalysisTaskReducedTree.cxx:934
 AliAnalysisTaskReducedTree.cxx:935
 AliAnalysisTaskReducedTree.cxx:936
 AliAnalysisTaskReducedTree.cxx:937
 AliAnalysisTaskReducedTree.cxx:938
 AliAnalysisTaskReducedTree.cxx:939
 AliAnalysisTaskReducedTree.cxx:940
 AliAnalysisTaskReducedTree.cxx:941
 AliAnalysisTaskReducedTree.cxx:942
 AliAnalysisTaskReducedTree.cxx:943
 AliAnalysisTaskReducedTree.cxx:944
 AliAnalysisTaskReducedTree.cxx:945
 AliAnalysisTaskReducedTree.cxx:946
 AliAnalysisTaskReducedTree.cxx:947
 AliAnalysisTaskReducedTree.cxx:948
 AliAnalysisTaskReducedTree.cxx:949
 AliAnalysisTaskReducedTree.cxx:950
 AliAnalysisTaskReducedTree.cxx:951
 AliAnalysisTaskReducedTree.cxx:952
 AliAnalysisTaskReducedTree.cxx:953
 AliAnalysisTaskReducedTree.cxx:954
 AliAnalysisTaskReducedTree.cxx:955
 AliAnalysisTaskReducedTree.cxx:956
 AliAnalysisTaskReducedTree.cxx:957
 AliAnalysisTaskReducedTree.cxx:958
 AliAnalysisTaskReducedTree.cxx:959
 AliAnalysisTaskReducedTree.cxx:960
 AliAnalysisTaskReducedTree.cxx:961
 AliAnalysisTaskReducedTree.cxx:962
 AliAnalysisTaskReducedTree.cxx:963
 AliAnalysisTaskReducedTree.cxx:964
 AliAnalysisTaskReducedTree.cxx:965
 AliAnalysisTaskReducedTree.cxx:966
 AliAnalysisTaskReducedTree.cxx:967
 AliAnalysisTaskReducedTree.cxx:968
 AliAnalysisTaskReducedTree.cxx:969
 AliAnalysisTaskReducedTree.cxx:970
 AliAnalysisTaskReducedTree.cxx:971
 AliAnalysisTaskReducedTree.cxx:972
 AliAnalysisTaskReducedTree.cxx:973
 AliAnalysisTaskReducedTree.cxx:974
 AliAnalysisTaskReducedTree.cxx:975
 AliAnalysisTaskReducedTree.cxx:976
 AliAnalysisTaskReducedTree.cxx:977
 AliAnalysisTaskReducedTree.cxx:978
 AliAnalysisTaskReducedTree.cxx:979
 AliAnalysisTaskReducedTree.cxx:980
 AliAnalysisTaskReducedTree.cxx:981
 AliAnalysisTaskReducedTree.cxx:982
 AliAnalysisTaskReducedTree.cxx:983
 AliAnalysisTaskReducedTree.cxx:984
 AliAnalysisTaskReducedTree.cxx:985
 AliAnalysisTaskReducedTree.cxx:986
 AliAnalysisTaskReducedTree.cxx:987
 AliAnalysisTaskReducedTree.cxx:988
 AliAnalysisTaskReducedTree.cxx:989
 AliAnalysisTaskReducedTree.cxx:990
 AliAnalysisTaskReducedTree.cxx:991
 AliAnalysisTaskReducedTree.cxx:992
 AliAnalysisTaskReducedTree.cxx:993
 AliAnalysisTaskReducedTree.cxx:994
 AliAnalysisTaskReducedTree.cxx:995
 AliAnalysisTaskReducedTree.cxx:996
 AliAnalysisTaskReducedTree.cxx:997
 AliAnalysisTaskReducedTree.cxx:998
 AliAnalysisTaskReducedTree.cxx:999
 AliAnalysisTaskReducedTree.cxx:1000
 AliAnalysisTaskReducedTree.cxx:1001
 AliAnalysisTaskReducedTree.cxx:1002
 AliAnalysisTaskReducedTree.cxx:1003
 AliAnalysisTaskReducedTree.cxx:1004
 AliAnalysisTaskReducedTree.cxx:1005
 AliAnalysisTaskReducedTree.cxx:1006
 AliAnalysisTaskReducedTree.cxx:1007
 AliAnalysisTaskReducedTree.cxx:1008
 AliAnalysisTaskReducedTree.cxx:1009
 AliAnalysisTaskReducedTree.cxx:1010
 AliAnalysisTaskReducedTree.cxx:1011
 AliAnalysisTaskReducedTree.cxx:1012
 AliAnalysisTaskReducedTree.cxx:1013
 AliAnalysisTaskReducedTree.cxx:1014
 AliAnalysisTaskReducedTree.cxx:1015
 AliAnalysisTaskReducedTree.cxx:1016
 AliAnalysisTaskReducedTree.cxx:1017
 AliAnalysisTaskReducedTree.cxx:1018
 AliAnalysisTaskReducedTree.cxx:1019
 AliAnalysisTaskReducedTree.cxx:1020
 AliAnalysisTaskReducedTree.cxx:1021
 AliAnalysisTaskReducedTree.cxx:1022
 AliAnalysisTaskReducedTree.cxx:1023
 AliAnalysisTaskReducedTree.cxx:1024
 AliAnalysisTaskReducedTree.cxx:1025
 AliAnalysisTaskReducedTree.cxx:1026
 AliAnalysisTaskReducedTree.cxx:1027
 AliAnalysisTaskReducedTree.cxx:1028
 AliAnalysisTaskReducedTree.cxx:1029
 AliAnalysisTaskReducedTree.cxx:1030
 AliAnalysisTaskReducedTree.cxx:1031
 AliAnalysisTaskReducedTree.cxx:1032
 AliAnalysisTaskReducedTree.cxx:1033
 AliAnalysisTaskReducedTree.cxx:1034
 AliAnalysisTaskReducedTree.cxx:1035
 AliAnalysisTaskReducedTree.cxx:1036
 AliAnalysisTaskReducedTree.cxx:1037
 AliAnalysisTaskReducedTree.cxx:1038
 AliAnalysisTaskReducedTree.cxx:1039
 AliAnalysisTaskReducedTree.cxx:1040
 AliAnalysisTaskReducedTree.cxx:1041
 AliAnalysisTaskReducedTree.cxx:1042
 AliAnalysisTaskReducedTree.cxx:1043
 AliAnalysisTaskReducedTree.cxx:1044
 AliAnalysisTaskReducedTree.cxx:1045
 AliAnalysisTaskReducedTree.cxx:1046
 AliAnalysisTaskReducedTree.cxx:1047
 AliAnalysisTaskReducedTree.cxx:1048
 AliAnalysisTaskReducedTree.cxx:1049
 AliAnalysisTaskReducedTree.cxx:1050
 AliAnalysisTaskReducedTree.cxx:1051
 AliAnalysisTaskReducedTree.cxx:1052
 AliAnalysisTaskReducedTree.cxx:1053
 AliAnalysisTaskReducedTree.cxx:1054
 AliAnalysisTaskReducedTree.cxx:1055
 AliAnalysisTaskReducedTree.cxx:1056
 AliAnalysisTaskReducedTree.cxx:1057
 AliAnalysisTaskReducedTree.cxx:1058
 AliAnalysisTaskReducedTree.cxx:1059
 AliAnalysisTaskReducedTree.cxx:1060
 AliAnalysisTaskReducedTree.cxx:1061
 AliAnalysisTaskReducedTree.cxx:1062
 AliAnalysisTaskReducedTree.cxx:1063
 AliAnalysisTaskReducedTree.cxx:1064
 AliAnalysisTaskReducedTree.cxx:1065
 AliAnalysisTaskReducedTree.cxx:1066
 AliAnalysisTaskReducedTree.cxx:1067
 AliAnalysisTaskReducedTree.cxx:1068
 AliAnalysisTaskReducedTree.cxx:1069
 AliAnalysisTaskReducedTree.cxx:1070
 AliAnalysisTaskReducedTree.cxx:1071
 AliAnalysisTaskReducedTree.cxx:1072
 AliAnalysisTaskReducedTree.cxx:1073
 AliAnalysisTaskReducedTree.cxx:1074
 AliAnalysisTaskReducedTree.cxx:1075
 AliAnalysisTaskReducedTree.cxx:1076
 AliAnalysisTaskReducedTree.cxx:1077
 AliAnalysisTaskReducedTree.cxx:1078
 AliAnalysisTaskReducedTree.cxx:1079
 AliAnalysisTaskReducedTree.cxx:1080
 AliAnalysisTaskReducedTree.cxx:1081
 AliAnalysisTaskReducedTree.cxx:1082
 AliAnalysisTaskReducedTree.cxx:1083
 AliAnalysisTaskReducedTree.cxx:1084
 AliAnalysisTaskReducedTree.cxx:1085
 AliAnalysisTaskReducedTree.cxx:1086
 AliAnalysisTaskReducedTree.cxx:1087
 AliAnalysisTaskReducedTree.cxx:1088
 AliAnalysisTaskReducedTree.cxx:1089
 AliAnalysisTaskReducedTree.cxx:1090
 AliAnalysisTaskReducedTree.cxx:1091
 AliAnalysisTaskReducedTree.cxx:1092
 AliAnalysisTaskReducedTree.cxx:1093
 AliAnalysisTaskReducedTree.cxx:1094
 AliAnalysisTaskReducedTree.cxx:1095
 AliAnalysisTaskReducedTree.cxx:1096
 AliAnalysisTaskReducedTree.cxx:1097
 AliAnalysisTaskReducedTree.cxx:1098
 AliAnalysisTaskReducedTree.cxx:1099
 AliAnalysisTaskReducedTree.cxx:1100
 AliAnalysisTaskReducedTree.cxx:1101
 AliAnalysisTaskReducedTree.cxx:1102
 AliAnalysisTaskReducedTree.cxx:1103
 AliAnalysisTaskReducedTree.cxx:1104
 AliAnalysisTaskReducedTree.cxx:1105
 AliAnalysisTaskReducedTree.cxx:1106
 AliAnalysisTaskReducedTree.cxx:1107
 AliAnalysisTaskReducedTree.cxx:1108
 AliAnalysisTaskReducedTree.cxx:1109
 AliAnalysisTaskReducedTree.cxx:1110
 AliAnalysisTaskReducedTree.cxx:1111
 AliAnalysisTaskReducedTree.cxx:1112
 AliAnalysisTaskReducedTree.cxx:1113
 AliAnalysisTaskReducedTree.cxx:1114
 AliAnalysisTaskReducedTree.cxx:1115
 AliAnalysisTaskReducedTree.cxx:1116
 AliAnalysisTaskReducedTree.cxx:1117
 AliAnalysisTaskReducedTree.cxx:1118
 AliAnalysisTaskReducedTree.cxx:1119
 AliAnalysisTaskReducedTree.cxx:1120
 AliAnalysisTaskReducedTree.cxx:1121
 AliAnalysisTaskReducedTree.cxx:1122
 AliAnalysisTaskReducedTree.cxx:1123
 AliAnalysisTaskReducedTree.cxx:1124
 AliAnalysisTaskReducedTree.cxx:1125
 AliAnalysisTaskReducedTree.cxx:1126
 AliAnalysisTaskReducedTree.cxx:1127
 AliAnalysisTaskReducedTree.cxx:1128
 AliAnalysisTaskReducedTree.cxx:1129
 AliAnalysisTaskReducedTree.cxx:1130
 AliAnalysisTaskReducedTree.cxx:1131
 AliAnalysisTaskReducedTree.cxx:1132
 AliAnalysisTaskReducedTree.cxx:1133
 AliAnalysisTaskReducedTree.cxx:1134
 AliAnalysisTaskReducedTree.cxx:1135
 AliAnalysisTaskReducedTree.cxx:1136
 AliAnalysisTaskReducedTree.cxx:1137
 AliAnalysisTaskReducedTree.cxx:1138
 AliAnalysisTaskReducedTree.cxx:1139
 AliAnalysisTaskReducedTree.cxx:1140
 AliAnalysisTaskReducedTree.cxx:1141
 AliAnalysisTaskReducedTree.cxx:1142
 AliAnalysisTaskReducedTree.cxx:1143
 AliAnalysisTaskReducedTree.cxx:1144
 AliAnalysisTaskReducedTree.cxx:1145
 AliAnalysisTaskReducedTree.cxx:1146
 AliAnalysisTaskReducedTree.cxx:1147
 AliAnalysisTaskReducedTree.cxx:1148
 AliAnalysisTaskReducedTree.cxx:1149
 AliAnalysisTaskReducedTree.cxx:1150
 AliAnalysisTaskReducedTree.cxx:1151
 AliAnalysisTaskReducedTree.cxx:1152
 AliAnalysisTaskReducedTree.cxx:1153
 AliAnalysisTaskReducedTree.cxx:1154
 AliAnalysisTaskReducedTree.cxx:1155
 AliAnalysisTaskReducedTree.cxx:1156
 AliAnalysisTaskReducedTree.cxx:1157
 AliAnalysisTaskReducedTree.cxx:1158
 AliAnalysisTaskReducedTree.cxx:1159
 AliAnalysisTaskReducedTree.cxx:1160
 AliAnalysisTaskReducedTree.cxx:1161
 AliAnalysisTaskReducedTree.cxx:1162
 AliAnalysisTaskReducedTree.cxx:1163
 AliAnalysisTaskReducedTree.cxx:1164
 AliAnalysisTaskReducedTree.cxx:1165
 AliAnalysisTaskReducedTree.cxx:1166
 AliAnalysisTaskReducedTree.cxx:1167
 AliAnalysisTaskReducedTree.cxx:1168
 AliAnalysisTaskReducedTree.cxx:1169
 AliAnalysisTaskReducedTree.cxx:1170
 AliAnalysisTaskReducedTree.cxx:1171
 AliAnalysisTaskReducedTree.cxx:1172
 AliAnalysisTaskReducedTree.cxx:1173
 AliAnalysisTaskReducedTree.cxx:1174
 AliAnalysisTaskReducedTree.cxx:1175
 AliAnalysisTaskReducedTree.cxx:1176
 AliAnalysisTaskReducedTree.cxx:1177
 AliAnalysisTaskReducedTree.cxx:1178
 AliAnalysisTaskReducedTree.cxx:1179
 AliAnalysisTaskReducedTree.cxx:1180
 AliAnalysisTaskReducedTree.cxx:1181
 AliAnalysisTaskReducedTree.cxx:1182
 AliAnalysisTaskReducedTree.cxx:1183
 AliAnalysisTaskReducedTree.cxx:1184
 AliAnalysisTaskReducedTree.cxx:1185
 AliAnalysisTaskReducedTree.cxx:1186
 AliAnalysisTaskReducedTree.cxx:1187
 AliAnalysisTaskReducedTree.cxx:1188
 AliAnalysisTaskReducedTree.cxx:1189
 AliAnalysisTaskReducedTree.cxx:1190
 AliAnalysisTaskReducedTree.cxx:1191
 AliAnalysisTaskReducedTree.cxx:1192
 AliAnalysisTaskReducedTree.cxx:1193
 AliAnalysisTaskReducedTree.cxx:1194
 AliAnalysisTaskReducedTree.cxx:1195
 AliAnalysisTaskReducedTree.cxx:1196
 AliAnalysisTaskReducedTree.cxx:1197
 AliAnalysisTaskReducedTree.cxx:1198
 AliAnalysisTaskReducedTree.cxx:1199
 AliAnalysisTaskReducedTree.cxx:1200
 AliAnalysisTaskReducedTree.cxx:1201
 AliAnalysisTaskReducedTree.cxx:1202
 AliAnalysisTaskReducedTree.cxx:1203
 AliAnalysisTaskReducedTree.cxx:1204
 AliAnalysisTaskReducedTree.cxx:1205
 AliAnalysisTaskReducedTree.cxx:1206
 AliAnalysisTaskReducedTree.cxx:1207
 AliAnalysisTaskReducedTree.cxx:1208
 AliAnalysisTaskReducedTree.cxx:1209
 AliAnalysisTaskReducedTree.cxx:1210
 AliAnalysisTaskReducedTree.cxx:1211
 AliAnalysisTaskReducedTree.cxx:1212
 AliAnalysisTaskReducedTree.cxx:1213
 AliAnalysisTaskReducedTree.cxx:1214
 AliAnalysisTaskReducedTree.cxx:1215
 AliAnalysisTaskReducedTree.cxx:1216
 AliAnalysisTaskReducedTree.cxx:1217
 AliAnalysisTaskReducedTree.cxx:1218
 AliAnalysisTaskReducedTree.cxx:1219
 AliAnalysisTaskReducedTree.cxx:1220
 AliAnalysisTaskReducedTree.cxx:1221
 AliAnalysisTaskReducedTree.cxx:1222
 AliAnalysisTaskReducedTree.cxx:1223
 AliAnalysisTaskReducedTree.cxx:1224
 AliAnalysisTaskReducedTree.cxx:1225
 AliAnalysisTaskReducedTree.cxx:1226
 AliAnalysisTaskReducedTree.cxx:1227
 AliAnalysisTaskReducedTree.cxx:1228
 AliAnalysisTaskReducedTree.cxx:1229
 AliAnalysisTaskReducedTree.cxx:1230
 AliAnalysisTaskReducedTree.cxx:1231
 AliAnalysisTaskReducedTree.cxx:1232
 AliAnalysisTaskReducedTree.cxx:1233
 AliAnalysisTaskReducedTree.cxx:1234
 AliAnalysisTaskReducedTree.cxx:1235
 AliAnalysisTaskReducedTree.cxx:1236
 AliAnalysisTaskReducedTree.cxx:1237
 AliAnalysisTaskReducedTree.cxx:1238
 AliAnalysisTaskReducedTree.cxx:1239
 AliAnalysisTaskReducedTree.cxx:1240
 AliAnalysisTaskReducedTree.cxx:1241
 AliAnalysisTaskReducedTree.cxx:1242
 AliAnalysisTaskReducedTree.cxx:1243
 AliAnalysisTaskReducedTree.cxx:1244
 AliAnalysisTaskReducedTree.cxx:1245
 AliAnalysisTaskReducedTree.cxx:1246
 AliAnalysisTaskReducedTree.cxx:1247
 AliAnalysisTaskReducedTree.cxx:1248
 AliAnalysisTaskReducedTree.cxx:1249
 AliAnalysisTaskReducedTree.cxx:1250
 AliAnalysisTaskReducedTree.cxx:1251
 AliAnalysisTaskReducedTree.cxx:1252
 AliAnalysisTaskReducedTree.cxx:1253
 AliAnalysisTaskReducedTree.cxx:1254
 AliAnalysisTaskReducedTree.cxx:1255
 AliAnalysisTaskReducedTree.cxx:1256
 AliAnalysisTaskReducedTree.cxx:1257
 AliAnalysisTaskReducedTree.cxx:1258
 AliAnalysisTaskReducedTree.cxx:1259
 AliAnalysisTaskReducedTree.cxx:1260
 AliAnalysisTaskReducedTree.cxx:1261
 AliAnalysisTaskReducedTree.cxx:1262
 AliAnalysisTaskReducedTree.cxx:1263
 AliAnalysisTaskReducedTree.cxx:1264
 AliAnalysisTaskReducedTree.cxx:1265
 AliAnalysisTaskReducedTree.cxx:1266
 AliAnalysisTaskReducedTree.cxx:1267
 AliAnalysisTaskReducedTree.cxx:1268
 AliAnalysisTaskReducedTree.cxx:1269
 AliAnalysisTaskReducedTree.cxx:1270
 AliAnalysisTaskReducedTree.cxx:1271
 AliAnalysisTaskReducedTree.cxx:1272