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

#include <TObjArray.h>
#include <TClonesArray.h>
#include <TGraph.h>
#include <TFile.h>
#include <TList.h>
#include <TNtuple.h>

#include "AliVertex.h"
#include "AliVVertex.h"
#include "AliESDVertex.h"
#include "AliVertexerTracks.h"
#include "AliAODEvent.h"
#include "AliAODTrack.h"
#include "AliAODMCParticle.h"
#include "AliExternalTrackParam.h"
#include "AliAODRecoDecayHF2Prong.h"
#include "AliAODRecoDecayHF3Prong.h"
#include "AliAODRecoCascadeHF.h"
#include "AliNeutralTrackParam.h"
#include "AliAnalysisTaskSEImproveITS.h"

//
// Implementation of the "hybrid-approach" for ITS upgrade studies.
// The tastk smears the track parameters according to estimations
// from single-track upgrade studies. Afterwards it recalculates
// the parameters of the reconstructed decays.
//
// WARNING: This will affect all tasks in a train after this one
// (which is typically desired, though).
//

AliAnalysisTaskSEImproveITS::AliAnalysisTaskSEImproveITS() 
  :AliAnalysisTaskSE(),
   fD0ZResPCur  (0),
   fD0ZResKCur  (0),
   fD0ZResPiCur (0),
   fD0RPResPCur (0),
   fD0RPResKCur (0),
   fD0RPResPiCur(0),
   fPt1ResPCur  (0),
   fPt1ResKCur  (0),
   fPt1ResPiCur (0),
   fD0ZResPUpg  (0),
   fD0ZResKUpg  (0),
   fD0ZResPiUpg (0),
   fD0RPResPUpg (0),
   fD0RPResKUpg (0),
   fD0RPResPiUpg(0),
   fPt1ResPUpg  (0),
   fPt1ResKUpg  (0),
   fPt1ResPiUpg (0),
   fD0ZResPCurSA  (0),
   fD0ZResKCurSA  (0),
   fD0ZResPiCurSA (0),
   fD0RPResPCurSA (0),
   fD0RPResKCurSA (0),
   fD0RPResPiCurSA(0),
   fPt1ResPCurSA  (0),
   fPt1ResKCurSA  (0),
   fPt1ResPiCurSA (0),
   fD0ZResPUpgSA  (0),
   fD0ZResKUpgSA  (0),
   fD0ZResPiUpgSA (0),
   fD0RPResPUpgSA (0),
   fD0RPResKUpgSA (0),
   fD0RPResPiUpgSA(0),
   fPt1ResPUpgSA  (0),
   fPt1ResKUpgSA  (0),
   fPt1ResPiUpgSA (0),
   fRunInVertexing(kFALSE),
   fImproveTracks(kTRUE),
   fDebugOutput (0),
   fDebugNtuple (0),
   fDebugVars   (0), 
   fNDebug      (0)
{
  //
  // Default constructor.
  //
}

AliAnalysisTaskSEImproveITS::AliAnalysisTaskSEImproveITS(const char *name,
                           const char *resfileCurURI,
                           const char *resfileUpgURI,
                           Bool_t isRunInVertexing,
			   Int_t ndebug)
  :AliAnalysisTaskSE(name),
   fD0ZResPCur  (0),
   fD0ZResKCur  (0),
   fD0ZResPiCur (0),
   fD0RPResPCur (0),
   fD0RPResKCur (0),
   fD0RPResPiCur(0),
   fPt1ResPCur  (0),
   fPt1ResKCur  (0),
   fPt1ResPiCur (0),
   fD0ZResPUpg  (0),
   fD0ZResKUpg  (0),
   fD0ZResPiUpg (0),
   fD0RPResPUpg (0),
   fD0RPResKUpg (0),
   fD0RPResPiUpg(0),
   fPt1ResPUpg  (0),
   fPt1ResKUpg  (0),
   fPt1ResPiUpg (0),
   fD0ZResPCurSA  (0),
   fD0ZResKCurSA  (0),
   fD0ZResPiCurSA (0),
   fD0RPResPCurSA (0),
   fD0RPResKCurSA (0),
   fD0RPResPiCurSA(0),
   fPt1ResPCurSA  (0),
   fPt1ResKCurSA  (0),
   fPt1ResPiCurSA (0),
   fD0ZResPUpgSA  (0),
   fD0ZResKUpgSA  (0),
   fD0ZResPiUpgSA (0),
   fD0RPResPUpgSA (0),
   fD0RPResKUpgSA (0),
   fD0RPResPiUpgSA(0),
   fPt1ResPUpgSA  (0),
   fPt1ResKUpgSA  (0),
   fPt1ResPiUpgSA (0),
   fRunInVertexing(isRunInVertexing),
   fImproveTracks(kTRUE),
   fDebugOutput (0),
   fDebugNtuple (0),
   fDebugVars   (0),
   fNDebug      (ndebug)
{
  //
  // Constructor to be used to create the task.
  // The the URIs specify the resolution files to be used. 
  // They are expected to contain TGraphs with the resolutions
  // for the current and the upgraded ITS (see code for details).
  // One may also specify for how many tracks debug information
  // is written to the output.
  //
  TFile *resfileCur=TFile::Open(resfileCurURI);
  fD0RPResPCur =new TGraph(*static_cast<TGraph*>(resfileCur->Get("D0RPResP" )));
  fD0RPResKCur =new TGraph(*static_cast<TGraph*>(resfileCur->Get("D0RPResK" )));
  fD0RPResPiCur=new TGraph(*static_cast<TGraph*>(resfileCur->Get("D0RPResPi")));
  fD0ZResPCur  =new TGraph(*static_cast<TGraph*>(resfileCur->Get("D0ZResP"  )));
  fD0ZResKCur  =new TGraph(*static_cast<TGraph*>(resfileCur->Get("D0ZResK"  )));
  fD0ZResPiCur =new TGraph(*static_cast<TGraph*>(resfileCur->Get("D0ZResPi" )));
  fPt1ResPCur  =new TGraph(*static_cast<TGraph*>(resfileCur->Get("Pt1ResP"  )));
  fPt1ResKCur  =new TGraph(*static_cast<TGraph*>(resfileCur->Get("Pt1ResK"  )));
  fPt1ResPiCur =new TGraph(*static_cast<TGraph*>(resfileCur->Get("Pt1ResPi" )));
  fD0RPResPCur ->SetName("D0RPResPCur" );
  fD0RPResKCur ->SetName("D0RPResKCur" );
  fD0RPResPiCur->SetName("D0RPResPiCur");
  fD0ZResPCur  ->SetName("D0ZResPCur"  ); 
  fD0ZResKCur  ->SetName("D0ZResKCur"  );
  fD0ZResPiCur ->SetName("D0ZResPiCur" );
  fPt1ResPCur  ->SetName("Pt1ResPCur"  );
  fPt1ResKCur  ->SetName("Pt1ResKCur"  );
  fPt1ResPiCur ->SetName("Pt1ResPiCur" );
  fD0RPResPCurSA =new TGraph(*static_cast<TGraph*>(resfileCur->Get("D0RPResPSA" )));
  fD0RPResKCurSA =new TGraph(*static_cast<TGraph*>(resfileCur->Get("D0RPResKSA" )));
  fD0RPResPiCurSA=new TGraph(*static_cast<TGraph*>(resfileCur->Get("D0RPResPiSA")));
  fD0ZResPCurSA  =new TGraph(*static_cast<TGraph*>(resfileCur->Get("D0ZResPSA"  )));
  fD0ZResKCurSA  =new TGraph(*static_cast<TGraph*>(resfileCur->Get("D0ZResKSA"  )));
  fD0ZResPiCurSA =new TGraph(*static_cast<TGraph*>(resfileCur->Get("D0ZResPiSA" )));
  fPt1ResPCurSA  =new TGraph(*static_cast<TGraph*>(resfileCur->Get("Pt1ResPSA"  )));
  fPt1ResKCurSA  =new TGraph(*static_cast<TGraph*>(resfileCur->Get("Pt1ResKSA"  )));
  fPt1ResPiCurSA =new TGraph(*static_cast<TGraph*>(resfileCur->Get("Pt1ResPiSA" )));
  fD0RPResPCurSA ->SetName("D0RPResPCurSA" );
  fD0RPResKCurSA ->SetName("D0RPResKCurSA" );
  fD0RPResPiCurSA->SetName("D0RPResPiCurSA");
  fD0ZResPCurSA  ->SetName("D0ZResPCurSA"  ); 
  fD0ZResKCurSA  ->SetName("D0ZResKCurSA"  );
  fD0ZResPiCurSA ->SetName("D0ZResPiCurSA" );
  fPt1ResPCurSA  ->SetName("Pt1ResPCurSA"  );
  fPt1ResKCurSA  ->SetName("Pt1ResKCurSA"  );
  fPt1ResPiCurSA ->SetName("Pt1ResPiCurSA" );
  delete resfileCur;
  TFile *resfileUpg=TFile::Open(resfileUpgURI );
  fD0RPResPUpg =new TGraph(*static_cast<TGraph*>(resfileUpg->Get("D0RPResP" )));
  fD0RPResKUpg =new TGraph(*static_cast<TGraph*>(resfileUpg->Get("D0RPResK" )));
  fD0RPResPiUpg=new TGraph(*static_cast<TGraph*>(resfileUpg->Get("D0RPResPi")));
  fD0ZResPUpg  =new TGraph(*static_cast<TGraph*>(resfileUpg->Get("D0ZResP"  )));
  fD0ZResKUpg  =new TGraph(*static_cast<TGraph*>(resfileUpg->Get("D0ZResK"  )));
  fD0ZResPiUpg =new TGraph(*static_cast<TGraph*>(resfileUpg->Get("D0ZResPi" )));
  fPt1ResPUpg  =new TGraph(*static_cast<TGraph*>(resfileUpg->Get("Pt1ResP"  )));
  fPt1ResKUpg  =new TGraph(*static_cast<TGraph*>(resfileUpg->Get("Pt1ResK"  )));
  fPt1ResPiUpg =new TGraph(*static_cast<TGraph*>(resfileUpg->Get("Pt1ResPi" )));
  fD0RPResPUpg ->SetName("D0RPResPUpg" );
  fD0RPResKUpg ->SetName("D0RPResKUpg" );
  fD0RPResPiUpg->SetName("D0RPResPiUpg");
  fD0ZResPUpg  ->SetName("D0ZResPUpg"  );
  fD0ZResKUpg  ->SetName("D0ZResKUpg"  );
  fD0ZResPiUpg ->SetName("D0ZResPiUpg" );
  fPt1ResPUpg  ->SetName("Pt1ResPUpg"  );
  fPt1ResKUpg  ->SetName("Pt1ResKUpg"  );
  fPt1ResPiUpg ->SetName("Pt1ResPiUpg" );
  fD0RPResPUpgSA =new TGraph(*static_cast<TGraph*>(resfileUpg->Get("D0RPResPSA" )));
  fD0RPResKUpgSA =new TGraph(*static_cast<TGraph*>(resfileUpg->Get("D0RPResKSA" )));
  fD0RPResPiUpgSA=new TGraph(*static_cast<TGraph*>(resfileUpg->Get("D0RPResPiSA")));
  fD0ZResPUpgSA  =new TGraph(*static_cast<TGraph*>(resfileUpg->Get("D0ZResPSA"  )));
  fD0ZResKUpgSA  =new TGraph(*static_cast<TGraph*>(resfileUpg->Get("D0ZResKSA"  )));
  fD0ZResPiUpgSA =new TGraph(*static_cast<TGraph*>(resfileUpg->Get("D0ZResPiSA" )));
  fPt1ResPUpgSA  =new TGraph(*static_cast<TGraph*>(resfileUpg->Get("Pt1ResPSA"  )));
  fPt1ResKUpgSA  =new TGraph(*static_cast<TGraph*>(resfileUpg->Get("Pt1ResKSA"  )));
  fPt1ResPiUpgSA =new TGraph(*static_cast<TGraph*>(resfileUpg->Get("Pt1ResPiSA" )));
  fD0RPResPUpgSA ->SetName("D0RPResPUpgSA" );
  fD0RPResKUpgSA ->SetName("D0RPResKUpgSA" );
  fD0RPResPiUpgSA->SetName("D0RPResPiUpgSA");
  fD0ZResPUpgSA  ->SetName("D0ZResPUpgSA"  );
  fD0ZResKUpgSA  ->SetName("D0ZResKUpgSA"  );
  fD0ZResPiUpgSA ->SetName("D0ZResPiUpgSA" );
  fPt1ResPUpgSA  ->SetName("Pt1ResPUpgSA"  );
  fPt1ResKUpgSA  ->SetName("Pt1ResKUpgSA"  );
  fPt1ResPiUpgSA ->SetName("Pt1ResPiUpgSA" );
  delete resfileUpg;

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

AliAnalysisTaskSEImproveITS::~AliAnalysisTaskSEImproveITS() {
  //
  // Destructor.
  //
  delete fDebugOutput;
}

void AliAnalysisTaskSEImproveITS::UserCreateOutputObjects() {
  //
  // Creation of user output objects.
  //
  fDebugOutput=new TList();
  fDebugOutput->SetOwner();
  fDebugNtuple=new TNtuple("fDebugNtuple","Smearing","pdg:ptmc:d0rpo:d0zo:pt1o:sd0rpo:sd0zo:spt1o:d0rpn:d0zn:pt1n:sd0rpn:sd0zn:spt1n:d0rpmc:d0zmc:pt1mc");
  fDebugVars=new Float_t[fDebugNtuple->GetNvar()];
  
  fDebugOutput->Add(fDebugNtuple );

  fDebugOutput->Add(fD0RPResPCur );
  fDebugOutput->Add(fD0RPResKCur );
  fDebugOutput->Add(fD0RPResPiCur);
  fDebugOutput->Add(fD0ZResPCur  ); 
  fDebugOutput->Add(fD0ZResKCur  );
  fDebugOutput->Add(fD0ZResPiCur );
  fDebugOutput->Add(fPt1ResPCur  );
  fDebugOutput->Add(fPt1ResKCur  );
  fDebugOutput->Add(fPt1ResPiCur );
  fDebugOutput->Add(fD0RPResPUpg );
  fDebugOutput->Add(fD0RPResKUpg );
  fDebugOutput->Add(fD0RPResPiUpg);
  fDebugOutput->Add(fD0ZResPUpg  );
  fDebugOutput->Add(fD0ZResKUpg  );
  fDebugOutput->Add(fD0ZResPiUpg );
  fDebugOutput->Add(fPt1ResPUpg  );
  fDebugOutput->Add(fPt1ResKUpg  );
  fDebugOutput->Add(fPt1ResPiUpg );

  PostData(1,fDebugOutput);
}

void AliAnalysisTaskSEImproveITS::UserExec(Option_t*) {
  //
  // The event loop
  //
  AliAODEvent *ev=0x0;
  if(!fRunInVertexing) {
    ev=dynamic_cast<AliAODEvent*>(InputEvent());
  } else {
    if(AODEvent() && IsStandardAOD()) ev = dynamic_cast<AliAODEvent*> (AODEvent());
  }  
  if(!ev) return;
  Double_t bz=ev->GetMagneticField();




  // Smear all tracks
  TClonesArray *mcs=static_cast<TClonesArray*>(ev->GetList()->FindObject(AliAODMCParticle::StdBranchName()));
  if (!mcs) return;
  if (fImproveTracks) {
    for(Int_t itrack=0;itrack<ev->GetNumberOfTracks();++itrack) {
      AliAODTrack * trk = dynamic_cast<AliAODTrack*>(ev->GetTrack(itrack));
      if(!trk) AliFatal("Not a standard AOD");
      SmearTrack(trk,mcs);
    }
  }

  // TODO: recalculated primary vertex
  AliVVertex *primaryVertex=ev->GetPrimaryVertex();

  // Recalculate all candidates
  // D0->Kpi
  TClonesArray *array2Prong=static_cast<TClonesArray*>(ev->GetList()->FindObject("D0toKpi"));
  if (array2Prong) {
      for (Int_t icand=0;icand<array2Prong->GetEntries();++icand) {
      AliAODRecoDecayHF2Prong *decay=static_cast<AliAODRecoDecayHF2Prong*>(array2Prong->At(icand));

      // recalculate vertices
      AliVVertex *oldSecondaryVertex=decay->GetSecondaryVtx();


      AliExternalTrackParam et1; et1.CopyFromVTrack(static_cast<AliAODTrack*>(decay->GetDaughter(0)));
      AliExternalTrackParam et2; et2.CopyFromVTrack(static_cast<AliAODTrack*>(decay->GetDaughter(1)));

      TObjArray ta12;
     
      ta12.Add(&et1); ta12.Add(&et2); 
      AliESDVertex *v12 =RecalculateVertex(oldSecondaryVertex,&ta12 ,bz);
     

      // update secondary vertex
      Double_t pos[3];
      v12->GetXYZ(pos);
      
      decay->GetSecondaryVtx()->SetPosition(pos[0],pos[1],pos[2]);
      decay->GetSecondaryVtx()->SetChi2perNDF(v12->GetChi2toNDF()); 
     
      //!!!!TODO: covariance matrix

      // update d0 
      Double_t d0z0[2],covd0z0[3];
      Double_t d0[2],d0err[2];
      et1.PropagateToDCA(primaryVertex,bz,100.,d0z0,covd0z0);
      d0[0]=d0z0[0];
      d0err[0] = TMath::Sqrt(covd0z0[0]);
      et2.PropagateToDCA(primaryVertex,bz,100.,d0z0,covd0z0);
      d0[1]=d0z0[0];
      d0err[1] = TMath::Sqrt(covd0z0[0]);   
      decay->Setd0Prongs(2,d0);
      decay->Setd0errProngs(2,d0err);
      // 


      Double_t xdummy=0.,ydummy=0.;
      Double_t dca;
      dca=et1.GetDCA(&et2,bz,xdummy,ydummy);
      decay->SetDCA(dca);

      
      delete v12;

      Double_t px[2],py[2],pz[2];
      for (Int_t i=0;i<2;++i) {
        const AliAODTrack *t=static_cast<AliAODTrack*>(decay->GetDaughter(i));
        px[i]=t->Px();
        py[i]=t->Py();
        pz[i]=t->Pz();
      }
      decay->SetPxPyPzProngs(2,px,py,pz);
    }
  }


  // Dstar->Kpipi
  TClonesArray *arrayCascade=static_cast<TClonesArray*>(ev->GetList()->FindObject("Dstar"));
  
  if (arrayCascade) {
    for (Int_t icand=0;icand<arrayCascade->GetEntries();++icand) {
      AliAODRecoCascadeHF *decayDstar=static_cast<AliAODRecoCascadeHF*>(arrayCascade->At(icand));
      //Get D0 from D*
      AliAODRecoDecayHF2Prong* decay=(AliAODRecoDecayHF2Prong*)decayDstar->Get2Prong();
      
      // recalculate vertices
      //AliVVertex *oldSecondaryVertex=decay->GetSecondaryVtx();

      //soft pion
      AliExternalTrackParam et3; et3.CopyFromVTrack(static_cast<AliAODTrack*>(decayDstar->GetBachelor()));
       
      //track D0
      AliNeutralTrackParam *trackD0 = new AliNeutralTrackParam(decay);

      //!!!!TODO: covariance matrix
      
      // update d0 
      Double_t d0z0[2],covd0z0[3];
      Double_t d01[2],d01err[2];

      //the D*
      et3.PropagateToDCA(primaryVertex,bz,100.,d0z0,covd0z0);
      d01[0]=d0z0[0];
      d01err[0] = TMath::Sqrt(covd0z0[0]); 
      trackD0->PropagateToDCA(primaryVertex,bz,100.,d0z0,covd0z0);
      d01[1]=d0z0[0];
      d01err[1] = TMath::Sqrt(covd0z0[0]);  
      decayDstar->Setd0Prongs(2,d01);
      decayDstar->Setd0errProngs(2,d01err);
        
      // delete v12;
      delete trackD0; trackD0=NULL;

       // a run for D*
      Double_t px1[2],py1[2],pz1[2];
      for (Int_t i=0;i<2;++i) {
	const AliAODTrack *t1=static_cast<AliAODTrack*>(decayDstar->GetDaughter(i));
	px1[i]=t1->Px();
	py1[i]=t1->Py();
	pz1[i]=t1->Pz();
      }
      decayDstar->SetPxPyPzProngs(2,px1,py1,pz1);
      
     }
  }


  // Three prong
  TClonesArray *array3Prong=static_cast<TClonesArray*>(ev->GetList()->FindObject("Charm3Prong"));
  if (array3Prong) {
    for (Int_t icand=0;icand<array3Prong->GetEntries();++icand) {
      AliAODRecoDecayHF3Prong *decay=static_cast<AliAODRecoDecayHF3Prong*>(array3Prong->At(icand));

      // recalculate vertices
      AliVVertex *oldSecondaryVertex=decay->GetSecondaryVtx();
      AliExternalTrackParam et1; et1.CopyFromVTrack(static_cast<AliAODTrack*>(decay->GetDaughter(0)));
      AliExternalTrackParam et2; et2.CopyFromVTrack(static_cast<AliAODTrack*>(decay->GetDaughter(1)));
      AliExternalTrackParam et3; et3.CopyFromVTrack(static_cast<AliAODTrack*>(decay->GetDaughter(2)));
      TObjArray ta123,ta12,ta23;
      ta123.Add(&et1);ta123.Add(&et2);ta123.Add(&et3);
      ta12. Add(&et1);ta12 .Add(&et2);
                      ta23 .Add(&et2);ta23 .Add(&et3);
      AliESDVertex *v123=RecalculateVertex(oldSecondaryVertex,&ta123,bz);
      AliESDVertex *v12 =RecalculateVertex(oldSecondaryVertex,&ta12 ,bz);
      AliESDVertex *v23 =RecalculateVertex(oldSecondaryVertex,&ta23 ,bz);

      // update secondary vertex
      Double_t pos[3];
      v123->GetXYZ(pos);
      decay->GetSecondaryVtx()->SetPosition(pos[0],pos[1],pos[2]);
      decay->GetSecondaryVtx()->SetChi2perNDF(v123->GetChi2toNDF()); 
      //TODO: covariance matrix

      // update d0 for all progs
      Double_t d0z0[2],covd0z0[3];
      Double_t d0[3],d0err[3];
      et1.PropagateToDCA(primaryVertex,bz,100.,d0z0,covd0z0);
      d0[0]=d0z0[0];
      d0err[0] = TMath::Sqrt(covd0z0[0]);
      et2.PropagateToDCA(primaryVertex,bz,100.,d0z0,covd0z0);
      d0[1]=d0z0[0];
      d0err[1] = TMath::Sqrt(covd0z0[0]);
      et3.PropagateToDCA(primaryVertex,bz,100.,d0z0,covd0z0);
      d0[2]=d0z0[0];
      d0err[2] = TMath::Sqrt(covd0z0[0]);
      decay->Setd0Prongs   (3,d0   );
      decay->Setd0errProngs(3,d0err);
      // TODO: setter missing

      // update dca for prong combinations
      Double_t xdummy=0.,ydummy=0.;
      Double_t dca[3];
      dca[0]=et1.GetDCA(&et2,bz,xdummy,ydummy);
      dca[1]=et3.GetDCA(&et2,bz,xdummy,ydummy);
      dca[2]=et1.GetDCA(&et3,bz,xdummy,ydummy);
      decay->SetDCAs(3,dca);

      // update dist12 and dist23
      primaryVertex->GetXYZ(pos);
      decay->SetDist12toPrim(TMath::Sqrt((v12->GetX()-pos[0])*(v12->GetX()-pos[0])
                                        +(v12->GetY()-pos[1])*(v12->GetY()-pos[1])
                                        +(v12->GetZ()-pos[2])*(v12->GetZ()-pos[2])));
      decay->SetDist23toPrim(TMath::Sqrt((v23->GetX()-pos[0])*(v23->GetX()-pos[0])
                                        +(v23->GetY()-pos[1])*(v23->GetY()-pos[1])
                                        +(v23->GetZ()-pos[2])*(v23->GetZ()-pos[2])));
 
      delete v123;delete v12;delete v23;

      Double_t px[3],py[3],pz[3];
      for (Int_t i=0;i<3;++i) {
        const AliAODTrack *t=static_cast<AliAODTrack*>(decay->GetDaughter(i));
        px[i]=t->Px();
        py[i]=t->Py();
        pz[i]=t->Pz();
      }
      decay->SetPxPyPzProngs(3,px,py,pz);
    }
  }
}

void AliAnalysisTaskSEImproveITS::SmearTrack(AliAODTrack *track,const TClonesArray *mcs) {
  // Early exit, if this track has nothing in common with the ITS

  if (!(track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)))
    return;

  // Check if the track was already "improved" (this is done with a trick using layer 7 (ie the 8th))
  if (TESTBIT(track->GetITSClusterMap(),7)) return;
  //


  // Get reconstructed track parameters
  AliExternalTrackParam et; et.CopyFromVTrack(track);
  Double_t *param=const_cast<Double_t*>(et.GetParameter());
//TODO:  Double_t *covar=const_cast<Double_t*>(et.GetCovariance());

  // Get MC info
  Int_t imc=track->GetLabel();
  if (imc<=0) return;
  const AliAODMCParticle *mc=static_cast<AliAODMCParticle*>(mcs->At(imc));
  Double_t mcx[3];
  Double_t mcp[3];
  Double_t mccv[36]={0.};
  Short_t  mcc;
  mc->XvYvZv(mcx);
  mc->PxPyPz(mcp);
  mcc=mc->Charge();
  AliExternalTrackParam mct(mcx,mcp,mccv,mcc);
  const Double_t *parammc=mct.GetParameter();
//TODO:  const Double_t *covermc=mct.GetCovariance();
  AliVertex vtx(mcx,1.,1);

  // Correct reference points and frames according to MC
  // TODO: B-Field correct?
  // TODO: failing propagation....
  et.PropagateToDCA(&vtx,track->GetBz(),10.);
  et.Rotate(mct.GetAlpha());

  // Select appropriate smearing functions
  Double_t ptmc=TMath::Abs(mc->Pt());
  Double_t sd0rpn=0.;
  Double_t sd0zn =0.;
  Double_t spt1n =0.;
  Double_t sd0rpo=0.;
  Double_t sd0zo =0.;
  Double_t spt1o =0.;
  switch (mc->GetPdgCode()) {
  case 2212: case -2212:
    sd0rpo=EvalGraph(ptmc,fD0RPResPCur,fD0RPResPCurSA);
    sd0zo =EvalGraph(ptmc,fD0ZResPCur,fD0ZResPCurSA);
    spt1o =EvalGraph(ptmc,fPt1ResPCur,fPt1ResPCurSA);
    sd0rpn=EvalGraph(ptmc,fD0RPResPUpg,fD0RPResPUpgSA);
    sd0zn =EvalGraph(ptmc,fD0ZResPUpg,fD0ZResPUpgSA);
    spt1n =EvalGraph(ptmc,fPt1ResPUpg,fPt1ResPUpgSA);
    break;
  case 321: case -321:
    sd0rpo=EvalGraph(ptmc,fD0RPResKCur,fD0RPResKCurSA);
    sd0zo =EvalGraph(ptmc,fD0ZResKCur,fD0ZResKCurSA);
    spt1o =EvalGraph(ptmc,fPt1ResKCur,fPt1ResKCurSA);
    sd0rpn=EvalGraph(ptmc,fD0RPResKUpg,fD0RPResKUpgSA);
    sd0zn =EvalGraph(ptmc,fD0ZResKUpg,fD0ZResKUpgSA);
    spt1n =EvalGraph(ptmc,fPt1ResKUpg,fPt1ResKUpgSA);
    break;
  case 211: case -211:
    sd0rpo=EvalGraph(ptmc,fD0RPResPiCur,fD0RPResPiCurSA);
    sd0zo =EvalGraph(ptmc,fD0ZResPiCur,fD0ZResPiCurSA);
    spt1o =EvalGraph(ptmc,fPt1ResPiCur,fPt1ResPiCurSA);
    sd0rpn=EvalGraph(ptmc,fD0RPResPiUpg,fD0RPResPiUpgSA);
    sd0zn =EvalGraph(ptmc,fD0ZResPiUpg,fD0ZResPiUpgSA);
    spt1n =EvalGraph(ptmc,fPt1ResPiUpg,fPt1ResPiUpgSA);
    break;
  default:
    return;
  }

  // Use the same units (i.e. cm and GeV/c)! TODO: pt!
  sd0rpo*=1.e-4;
  sd0zo *=1.e-4;
  sd0rpn*=1.e-4;
  sd0zn *=1.e-4;

  // Apply the smearing
  Double_t d0zo  =param  [1];
  Double_t d0zmc =parammc[1];
  Double_t d0rpo =param  [0];
  Double_t d0rpmc=parammc[0];
  Double_t pt1o  =param  [4];
  Double_t pt1mc =parammc[4];
  Double_t dd0zo =d0zo-d0zmc;
  Double_t dd0zn =dd0zo *(sd0zo >0. ? (sd0zn /sd0zo ) : 1.);
  Double_t d0zn  =d0zmc+dd0zn;
  Double_t dd0rpo=d0rpo-d0rpmc;
  Double_t dd0rpn=dd0rpo*(sd0rpo>0. ? (sd0rpn/sd0rpo) : 1.);
  Double_t d0rpn =d0rpmc+dd0rpn;
  Double_t dpt1o =pt1o-pt1mc;
  Double_t dpt1n =dpt1o *(spt1o >0. ? (spt1n /spt1o ) : 1.);
  Double_t pt1n  =pt1mc+dpt1n;
  param[0]=d0rpn;
  param[1]=d0zn ;
  param[4]=pt1n ;

  // Copy the smeared parameters to the AOD track
  Double_t x[3];
  Double_t p[3];
  et.GetXYZ(x);
  et.GetPxPyPz(p);
  track->SetPosition(x,kFALSE);
  track->SetP(p,kTRUE);


  // Mark the track as "improved" with a trick (this is done with a trick using layer 7 (ie the 8th))
  UChar_t itsClusterMap = track->GetITSClusterMap();
  SETBIT(itsClusterMap,7);
  track->SetITSClusterMap(itsClusterMap);
  //

  // write out debug infos
  if (fDebugNtuple->GetEntries()<fNDebug) {
    Int_t idbg=0;
    fDebugVars[idbg++]=mc->GetPdgCode();
    fDebugVars[idbg++]=ptmc  ;
    fDebugVars[idbg++]=d0rpo ;
    fDebugVars[idbg++]=d0zo  ;
    fDebugVars[idbg++]=pt1o  ;
    fDebugVars[idbg++]=sd0rpo;
    fDebugVars[idbg++]=sd0zo ;
    fDebugVars[idbg++]=spt1o ;
    fDebugVars[idbg++]=d0rpn ;
    fDebugVars[idbg++]=d0zn  ;
    fDebugVars[idbg++]=pt1n  ;
    fDebugVars[idbg++]=sd0rpn;
    fDebugVars[idbg++]=sd0zn ;
    fDebugVars[idbg++]=spt1n ;
    fDebugVars[idbg++]=d0rpmc;
    fDebugVars[idbg++]=d0zmc ;
    fDebugVars[idbg++]=pt1mc ;
    fDebugNtuple->Fill(fDebugVars);
    PostData(1,fDebugOutput);
  }
}

AliESDVertex* AliAnalysisTaskSEImproveITS::RecalculateVertex(const AliVVertex *old,TObjArray *tracks,Double_t bField) {
  //
  // Helper function to recalculate a vertex.
  //

  static UShort_t ids[]={1,2,3}; //TODO: unsave...
  AliVertexerTracks vertexer(bField);
  vertexer.SetVtxStart(old->GetX(),old->GetY(),old->GetZ());
  AliESDVertex *vertex=vertexer.VertexForSelectedTracks(tracks,ids);
  return vertex;
}

Double_t AliAnalysisTaskSEImproveITS::EvalGraph(Double_t x,const TGraph *graph,const TGraph *graphSA) const {
  //
  // Evaluates a TGraph without linear extrapolation. Instead the last
  // valid point of the graph is used when out of range.
  // The function assumes an ascending order of X.
  //

  // TODO: find a pretty solution for this:
  Int_t    n   =graph->GetN();
  Double_t xmin=graph->GetX()[0  ];
  Double_t xmax=graph->GetX()[n-1];
  if (x<xmin) {
    if(!graphSA) return graph->Eval(xmin);
    Double_t xminSA=graphSA->GetX()[0];
    if(x<xminSA) return graphSA->Eval(xminSA);
    return graphSA->Eval(x);
  }
  if (x>xmax) return graph->Eval(xmax);
  return graph->Eval(x);
}

ClassImp(AliAnalysisTaskSEImproveITS);

 AliAnalysisTaskSEImproveITS.cxx:1
 AliAnalysisTaskSEImproveITS.cxx:2
 AliAnalysisTaskSEImproveITS.cxx:3
 AliAnalysisTaskSEImproveITS.cxx:4
 AliAnalysisTaskSEImproveITS.cxx:5
 AliAnalysisTaskSEImproveITS.cxx:6
 AliAnalysisTaskSEImproveITS.cxx:7
 AliAnalysisTaskSEImproveITS.cxx:8
 AliAnalysisTaskSEImproveITS.cxx:9
 AliAnalysisTaskSEImproveITS.cxx:10
 AliAnalysisTaskSEImproveITS.cxx:11
 AliAnalysisTaskSEImproveITS.cxx:12
 AliAnalysisTaskSEImproveITS.cxx:13
 AliAnalysisTaskSEImproveITS.cxx:14
 AliAnalysisTaskSEImproveITS.cxx:15
 AliAnalysisTaskSEImproveITS.cxx:16
 AliAnalysisTaskSEImproveITS.cxx:17
 AliAnalysisTaskSEImproveITS.cxx:18
 AliAnalysisTaskSEImproveITS.cxx:19
 AliAnalysisTaskSEImproveITS.cxx:20
 AliAnalysisTaskSEImproveITS.cxx:21
 AliAnalysisTaskSEImproveITS.cxx:22
 AliAnalysisTaskSEImproveITS.cxx:23
 AliAnalysisTaskSEImproveITS.cxx:24
 AliAnalysisTaskSEImproveITS.cxx:25
 AliAnalysisTaskSEImproveITS.cxx:26
 AliAnalysisTaskSEImproveITS.cxx:27
 AliAnalysisTaskSEImproveITS.cxx:28
 AliAnalysisTaskSEImproveITS.cxx:29
 AliAnalysisTaskSEImproveITS.cxx:30
 AliAnalysisTaskSEImproveITS.cxx:31
 AliAnalysisTaskSEImproveITS.cxx:32
 AliAnalysisTaskSEImproveITS.cxx:33
 AliAnalysisTaskSEImproveITS.cxx:34
 AliAnalysisTaskSEImproveITS.cxx:35
 AliAnalysisTaskSEImproveITS.cxx:36
 AliAnalysisTaskSEImproveITS.cxx:37
 AliAnalysisTaskSEImproveITS.cxx:38
 AliAnalysisTaskSEImproveITS.cxx:39
 AliAnalysisTaskSEImproveITS.cxx:40
 AliAnalysisTaskSEImproveITS.cxx:41
 AliAnalysisTaskSEImproveITS.cxx:42
 AliAnalysisTaskSEImproveITS.cxx:43
 AliAnalysisTaskSEImproveITS.cxx:44
 AliAnalysisTaskSEImproveITS.cxx:45
 AliAnalysisTaskSEImproveITS.cxx:46
 AliAnalysisTaskSEImproveITS.cxx:47
 AliAnalysisTaskSEImproveITS.cxx:48
 AliAnalysisTaskSEImproveITS.cxx:49
 AliAnalysisTaskSEImproveITS.cxx:50
 AliAnalysisTaskSEImproveITS.cxx:51
 AliAnalysisTaskSEImproveITS.cxx:52
 AliAnalysisTaskSEImproveITS.cxx:53
 AliAnalysisTaskSEImproveITS.cxx:54
 AliAnalysisTaskSEImproveITS.cxx:55
 AliAnalysisTaskSEImproveITS.cxx:56
 AliAnalysisTaskSEImproveITS.cxx:57
 AliAnalysisTaskSEImproveITS.cxx:58
 AliAnalysisTaskSEImproveITS.cxx:59
 AliAnalysisTaskSEImproveITS.cxx:60
 AliAnalysisTaskSEImproveITS.cxx:61
 AliAnalysisTaskSEImproveITS.cxx:62
 AliAnalysisTaskSEImproveITS.cxx:63
 AliAnalysisTaskSEImproveITS.cxx:64
 AliAnalysisTaskSEImproveITS.cxx:65
 AliAnalysisTaskSEImproveITS.cxx:66
 AliAnalysisTaskSEImproveITS.cxx:67
 AliAnalysisTaskSEImproveITS.cxx:68
 AliAnalysisTaskSEImproveITS.cxx:69
 AliAnalysisTaskSEImproveITS.cxx:70
 AliAnalysisTaskSEImproveITS.cxx:71
 AliAnalysisTaskSEImproveITS.cxx:72
 AliAnalysisTaskSEImproveITS.cxx:73
 AliAnalysisTaskSEImproveITS.cxx:74
 AliAnalysisTaskSEImproveITS.cxx:75
 AliAnalysisTaskSEImproveITS.cxx:76
 AliAnalysisTaskSEImproveITS.cxx:77
 AliAnalysisTaskSEImproveITS.cxx:78
 AliAnalysisTaskSEImproveITS.cxx:79
 AliAnalysisTaskSEImproveITS.cxx:80
 AliAnalysisTaskSEImproveITS.cxx:81
 AliAnalysisTaskSEImproveITS.cxx:82
 AliAnalysisTaskSEImproveITS.cxx:83
 AliAnalysisTaskSEImproveITS.cxx:84
 AliAnalysisTaskSEImproveITS.cxx:85
 AliAnalysisTaskSEImproveITS.cxx:86
 AliAnalysisTaskSEImproveITS.cxx:87
 AliAnalysisTaskSEImproveITS.cxx:88
 AliAnalysisTaskSEImproveITS.cxx:89
 AliAnalysisTaskSEImproveITS.cxx:90
 AliAnalysisTaskSEImproveITS.cxx:91
 AliAnalysisTaskSEImproveITS.cxx:92
 AliAnalysisTaskSEImproveITS.cxx:93
 AliAnalysisTaskSEImproveITS.cxx:94
 AliAnalysisTaskSEImproveITS.cxx:95
 AliAnalysisTaskSEImproveITS.cxx:96
 AliAnalysisTaskSEImproveITS.cxx:97
 AliAnalysisTaskSEImproveITS.cxx:98
 AliAnalysisTaskSEImproveITS.cxx:99
 AliAnalysisTaskSEImproveITS.cxx:100
 AliAnalysisTaskSEImproveITS.cxx:101
 AliAnalysisTaskSEImproveITS.cxx:102
 AliAnalysisTaskSEImproveITS.cxx:103
 AliAnalysisTaskSEImproveITS.cxx:104
 AliAnalysisTaskSEImproveITS.cxx:105
 AliAnalysisTaskSEImproveITS.cxx:106
 AliAnalysisTaskSEImproveITS.cxx:107
 AliAnalysisTaskSEImproveITS.cxx:108
 AliAnalysisTaskSEImproveITS.cxx:109
 AliAnalysisTaskSEImproveITS.cxx:110
 AliAnalysisTaskSEImproveITS.cxx:111
 AliAnalysisTaskSEImproveITS.cxx:112
 AliAnalysisTaskSEImproveITS.cxx:113
 AliAnalysisTaskSEImproveITS.cxx:114
 AliAnalysisTaskSEImproveITS.cxx:115
 AliAnalysisTaskSEImproveITS.cxx:116
 AliAnalysisTaskSEImproveITS.cxx:117
 AliAnalysisTaskSEImproveITS.cxx:118
 AliAnalysisTaskSEImproveITS.cxx:119
 AliAnalysisTaskSEImproveITS.cxx:120
 AliAnalysisTaskSEImproveITS.cxx:121
 AliAnalysisTaskSEImproveITS.cxx:122
 AliAnalysisTaskSEImproveITS.cxx:123
 AliAnalysisTaskSEImproveITS.cxx:124
 AliAnalysisTaskSEImproveITS.cxx:125
 AliAnalysisTaskSEImproveITS.cxx:126
 AliAnalysisTaskSEImproveITS.cxx:127
 AliAnalysisTaskSEImproveITS.cxx:128
 AliAnalysisTaskSEImproveITS.cxx:129
 AliAnalysisTaskSEImproveITS.cxx:130
 AliAnalysisTaskSEImproveITS.cxx:131
 AliAnalysisTaskSEImproveITS.cxx:132
 AliAnalysisTaskSEImproveITS.cxx:133
 AliAnalysisTaskSEImproveITS.cxx:134
 AliAnalysisTaskSEImproveITS.cxx:135
 AliAnalysisTaskSEImproveITS.cxx:136
 AliAnalysisTaskSEImproveITS.cxx:137
 AliAnalysisTaskSEImproveITS.cxx:138
 AliAnalysisTaskSEImproveITS.cxx:139
 AliAnalysisTaskSEImproveITS.cxx:140
 AliAnalysisTaskSEImproveITS.cxx:141
 AliAnalysisTaskSEImproveITS.cxx:142
 AliAnalysisTaskSEImproveITS.cxx:143
 AliAnalysisTaskSEImproveITS.cxx:144
 AliAnalysisTaskSEImproveITS.cxx:145
 AliAnalysisTaskSEImproveITS.cxx:146
 AliAnalysisTaskSEImproveITS.cxx:147
 AliAnalysisTaskSEImproveITS.cxx:148
 AliAnalysisTaskSEImproveITS.cxx:149
 AliAnalysisTaskSEImproveITS.cxx:150
 AliAnalysisTaskSEImproveITS.cxx:151
 AliAnalysisTaskSEImproveITS.cxx:152
 AliAnalysisTaskSEImproveITS.cxx:153
 AliAnalysisTaskSEImproveITS.cxx:154
 AliAnalysisTaskSEImproveITS.cxx:155
 AliAnalysisTaskSEImproveITS.cxx:156
 AliAnalysisTaskSEImproveITS.cxx:157
 AliAnalysisTaskSEImproveITS.cxx:158
 AliAnalysisTaskSEImproveITS.cxx:159
 AliAnalysisTaskSEImproveITS.cxx:160
 AliAnalysisTaskSEImproveITS.cxx:161
 AliAnalysisTaskSEImproveITS.cxx:162
 AliAnalysisTaskSEImproveITS.cxx:163
 AliAnalysisTaskSEImproveITS.cxx:164
 AliAnalysisTaskSEImproveITS.cxx:165
 AliAnalysisTaskSEImproveITS.cxx:166
 AliAnalysisTaskSEImproveITS.cxx:167
 AliAnalysisTaskSEImproveITS.cxx:168
 AliAnalysisTaskSEImproveITS.cxx:169
 AliAnalysisTaskSEImproveITS.cxx:170
 AliAnalysisTaskSEImproveITS.cxx:171
 AliAnalysisTaskSEImproveITS.cxx:172
 AliAnalysisTaskSEImproveITS.cxx:173
 AliAnalysisTaskSEImproveITS.cxx:174
 AliAnalysisTaskSEImproveITS.cxx:175
 AliAnalysisTaskSEImproveITS.cxx:176
 AliAnalysisTaskSEImproveITS.cxx:177
 AliAnalysisTaskSEImproveITS.cxx:178
 AliAnalysisTaskSEImproveITS.cxx:179
 AliAnalysisTaskSEImproveITS.cxx:180
 AliAnalysisTaskSEImproveITS.cxx:181
 AliAnalysisTaskSEImproveITS.cxx:182
 AliAnalysisTaskSEImproveITS.cxx:183
 AliAnalysisTaskSEImproveITS.cxx:184
 AliAnalysisTaskSEImproveITS.cxx:185
 AliAnalysisTaskSEImproveITS.cxx:186
 AliAnalysisTaskSEImproveITS.cxx:187
 AliAnalysisTaskSEImproveITS.cxx:188
 AliAnalysisTaskSEImproveITS.cxx:189
 AliAnalysisTaskSEImproveITS.cxx:190
 AliAnalysisTaskSEImproveITS.cxx:191
 AliAnalysisTaskSEImproveITS.cxx:192
 AliAnalysisTaskSEImproveITS.cxx:193
 AliAnalysisTaskSEImproveITS.cxx:194
 AliAnalysisTaskSEImproveITS.cxx:195
 AliAnalysisTaskSEImproveITS.cxx:196
 AliAnalysisTaskSEImproveITS.cxx:197
 AliAnalysisTaskSEImproveITS.cxx:198
 AliAnalysisTaskSEImproveITS.cxx:199
 AliAnalysisTaskSEImproveITS.cxx:200
 AliAnalysisTaskSEImproveITS.cxx:201
 AliAnalysisTaskSEImproveITS.cxx:202
 AliAnalysisTaskSEImproveITS.cxx:203
 AliAnalysisTaskSEImproveITS.cxx:204
 AliAnalysisTaskSEImproveITS.cxx:205
 AliAnalysisTaskSEImproveITS.cxx:206
 AliAnalysisTaskSEImproveITS.cxx:207
 AliAnalysisTaskSEImproveITS.cxx:208
 AliAnalysisTaskSEImproveITS.cxx:209
 AliAnalysisTaskSEImproveITS.cxx:210
 AliAnalysisTaskSEImproveITS.cxx:211
 AliAnalysisTaskSEImproveITS.cxx:212
 AliAnalysisTaskSEImproveITS.cxx:213
 AliAnalysisTaskSEImproveITS.cxx:214
 AliAnalysisTaskSEImproveITS.cxx:215
 AliAnalysisTaskSEImproveITS.cxx:216
 AliAnalysisTaskSEImproveITS.cxx:217
 AliAnalysisTaskSEImproveITS.cxx:218
 AliAnalysisTaskSEImproveITS.cxx:219
 AliAnalysisTaskSEImproveITS.cxx:220
 AliAnalysisTaskSEImproveITS.cxx:221
 AliAnalysisTaskSEImproveITS.cxx:222
 AliAnalysisTaskSEImproveITS.cxx:223
 AliAnalysisTaskSEImproveITS.cxx:224
 AliAnalysisTaskSEImproveITS.cxx:225
 AliAnalysisTaskSEImproveITS.cxx:226
 AliAnalysisTaskSEImproveITS.cxx:227
 AliAnalysisTaskSEImproveITS.cxx:228
 AliAnalysisTaskSEImproveITS.cxx:229
 AliAnalysisTaskSEImproveITS.cxx:230
 AliAnalysisTaskSEImproveITS.cxx:231
 AliAnalysisTaskSEImproveITS.cxx:232
 AliAnalysisTaskSEImproveITS.cxx:233
 AliAnalysisTaskSEImproveITS.cxx:234
 AliAnalysisTaskSEImproveITS.cxx:235
 AliAnalysisTaskSEImproveITS.cxx:236
 AliAnalysisTaskSEImproveITS.cxx:237
 AliAnalysisTaskSEImproveITS.cxx:238
 AliAnalysisTaskSEImproveITS.cxx:239
 AliAnalysisTaskSEImproveITS.cxx:240
 AliAnalysisTaskSEImproveITS.cxx:241
 AliAnalysisTaskSEImproveITS.cxx:242
 AliAnalysisTaskSEImproveITS.cxx:243
 AliAnalysisTaskSEImproveITS.cxx:244
 AliAnalysisTaskSEImproveITS.cxx:245
 AliAnalysisTaskSEImproveITS.cxx:246
 AliAnalysisTaskSEImproveITS.cxx:247
 AliAnalysisTaskSEImproveITS.cxx:248
 AliAnalysisTaskSEImproveITS.cxx:249
 AliAnalysisTaskSEImproveITS.cxx:250
 AliAnalysisTaskSEImproveITS.cxx:251
 AliAnalysisTaskSEImproveITS.cxx:252
 AliAnalysisTaskSEImproveITS.cxx:253
 AliAnalysisTaskSEImproveITS.cxx:254
 AliAnalysisTaskSEImproveITS.cxx:255
 AliAnalysisTaskSEImproveITS.cxx:256
 AliAnalysisTaskSEImproveITS.cxx:257
 AliAnalysisTaskSEImproveITS.cxx:258
 AliAnalysisTaskSEImproveITS.cxx:259
 AliAnalysisTaskSEImproveITS.cxx:260
 AliAnalysisTaskSEImproveITS.cxx:261
 AliAnalysisTaskSEImproveITS.cxx:262
 AliAnalysisTaskSEImproveITS.cxx:263
 AliAnalysisTaskSEImproveITS.cxx:264
 AliAnalysisTaskSEImproveITS.cxx:265
 AliAnalysisTaskSEImproveITS.cxx:266
 AliAnalysisTaskSEImproveITS.cxx:267
 AliAnalysisTaskSEImproveITS.cxx:268
 AliAnalysisTaskSEImproveITS.cxx:269
 AliAnalysisTaskSEImproveITS.cxx:270
 AliAnalysisTaskSEImproveITS.cxx:271
 AliAnalysisTaskSEImproveITS.cxx:272
 AliAnalysisTaskSEImproveITS.cxx:273
 AliAnalysisTaskSEImproveITS.cxx:274
 AliAnalysisTaskSEImproveITS.cxx:275
 AliAnalysisTaskSEImproveITS.cxx:276
 AliAnalysisTaskSEImproveITS.cxx:277
 AliAnalysisTaskSEImproveITS.cxx:278
 AliAnalysisTaskSEImproveITS.cxx:279
 AliAnalysisTaskSEImproveITS.cxx:280
 AliAnalysisTaskSEImproveITS.cxx:281
 AliAnalysisTaskSEImproveITS.cxx:282
 AliAnalysisTaskSEImproveITS.cxx:283
 AliAnalysisTaskSEImproveITS.cxx:284
 AliAnalysisTaskSEImproveITS.cxx:285
 AliAnalysisTaskSEImproveITS.cxx:286
 AliAnalysisTaskSEImproveITS.cxx:287
 AliAnalysisTaskSEImproveITS.cxx:288
 AliAnalysisTaskSEImproveITS.cxx:289
 AliAnalysisTaskSEImproveITS.cxx:290
 AliAnalysisTaskSEImproveITS.cxx:291
 AliAnalysisTaskSEImproveITS.cxx:292
 AliAnalysisTaskSEImproveITS.cxx:293
 AliAnalysisTaskSEImproveITS.cxx:294
 AliAnalysisTaskSEImproveITS.cxx:295
 AliAnalysisTaskSEImproveITS.cxx:296
 AliAnalysisTaskSEImproveITS.cxx:297
 AliAnalysisTaskSEImproveITS.cxx:298
 AliAnalysisTaskSEImproveITS.cxx:299
 AliAnalysisTaskSEImproveITS.cxx:300
 AliAnalysisTaskSEImproveITS.cxx:301
 AliAnalysisTaskSEImproveITS.cxx:302
 AliAnalysisTaskSEImproveITS.cxx:303
 AliAnalysisTaskSEImproveITS.cxx:304
 AliAnalysisTaskSEImproveITS.cxx:305
 AliAnalysisTaskSEImproveITS.cxx:306
 AliAnalysisTaskSEImproveITS.cxx:307
 AliAnalysisTaskSEImproveITS.cxx:308
 AliAnalysisTaskSEImproveITS.cxx:309
 AliAnalysisTaskSEImproveITS.cxx:310
 AliAnalysisTaskSEImproveITS.cxx:311
 AliAnalysisTaskSEImproveITS.cxx:312
 AliAnalysisTaskSEImproveITS.cxx:313
 AliAnalysisTaskSEImproveITS.cxx:314
 AliAnalysisTaskSEImproveITS.cxx:315
 AliAnalysisTaskSEImproveITS.cxx:316
 AliAnalysisTaskSEImproveITS.cxx:317
 AliAnalysisTaskSEImproveITS.cxx:318
 AliAnalysisTaskSEImproveITS.cxx:319
 AliAnalysisTaskSEImproveITS.cxx:320
 AliAnalysisTaskSEImproveITS.cxx:321
 AliAnalysisTaskSEImproveITS.cxx:322
 AliAnalysisTaskSEImproveITS.cxx:323
 AliAnalysisTaskSEImproveITS.cxx:324
 AliAnalysisTaskSEImproveITS.cxx:325
 AliAnalysisTaskSEImproveITS.cxx:326
 AliAnalysisTaskSEImproveITS.cxx:327
 AliAnalysisTaskSEImproveITS.cxx:328
 AliAnalysisTaskSEImproveITS.cxx:329
 AliAnalysisTaskSEImproveITS.cxx:330
 AliAnalysisTaskSEImproveITS.cxx:331
 AliAnalysisTaskSEImproveITS.cxx:332
 AliAnalysisTaskSEImproveITS.cxx:333
 AliAnalysisTaskSEImproveITS.cxx:334
 AliAnalysisTaskSEImproveITS.cxx:335
 AliAnalysisTaskSEImproveITS.cxx:336
 AliAnalysisTaskSEImproveITS.cxx:337
 AliAnalysisTaskSEImproveITS.cxx:338
 AliAnalysisTaskSEImproveITS.cxx:339
 AliAnalysisTaskSEImproveITS.cxx:340
 AliAnalysisTaskSEImproveITS.cxx:341
 AliAnalysisTaskSEImproveITS.cxx:342
 AliAnalysisTaskSEImproveITS.cxx:343
 AliAnalysisTaskSEImproveITS.cxx:344
 AliAnalysisTaskSEImproveITS.cxx:345
 AliAnalysisTaskSEImproveITS.cxx:346
 AliAnalysisTaskSEImproveITS.cxx:347
 AliAnalysisTaskSEImproveITS.cxx:348
 AliAnalysisTaskSEImproveITS.cxx:349
 AliAnalysisTaskSEImproveITS.cxx:350
 AliAnalysisTaskSEImproveITS.cxx:351
 AliAnalysisTaskSEImproveITS.cxx:352
 AliAnalysisTaskSEImproveITS.cxx:353
 AliAnalysisTaskSEImproveITS.cxx:354
 AliAnalysisTaskSEImproveITS.cxx:355
 AliAnalysisTaskSEImproveITS.cxx:356
 AliAnalysisTaskSEImproveITS.cxx:357
 AliAnalysisTaskSEImproveITS.cxx:358
 AliAnalysisTaskSEImproveITS.cxx:359
 AliAnalysisTaskSEImproveITS.cxx:360
 AliAnalysisTaskSEImproveITS.cxx:361
 AliAnalysisTaskSEImproveITS.cxx:362
 AliAnalysisTaskSEImproveITS.cxx:363
 AliAnalysisTaskSEImproveITS.cxx:364
 AliAnalysisTaskSEImproveITS.cxx:365
 AliAnalysisTaskSEImproveITS.cxx:366
 AliAnalysisTaskSEImproveITS.cxx:367
 AliAnalysisTaskSEImproveITS.cxx:368
 AliAnalysisTaskSEImproveITS.cxx:369
 AliAnalysisTaskSEImproveITS.cxx:370
 AliAnalysisTaskSEImproveITS.cxx:371
 AliAnalysisTaskSEImproveITS.cxx:372
 AliAnalysisTaskSEImproveITS.cxx:373
 AliAnalysisTaskSEImproveITS.cxx:374
 AliAnalysisTaskSEImproveITS.cxx:375
 AliAnalysisTaskSEImproveITS.cxx:376
 AliAnalysisTaskSEImproveITS.cxx:377
 AliAnalysisTaskSEImproveITS.cxx:378
 AliAnalysisTaskSEImproveITS.cxx:379
 AliAnalysisTaskSEImproveITS.cxx:380
 AliAnalysisTaskSEImproveITS.cxx:381
 AliAnalysisTaskSEImproveITS.cxx:382
 AliAnalysisTaskSEImproveITS.cxx:383
 AliAnalysisTaskSEImproveITS.cxx:384
 AliAnalysisTaskSEImproveITS.cxx:385
 AliAnalysisTaskSEImproveITS.cxx:386
 AliAnalysisTaskSEImproveITS.cxx:387
 AliAnalysisTaskSEImproveITS.cxx:388
 AliAnalysisTaskSEImproveITS.cxx:389
 AliAnalysisTaskSEImproveITS.cxx:390
 AliAnalysisTaskSEImproveITS.cxx:391
 AliAnalysisTaskSEImproveITS.cxx:392
 AliAnalysisTaskSEImproveITS.cxx:393
 AliAnalysisTaskSEImproveITS.cxx:394
 AliAnalysisTaskSEImproveITS.cxx:395
 AliAnalysisTaskSEImproveITS.cxx:396
 AliAnalysisTaskSEImproveITS.cxx:397
 AliAnalysisTaskSEImproveITS.cxx:398
 AliAnalysisTaskSEImproveITS.cxx:399
 AliAnalysisTaskSEImproveITS.cxx:400
 AliAnalysisTaskSEImproveITS.cxx:401
 AliAnalysisTaskSEImproveITS.cxx:402
 AliAnalysisTaskSEImproveITS.cxx:403
 AliAnalysisTaskSEImproveITS.cxx:404
 AliAnalysisTaskSEImproveITS.cxx:405
 AliAnalysisTaskSEImproveITS.cxx:406
 AliAnalysisTaskSEImproveITS.cxx:407
 AliAnalysisTaskSEImproveITS.cxx:408
 AliAnalysisTaskSEImproveITS.cxx:409
 AliAnalysisTaskSEImproveITS.cxx:410
 AliAnalysisTaskSEImproveITS.cxx:411
 AliAnalysisTaskSEImproveITS.cxx:412
 AliAnalysisTaskSEImproveITS.cxx:413
 AliAnalysisTaskSEImproveITS.cxx:414
 AliAnalysisTaskSEImproveITS.cxx:415
 AliAnalysisTaskSEImproveITS.cxx:416
 AliAnalysisTaskSEImproveITS.cxx:417
 AliAnalysisTaskSEImproveITS.cxx:418
 AliAnalysisTaskSEImproveITS.cxx:419
 AliAnalysisTaskSEImproveITS.cxx:420
 AliAnalysisTaskSEImproveITS.cxx:421
 AliAnalysisTaskSEImproveITS.cxx:422
 AliAnalysisTaskSEImproveITS.cxx:423
 AliAnalysisTaskSEImproveITS.cxx:424
 AliAnalysisTaskSEImproveITS.cxx:425
 AliAnalysisTaskSEImproveITS.cxx:426
 AliAnalysisTaskSEImproveITS.cxx:427
 AliAnalysisTaskSEImproveITS.cxx:428
 AliAnalysisTaskSEImproveITS.cxx:429
 AliAnalysisTaskSEImproveITS.cxx:430
 AliAnalysisTaskSEImproveITS.cxx:431
 AliAnalysisTaskSEImproveITS.cxx:432
 AliAnalysisTaskSEImproveITS.cxx:433
 AliAnalysisTaskSEImproveITS.cxx:434
 AliAnalysisTaskSEImproveITS.cxx:435
 AliAnalysisTaskSEImproveITS.cxx:436
 AliAnalysisTaskSEImproveITS.cxx:437
 AliAnalysisTaskSEImproveITS.cxx:438
 AliAnalysisTaskSEImproveITS.cxx:439
 AliAnalysisTaskSEImproveITS.cxx:440
 AliAnalysisTaskSEImproveITS.cxx:441
 AliAnalysisTaskSEImproveITS.cxx:442
 AliAnalysisTaskSEImproveITS.cxx:443
 AliAnalysisTaskSEImproveITS.cxx:444
 AliAnalysisTaskSEImproveITS.cxx:445
 AliAnalysisTaskSEImproveITS.cxx:446
 AliAnalysisTaskSEImproveITS.cxx:447
 AliAnalysisTaskSEImproveITS.cxx:448
 AliAnalysisTaskSEImproveITS.cxx:449
 AliAnalysisTaskSEImproveITS.cxx:450
 AliAnalysisTaskSEImproveITS.cxx:451
 AliAnalysisTaskSEImproveITS.cxx:452
 AliAnalysisTaskSEImproveITS.cxx:453
 AliAnalysisTaskSEImproveITS.cxx:454
 AliAnalysisTaskSEImproveITS.cxx:455
 AliAnalysisTaskSEImproveITS.cxx:456
 AliAnalysisTaskSEImproveITS.cxx:457
 AliAnalysisTaskSEImproveITS.cxx:458
 AliAnalysisTaskSEImproveITS.cxx:459
 AliAnalysisTaskSEImproveITS.cxx:460
 AliAnalysisTaskSEImproveITS.cxx:461
 AliAnalysisTaskSEImproveITS.cxx:462
 AliAnalysisTaskSEImproveITS.cxx:463
 AliAnalysisTaskSEImproveITS.cxx:464
 AliAnalysisTaskSEImproveITS.cxx:465
 AliAnalysisTaskSEImproveITS.cxx:466
 AliAnalysisTaskSEImproveITS.cxx:467
 AliAnalysisTaskSEImproveITS.cxx:468
 AliAnalysisTaskSEImproveITS.cxx:469
 AliAnalysisTaskSEImproveITS.cxx:470
 AliAnalysisTaskSEImproveITS.cxx:471
 AliAnalysisTaskSEImproveITS.cxx:472
 AliAnalysisTaskSEImproveITS.cxx:473
 AliAnalysisTaskSEImproveITS.cxx:474
 AliAnalysisTaskSEImproveITS.cxx:475
 AliAnalysisTaskSEImproveITS.cxx:476
 AliAnalysisTaskSEImproveITS.cxx:477
 AliAnalysisTaskSEImproveITS.cxx:478
 AliAnalysisTaskSEImproveITS.cxx:479
 AliAnalysisTaskSEImproveITS.cxx:480
 AliAnalysisTaskSEImproveITS.cxx:481
 AliAnalysisTaskSEImproveITS.cxx:482
 AliAnalysisTaskSEImproveITS.cxx:483
 AliAnalysisTaskSEImproveITS.cxx:484
 AliAnalysisTaskSEImproveITS.cxx:485
 AliAnalysisTaskSEImproveITS.cxx:486
 AliAnalysisTaskSEImproveITS.cxx:487
 AliAnalysisTaskSEImproveITS.cxx:488
 AliAnalysisTaskSEImproveITS.cxx:489
 AliAnalysisTaskSEImproveITS.cxx:490
 AliAnalysisTaskSEImproveITS.cxx:491
 AliAnalysisTaskSEImproveITS.cxx:492
 AliAnalysisTaskSEImproveITS.cxx:493
 AliAnalysisTaskSEImproveITS.cxx:494
 AliAnalysisTaskSEImproveITS.cxx:495
 AliAnalysisTaskSEImproveITS.cxx:496
 AliAnalysisTaskSEImproveITS.cxx:497
 AliAnalysisTaskSEImproveITS.cxx:498
 AliAnalysisTaskSEImproveITS.cxx:499
 AliAnalysisTaskSEImproveITS.cxx:500
 AliAnalysisTaskSEImproveITS.cxx:501
 AliAnalysisTaskSEImproveITS.cxx:502
 AliAnalysisTaskSEImproveITS.cxx:503
 AliAnalysisTaskSEImproveITS.cxx:504
 AliAnalysisTaskSEImproveITS.cxx:505
 AliAnalysisTaskSEImproveITS.cxx:506
 AliAnalysisTaskSEImproveITS.cxx:507
 AliAnalysisTaskSEImproveITS.cxx:508
 AliAnalysisTaskSEImproveITS.cxx:509
 AliAnalysisTaskSEImproveITS.cxx:510
 AliAnalysisTaskSEImproveITS.cxx:511
 AliAnalysisTaskSEImproveITS.cxx:512
 AliAnalysisTaskSEImproveITS.cxx:513
 AliAnalysisTaskSEImproveITS.cxx:514
 AliAnalysisTaskSEImproveITS.cxx:515
 AliAnalysisTaskSEImproveITS.cxx:516
 AliAnalysisTaskSEImproveITS.cxx:517
 AliAnalysisTaskSEImproveITS.cxx:518
 AliAnalysisTaskSEImproveITS.cxx:519
 AliAnalysisTaskSEImproveITS.cxx:520
 AliAnalysisTaskSEImproveITS.cxx:521
 AliAnalysisTaskSEImproveITS.cxx:522
 AliAnalysisTaskSEImproveITS.cxx:523
 AliAnalysisTaskSEImproveITS.cxx:524
 AliAnalysisTaskSEImproveITS.cxx:525
 AliAnalysisTaskSEImproveITS.cxx:526
 AliAnalysisTaskSEImproveITS.cxx:527
 AliAnalysisTaskSEImproveITS.cxx:528
 AliAnalysisTaskSEImproveITS.cxx:529
 AliAnalysisTaskSEImproveITS.cxx:530
 AliAnalysisTaskSEImproveITS.cxx:531
 AliAnalysisTaskSEImproveITS.cxx:532
 AliAnalysisTaskSEImproveITS.cxx:533
 AliAnalysisTaskSEImproveITS.cxx:534
 AliAnalysisTaskSEImproveITS.cxx:535
 AliAnalysisTaskSEImproveITS.cxx:536
 AliAnalysisTaskSEImproveITS.cxx:537
 AliAnalysisTaskSEImproveITS.cxx:538
 AliAnalysisTaskSEImproveITS.cxx:539
 AliAnalysisTaskSEImproveITS.cxx:540
 AliAnalysisTaskSEImproveITS.cxx:541
 AliAnalysisTaskSEImproveITS.cxx:542
 AliAnalysisTaskSEImproveITS.cxx:543
 AliAnalysisTaskSEImproveITS.cxx:544
 AliAnalysisTaskSEImproveITS.cxx:545
 AliAnalysisTaskSEImproveITS.cxx:546
 AliAnalysisTaskSEImproveITS.cxx:547
 AliAnalysisTaskSEImproveITS.cxx:548
 AliAnalysisTaskSEImproveITS.cxx:549
 AliAnalysisTaskSEImproveITS.cxx:550
 AliAnalysisTaskSEImproveITS.cxx:551
 AliAnalysisTaskSEImproveITS.cxx:552
 AliAnalysisTaskSEImproveITS.cxx:553
 AliAnalysisTaskSEImproveITS.cxx:554
 AliAnalysisTaskSEImproveITS.cxx:555
 AliAnalysisTaskSEImproveITS.cxx:556
 AliAnalysisTaskSEImproveITS.cxx:557
 AliAnalysisTaskSEImproveITS.cxx:558
 AliAnalysisTaskSEImproveITS.cxx:559
 AliAnalysisTaskSEImproveITS.cxx:560
 AliAnalysisTaskSEImproveITS.cxx:561
 AliAnalysisTaskSEImproveITS.cxx:562
 AliAnalysisTaskSEImproveITS.cxx:563
 AliAnalysisTaskSEImproveITS.cxx:564
 AliAnalysisTaskSEImproveITS.cxx:565
 AliAnalysisTaskSEImproveITS.cxx:566
 AliAnalysisTaskSEImproveITS.cxx:567
 AliAnalysisTaskSEImproveITS.cxx:568
 AliAnalysisTaskSEImproveITS.cxx:569
 AliAnalysisTaskSEImproveITS.cxx:570
 AliAnalysisTaskSEImproveITS.cxx:571
 AliAnalysisTaskSEImproveITS.cxx:572
 AliAnalysisTaskSEImproveITS.cxx:573
 AliAnalysisTaskSEImproveITS.cxx:574
 AliAnalysisTaskSEImproveITS.cxx:575
 AliAnalysisTaskSEImproveITS.cxx:576
 AliAnalysisTaskSEImproveITS.cxx:577
 AliAnalysisTaskSEImproveITS.cxx:578
 AliAnalysisTaskSEImproveITS.cxx:579
 AliAnalysisTaskSEImproveITS.cxx:580
 AliAnalysisTaskSEImproveITS.cxx:581
 AliAnalysisTaskSEImproveITS.cxx:582
 AliAnalysisTaskSEImproveITS.cxx:583
 AliAnalysisTaskSEImproveITS.cxx:584
 AliAnalysisTaskSEImproveITS.cxx:585
 AliAnalysisTaskSEImproveITS.cxx:586
 AliAnalysisTaskSEImproveITS.cxx:587
 AliAnalysisTaskSEImproveITS.cxx:588
 AliAnalysisTaskSEImproveITS.cxx:589
 AliAnalysisTaskSEImproveITS.cxx:590
 AliAnalysisTaskSEImproveITS.cxx:591
 AliAnalysisTaskSEImproveITS.cxx:592
 AliAnalysisTaskSEImproveITS.cxx:593
 AliAnalysisTaskSEImproveITS.cxx:594
 AliAnalysisTaskSEImproveITS.cxx:595
 AliAnalysisTaskSEImproveITS.cxx:596
 AliAnalysisTaskSEImproveITS.cxx:597
 AliAnalysisTaskSEImproveITS.cxx:598
 AliAnalysisTaskSEImproveITS.cxx:599
 AliAnalysisTaskSEImproveITS.cxx:600
 AliAnalysisTaskSEImproveITS.cxx:601
 AliAnalysisTaskSEImproveITS.cxx:602
 AliAnalysisTaskSEImproveITS.cxx:603
 AliAnalysisTaskSEImproveITS.cxx:604
 AliAnalysisTaskSEImproveITS.cxx:605
 AliAnalysisTaskSEImproveITS.cxx:606
 AliAnalysisTaskSEImproveITS.cxx:607
 AliAnalysisTaskSEImproveITS.cxx:608
 AliAnalysisTaskSEImproveITS.cxx:609
 AliAnalysisTaskSEImproveITS.cxx:610
 AliAnalysisTaskSEImproveITS.cxx:611
 AliAnalysisTaskSEImproveITS.cxx:612
 AliAnalysisTaskSEImproveITS.cxx:613
 AliAnalysisTaskSEImproveITS.cxx:614
 AliAnalysisTaskSEImproveITS.cxx:615
 AliAnalysisTaskSEImproveITS.cxx:616
 AliAnalysisTaskSEImproveITS.cxx:617
 AliAnalysisTaskSEImproveITS.cxx:618
 AliAnalysisTaskSEImproveITS.cxx:619
 AliAnalysisTaskSEImproveITS.cxx:620
 AliAnalysisTaskSEImproveITS.cxx:621
 AliAnalysisTaskSEImproveITS.cxx:622
 AliAnalysisTaskSEImproveITS.cxx:623
 AliAnalysisTaskSEImproveITS.cxx:624
 AliAnalysisTaskSEImproveITS.cxx:625
 AliAnalysisTaskSEImproveITS.cxx:626
 AliAnalysisTaskSEImproveITS.cxx:627
 AliAnalysisTaskSEImproveITS.cxx:628
 AliAnalysisTaskSEImproveITS.cxx:629
 AliAnalysisTaskSEImproveITS.cxx:630
 AliAnalysisTaskSEImproveITS.cxx:631
 AliAnalysisTaskSEImproveITS.cxx:632
 AliAnalysisTaskSEImproveITS.cxx:633
 AliAnalysisTaskSEImproveITS.cxx:634
 AliAnalysisTaskSEImproveITS.cxx:635
 AliAnalysisTaskSEImproveITS.cxx:636
 AliAnalysisTaskSEImproveITS.cxx:637
 AliAnalysisTaskSEImproveITS.cxx:638
 AliAnalysisTaskSEImproveITS.cxx:639
 AliAnalysisTaskSEImproveITS.cxx:640
 AliAnalysisTaskSEImproveITS.cxx:641
 AliAnalysisTaskSEImproveITS.cxx:642
 AliAnalysisTaskSEImproveITS.cxx:643
 AliAnalysisTaskSEImproveITS.cxx:644
 AliAnalysisTaskSEImproveITS.cxx:645
 AliAnalysisTaskSEImproveITS.cxx:646
 AliAnalysisTaskSEImproveITS.cxx:647
 AliAnalysisTaskSEImproveITS.cxx:648
 AliAnalysisTaskSEImproveITS.cxx:649
 AliAnalysisTaskSEImproveITS.cxx:650
 AliAnalysisTaskSEImproveITS.cxx:651
 AliAnalysisTaskSEImproveITS.cxx:652
 AliAnalysisTaskSEImproveITS.cxx:653
 AliAnalysisTaskSEImproveITS.cxx:654
 AliAnalysisTaskSEImproveITS.cxx:655
 AliAnalysisTaskSEImproveITS.cxx:656
 AliAnalysisTaskSEImproveITS.cxx:657
 AliAnalysisTaskSEImproveITS.cxx:658
 AliAnalysisTaskSEImproveITS.cxx:659
 AliAnalysisTaskSEImproveITS.cxx:660
 AliAnalysisTaskSEImproveITS.cxx:661
 AliAnalysisTaskSEImproveITS.cxx:662
 AliAnalysisTaskSEImproveITS.cxx:663
 AliAnalysisTaskSEImproveITS.cxx:664
 AliAnalysisTaskSEImproveITS.cxx:665
 AliAnalysisTaskSEImproveITS.cxx:666