ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, 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.                  *
 **************************************************************************/

////////////////////////////////////////////////////////////////////////////////
//
//  This class is used to reconstruct the neutral Xi(1530) resonance.  
//  This class essentially combines charged Xi candidates from the Xi Vertexer 
//  with primary charged pions. 
//
//  authors: Dhevan Gangadharan (dhevan.raja.gangadharan@cern.ch)
//
////////////////////////////////////////////////////////////////////////////////



#include <iostream>
#include <math.h>
#include "TChain.h"
#include "TFile.h"
#include "TKey.h"
#include "TObject.h"
#include "TObjString.h"
#include "TList.h"
#include "TTree.h"
#include "TH1F.h"
#include "TH1D.h"
#include "TH2D.h"
#include "TH3D.h"
#include "TProfile.h"
#include "TCanvas.h"

#include "AliAnalysisTask.h"
#include "AliAnalysisManager.h"


#include "AliESDEvent.h"
#include "AliESDInputHandler.h"
#include "AliESDtrackCuts.h"
#include "AliMCEventHandler.h"
#include "AliMCEvent.h"
#include "AliStack.h"

#include "AliAODEvent.h"
#include "AliAODInputHandler.h"
#include "AliAODMCParticle.h"
#include "AliAODcascade.h"
#include "AliESDcascade.h"
#include "AliV0vertexer.h"
#include "AliCascadeVertexer.h"

#include "AliXiStar.h"

#define PI 3.1415927


// Author: Dhevan Gangadharan

ClassImp(AliXiStar)

//________________________________________________________________________
AliXiStar::AliXiStar():
AliAnalysisTaskSE(),
  fname(0),
  fAOD(0x0), 
  fESD(0x0), 
  fOutputList(0x0),
  fTrackCut(0x0),
  fPIDResponse(0x0),
  fEC(0x0),
  fEvt(0x0),
  fTempStruct(0x0),
  fZvertexBins(0),
  fEventsToMix(0),
  fMultBins(0),
  fMCcase(0),
  fAODcase(0),
  fEventCounter(0),
  fMaxDecayLength(0),
  fMassWindow(0),
  fTrueMassPr(0), 
  fTrueMassPi(0), 
  fTrueMassK(0), 
  fTrueMassLam(0), 
  fTrueMassXi(0),
  fESDTrack4(0x0), 
  fXiTrack(0x0),
  fCutList(0)
{
  // Default Constructor
  for (Int_t i=0; i<21; i++){
    fCovMatrix[i]=-99999.;
    if (i<12) fMultLimits[i] = 0;
  }
  for (Int_t i=0; i<kNCuts; i++){
    fDecayParameters[i]=0;
    for (Int_t j=0; j<kNCutVariations; j++){
      fCutValues[j][i]=0;
    }
  }
  //
  for (Int_t cv=0; cv<kNCutVariations; cv++){
    CutVar[cv].fXi=0x0;
    CutVar[cv].fXibar=0x0;
    CutVar[cv].fXiMinusPiPlus=0x0;
    CutVar[cv].fXiMinusPiMinus=0x0;
    CutVar[cv].fXiPlusPiPlus=0x0;
    CutVar[cv].fXiPlusPiMinus=0x0;
    //    
    CutVar[cv].fXiMinusPiPlusbkg=0x0;
    CutVar[cv].fXiMinusPiMinusbkg=0x0;
    CutVar[cv].fXiPlusPiPlusbkg=0x0;
    CutVar[cv].fXiPlusPiMinusbkg=0x0;
    //
    CutVar[cv].fMCrecXi=0x0;
    CutVar[cv].fMCrecXibar=0x0;
    CutVar[cv].fMCrecXiMinusPiPlus=0x0;
    CutVar[cv].fMCrecXiPlusPiMinus=0x0;
  }

}
//________________________________________________________________________
AliXiStar::AliXiStar(const char *name, Bool_t AODdecision, Bool_t MCdecision, Int_t CutListOption) 
  : AliAnalysisTaskSE(name), 
    fname(name),
    fAOD(0x0), 
    fESD(0x0), 
    fOutputList(0x0),
    fTrackCut(0x0),
    fPIDResponse(0x0),
    fEC(0x0),
    fEvt(0x0),
    fTempStruct(0x0),
    fZvertexBins(0),
    fEventsToMix(0),
    fMultBins(0),
    fMCcase(MCdecision),
    fAODcase(AODdecision),
    fEventCounter(0),
    fMaxDecayLength(0),
    fMassWindow(0),
    fTrueMassPr(0), 
    fTrueMassPi(0), 
    fTrueMassK(0), 
    fTrueMassLam(0), 
    fTrueMassXi(0),
    fESDTrack4(0x0), 
    fXiTrack(0x0),
    fCutList(CutListOption)
    
{
  // Main Constructor
  for (Int_t i=0; i<21; i++){
    fCovMatrix[i]=-99999.;
    if (i<12) fMultLimits[i] = 0;
  }
  for (Int_t i=0; i<kNCuts; i++){
    fDecayParameters[i]=0;
    for (Int_t j=0; j<kNCutVariations; j++){
      fCutValues[j][i]=0;
    }
  }
  //
  for (Int_t cv=0; cv<kNCutVariations; cv++){
    CutVar[cv].fXi=0x0;
    CutVar[cv].fXibar=0x0;
    CutVar[cv].fXiMinusPiPlus=0x0;
    CutVar[cv].fXiMinusPiMinus=0x0;
    CutVar[cv].fXiPlusPiPlus=0x0;
    CutVar[cv].fXiPlusPiMinus=0x0;
    //    
    CutVar[cv].fXiMinusPiPlusbkg=0x0;
    CutVar[cv].fXiMinusPiMinusbkg=0x0;
    CutVar[cv].fXiPlusPiPlusbkg=0x0;
    CutVar[cv].fXiPlusPiMinusbkg=0x0;
    //
    CutVar[cv].fMCrecXi=0x0;
    CutVar[cv].fMCrecXibar=0x0;
    CutVar[cv].fMCrecXiMinusPiPlus=0x0;
    CutVar[cv].fMCrecXiPlusPiMinus=0x0;
  }


  // Define output slots here 
  // Output slot #1
  DefineOutput(1, TList::Class());
  
}
//________________________________________________________________________
AliXiStar::AliXiStar(const AliXiStar &obj) 
  : AliAnalysisTaskSE(obj.fname),
    fname(obj.fname),
    fAOD(obj.fAOD), 
    fESD(obj.fESD), 
    fOutputList(obj.fOutputList),
    fTrackCut(obj.fTrackCut),
    fPIDResponse(obj.fPIDResponse),
    fEC(obj.fEC),
    fEvt(obj.fEvt),
    fTempStruct(obj.fTempStruct),
    fZvertexBins(obj.fZvertexBins),
    fEventsToMix(obj.fEventsToMix),
    fMultBins(obj.fMultBins),
    fMultLimits(),
    fMCcase(obj.fMCcase),
    fAODcase(obj.fAODcase),
    fEventCounter(obj.fEventCounter),
    fMaxDecayLength(obj.fMaxDecayLength),
    fMassWindow(obj.fMassWindow),
    fTrueMassPr(obj.fTrueMassPr), 
    fTrueMassPi(obj.fTrueMassPi), 
    fTrueMassK(obj.fTrueMassK), 
    fTrueMassLam(obj.fTrueMassLam), 
    fTrueMassXi(obj.fTrueMassXi),
    fESDTrack4(obj.fESDTrack4), 
    fXiTrack(obj.fXiTrack),
    fCutList(obj.fCutList)
    
{
  // Copy constructor  
  for (Int_t i=0; i<21; i++){
    fCovMatrix[i]=obj.fCovMatrix[i];
    if (i<12) fMultLimits[i]=obj.fMultLimits[i];
  }
  for (Int_t i=0; i<kNCuts; i++){
    fDecayParameters[i]=obj.fDecayParameters[i];
    for (Int_t j=0; j<kNCutVariations; j++){
      fCutValues[j][i]=obj.fCutValues[j][i];
    }
  }
  
}
//________________________________________________________________________
AliXiStar &AliXiStar::operator=(const AliXiStar &obj) 
{
  // Assignment operator  
  if (this == &obj)
    return *this;

  fname = obj.fname;
  fAOD = obj.fAOD;
  fESD = obj.fESD; 
  fOutputList = obj.fOutputList;
  fTrackCut = obj.fTrackCut;
  fPIDResponse = obj.fPIDResponse;
  fEC = obj.fEC;
  fEvt = obj.fEvt;
  fTempStruct = obj.fTempStruct;
  fZvertexBins = obj.fZvertexBins;
  fEventsToMix = obj.fEventsToMix;
  fMultBins = obj.fMultBins;
  for (Int_t i=0; i<12; i++){
    fMultLimits[i]=obj.fMultLimits[i];
  }
  fMCcase = obj.fMCcase;
  fAODcase = obj.fAODcase;
  fEventCounter = obj.fEventCounter;
  fMaxDecayLength = obj.fMaxDecayLength;
  fMassWindow = obj.fMassWindow;
  for (Int_t i=0; i<21; i++){
    fCovMatrix[i]=obj.fCovMatrix[i];
  }
  fTrueMassPr = obj.fTrueMassPr; 
  fTrueMassPi = obj.fTrueMassPi; 
  fTrueMassK = obj.fTrueMassK; 
  fTrueMassLam = obj.fTrueMassLam; 
  fTrueMassXi = obj.fTrueMassXi;
  fESDTrack4 = obj.fESDTrack4; 
  fXiTrack = obj.fXiTrack; 
  fCutList = obj.fCutList;
  
  for (Int_t i=0; i<kNCuts; i++){
    fDecayParameters[i]=obj.fDecayParameters[i];
    for (Int_t j=0; j<kNCutVariations; j++){
      fCutValues[j][i]=obj.fCutValues[j][i];
    }
  }
  

  return (*this);
}
//________________________________________________________________________
AliXiStar::~AliXiStar()
{
  // Destructor
  if(fAOD) delete fAOD; 
  if(fESD) delete fESD; 
  if(fOutputList) delete fOutputList;
  if(fTrackCut) delete fTrackCut;
  if(fPIDResponse) delete fPIDResponse;
  if(fEC) delete fEC;
  if(fEvt) delete fEvt;
  if(fTempStruct) delete fTempStruct;
  if(fESDTrack4) delete fESDTrack4; 
  if(fXiTrack) delete fXiTrack; 

  for (Int_t cv=0; cv<kNCutVariations; cv++){
    if(CutVar[cv].fXi) delete CutVar[cv].fXi;
    if(CutVar[cv].fXibar) delete CutVar[cv].fXibar;
    if(CutVar[cv].fXiMinusPiPlus) delete CutVar[cv].fXiMinusPiPlus;
    if(CutVar[cv].fXiMinusPiMinus) delete CutVar[cv].fXiMinusPiMinus;
    if(CutVar[cv].fXiPlusPiPlus) delete CutVar[cv].fXiPlusPiPlus;
    if(CutVar[cv].fXiPlusPiMinus) delete CutVar[cv].fXiPlusPiMinus;
    //    
    if(CutVar[cv].fXiMinusPiPlusbkg) delete CutVar[cv].fXiMinusPiPlusbkg;
    if(CutVar[cv].fXiMinusPiMinusbkg) delete CutVar[cv].fXiMinusPiMinusbkg;
    if(CutVar[cv].fXiPlusPiPlusbkg) delete CutVar[cv].fXiPlusPiPlusbkg;
    if(CutVar[cv].fXiPlusPiMinusbkg) delete CutVar[cv].fXiPlusPiMinusbkg;
    //
    if(CutVar[cv].fMCrecXi) delete CutVar[cv].fMCrecXi;
    if(CutVar[cv].fMCrecXibar) delete CutVar[cv].fMCrecXibar;
    if(CutVar[cv].fMCrecXiMinusPiPlus) delete CutVar[cv].fMCrecXiMinusPiPlus;
    if(CutVar[cv].fMCrecXiPlusPiMinus) delete CutVar[cv].fMCrecXiPlusPiMinus;
  }
  
}
//________________________________________________________________________
void AliXiStar::XiStarInit()
{
  //
  //Inits cuts and analysis settings
  //
  
  fEventCounter=0;// event counter initialization
  cout<<"AliXiStar XiStarInit() call"<<endl;
   
  
  ///////////////////////////////////////////////
  // Track Cuts for ESD analysis
  fTrackCut = new AliESDtrackCuts();
  fTrackCut->SetPtRange(.15,1000);
  fTrackCut->SetAcceptKinkDaughters(kFALSE);
  //fTrackCut->SetMinNClustersTPC(70);
  fTrackCut->SetRequireTPCRefit(kTRUE);
  ////////////////////////////////////////////////
  
  fZvertexBins = 20;
  fMultBins = 11;// This must also be set in AliXiStar.h
  if(fMCcase) fEventsToMix = 0;
  else fEventsToMix = 40;

  // multiplicity edges for event mixing bins
  fMultLimits[0]=0, fMultLimits[1]=5, fMultLimits[2]=10, fMultLimits[3]=15, fMultLimits[4]=20, fMultLimits[5]=25;
  fMultLimits[6]=30, fMultLimits[7]=35, fMultLimits[8]=40, fMultLimits[9]=45, fMultLimits[10]=50, fMultLimits[11]=150;
  
  
  fEC = new AliXiStarEventCollection **[fZvertexBins];
  for(unsigned short i=0; i<fZvertexBins; i++){
    
    fEC[i] = new AliXiStarEventCollection *[fMultBins];
    
    for(unsigned short j=0; j<fMultBins; j++){
      
      fEC[i][j] = new AliXiStarEventCollection(fEventsToMix+1);
    }
  }
  
  
  fTempStruct = new AliXiStarTrackStruct[kNbinsM];

  fESDTrack4 = new AliESDtrack();
  fXiTrack = new AliESDtrack();
  
  
  fMaxDecayLength = 100.;
  fMassWindow = 0.006;

  /////////////////////////////////////////////////////////////////////////////////////
  ///////////////////////
  // DecayParameters Key (number represents array index)
  // NclustersTPC: 0=proton, 1=pion first, 2=pion second, 3=pion third
  // DCAVtx: 4=proton, 5=pion first, 6=pion second, 7=lambda, 8=pion third
  // 9 = DCA proton-pion
  // 10 = DCA Lambda-pion
  // 11 = Rxy Lambda
  // 12 = Rxy Xi
  // 13 = Cos PA Lambda
  // 14 = Cos PA Xi
  
  // Set Standard Reconstruction cut values
  fCutValues[0][0] = 70; fCutValues[0][1] = 70; fCutValues[0][2] = 70; fCutValues[0][3] = 70;
  fCutValues[0][4] = 0.04; fCutValues[0][5] = 0.04; fCutValues[0][6] = 0.05; fCutValues[0][7] = 0.07; fCutValues[0][8] = 2.0;
  fCutValues[0][9] = 1.6;
  fCutValues[0][10] = 1.6;
  fCutValues[0][11] = 1.4;
  fCutValues[0][12] = 0.8;
  fCutValues[0][13] = 0.97;
  fCutValues[0][14] = 0.97;
  for(int cv=1; cv<kNCutVariations; cv++){
    for(int ct=0; ct<kNCuts; ct++){
      fCutValues[cv][ct] = fCutValues[0][ct];
    }
  }
  // Set Systematic Variations
  fCutValues[1][0] = 80; fCutValues[1][1] = 80; fCutValues[1][2] = 80; fCutValues[1][3] = 80;// 80
  fCutValues[2][4] = 0.104;// 0.104
  fCutValues[3][5] = 0.104;// 0.104
  fCutValues[4][6] = 0.08;// 0.08
  fCutValues[5][7] = 0.1;// 0.1
  fCutValues[6][8] = 1.0;// 1.0
  fCutValues[7][9] = 0.94;// 0.94
  fCutValues[8][10] = 1.41;// 1.41
  fCutValues[9][11] = 4.39;// 4.39
  fCutValues[10][12] = 0.95;// 0.95
  fCutValues[11][13] = 0.99;// 0.99
  fCutValues[12][14] = 0.985;// 0.085





  // PDG mass values
  fTrueMassPr=.93827, fTrueMassPi=.13957, fTrueMassK=.493677, fTrueMassLam=1.11568, fTrueMassXi=1.32171;
  
  // The following CovMatrix is set so that PropogateToDCA() ignores track errors. Only used to propagate Xi to third pion for XiStar reconstruction 
  for(Int_t i=0; i<21; i++) fCovMatrix[i]=0;
  fCovMatrix[0]=1, fCovMatrix[2]=1, fCovMatrix[5]=1, fCovMatrix[9]=1, fCovMatrix[14]=1, fCovMatrix[20]=1;
  
  
}
//________________________________________________________________________
void AliXiStar::UserCreateOutputObjects()
{
   
  XiStarInit();// Initialize settings
  
  // Create histograms
  fOutputList = new TList();
  fOutputList->SetOwner();
  
  TH3F *fVertexDist1 = new TH3F("fVertexDist1","Vertex Distribution",20,-1,1, 20,-1,1, 600,-30,30);
  fVertexDist1->GetXaxis()->SetTitle("X Vertex (cm)");
  fVertexDist1->GetYaxis()->SetTitle("Y Vertex (cm)");
  fVertexDist1->GetZaxis()->SetTitle("Z Vertex (cm)");
  fOutputList->Add(fVertexDist1);
  
  TH3F *fVertexDist3 = new TH3F("fVertexDist3","Vertex Distribution",20,-1,1, 20,-1,1, 600,-30,30);
  fVertexDist3->GetXaxis()->SetTitle("X Vertex (cm)");
  fVertexDist3->GetYaxis()->SetTitle("Y Vertex (cm)");
  fVertexDist3->GetZaxis()->SetTitle("Z Vertex (cm)");
  fOutputList->Add(fVertexDist3);

  TH2F *fDCADist = new TH2F("fDCADist","DCA distribution",kNbinsM,-.5,kNbinsM-.5, 100,0,10);
  fOutputList->Add(fDCADist);
  
  
  TH3F *fMultDist3d = new TH3F("fMultDist3d","Multiplicity Distribution",kNbinsM,-.5,kNbinsM-.5, kNbinsM,-.5,kNbinsM-.5, kNbinsM,-.5,kNbinsM-.5);
  fMultDist3d->GetXaxis()->SetTitle("Multiplicity");
  fMultDist3d->GetYaxis()->SetTitle("Positive Multiplicity");
  fMultDist3d->GetZaxis()->SetTitle("Negative Multiplicity");
  fMultDist3d->SetMarkerStyle(kFullCircle);
  fOutputList->Add(fMultDist3d);
  
 
  TH1F *fMultDist1 = new TH1F("fMultDist1","Multiplicity Distribution",kNbinsM,-.5,kNbinsM-.5);
  fMultDist1->GetXaxis()->SetTitle("Multiplicity");
  fOutputList->Add(fMultDist1);
  
  TH1F *fMultDist2 = new TH1F("fMultDist2","Multiplicity Distribution",kNbinsM,-.5,kNbinsM-.5);
  fMultDist2->GetXaxis()->SetTitle("Multiplicity");
  fOutputList->Add(fMultDist2);
  
  TH1F *fMultDist3 = new TH1F("fMultDist3","Multiplicity Distribution",kNbinsM,-.5,kNbinsM-.5);
  fMultDist3->GetXaxis()->SetTitle("Multiplicity");
  fOutputList->Add(fMultDist3);

  TH1F *fMultDist4 = new TH1F("fMultDist4","Multiplicity Distribution",kNbinsM,-.5,kNbinsM-.5);
  fMultDist4->GetXaxis()->SetTitle("Multiplicity");
  fOutputList->Add(fMultDist4);
  
  TH1F *fMultDist5 = new TH1F("fMultDist5","Multiplicity Distribution",kNbinsM,-.5,kNbinsM-.5);
  fMultDist5->GetXaxis()->SetTitle("Multiplicity");
  fOutputList->Add(fMultDist5);
  

  TH3F *fPtEtaDist = new TH3F("fPtEtaDist","PtEtaDist",2,-1.1,1.1, 300,0,3., 28,-1.4,1.4);
  fOutputList->Add(fPtEtaDist);

  TH3F *fPhiPtDist = new TH3F("fPhiPtDist","PhiPtDist",2,-1.1,1.1, 120,0,2*PI, 300,0,3.);
  fOutputList->Add(fPhiPtDist);
  
  
  for(Int_t cv=0; cv<kNCutVariations; cv++){
    
    if(cv==0){
      TString *nameXi=new TString("fXi_");
      TString *nameXibar=new TString("fXibar_");
      *nameXi += cv;
      *nameXibar += cv;
      CutVar[cv].fXi = new TH3F(nameXi->Data(),"Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.2,1.4);
      fOutputList->Add(CutVar[cv].fXi);
      CutVar[cv].fXibar = new TH3F(nameXibar->Data(),"Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.2,1.4);
      fOutputList->Add(CutVar[cv].fXibar);
      //
      TString *nameMCrecXi = new TString("fMCrecXi_");
      TString *nameMCrecXibar = new TString("fMCrecXi_");
      *nameMCrecXi += cv;
      *nameMCrecXibar += cv;
      CutVar[cv].fMCrecXi = new TH3F(nameMCrecXi->Data(),"Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.2,1.4);
      CutVar[cv].fMCrecXibar = new TH3F(nameMCrecXibar->Data(),"Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.2,1.4);
      fOutputList->Add(CutVar[cv].fMCrecXi);
      fOutputList->Add(CutVar[cv].fMCrecXibar);
    }    
    //
    TString *nameXiMinusPiPlus = new TString("fXiMinusPiPlus_");
    TString *nameXiMinusPiMinus = new TString("fXiMinusPiMinus_");
    TString *nameXiPlusPiPlus = new TString("fXiPlusPiPlus_");
    TString *nameXiPlusPiMinus = new TString("fXiPlusPiMinus_");
    TString *nameXiMinusPiPlusbkg = new TString("fXiMinusPiPlusbkg_");
    TString *nameXiMinusPiMinusbkg = new TString("fXiMinusPiMinusbkg_");
    TString *nameXiPlusPiPlusbkg = new TString("fXiPlusPiPlusbkg_");
    TString *nameXiPlusPiMinusbkg = new TString("fXiPlusPiMinusbkg_");
    *nameXiMinusPiPlus += cv;
    *nameXiMinusPiMinus += cv;
    *nameXiPlusPiPlus += cv;
    *nameXiPlusPiMinus += cv;
    *nameXiMinusPiPlusbkg += cv;
    *nameXiMinusPiMinusbkg += cv;
    *nameXiPlusPiPlusbkg += cv;
    *nameXiPlusPiMinusbkg += cv;
    CutVar[cv].fXiMinusPiPlus  = new TH3F(nameXiMinusPiPlus->Data(),"Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.4,1.6);
    CutVar[cv].fXiMinusPiMinus = new TH3F(nameXiMinusPiMinus->Data(),"Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.4,1.6);
    CutVar[cv].fXiPlusPiPlus   = new TH3F(nameXiPlusPiPlus->Data(),"Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.4,1.6);
    CutVar[cv].fXiPlusPiMinus  = new TH3F(nameXiPlusPiMinus->Data(),"Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.4,1.6);
    CutVar[cv].fXiMinusPiPlusbkg  = new TH3F(nameXiMinusPiPlusbkg->Data(),"Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.4,1.6);
    CutVar[cv].fXiMinusPiMinusbkg = new TH3F(nameXiMinusPiMinusbkg->Data(),"Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.4,1.6);
    CutVar[cv].fXiPlusPiPlusbkg   = new TH3F(nameXiPlusPiPlusbkg->Data(),"Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.4,1.6);
    CutVar[cv].fXiPlusPiMinusbkg  = new TH3F(nameXiPlusPiMinusbkg->Data(),"Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.4,1.6);
    
    fOutputList->Add(CutVar[cv].fXiMinusPiPlus);
    fOutputList->Add(CutVar[cv].fXiMinusPiMinus);
    fOutputList->Add(CutVar[cv].fXiPlusPiPlus);
    fOutputList->Add(CutVar[cv].fXiPlusPiMinus);    
    fOutputList->Add(CutVar[cv].fXiMinusPiPlusbkg);
    fOutputList->Add(CutVar[cv].fXiMinusPiMinusbkg);
    fOutputList->Add(CutVar[cv].fXiPlusPiPlusbkg);
    fOutputList->Add(CutVar[cv].fXiPlusPiMinusbkg);
    //

   
    TString *nameMCrecXiMinusPiPlus = new TString("fMCrecXiMinusPiPlus_");
    TString *nameMCrecXiPlusPiMinus = new TString("fMCrecXiPlusPiMinus_");
    *nameMCrecXiMinusPiPlus += cv;
    *nameMCrecXiPlusPiMinus += cv;
    CutVar[cv].fMCrecXiMinusPiPlus  = new TH3F(nameMCrecXiMinusPiPlus->Data(),"Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.4,1.6);
    CutVar[cv].fMCrecXiPlusPiMinus  = new TH3F(nameMCrecXiPlusPiMinus->Data(),"Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.4,1.6);
    fOutputList->Add(CutVar[cv].fMCrecXiMinusPiPlus);
    fOutputList->Add(CutVar[cv].fMCrecXiPlusPiMinus);
    //
    
    /*
    CutVar[cv].fMCrecXiStarxiy = new TH2F("fMCrecXiStarxiy","y distribution",80,-2,2, 80,-2,2);
    CutVar[cv].fMCrecXiStarpiony = new TH2F("fMCrecXiStarpiony","y distribution",80,-2,2, 80,-2,2);
    fOutputList->Add(CutVar[cv].fMCrecXiStarxiy);
    fOutputList->Add(CutVar[cv].fMCrecXiStarpiony);
    CutVar[cv].fMCrecXilambday = new TH2F("fMCrecXilambday","y distribution",80,-2,2, 80,-2,2);
    CutVar[cv].fMCrecXipiony = new TH2F("fMCrecXipiony","y distribution",80,-2,2, 80,-2,2);
    fOutputList->Add(CutVar[cv].fMCrecXilambday);
    fOutputList->Add(CutVar[cv].fMCrecXipiony);
    CutVar[cv].fMCrecLamprotony = new TH2F("fMCrecLamprotony","y distribution",80,-2,2, 80,-2,2);
    CutVar[cv].fMCrecLampiony = new TH2F("fMCrecLampiony","y distribution",80,-2,2, 80,-2,2);
    fOutputList->Add(CutVar[cv].fMCrecLamprotony);
    fOutputList->Add(CutVar[cv].fMCrecLampiony);
    */
  }

  


  //////////////////////
  // MC input histos
  TH3F *fMCinputXiStar = new TH3F("fMCinputXiStar","Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.4,1.6);
  TH3F *fMCinputXiStarbar = new TH3F("fMCinputXiStarbar","Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.4,1.6);
  fOutputList->Add(fMCinputXiStar);
  fOutputList->Add(fMCinputXiStarbar);

  TH3F *fMCinputXi = new TH3F("fMCinputXi","Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.2,1.4);
  TH3F *fMCinputXibar = new TH3F("fMCinputXibar","Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.2,1.4);
  fOutputList->Add(fMCinputXi);
  fOutputList->Add(fMCinputXibar);
  
  //

  TH3F *fMCinputTotalXiStar1 = new TH3F("fMCinputTotalXiStar1","Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.4,1.6);
  TH3F *fMCinputTotalXiStarbar1 = new TH3F("fMCinputTotalXiStarbar1","Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.4,1.6);
  fOutputList->Add(fMCinputTotalXiStar1);
  fOutputList->Add(fMCinputTotalXiStarbar1);

  TH3F *fMCinputTotalXi1 = new TH3F("fMCinputTotalXi1","Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.2,1.4);
  TH3F *fMCinputTotalXibar1 = new TH3F("fMCinputTotalXibar1","Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.2,1.4);
  fOutputList->Add(fMCinputTotalXi1);
  fOutputList->Add(fMCinputTotalXibar1);

  //

  TH3F *fMCinputTotalXiStar3 = new TH3F("fMCinputTotalXiStar3","Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.4,1.6);
  TH3F *fMCinputTotalXiStarbar3 = new TH3F("fMCinputTotalXiStarbar3","Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.4,1.6);
  fOutputList->Add(fMCinputTotalXiStar3);
  fOutputList->Add(fMCinputTotalXiStarbar3);

  TH3F *fMCinputTotalXi3 = new TH3F("fMCinputTotalXi3","Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.2,1.4);
  TH3F *fMCinputTotalXibar3 = new TH3F("fMCinputTotalXibar3","Invariant Mass Distribution", 100,0,10, 40,-2,2, 200,1.2,1.4);
  fOutputList->Add(fMCinputTotalXi3);
  fOutputList->Add(fMCinputTotalXibar3);

  // 
  
  TH2F *fMCinputXiStarxiy = new TH2F("fMCinputXiStarxiy","y distribution",80,-2,2, 80,-2,2);
  TH2F *fMCinputXiStarpiony = new TH2F("fMCinputXiStarpiony","y distribution",80,-2,2, 80,-2,2);
  fOutputList->Add(fMCinputXiStarxiy);
  fOutputList->Add(fMCinputXiStarpiony);
  TH2F *fMCinputXilambday = new TH2F("fMCinputXilambday","y distribution",80,-2,2, 80,-2,2);
  TH2F *fMCinputXipiony = new TH2F("fMCinputXipiony","y distribution",80,-2,2, 80,-2,2);
  fOutputList->Add(fMCinputXilambday);
  fOutputList->Add(fMCinputXipiony);
  TH2F *fMCinputLamprotony = new TH2F("fMCinputLamprotony","y distribution",80,-2,2, 80,-2,2);
  TH2F *fMCinputLampiony = new TH2F("fMCinputLampiony","y distribution",80,-2,2, 80,-2,2);
  fOutputList->Add(fMCinputLamprotony);
  fOutputList->Add(fMCinputLampiony);
  
  
  ///////////////////////////////////  
  
  PostData(1, fOutputList);
}

//________________________________________________________________________
void AliXiStar::Exec(Option_t *) 
{
  // Main loop
  // Called for each event
  cout<<"===========  Event # "<<fEventCounter+1<<"  ==========="<<endl;
  fEventCounter++;

  if(fAODcase) {cout<<"AODs not fully supported! Exiting event."<<endl; return;}

  if(fAODcase) fAOD = dynamic_cast<AliAODEvent*> (InputEvent());
  else fESD = dynamic_cast<AliESDEvent*> (InputEvent());
  
  if(fAODcase) {if (!fAOD) {Printf("ERROR: fAOD not available"); return;}}
  else {if (!fESD) {Printf("ERROR: fESD not available"); return;}}
  

  // ESD Trigger Cut
  if(!fAODcase){
    if(!(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected())) {cout<<"Event Rejected"<<endl; return;}
  }
  
  ///////////////////////////////////////////////////////////
  const AliAODVertex *PrimaryVertexAOD;
  const AliESDVertex *PrimaryVertexESD;

  AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
  AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
  fPIDResponse = inputHandler->GetPIDResponse();
  

  TClonesArray *mcArray       = 0x0;
  //AliAODMCParticle *mcXi;
  //AliAODMCParticle *mcXiStarD2;
  //AliAODMCParticle *mcXiStar;
  AliMCEvent  *mcEvent        = 0x0; 
  AliStack    *mcstack        = 0x0;
  TParticle   *MCLamD1esd     = 0x0;
  TParticle   *MCLamD2esd     = 0x0;
  TParticle   *MCLamesd       = 0x0;
  TParticle   *MCXiD2esd      = 0x0;
  TParticle   *MCXiesd        = 0x0;
  TParticle   *MCXiStarD2esd  = 0x0;
  TParticle   *MCXiStaresd    = 0x0;

  Double_t px1,py1,pz1, px2,py2,pz2;
  Double_t p1sq,p2sq,e1,e2,angle;
  Double_t dca3d;
  Float_t dca2[2];
  Double_t xiVtx[3];//, xiStarVtx[3];
  Double_t xiP[3], xiStarP[3];
  Double_t xiStarMom;
  Double_t xiMass, xiStarMass;
  Double_t xiPt, xiStarPt;
  Double_t xiY, xiStarY;
  Double_t xiCharge;
  Double_t decayLengthXY;
  Double_t pDaughter1[3];
  Double_t pDaughter2[3];
  Double_t xDaughter1[3];
  Double_t xDaughter2[3];
  //
  Double_t bField=0;
  UInt_t status=0;
  Int_t positiveTracks=0, negativeTracks=0;
  Int_t myTracks=0;
  //
  Double_t primaryVtx[3]={0};
  Int_t mBin=0;
  Int_t zBin=0;
  Double_t zStep=2*10/Double_t(fZvertexBins), zStart=-10.;
  //
  Bool_t mcXiFilled=kFALSE;// So that mctracks are never used uninitialized

  if(fMCcase){
    if(fAODcase){ 
      mcArray = (TClonesArray*)fAOD->FindListObject(AliAODMCParticle::StdBranchName());
      if(!mcArray){
	cout<<"No MC particle branch found"<<endl;
	return;
      }
    }else {
      mcEvent = MCEvent();
      if (!mcEvent) {Printf("ERROR: Could not retrieve MC event"); return;}
      
      mcstack = mcEvent->Stack();
      if (!mcstack) {Printf("ERROR: Could not retrieve the stack"); return;}
    }
  }

 
  /////////////////////////////////////////////////
  
  
  
  if(fAODcase){// AOD case
    ////////////////////////////////
    // Vertexing
    ((TH1F*)fOutputList->FindObject("fMultDist1"))->Fill(fAOD->GetNumberOfTracks());
    PrimaryVertexAOD = fAOD->GetPrimaryVertex();
    if(!PrimaryVertexAOD) return;
    
    if(fMCcase){
      for (Int_t it = 0; it < mcArray->GetEntriesFast(); it++) {
	AliAODMCParticle *mcInputTrack = (AliAODMCParticle*)mcArray->At(it);
	if (!mcInputTrack) {
	  Error("UserExec", "Could not receive track %d", it);
	  continue;
	}
	
	if(!mcInputTrack->IsPhysicalPrimary()) continue;
	
	// Xi
	if(mcInputTrack->GetPdgCode() == +kXiCode) ((TH3F*)fOutputList->FindObject("fMCinputTotalXi1"))->Fill(mcInputTrack->Pt(), mcInputTrack->Y(), mcInputTrack->GetCalcMass());
	if(mcInputTrack->GetPdgCode() == -kXiCode) ((TH3F*)fOutputList->FindObject("fMCinputTotalXibar1"))->Fill(mcInputTrack->Pt(), mcInputTrack->Y(), mcInputTrack->GetCalcMass());
	
	// XiStar
	if(mcInputTrack->GetPdgCode() == +kXiStarCode) ((TH3F*)fOutputList->FindObject("fMCinputTotalXiStar1"))->Fill(mcInputTrack->Pt(), mcInputTrack->Y(), mcInputTrack->GetCalcMass());
	if(mcInputTrack->GetPdgCode() == -kXiStarCode) ((TH3F*)fOutputList->FindObject("fMCinputTotalXiStarbar1"))->Fill(mcInputTrack->Pt(), mcInputTrack->Y(), mcInputTrack->GetCalcMass());
      }
    }



    primaryVtx[0]=PrimaryVertexAOD->GetX(); primaryVtx[1]=PrimaryVertexAOD->GetY(); primaryVtx[2]=PrimaryVertexAOD->GetZ();
    ((TH3F*)fOutputList->FindObject("fVertexDist1"))->Fill(primaryVtx[0], primaryVtx[1], primaryVtx[2]);
    if(fabs(primaryVtx[2]) > 10.) return; // Z-Vertex Cut  
    ((TH1F*)fOutputList->FindObject("fMultDist2"))->Fill(fAOD->GetNumberOfTracks());
    

    if(fAOD->IsPileupFromSPD()) return; // Reject Pile-up events
    
    ((TH1F*)fOutputList->FindObject("fMultDist3"))->Fill(fAOD->GetNumberOfTracks());
    ((TH3F*)fOutputList->FindObject("fVertexDist3"))->Fill(primaryVtx[0], primaryVtx[1], primaryVtx[2]);

    if(PrimaryVertexAOD->GetNContributors() >= 1) ((TH1F*)fOutputList->FindObject("fMultDist4"))->Fill(fAOD->GetNumberOfTracks());
    
       

    Printf("There are %d tracks in this event", fAOD->GetNumberOfTracks());
    // fNtracks Cut
    if(fAOD->GetNumberOfTracks() > kNbinsM) {cout<<"More tracks than limit"<<endl; return;}
    bField = fAOD->GetMagneticField();
    
    // Track loop
    for (Int_t i = 0; i < fAOD->GetNumberOfTracks(); i++) {
      AliAODTrack* aodtrack = dynamic_cast<AliAODTrack*>(fAOD->GetTrack(i));
      if(!aodtrack) AliFatal("Not a standard AOD");
      if (!aodtrack) continue;
      
      status=aodtrack->GetStatus();
     
      
      if( (status&AliESDtrack::kTPCrefit)==0) continue;// Require tpcrefit
      if( aodtrack->GetTPCNcls() < 70) continue;// TPC Ncluster cut
      if(aodtrack->Pt() < 0.15) continue;
      AliAODVertex *VtxType=aodtrack->GetProdVertex();
      if((VtxType->GetType())==AliAODVertex::kKink) continue;// Reject Kinks

      Bool_t goodMomentum = aodtrack->GetPxPyPz( fTempStruct[myTracks].fP);
      if(!goodMomentum) continue;    
      aodtrack->GetXYZ( fTempStruct[myTracks].fX);
      
      
      aodtrack->GetCovarianceXYZPxPyPz( fTempStruct[myTracks].fCov);
      
      dca2[0] = sqrt( pow(fTempStruct[myTracks].fX[0] - primaryVtx[0],2) + pow(fTempStruct[myTracks].fX[1] - primaryVtx[1],2));
      dca2[1] = sqrt( pow(fTempStruct[myTracks].fX[2] - primaryVtx[2],2));
      dca3d = sqrt( pow(dca2[0],2) + pow(dca2[1],2));
      
      ((TH1F*)fOutputList->FindObject("fDCADist"))->Fill(fAOD->GetNumberOfTracks(), dca3d);
      ((TH3F*)fOutputList->FindObject("fPhiPtDist"))->Fill(aodtrack->Charge(), aodtrack->Phi(), aodtrack->Pt());
      ((TH3F*)fOutputList->FindObject("fPtEtaDist"))->Fill(aodtrack->Charge(), aodtrack->Pt(), aodtrack->Eta());
      
      
      
      
      fTempStruct[myTracks].fStatus = status;
      fTempStruct[myTracks].fFilterMap = aodtrack->GetFilterMap();
      fTempStruct[myTracks].fID = aodtrack->GetID();
      fTempStruct[myTracks].fLabel = aodtrack->GetLabel();
      fTempStruct[myTracks].fPhi = atan2(fTempStruct[myTracks].fP[1], fTempStruct[myTracks].fP[0]);
      if(fTempStruct[myTracks].fPhi < 0) fTempStruct[myTracks].fPhi += 2*PI;
      fTempStruct[myTracks].fPt = sqrt(pow(fTempStruct[myTracks].fP[0],2) + pow(fTempStruct[myTracks].fP[1],2));
      fTempStruct[myTracks].fMom = sqrt( pow(fTempStruct[myTracks].fPt,2) + pow(fTempStruct[myTracks].fP[2],2) );
      fTempStruct[myTracks].fEta = aodtrack->Eta();
      fTempStruct[myTracks].fCharge = aodtrack->Charge();
      fTempStruct[myTracks].fDCAXY = dca2[0];
      fTempStruct[myTracks].fDCAZ = dca2[1];
      fTempStruct[myTracks].fDCA = dca3d;
      fTempStruct[myTracks].fNSigmaPi = fabs(fPIDResponse->NumberOfSigmasTPC(aodtrack,AliPID::kPion));
      fTempStruct[myTracks].fNSigmaK = fabs(fPIDResponse->NumberOfSigmasTPC(aodtrack,AliPID::kKaon));
      fTempStruct[myTracks].fNSigmaPr = fabs(fPIDResponse->NumberOfSigmasTPC(aodtrack,AliPID::kProton));
         
      
      if(aodtrack->Charge() > 0) positiveTracks++;
      else negativeTracks++;
      
      
      myTracks++;
    }
  }else {// ESDs

    ((TH1F*)fOutputList->FindObject("fMultDist1"))->Fill(fESD->GetNumberOfTracks());
    PrimaryVertexESD = fESD->GetPrimaryVertex();
    if(!PrimaryVertexESD) return;

    primaryVtx[0]=PrimaryVertexESD->GetX(); primaryVtx[1]=PrimaryVertexESD->GetY(); primaryVtx[2]=PrimaryVertexESD->GetZ();
    ((TH3F*)fOutputList->FindObject("fVertexDist1"))->Fill(primaryVtx[0], primaryVtx[1], primaryVtx[2]);

    if(fMCcase){
      /////////////////////////////////////////////////
      // Lam mc input
      /////////////////////////////////////////////////
      for (Int_t it = 0; it < mcstack->GetNprimary(); it++) {
	TParticle *mcInputTrack = (TParticle*)mcstack->Particle(it);    
	if (!mcInputTrack) {
	  Error("UserExec", "Could not receive track %d", it);
	  continue;
	}
	
	
	// Xi
	if(mcInputTrack->GetPdgCode() == +kXiCode) ((TH3F*)fOutputList->FindObject("fMCinputTotalXi1"))->Fill(mcInputTrack->Pt(), mcInputTrack->Y(), mcInputTrack->GetCalcMass());
	if(mcInputTrack->GetPdgCode() == -kXiCode) ((TH3F*)fOutputList->FindObject("fMCinputTotalXibar1"))->Fill(mcInputTrack->Pt(), mcInputTrack->Y(), mcInputTrack->GetCalcMass());

	// XiStar
	if(mcInputTrack->GetPdgCode() == +kXiStarCode) ((TH3F*)fOutputList->FindObject("fMCinputTotalXiStar1"))->Fill(mcInputTrack->Pt(), mcInputTrack->Y(), mcInputTrack->GetCalcMass());
	if(mcInputTrack->GetPdgCode() == -kXiStarCode) ((TH3F*)fOutputList->FindObject("fMCinputTotalXiStarbar1"))->Fill(mcInputTrack->Pt(), mcInputTrack->Y(), mcInputTrack->GetCalcMass());

      }
      
      
    }
    

    
    if(fabs(primaryVtx[2]) > 10.) return; // Z-Vertex Cut  
    ((TH1F*)fOutputList->FindObject("fMultDist2"))->Fill(fESD->GetNumberOfTracks());
    

    if(fESD->IsPileupFromSPD()) return; // Reject Pile-up events
    
    ((TH1F*)fOutputList->FindObject("fMultDist3"))->Fill(fESD->GetNumberOfTracks());
    ((TH3F*)fOutputList->FindObject("fVertexDist3"))->Fill(primaryVtx[0], primaryVtx[1], primaryVtx[2]);

    if(PrimaryVertexESD->GetNContributors() >= 1) ((TH1F*)fOutputList->FindObject("fMultDist4"))->Fill(fESD->GetNumberOfTracks());
    
    Printf("There are %d tracks in this event", fESD->GetNumberOfTracks());
    // fNtracks Cut
    if(fESD->GetNumberOfTracks() > kNbinsM) {cout<<"More tracks than limit"<<endl; return;}
    bField = fESD->GetMagneticField();
    
    
    // Track loop
    for (Int_t i = 0; i < fESD->GetNumberOfTracks(); i++) {
      AliESDtrack* esdtrack = fESD->GetTrack(i);
      if (!esdtrack) continue;
      
      status=esdtrack->GetStatus();
      
      if(!fTrackCut->AcceptTrack(esdtrack)) continue;
       
      Bool_t goodMomentum = esdtrack->GetPxPyPz( fTempStruct[myTracks].fP);
      if(!goodMomentum) continue;    
      esdtrack->GetXYZ( fTempStruct[myTracks].fX);
      
   
      esdtrack->GetCovarianceXYZPxPyPz( fTempStruct[myTracks].fCov);
      //esdtrack->GetImpactParameters(dca2, cov);
      dca2[0] = sqrt( pow(fTempStruct[myTracks].fX[0] - primaryVtx[0],2) + pow(fTempStruct[myTracks].fX[1] - primaryVtx[1],2));
      dca2[1] = sqrt( pow(fTempStruct[myTracks].fX[2] - primaryVtx[2],2));
      dca3d = sqrt( pow(dca2[0],2) + pow(dca2[1],2));
   
      ((TH1F*)fOutputList->FindObject("fDCADist"))->Fill(fESD->GetNumberOfTracks(), dca3d);
      ((TH3F*)fOutputList->FindObject("fPhiPtDist"))->Fill(esdtrack->Charge(), esdtrack->Phi(), esdtrack->Pt());
      ((TH3F*)fOutputList->FindObject("fPtEtaDist"))->Fill(esdtrack->Charge(), esdtrack->Pt(), esdtrack->Eta());
      
         
      
      fTempStruct[myTracks].fStatus = status;
      fTempStruct[myTracks].fID = esdtrack->GetID();
      fTempStruct[myTracks].fLabel = esdtrack->GetLabel();
      fTempStruct[myTracks].fPhi = atan2(fTempStruct[myTracks].fP[1], fTempStruct[myTracks].fP[0]);
      if(fTempStruct[myTracks].fPhi < 0) fTempStruct[myTracks].fPhi += 2*PI;
      fTempStruct[myTracks].fPt = sqrt(pow(fTempStruct[myTracks].fP[0],2) + pow(fTempStruct[myTracks].fP[1],2));
      fTempStruct[myTracks].fMom = sqrt( pow(fTempStruct[myTracks].fPt,2) + pow(fTempStruct[myTracks].fP[2],2) );
      fTempStruct[myTracks].fEta = esdtrack->Eta();
      fTempStruct[myTracks].fCharge = esdtrack->Charge();
      fTempStruct[myTracks].fDCAXY = dca2[0];
      fTempStruct[myTracks].fDCAZ = dca2[1];
      fTempStruct[myTracks].fDCA = dca3d;
      fTempStruct[myTracks].fNSigmaPi = fabs(fPIDResponse->NumberOfSigmasTPC(esdtrack,AliPID::kPion));
      fTempStruct[myTracks].fNSigmaK = fabs(fPIDResponse->NumberOfSigmasTPC(esdtrack,AliPID::kKaon));
      fTempStruct[myTracks].fNSigmaPr = fabs(fPIDResponse->NumberOfSigmasTPC(esdtrack,AliPID::kProton));
      fTempStruct[myTracks].fNclusTPC = esdtrack->GetTPCNcls();
            

      if(esdtrack->Charge() > 0) positiveTracks++;
      else negativeTracks++;
      
      myTracks++;
    }

  }// end of ESD case
  
  
  
  if(myTracks >= 1) {
    ((TH1F*)fOutputList->FindObject("fMultDist5"))->Fill(myTracks);
    ((TH3F*)fOutputList->FindObject("fMultDist3d"))->Fill(positiveTracks+negativeTracks, positiveTracks, negativeTracks);
  }


  cout<<"There are "<<myTracks<<"  myTracks"<<endl;
  
  // set Z Vertex bin
  for(Int_t i=0; i<fZvertexBins; i++){
    if( (primaryVtx[2] > zStart+i*zStep) && (primaryVtx[2] < zStart+(i+1)*zStep) ){
      zBin=i;
      break;
    }
  }
  
  // set Multiplicity bin
  for(Int_t i=0; i<fMultBins; i++){
    if( ( myTracks > fMultLimits[i]) && ( myTracks <= fMultLimits[i+1]) ) { mBin=i; break;}
  }

  
    
  ////////////////////////////////////
  // Add event to buffer if > 0 tracks
  if(myTracks > 0){
    fEC[zBin][mBin]->FIFOShift();
    (fEvt) = fEC[zBin][mBin]->fEvtStr;
    (fEvt)->fNTracks = myTracks;
    for(Int_t i=0; i<myTracks; i++) (fEvt)->fTracks[i] = fTempStruct[i];
  }

  
   
  
  if(fMCcase && fAODcase){// get Input MC information for AOD case
        
    /////////////////////////////////////////////////
    // Xi mc input
    /////////////////////////////////////////////////
    for (Int_t it = 0; it < mcArray->GetEntriesFast(); it++) {
      AliAODMCParticle *mcInputTrackXi = (AliAODMCParticle*)mcArray->At(it);
          
      if (!mcInputTrackXi) {
	Error("UserExec", "Could not receive track %d", it);
	continue;
      }
      
      if(abs(mcInputTrackXi->GetPdgCode())!=kXiCode) continue;
      if(!mcInputTrackXi->IsPhysicalPrimary()) continue;


      if(mcInputTrackXi->GetPdgCode() == +kXiCode) ((TH3F*)fOutputList->FindObject("fMCinputTotalXi3"))->Fill(mcInputTrackXi->Pt(), mcInputTrackXi->Y(), mcInputTrackXi->GetCalcMass());
      else ((TH3F*)fOutputList->FindObject("fMCinputTotalXibar3"))->Fill(mcInputTrackXi->Pt(), mcInputTrackXi->Y(), mcInputTrackXi->GetCalcMass());
      
      
      
      AliAODMCParticle *mcInputTrackXiD1 = (AliAODMCParticle*)mcArray->At(abs(mcInputTrackXi->GetDaughter(0)));
      AliAODMCParticle *mcInputTrackXiD2 = (AliAODMCParticle*)mcArray->At(abs(mcInputTrackXi->GetDaughter(1)));
      
      if(abs(mcInputTrackXiD1->GetPdgCode())!=kLambdaCode && abs(mcInputTrackXiD2->GetPdgCode())!=kLambdaCode) continue;
      if(abs(mcInputTrackXiD1->GetPdgCode())!=kPionCode && abs(mcInputTrackXiD2->GetPdgCode())!=kPionCode) continue;
      
      
      // At this point we have the right Xi decay channel
      
      AliAODMCParticle *mcInputTrackLamD1;
      AliAODMCParticle *mcInputTrackLamD2;
      
      if(abs(mcInputTrackXiD1->GetPdgCode())==kLambdaCode) {
	mcInputTrackLamD1 = (AliAODMCParticle*)mcArray->At(abs(mcInputTrackXiD1->GetDaughter(0)));
	mcInputTrackLamD2 = (AliAODMCParticle*)mcArray->At(abs(mcInputTrackXiD1->GetDaughter(1)));
      }
      else{
	mcInputTrackLamD1 = (AliAODMCParticle*)mcArray->At(abs(mcInputTrackXiD2->GetDaughter(0)));
	mcInputTrackLamD2 = (AliAODMCParticle*)mcArray->At(abs(mcInputTrackXiD2->GetDaughter(1)));
      }


      if(abs(mcInputTrackLamD1->GetPdgCode())!=kProtonCode && abs(mcInputTrackLamD2->GetPdgCode())!=kProtonCode) continue;
      if(abs(mcInputTrackLamD1->GetPdgCode())!=kPionCode && abs(mcInputTrackLamD2->GetPdgCode())!=kPionCode) continue;

      // At this point we have the right Lambda decay channel

      if(mcInputTrackXi->GetPdgCode() == +kXiCode) ((TH3F*)fOutputList->FindObject("fMCinputXi"))->Fill(mcInputTrackXi->Pt(), mcInputTrackXi->Y(), mcInputTrackXi->GetCalcMass());
      else ((TH3F*)fOutputList->FindObject("fMCinputXibar"))->Fill(mcInputTrackXi->Pt(), mcInputTrackXi->Y(), mcInputTrackXi->GetCalcMass());

    }



    /////////////////////////////////////////////////
    // XiStar mc input
    /////////////////////////////////////////////////
    for (Int_t it = 0; it < mcArray->GetEntriesFast(); it++) {
      AliAODMCParticle *mcInputTrackXiStar = (AliAODMCParticle*)mcArray->At(it);
      if (!mcInputTrackXiStar) {
	Error("UserExec", "Could not receive track %d", it);
	continue;
      }
   
      if(abs(mcInputTrackXiStar->GetPdgCode())!=kXiStarCode) continue;
      if(!mcInputTrackXiStar->IsPhysicalPrimary()) continue;

      if(mcInputTrackXiStar->GetPdgCode() == +kXiStarCode) ((TH3F*)fOutputList->FindObject("fMCinputTotalXiStar3"))->Fill(mcInputTrackXiStar->Pt(), mcInputTrackXiStar->Y(), mcInputTrackXiStar->GetCalcMass());
      else ((TH3F*)fOutputList->FindObject("fMCinputTotalXiStarbar3"))->Fill(mcInputTrackXiStar->Pt(), mcInputTrackXiStar->Y(), mcInputTrackXiStar->GetCalcMass());

      
      AliAODMCParticle *mcInputTrackXiStarD1 = (AliAODMCParticle*)mcArray->At(abs(mcInputTrackXiStar->GetDaughter(0)));
      AliAODMCParticle *mcInputTrackXiStarD2 = (AliAODMCParticle*)mcArray->At(abs(mcInputTrackXiStar->GetDaughter(1)));
      
      if(abs(mcInputTrackXiStarD1->GetPdgCode())!=kXiCode && abs(mcInputTrackXiStarD2->GetPdgCode())!=kXiCode) continue;
      if(abs(mcInputTrackXiStarD1->GetPdgCode())!=kPionCode && abs(mcInputTrackXiStarD2->GetPdgCode())!=kPionCode) continue;
      

      // At this point we have the right Xi(1530) decay channel

      AliAODMCParticle *mcInputTrackXiD1;
      AliAODMCParticle *mcInputTrackXiD2;
      if(abs(mcInputTrackXiStarD1->GetPdgCode())==kXiCode) {
	mcInputTrackXiD1 = (AliAODMCParticle*)mcArray->At(abs(mcInputTrackXiStarD1->GetDaughter(0)));
	mcInputTrackXiD2 = (AliAODMCParticle*)mcArray->At(abs(mcInputTrackXiStarD1->GetDaughter(1)));
      }
      else{
	mcInputTrackXiD1 = (AliAODMCParticle*)mcArray->At(abs(mcInputTrackXiStarD2->GetDaughter(0)));
	mcInputTrackXiD2 = (AliAODMCParticle*)mcArray->At(abs(mcInputTrackXiStarD2->GetDaughter(1)));
      }
      
      if(abs(mcInputTrackXiD1->GetPdgCode())!=kLambdaCode && abs(mcInputTrackXiD2->GetPdgCode())!=kLambdaCode) continue;
      if(abs(mcInputTrackXiD1->GetPdgCode())!=kPionCode && abs(mcInputTrackXiD2->GetPdgCode())!=kPionCode) continue;
      

      // At this point we have the right Xi decay channel

      AliAODMCParticle *mcInputTrackLamD1;
      AliAODMCParticle *mcInputTrackLamD2;

      if(abs(mcInputTrackXiD1->GetPdgCode())==kLambdaCode) {
	mcInputTrackLamD1 = (AliAODMCParticle*)mcArray->At(abs(mcInputTrackXiD1->GetDaughter(0)));
	mcInputTrackLamD2 = (AliAODMCParticle*)mcArray->At(abs(mcInputTrackXiD1->GetDaughter(1)));
      }
      else{
	mcInputTrackLamD1 = (AliAODMCParticle*)mcArray->At(abs(mcInputTrackXiD2->GetDaughter(0)));
	mcInputTrackLamD2 = (AliAODMCParticle*)mcArray->At(abs(mcInputTrackXiD2->GetDaughter(1)));
      }

      if(abs(mcInputTrackLamD1->GetPdgCode())!=kProtonCode && abs(mcInputTrackLamD2->GetPdgCode())!=kProtonCode) continue;
      if(abs(mcInputTrackLamD1->GetPdgCode())!=kPionCode && abs(mcInputTrackLamD2->GetPdgCode())!=kPionCode) continue;

      // At this point we the right Lambda decay channel
      
      if(mcInputTrackXiStar->GetPdgCode() == +kXiStarCode) ((TH3F*)fOutputList->FindObject("fMCinputXiStar"))->Fill(mcInputTrackXiStar->Pt(), mcInputTrackXiStar->Y(), mcInputTrackXiStar->GetCalcMass());
      else ((TH3F*)fOutputList->FindObject("fMCinputXiStarbar"))->Fill(mcInputTrackXiStar->Pt(), mcInputTrackXiStar->Y(), mcInputTrackXiStar->GetCalcMass());
      
      if(abs(mcInputTrackXiStarD1->GetPdgCode())==kXiCode) {
	((TH2F*)fOutputList->FindObject("fMCinputXiStarxiy"))->Fill(mcInputTrackXiStar->Y(), mcInputTrackXiStarD1->Y());
	((TH2F*)fOutputList->FindObject("fMCinputXiStarpiony"))->Fill(mcInputTrackXiStar->Y(), mcInputTrackXiStarD2->Y());
      }else{
	((TH2F*)fOutputList->FindObject("fMCinputXiStarxiy"))->Fill(mcInputTrackXiStar->Y(), mcInputTrackXiStarD2->Y());
	((TH2F*)fOutputList->FindObject("fMCinputXiStarpiony"))->Fill(mcInputTrackXiStar->Y(), mcInputTrackXiStarD1->Y());
      }
      if(abs(mcInputTrackXiD1->GetPdgCode())==kLambdaCode){
	((TH2F*)fOutputList->FindObject("fMCinputXilambday"))->Fill(mcInputTrackXiStar->Y(), mcInputTrackXiD1->Y());
	((TH2F*)fOutputList->FindObject("fMCinputXipiony"))->Fill(mcInputTrackXiStar->Y(), mcInputTrackXiD2->Y());
      }else{
	((TH2F*)fOutputList->FindObject("fMCinputXilambday"))->Fill(mcInputTrackXiStar->Y(), mcInputTrackXiD2->Y());
	((TH2F*)fOutputList->FindObject("fMCinputXipiony"))->Fill(mcInputTrackXiStar->Y(), mcInputTrackXiD1->Y());
      }
      if(abs(mcInputTrackLamD1->GetPdgCode())==kProtonCode){
	((TH2F*)fOutputList->FindObject("fMCinputLamprotony"))->Fill(mcInputTrackXiStar->Y(), mcInputTrackLamD1->Y());
	((TH2F*)fOutputList->FindObject("fMCinputLampiony"))->Fill(mcInputTrackXiStar->Y(), mcInputTrackLamD2->Y());
      }else {
	((TH2F*)fOutputList->FindObject("fMCinputLamprotony"))->Fill(mcInputTrackXiStar->Y(), mcInputTrackLamD2->Y());
	((TH2F*)fOutputList->FindObject("fMCinputLampiony"))->Fill(mcInputTrackXiStar->Y(), mcInputTrackLamD1->Y());
      }
      
      
    }
  }
  

  
  if(fMCcase && !fAODcase){// get Input MC information for ESD case

    /////////////////////////////////////////////////
    // Xi mc input
    /////////////////////////////////////////////////
    for (Int_t it = 0; it < mcstack->GetNprimary(); it++) {
      TParticle *mcInputTrackXi = (TParticle*)mcstack->Particle(it);    
      if (!mcInputTrackXi) {
	Error("UserExec", "Could not receive track %d", it);
	continue;
      }
        
      //if(!mcstack->IsPhysicalPrimary(it)) continue;
      if(abs(mcInputTrackXi->GetPdgCode())!=kXiCode) continue;
   

      if(mcInputTrackXi->GetPdgCode() == +kXiCode) ((TH3F*)fOutputList->FindObject("fMCinputTotalXi3"))->Fill(mcInputTrackXi->Pt(), mcInputTrackXi->Y(), mcInputTrackXi->GetCalcMass());
      else ((TH3F*)fOutputList->FindObject("fMCinputTotalXibar3"))->Fill(mcInputTrackXi->Pt(), mcInputTrackXi->Y(), mcInputTrackXi->GetCalcMass());
    
    }
    
    
    /////////////////////////////////////////////////
    // XiStar mc input
    /////////////////////////////////////////////////
    for (Int_t it = 0; it < mcstack->GetNprimary(); it++) {
      TParticle *mcInputTrackXiStar = (TParticle*)mcstack->Particle(it);
      if (!mcInputTrackXiStar) {
	Error("UserExec", "Could not receive track %d", it);
	continue;
      }
      
      //if(!mcstack->IsPhysicalPrimary(it)) continue;
      if(abs(mcInputTrackXiStar->GetPdgCode())!=kXiStarCode) continue;
      
      if(mcInputTrackXiStar->GetPdgCode() == +kXiStarCode) ((TH3F*)fOutputList->FindObject("fMCinputTotalXiStar3"))->Fill(mcInputTrackXiStar->Pt(), mcInputTrackXiStar->Y(), mcInputTrackXiStar->GetCalcMass());
      else ((TH3F*)fOutputList->FindObject("fMCinputTotalXiStarbar3"))->Fill(mcInputTrackXiStar->Pt(), mcInputTrackXiStar->Y(), mcInputTrackXiStar->GetCalcMass());

    }
  }
  
  

  if(fAODcase) {cout<<"AOD XiVertexer not currently supported! Exiting event"<<endl; return;}

  ////////////////////////////////////////////////
  // Reconstruction
  
  for(Int_t i=0; i<fESD->GetNumberOfCascades(); i++){
    
    AliESDcascade *Xicandidate = fESD->GetCascade(i);
    
    if(TMath::Abs( Xicandidate->GetPindex()) == TMath::Abs( Xicandidate->GetNindex())) continue;
    if(TMath::Abs( Xicandidate->GetPindex()) == TMath::Abs( Xicandidate->GetBindex())) continue;
    if(TMath::Abs( Xicandidate->GetNindex()) == TMath::Abs( Xicandidate->GetBindex())) continue;

    AliESDtrack *pTrackXi	= fESD->GetTrack(TMath::Abs( Xicandidate->GetPindex()));
    AliESDtrack *nTrackXi	= fESD->GetTrack(TMath::Abs( Xicandidate->GetNindex()));
    AliESDtrack *bTrackXi	= fESD->GetTrack(TMath::Abs( Xicandidate->GetBindex()));
    
    // Standard track QA cuts
    if(!fTrackCut->AcceptTrack(pTrackXi)) continue;
    if(!fTrackCut->AcceptTrack(nTrackXi)) continue;
    if(!fTrackCut->AcceptTrack(bTrackXi)) continue;

    //////////////////////
    // DecayParameters Key (number represents array index)
    // NclustersTPC: 0=proton, 1=pion first, 2=pion second, 3=pion third
    // DCAVtx: 4=proton, 5=pion first, 6=pion second, 7=lambda, 8=pion third
    // 9 = DCA proton-pion
    // 10 = DCA Lambda-pion
    // 11 = Rxy Lambda
    // 12 = Rxy Xi
    // 13 = Cos PA Lambda
    // 14 = Cos PA Xi


    fDecayParameters[2] = bTrackXi->GetTPCNcls();
    
        
    if(Xicandidate->Charge() == -1){
      fDecayParameters[0] = pTrackXi->GetTPCNcls();
      fDecayParameters[1] = nTrackXi->GetTPCNcls();
      fDecayParameters[4] = fabs(pTrackXi->GetD(primaryVtx[0],primaryVtx[1],bField));// DCA Vtx proton
      fDecayParameters[5] = fabs(nTrackXi->GetD(primaryVtx[0],primaryVtx[1],bField));// DCA Vtx pion first
    }else{
      fDecayParameters[0] = nTrackXi->GetTPCNcls();
      fDecayParameters[1] = pTrackXi->GetTPCNcls();
      fDecayParameters[4] = fabs(nTrackXi->GetD(primaryVtx[0],primaryVtx[1],bField));// DCA Vtx proton
      fDecayParameters[5] = fabs(pTrackXi->GetD(primaryVtx[0],primaryVtx[1],bField));// DCA Vtx pion first
    }
  
  
    fDecayParameters[6] = fabs(bTrackXi->GetD(primaryVtx[0],primaryVtx[1],bField));// DCA Vtx pion second
    fDecayParameters[7] = fabs(Xicandidate->GetD(primaryVtx[0],primaryVtx[1],primaryVtx[2]));// DCA Vtx Lambda
    fDecayParameters[9] = fabs(Xicandidate->GetDcaV0Daughters());// DCA proton-pion
    fDecayParameters[10] = fabs(Xicandidate->GetDcaXiDaughters());// DCA Lambda-pion

    
    
    Double_t tempX[3]={0};
    Xicandidate->GetXYZ(tempX[0], tempX[1], tempX[2]);
    fDecayParameters[11] = sqrt( pow(tempX[0],2) + pow(tempX[1],2));// Rxy Lambda
    if(sqrt( pow(tempX[0],2) + pow(tempX[1],2) ) > fMaxDecayLength) continue;
    
    
    fDecayParameters[13] = Xicandidate->GetV0CosineOfPointingAngle(primaryVtx[0],primaryVtx[1],primaryVtx[2]);// Cos PA Lambda
    fDecayParameters[14] = Xicandidate->GetCascadeCosineOfPointingAngle(primaryVtx[0],primaryVtx[1],primaryVtx[2]);// Cos PA Xi
    
    xiP[0] = Xicandidate->Px();
    xiP[1] = Xicandidate->Py();
    xiP[2] = Xicandidate->Pz();
    xiVtx[0] = Xicandidate->Xv();
    xiVtx[1] = Xicandidate->Yv();
    xiVtx[2] = Xicandidate->Zv();
    xiPt = Xicandidate->Pt();
    xiY = Xicandidate->RapXi();
    xiMass = Xicandidate->M();
    xiCharge = Xicandidate->Charge();

    decayLengthXY = sqrt( pow(xiVtx[0]-primaryVtx[0],2) + pow(xiVtx[1]-primaryVtx[1],2) );
    fDecayParameters[12] = decayLengthXY;// Rxy Xi
    if(decayLengthXY > fMaxDecayLength) continue;// 2d version
    
    Bool_t StandardXi=kTRUE;
    if(fDecayParameters[0] < fCutValues[0][0]) StandardXi=kFALSE;// Nclus proton
    if(fDecayParameters[1] < fCutValues[0][1]) StandardXi=kFALSE;// Nclus pion first
    if(fDecayParameters[2] < fCutValues[0][2]) StandardXi=kFALSE;// Nclus pion second
    //
    if(fDecayParameters[4] < fCutValues[0][4]) StandardXi=kFALSE;// DCAVtx proton
    if(fDecayParameters[5] < fCutValues[0][5]) StandardXi=kFALSE;// DCAVtx pion first
    if(fDecayParameters[6] < fCutValues[0][6]) StandardXi=kFALSE;// DCAVtx pion second
    if(fDecayParameters[7] < fCutValues[0][7]) StandardXi=kFALSE;// DCAVtx Lambda
    //
    if(fDecayParameters[9] > fCutValues[0][9]) StandardXi=kFALSE;// DCAV proton-pion
    if(fDecayParameters[10] > fCutValues[0][10]) StandardXi=kFALSE;// DCAV Lambda-pion
    //
    if(fDecayParameters[11] < fCutValues[0][11]) StandardXi=kFALSE;// Rxy Lambda
    if(fDecayParameters[12] < fCutValues[0][12]) StandardXi=kFALSE;// Rxy Xi
    //
    if(fDecayParameters[13] < fCutValues[0][13]) StandardXi=kFALSE;// Cos PA Lambda
    if(fDecayParameters[14] < fCutValues[0][14]) StandardXi=kFALSE;// Cos PA Xi
    
    if(StandardXi){
      if(xiCharge == -1) CutVar[0].fXi->Fill(xiPt, xiY, xiMass);
      else CutVar[0].fXibar->Fill(xiPt, xiY, xiMass);
    }
           
    // MC associaton
    mcXiFilled = kFALSE;
    if(fMCcase && !fAODcase){
      
      MCXiD2esd = (TParticle*)mcstack->Particle(abs(bTrackXi->GetLabel()));
      
      if(abs(MCXiD2esd->GetPdgCode())==kPionCode){
	
	MCLamD1esd = (TParticle*)mcstack->Particle(abs(pTrackXi->GetLabel()));
	MCLamD2esd = (TParticle*)mcstack->Particle(abs(nTrackXi->GetLabel()));
	
	if(MCLamD1esd->GetMother(0) == MCLamD2esd->GetMother(0)){
	  if(abs(MCLamD1esd->GetPdgCode())==kProtonCode || abs(MCLamD2esd->GetPdgCode())==kProtonCode) {
	    if(abs(MCLamD1esd->GetPdgCode())==kPionCode || abs(MCLamD2esd->GetPdgCode())==kPionCode) {
	      
	      MCLamesd = (TParticle*)mcstack->Particle(abs(MCLamD1esd->GetMother(0)));
	      if(abs(MCLamesd->GetPdgCode())==kLambdaCode) {
		
		if(MCLamesd->GetMother(0) == MCXiD2esd->GetMother(0)){
		  MCXiesd = (TParticle*)mcstack->Particle(abs(MCLamesd->GetMother(0)));
		  if(abs(MCXiesd->GetPdgCode())==kXiCode) {
		    mcXiFilled = kTRUE;

		    if(StandardXi){
		      if(Xicandidate->Charge() == -1) {
			CutVar[0].fMCrecXi->Fill(xiPt, xiY, xiMass);
		      }else {
			CutVar[0].fMCrecXibar->Fill(xiPt, xiY, xiMass);
		      }
		    }

		  }
		}
	      }
	    }
	  }
	}
      }
    }// MC association
    
    
    if(fabs(xiMass-fTrueMassXi) > fMassWindow) continue;
    
    
  
    fXiTrack->Set(xiVtx, xiP, fCovMatrix, Short_t(xiCharge));
    
    
    //////////////////////////////////////////////////////////
    // Reconstruct Xi(1530)
    for(Int_t EN=0; EN<fEventsToMix+1; EN++){// Event buffer loop
      
      for(Int_t l=0; l<(fEvt+EN)->fNTracks; l++){// Present(EN=0) and Past(EN from 1 to fEventsToMix) event track loop
	
	if(EN==0) {
	  if((fEvt+EN)->fTracks[l].fID == pTrackXi->GetID()) continue;
	  if((fEvt+EN)->fTracks[l].fID == nTrackXi->GetID()) continue;
	  if((fEvt+EN)->fTracks[l].fID == bTrackXi->GetID()) continue;
	}
	
	fXiTrack->Set(xiVtx, xiP, fCovMatrix, Short_t(xiCharge));
	
	if(!fESDTrack4) continue;
	fESDTrack4->Set((fEvt+EN)->fTracks[l].fX, (fEvt+EN)->fTracks[l].fP, (fEvt+EN)->fTracks[l].fCov, (fEvt+EN)->fTracks[l].fCharge);
	if(fAODcase){
	  if((Bool_t)(((1<<5) & (fEvt+EN)->fTracks[l].fFilterMap) == 0)) continue;// AOD filterbit cut, "Standard cuts with tight dca"
	}else{
	  fDecayParameters[8] = (fEvt+EN)->fTracks[l].fDCAXY;// DCA Vtx pion third
	  if((fEvt+EN)->fTracks[l].fDCAZ > 2) continue;
	  if( (((fEvt+EN)->fTracks[l].fStatus)&AliESDtrack::kITSrefit)==0) continue;// Require itsrefit
	  // no Chi^2 cut applied for ESDs.  Info not available in my track structure.
	}
	
	if(fabs((fEvt+EN)->fTracks[l].fEta) > 0.8) continue;
	
	fDecayParameters[3] = (fEvt+EN)->fTracks[l].fNclusTPC;
	
	AliVertex *XiStarVtx = new AliVertex((fEvt+EN)->fTracks[l].fX,0,0);
	//fESDTrack4->PropagateToDCA(fXiTrack, bField);// Propagate tracks to dca, both tracks are budged
	if(!(fXiTrack->PropagateToDCA(XiStarVtx, bField, 3))) continue;// Propagate tracks to dca, version which assumes fESDTrack4 is already primary
	/////////////
	fXiTrack->GetPxPyPz(pDaughter1);
	fXiTrack->GetXYZ(xDaughter1);
	fESDTrack4->GetPxPyPz(pDaughter2);
	fESDTrack4->GetXYZ(xDaughter2);
	//////////////////////////
	
	
	
	//xiStarVtx[0] = (xDaughter1[0]+xDaughter2[0])/2.;
	//xiStarVtx[1] = (xDaughter1[1]+xDaughter2[1])/2.;
	//xiStarVtx[2] = (xDaughter1[2]+xDaughter2[2])/2.;
	//decayLength = sqrt(pow(xiStarVtx[0]-primaryVtx[0],2)+pow(xiStarVtx[1]-primaryVtx[1],2)+pow(xiStarVtx[2]-primaryVtx[2],2));
	
	px1=pDaughter1[0];
	py1=pDaughter1[1];
	pz1=pDaughter1[2];
	px2=pDaughter2[0];
	py2=pDaughter2[1];
	pz2=pDaughter2[2];
	
	p1sq=px1*px1+py1*py1+pz1*pz1;
	p2sq=px2*px2+py2*py2+pz2*pz2;
	if(p1sq <=0 || p2sq <=0) continue;
	
	e1=sqrt(p1sq+fTrueMassXi*fTrueMassXi);
	e2=sqrt(p2sq+fTrueMassPi*fTrueMassPi);
	angle=px1*px2+py1*py2+pz1*pz2;
	xiStarMass=fTrueMassXi*fTrueMassXi+fTrueMassPi*fTrueMassPi+2.*e1*e2-2.*angle;
	if(xiStarMass<0.) xiStarMass=1.e-8;
	xiStarMass=sqrt(xiStarMass);
	
	
	xiStarP[0] = px1+px2;
	xiStarP[1] = py1+py2;
	xiStarP[2] = pz1+pz2;
	xiStarMom = sqrt(pow(xiStarP[0],2)+pow(xiStarP[1],2)+pow(xiStarP[2],2));
	if(xiStarMom==0) continue; // So one of the following lines doesnt break
	xiStarPt = sqrt(xiStarP[0]*xiStarP[0] + xiStarP[1]*xiStarP[1]);
	xiStarY = .5*log( ((e1+e2) + xiStarP[2])/((e1+e2) - xiStarP[2]));
	//xiStarE = e1 + e2;
	
	
	//if( (xiStarP[0]*(xiStarVtx[0]-primaryVtx[0]) + xiStarP[1]*(xiStarVtx[1]-primaryVtx[1]) + xiStarP[2]*(xiStarVtx[2]-primaryVtx[2]))/xiStarMom/decayLength < fXiStarCosTheta) continue;

	for(int cv=0; cv<kNCutVariations; cv++){
	  if(fDecayParameters[0] < fCutValues[cv][0]) continue;// Nclus proton
	  if(fDecayParameters[1] < fCutValues[cv][1]) continue;// Nclus pion first
	  if(fDecayParameters[2] < fCutValues[cv][2]) continue;// Nclus pion second
	  if(fDecayParameters[3] < fCutValues[cv][3]) continue;// Nclus pion third
	  //
	  if(fDecayParameters[4] < fCutValues[cv][4]) continue;// DCAVtx proton
	  if(fDecayParameters[5] < fCutValues[cv][5]) continue;// DCAVtx pion first
	  if(fDecayParameters[6] < fCutValues[cv][6]) continue;// DCAVtx pion second
	  if(fDecayParameters[7] < fCutValues[cv][7]) continue;// DCAVtx Lambda
	  if(cv!=8) {if(fDecayParameters[8] > (0.0182 + 0.035/pow((fEvt+EN)->fTracks[l].fPt,1.01))) continue;}// DCAVtx pion third
	  else {if(fDecayParameters[8] > fCutValues[cv][8]) continue;}// DCAVtx pion third
	  //
	  if(fDecayParameters[9] > fCutValues[cv][9]) continue;// DCAV proton-pion
	  if(fDecayParameters[10] > fCutValues[cv][10]) continue;// DCAV Lambda-pion
	  //
	  if(fDecayParameters[11] < fCutValues[cv][11]) continue;// Rxy Lambda
	  if(fDecayParameters[12] < fCutValues[cv][12]) continue;// Rxy Xi
	  //
	  if(fDecayParameters[13] < fCutValues[cv][13]) continue;// Cos PA Lambda
	  if(fDecayParameters[14] < fCutValues[cv][14]) continue;// Cos PA Xi
	  

	  if(EN==0){
	    if(fXiTrack->Charge() == -1 &&  fESDTrack4->Charge() == -1) CutVar[cv].fXiMinusPiMinus->Fill(xiStarPt, xiStarY, xiStarMass);
	    else if(fXiTrack->Charge() == -1 &&  fESDTrack4->Charge() == +1) CutVar[cv].fXiMinusPiPlus->Fill(xiStarPt, xiStarY, xiStarMass);
	    else if(fXiTrack->Charge() == +1 &&  fESDTrack4->Charge() == -1) CutVar[cv].fXiPlusPiMinus->Fill(xiStarPt, xiStarY, xiStarMass);
	    else CutVar[cv].fXiPlusPiPlus->Fill(xiStarPt, xiStarY, xiStarMass);
	  }else {
	    if(fXiTrack->Charge() == -1 &&  fESDTrack4->Charge() == -1) CutVar[cv].fXiMinusPiMinusbkg->Fill(xiStarPt, xiStarY, xiStarMass);
	    else if(fXiTrack->Charge() == -1 &&  fESDTrack4->Charge() == +1) CutVar[cv].fXiMinusPiPlusbkg->Fill(xiStarPt, xiStarY, xiStarMass);
	    else if(fXiTrack->Charge() == +1 &&  fESDTrack4->Charge() == -1) CutVar[cv].fXiPlusPiMinusbkg->Fill(xiStarPt, xiStarY, xiStarMass);
	    else CutVar[cv].fXiPlusPiPlusbkg->Fill(xiStarPt, xiStarY, xiStarMass);
	  }
	  
	
	/*
	// MC associaton AOD
	if(fMCcase && mcXiFilled && EN==0 && fAODcase){// AOD MC's
	  
	  MCXiStarD2 = (AliAODMCParticle*)mcArray->At(abs((fEvt)->fTracks[l].fLabel));
	  
	  if(abs(MCXiStarD2->GetPdgCode())==kPionCode){ 
	    if(MCXi->GetMother() == MCXiStarD2->GetMother()){
	      MCXiStar = (AliAODMCParticle*)mcArray->At(MCXi->GetMother());
	      if(abs(MCXiStar->GetPdgCode())==kXiStarCode) {
		
		if(fXiTrack->Charge() == -1 &&  fESDTrack4->Charge() == +1) fMCrecXiMinusPiPlus->Fill(xiStarPt, xiStarY, xiStarMass);
		if(fXiTrack->Charge() == +1 &&  fESDTrack4->Charge() == -1) fMCrecXiPlusPiMinus->Fill(xiStarPt, xiStarY, xiStarMass);
					
	      }
	    }
	  }
	}
	*/
	
	// MC associaton ESD
	  if(fMCcase && mcXiFilled && EN==0 && !fAODcase){// ESD MC's
	    MCXiStarD2esd = (TParticle*)mcstack->Particle(abs((fEvt)->fTracks[l].fLabel));
	    
	    if(abs(MCXiStarD2esd->GetPdgCode())==kPionCode){ 
	      if(MCXiesd->GetMother(0) == MCXiStarD2esd->GetMother(0)){
	        
		MCXiStaresd = (TParticle*)mcstack->Particle(abs(MCXiesd->GetMother(0)));
		if(abs(MCXiStaresd->GetPdgCode())==kXiStarCode) {
		  
		  if(fXiTrack->Charge() == -1 &&  fESDTrack4->Charge() == +1) CutVar[cv].fMCrecXiMinusPiPlus->Fill(xiStarPt, xiStarY, xiStarMass);
		  if(fXiTrack->Charge() == +1 &&  fESDTrack4->Charge() == -1) CutVar[cv].fMCrecXiPlusPiMinus->Fill(xiStarPt, xiStarY, xiStarMass);
		  
		}
	      }
	    }
	  }
	
	}// Cut Variation loop
      }// 3rd pion loop
    }// Event mixing loop
    
  }// Xi loop
  

  
  // Post output data.
  PostData(1, fOutputList);
  
}
//________________________________________________________________________
void AliXiStar::Terminate(Option_t *) 
{
  cout<<"Done"<<endl;
}
//________________________________________________________________________
Double_t AliXiStar::LinearPropagateToDCA(AliESDtrack *v, AliESDtrack *t, Double_t b) {// Adapted from AliCascadeVertexer.cxx
 //--------------------------------------------------------------------
  // This function returns the DCA between the V0 and the track
  //--------------------------------------------------------------------

  Double_t alpha=t->GetAlpha(), cs1=TMath::Cos(alpha), sn1=TMath::Sin(alpha);
  Double_t r[3]; t->GetXYZ(r);
  Double_t x1=r[0], y1=r[1], z1=r[2];
  Double_t p[3]; t->GetPxPyPz(p);
  Double_t px1=p[0], py1=p[1], pz1=p[2];

  Double_t x2[3]={0};
  Double_t p2[3]={0};
  Double_t vx2,vy2,vz2;     // position and momentum of V0
  Double_t px2,py2,pz2;
  
  v->GetXYZ(x2);
  v->GetPxPyPz(p2);
  vx2=x2[0], vy2=x2[1], vz2=x2[2];
  px2=p2[0], py2=p2[1], pz2=p2[2];

// calculation dca
   
  Double_t dd= Det(vx2-x1,vy2-y1,vz2-z1,px1,py1,pz1,px2,py2,pz2);
  Double_t ax= Det(py1,pz1,py2,pz2);
  Double_t ay=-Det(px1,pz1,px2,pz2);
  Double_t az= Det(px1,py1,px2,py2);

  Double_t dca=TMath::Abs(dd)/TMath::Sqrt(ax*ax + ay*ay + az*az);

//points of the DCA
  Double_t t1 = Det(vx2-x1,vy2-y1,vz2-z1,px2,py2,pz2,ax,ay,az)/
                Det(px1,py1,pz1,px2,py2,pz2,ax,ay,az);
  
  x1 += px1*t1; y1 += py1*t1; //z1 += pz1*t1;
  

  //propagate track to the points of DCA

  x1=x1*cs1 + y1*sn1;
  if (!t->PropagateTo(x1,b)) {
    Error("PropagateToDCA","Propagation failed !");
    return 1.e+33;
  }  

  return dca;
}


//________________________________________________________________________
Double_t AliXiStar::Det(Double_t a00, Double_t a01, Double_t a10, Double_t a11) const {// Taken from AliCascadeVertexer
  //--------------------------------------------------------------------
  // This function calculates locally a 2x2 determinant
  //--------------------------------------------------------------------
  return a00*a11 - a01*a10;
}
//________________________________________________________________________
Double_t AliXiStar::Det(Double_t a00,Double_t a01,Double_t a02,
				 Double_t a10,Double_t a11,Double_t a12,
			      Double_t a20,Double_t a21,Double_t a22) const {// Taken from AliCascadeVertexer
  //--------------------------------------------------------------------
  // This function calculates locally a 3x3 determinant
  //--------------------------------------------------------------------
  return  a00*Det(a11,a12,a21,a22)-a01*Det(a10,a12,a20,a22)+a02*Det(a10,a11,a20,a21);
}



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