ROOT logo
////////////////////////////////////////////////////////////////////////////////
//  AliAnalysisTaskITSTPCalignment
//  Runs the relative ITS TPC alignment procedure and TPC vdrift calib
//  Origin: Mikolaj Krzewicki, mikolaj.krzewicki@cern.ch
////////////////////////////////////////////////////////////////////////////////

#include <TChain.h>
#include <TTree.h>
#include <TH2.h>
#include <TProfile.h>
#include <TCanvas.h>
#include <TArrayI.h>
#include <TObjArray.h>
#include <TGraphErrors.h>
#include <AliMagF.h>
#include <AliAnalysisTaskSE.h>
#include <AliMCEventHandler.h>
#include <AliAnalysisManager.h>
#include <AliESDEvent.h>
#include <AliESDfriend.h>
#include <AliMCEvent.h>
#include <AliStack.h>
#include <AliExternalTrackParam.h>
#include <AliESDtrack.h>
#include <AliESDfriendTrack.h>
#include <AliESDInputHandler.h>
#include "AliRelAlignerKalman.h"
#include "AliRelAlignerKalmanArray.h"
#include "AliAnalysisTaskITSTPCalignment.h"
#include "AliLog.h"

ClassImp(AliAnalysisTaskITSTPCalignment)

//________________________________________________________________________
AliAnalysisTaskITSTPCalignment::AliAnalysisTaskITSTPCalignment():
    AliAnalysisTaskSE(),
    fArrayITSglobal(0),
    fArrayITSsa(0),
    fDebugTree(0),
    fAligner(0),
    fList(0),
    fFillDebugTree(kFALSE),
    fDoQA(kTRUE),
    fT0(0),
    fTend(0),
    fSlotWidth(0),
    fMinPt(0.4),
    fMinPointsVol1(3),
    fMinPointsVol2(80),
    fRejectOutliers(kTRUE),
    fOutRejSigma(1.),
    fRejectOutliersSigma2Median(kFALSE),
    fOutRejSigma2Median(5.),
    fOutRejSigmaOnMerge(10.),
    fUseITSoutGlobalTrack(kFALSE),
    fUseITSoutITSSAtrack(kTRUE)
{
  //dummy ctor
  // Define input and output slots here
  // Input slot #0 works with a TChain
  //DefineInput(0, TChain::Class());
  //DefineOutput(0, TTree::Class());
  //DefineOutput(1, TList::Class());
  //DefineOutput(2, AliRelAlignerKalmanArray::Class());
}

//________________________________________________________________________
AliAnalysisTaskITSTPCalignment::AliAnalysisTaskITSTPCalignment(const char *name):
    AliAnalysisTaskSE(name),
    fArrayITSglobal(0),
    fArrayITSsa(0),
    fDebugTree(0),
    fAligner(0),
    fList(0),
    fFillDebugTree(kFALSE),
    fDoQA(kTRUE),
    fT0(0),
    fTend(0),
    fSlotWidth(0),
    fMinPt(0.4),
    fMinPointsVol1(3),
    fMinPointsVol2(80),
    fRejectOutliers(kTRUE),
    fOutRejSigma(1.),
    fRejectOutliersSigma2Median(kFALSE),
    fOutRejSigma2Median(5.),
    fOutRejSigmaOnMerge(10.),
    fUseITSoutGlobalTrack(kFALSE),
    fUseITSoutITSSAtrack(kTRUE)
{
  // Constructor

  // Define input and output slots here
  // Input slot #0 is a TChain
  // Output slot #0 is a TTree
  DefineOutput(1, TList::Class());
  DefineOutput(2, AliRelAlignerKalmanArray::Class());
  DefineOutput(3, AliRelAlignerKalmanArray::Class());
}

//________________________________________________________________________
Bool_t AliAnalysisTaskITSTPCalignment::UserNotify()
{
  //ON INPUT FILE/TREE CHANGE

  //fArray->Print();
  if (fFillDebugTree)
  {
    if (fAligner->GetNUpdates()>0) fDebugTree->Fill();
  }

  return kTRUE;
}

//________________________________________________________________________
void AliAnalysisTaskITSTPCalignment::UserCreateOutputObjects()
{
  // Create output objects

  fArrayITSglobal = new AliRelAlignerKalmanArray();
  fArrayITSglobal->SetName("array ITS global");
  fArrayITSglobal->SetupArray(fT0,fTend,fSlotWidth);
  fArrayITSglobal->SetOutRejSigmaOnMerge(fOutRejSigmaOnMerge);
  //set up the template
  AliRelAlignerKalman* templ = fArrayITSglobal->GetAlignerTemplate();
  templ->SetRejectOutliers(fRejectOutliers);
  templ->SetOutRejSigma(fOutRejSigma);
  templ->SetRejectOutliersSigma2Median(fRejectOutliersSigma2Median);
  templ->SetOutRejSigma2Median(fOutRejSigma2Median);
  fArrayITSsa = new AliRelAlignerKalmanArray();
  fArrayITSsa->SetName("array ITS SA");
  fArrayITSsa->SetupArray(fT0,fTend,fSlotWidth);
  fArrayITSsa->SetOutRejSigmaOnMerge(fOutRejSigmaOnMerge);
  //set up the template
  templ = fArrayITSsa->GetAlignerTemplate();
  templ->SetRejectOutliers(fRejectOutliers);
  templ->SetOutRejSigma(fOutRejSigma);
  templ->SetRejectOutliersSigma2Median(fRejectOutliersSigma2Median);
  templ->SetOutRejSigma2Median(fOutRejSigma2Median);

  fList = new TList();
  fList->SetName("QA");
  fList->SetOwner(kTRUE);

  TH2F* pZYAResidualsHistBpos = new TH2F("fZYAResidualsHistBpos","z-r\\phi residuals side A (z>0), Bpos", 100, -4., 4., 100, -1.5, 1.5 );
  pZYAResidualsHistBpos->SetXTitle("\\deltaz [cm]");
  pZYAResidualsHistBpos->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pZYCResidualsHistBpos = new TH2F("fZYCResidualsHistBpos","z-r\\phi residuals side C (z<0), Bpos", 100, -4., 4., 100, -1.5, 1.5 );
  pZYCResidualsHistBpos->SetXTitle("\\deltaz [cm]");
  pZYCResidualsHistBpos->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pLPAResidualsHistBpos = new TH2F("fLPAResidualsHistBpos", "sin(\\phi) tan(\\lambda) residuals side A (z>0), Bpos", 100, -.05, 0.05, 100, -0.05, 0.05 );
  pLPAResidualsHistBpos->SetXTitle("\\deltasin(\\phi)");
  pLPAResidualsHistBpos->SetYTitle("\\deltatan(\\lambda)");
  TH2F* pLPCResidualsHistBpos = new TH2F("fLPCResidualsHistBpos", "sin(\\phi) tan(\\lambda) residuals side C (z<0), Bpos", 100, -.05, 0.05, 100, -0.05, 0.05 );
  pLPCResidualsHistBpos->SetXTitle("\\deltasin(\\phi)");
  pLPCResidualsHistBpos->SetYTitle("\\deltatan(\\lambda)");
  TH2F* pPhiYAResidualsHistBpos = new TH2F("fPhiYAResidualsHistBpos","\\phi-\\deltar\\phi side A (z>0), Bpos",36,0.0,6.3,100,-1.5,1.5);
  pPhiYAResidualsHistBpos->SetXTitle("\\phi [rad]");
  pPhiYAResidualsHistBpos->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pPhiYCResidualsHistBpos = new TH2F("fPhiYCResidualsHistBpos","\\phi-\\deltar\\phi side C (z<0), Bpos",36,0.0,6.3,100,-1.5,1.5);
  pPhiYCResidualsHistBpos->SetXTitle("\\phi [rad]");
  pPhiYCResidualsHistBpos->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pPhiZAResidualsHistBpos = new TH2F("fPhiZAResidualsHistBpos","\\phi-\\deltaz side A (z>0), Bpos",36,0.0,6.3,100,-3.0,3.0);
  pPhiZAResidualsHistBpos->SetXTitle("\\phi [rad]");
  pPhiZAResidualsHistBpos->SetYTitle("\\deltaz [cm]");
  TH2F* pPhiZCResidualsHistBpos = new TH2F("fPhiZCResidualsHistBpos","\\phi-\\deltaz side C (z<0), Bpos",36,0.0,6.3,100,-3.0,3.0);
  pPhiZCResidualsHistBpos->SetXTitle("\\phi [rad]");
  pPhiZCResidualsHistBpos->SetYTitle("\\deltaz [cm]");
  TH2F* pPtYAResidualsHistBpos = new TH2F("fPtYAResidualsHistBpos","Pt-\\deltar\\phi side A (z>0), Bpos",20,.3,8.,80,-1.5,1.5);
  pPtYAResidualsHistBpos->SetXTitle("Pt [rad]");
  pPtYAResidualsHistBpos->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pPtYCResidualsHistBpos = new TH2F("fPtYCResidualsHistBpos","Pt-\\deltar\\phi side C (z<0), Bpos",20,.3,8.,80,-1.5,1.5);
  pPtYCResidualsHistBpos->SetXTitle("Pt [rad]");
  pPtYCResidualsHistBpos->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pPtZAResidualsHistBpos = new TH2F("fPtZAResidualsHistBpos","Pt-\\deltaz side A (z>0), Bpos",20,.3,8.,80,-3.0,3.0);
  pPtZAResidualsHistBpos->SetXTitle("Pt");
  pPtZAResidualsHistBpos->SetYTitle("\\deltaz [cm]");
  TH2F* pPtZCResidualsHistBpos = new TH2F("fPtZCResidualsHistBpos","Pt-\\deltaz side C (z<0), Bpos",20,.3,8.,80,-3.0,3.0);
  pPtZCResidualsHistBpos->SetXTitle("Pt");
  pPtZCResidualsHistBpos->SetYTitle("\\deltaz [cm]");
  TH2F* pLowPtYAResidualsHistBpos = new TH2F("fLowPtYAResidualsHistBpos","Pt-\\deltar\\phi side A (z>0), Bpos",100,0.0,1.5,80,-1.5,1.5);
  pLowPtYAResidualsHistBpos->SetXTitle("Pt [rad]");
  pLowPtYAResidualsHistBpos->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pLowPtYCResidualsHistBpos = new TH2F("fLowPtYCResidualsHistBpos","Pt-\\deltar\\phi side C (z<0), Bpos",100,0.0,1.5,80,-1.5,1.5);
  pLowPtYCResidualsHistBpos->SetXTitle("Pt [rad]");
  pLowPtYCResidualsHistBpos->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pLowPtZAResidualsHistBpos = new TH2F("fLowPtZAResidualsHistBpos","Pt-\\deltaz side A (z>0), Bpos",100,0.0,1.5,80,-3.0,3.0);
  pLowPtZAResidualsHistBpos->SetXTitle("Pt");
  pLowPtZAResidualsHistBpos->SetYTitle("\\deltaz [cm]");
  TH2F* pLowPtZCResidualsHistBpos = new TH2F("fLowPtZCResidualsHistBpos","Pt-\\deltaz side C (z<0), Bpos",100,0.0,1.5,80,-3.0,3.0);
  pLowPtZCResidualsHistBpos->SetXTitle("Pt");
  pLowPtZCResidualsHistBpos->SetYTitle("\\deltaz [cm]");
  TList* listBpos = new TList();
  listBpos->SetName("B+");
  listBpos->SetOwner(kTRUE);
  fList->Add(listBpos); //0
  listBpos->Add(pZYAResidualsHistBpos);
  listBpos->Add(pZYCResidualsHistBpos);
  listBpos->Add(pLPAResidualsHistBpos);
  listBpos->Add(pLPCResidualsHistBpos);
  listBpos->Add(pPhiYAResidualsHistBpos);
  listBpos->Add(pPhiYCResidualsHistBpos);
  listBpos->Add(pPhiZAResidualsHistBpos);
  listBpos->Add(pPhiZCResidualsHistBpos);
  listBpos->Add(pPtYAResidualsHistBpos);
  listBpos->Add(pPtYCResidualsHistBpos);
  listBpos->Add(pPtZAResidualsHistBpos);
  listBpos->Add(pPtZCResidualsHistBpos);
  listBpos->Add(pLowPtYAResidualsHistBpos);
  listBpos->Add(pLowPtYCResidualsHistBpos);
  listBpos->Add(pLowPtZAResidualsHistBpos);
  listBpos->Add(pLowPtZCResidualsHistBpos);

  TH2F* pZYAResidualsHistBneg = new TH2F("fZYAResidualsHistBneg","z-r\\phi residuals side A (z>0), Bneg", 100, -4., 4., 100, -1.5, 1.5 );
  pZYAResidualsHistBneg->SetXTitle("\\deltaz [cm]");
  pZYAResidualsHistBneg->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pZYCResidualsHistBneg = new TH2F("fZYCResidualsHistBneg","z-r\\phi residuals side C (z<0), Bneg", 100, -4., 4., 100, -1.5, 1.5 );
  pZYCResidualsHistBneg->SetXTitle("\\deltaz [cm]");
  pZYCResidualsHistBneg->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pLPAResidualsHistBneg = new TH2F("fLPAResidualsHistBneg", "sin(\\phi) tan(\\lambda) residuals side A (z>0), Bneg", 100, -.05, 0.05, 100, -0.05, 0.05 );
  pLPAResidualsHistBneg->SetXTitle("\\deltasin(\\phi)");
  pLPAResidualsHistBneg->SetYTitle("\\deltatan(\\lambda)");
  TH2F* pLPCResidualsHistBneg = new TH2F("fLPCResidualsHistBneg", "sin(\\phi) tan(\\lambda) residuals side C (z<0), Bneg", 100, -.05, 0.05, 100, -0.05, 0.05 );
  pLPCResidualsHistBneg->SetXTitle("\\deltasin(\\phi)");
  pLPCResidualsHistBneg->SetYTitle("\\deltatan(\\lambda)");
  TH2F* pPhiYAResidualsHistBneg = new TH2F("fPhiYAResidualsHistBneg","\\phi-\\deltar\\phi side A (z>0), Bneg",36,0.0,6.3,100,-1.5,1.5);
  pPhiYAResidualsHistBneg->SetXTitle("\\phi [rad]");
  pPhiYAResidualsHistBneg->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pPhiYCResidualsHistBneg = new TH2F("fPhiYCResidualsHistBneg","\\phi-\\deltar\\phi side C (z<0), Bneg",36,0.0,6.3,100,-1.5,1.5);
  pPhiYCResidualsHistBneg->SetXTitle("\\phi [rad]");
  pPhiYCResidualsHistBneg->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pPhiZAResidualsHistBneg = new TH2F("fPhiZAResidualsHistBneg","\\phi-\\deltaz side A (z>0), Bneg",36,0.0,6.3,100,-3.0,3.0);
  pPhiZAResidualsHistBneg->SetXTitle("\\phi [rad]");
  pPhiZAResidualsHistBneg->SetYTitle("\\deltaz [cm]");
  TH2F* pPhiZCResidualsHistBneg = new TH2F("fPhiZCResidualsHistBneg","\\Pt-\\deltaz side C (z<0), Bneg",36,0.0,6.3,100,-3.0,3.0);
  pPhiZCResidualsHistBneg->SetXTitle("\\phi [rad]");
  pPhiZCResidualsHistBneg->SetYTitle("\\deltaz [cm]");
  TH2F* pPtYAResidualsHistBneg = new TH2F("fPtYAResidualsHistBneg","Pt-\\deltar\\phi side A (z>0), Bneg",20,.3,8.,80,-1.5,1.5);
  pPtYAResidualsHistBneg->SetXTitle("Pt [rad]");
  pPtYAResidualsHistBneg->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pPtYCResidualsHistBneg = new TH2F("fPtYCResidualsHistBneg","Pt-\\deltar\\phi side C (z<0), Bneg",20,.3,8.,80,-1.5,1.5);
  pPtYCResidualsHistBneg->SetXTitle("Pt [rad]");
  pPtYCResidualsHistBneg->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pPtZAResidualsHistBneg = new TH2F("fPtZAResidualsHistBneg","Pt-\\deltaz side A (z>0), Bneg",20,.3,8.,80,-3.0,3.0);
  pPtZAResidualsHistBneg->SetXTitle("Pt");
  pPtZAResidualsHistBneg->SetYTitle("\\deltaz [cm]");
  TH2F* pPtZCResidualsHistBneg = new TH2F("fPtZCResidualsHistBneg","Pt-\\deltaz side C (z<0), Bneg",20,.3,8.,80,-3.0,3.0);
  pPtZCResidualsHistBneg->SetXTitle("Pt");
  pPtZCResidualsHistBneg->SetYTitle("\\deltaz [cm]");
  TH2F* pLowPtYAResidualsHistBneg = new TH2F("fLowPtYAResidualsHistBneg","Pt-\\deltar\\phi side A (z>0), Bneg",100,0.0,1.5,80,-1.5,1.5);
  pLowPtYAResidualsHistBneg->SetXTitle("Pt [rad]");
  pLowPtYAResidualsHistBneg->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pLowPtYCResidualsHistBneg = new TH2F("fLowPtYCResidualsHistBneg","Pt-\\deltar\\phi side C (z<0), Bneg",100,0.0,1.5,80,-1.5,1.5);
  pLowPtYCResidualsHistBneg->SetXTitle("Pt [rad]");
  pLowPtYCResidualsHistBneg->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pLowPtZAResidualsHistBneg = new TH2F("fLowPtZAResidualsHistBneg","Pt-\\deltaz side A (z>0), Bneg",100,0.0,1.5,80,-3.0,3.0);
  pLowPtZAResidualsHistBneg->SetXTitle("Pt");
  pLowPtZAResidualsHistBneg->SetYTitle("\\deltaz [cm]");
  TH2F* pLowPtZCResidualsHistBneg = new TH2F("fLowPtZCResidualsHistBneg","Pt-\\deltaz side C (z<0), Bneg",100,0.0,1.5,80,-3.0,3.0);
  pLowPtZCResidualsHistBneg->SetXTitle("Pt");
  pLowPtZCResidualsHistBneg->SetYTitle("\\deltaz [cm]");
  TList* listBneg = new TList();
  listBneg->SetName("B-");
  listBneg->SetOwner(kTRUE);
  fList->Add(listBneg); //1
  listBneg->Add(pZYAResidualsHistBneg);
  listBneg->Add(pZYCResidualsHistBneg);
  listBneg->Add(pLPAResidualsHistBneg);
  listBneg->Add(pLPCResidualsHistBneg);
  listBneg->Add(pPhiYAResidualsHistBneg);
  listBneg->Add(pPhiYCResidualsHistBneg);
  listBneg->Add(pPhiZAResidualsHistBneg);
  listBneg->Add(pPhiZCResidualsHistBneg);
  listBneg->Add(pPtYAResidualsHistBneg);
  listBneg->Add(pPtYCResidualsHistBneg);
  listBneg->Add(pPtZAResidualsHistBneg);
  listBneg->Add(pPtZCResidualsHistBneg);
  listBneg->Add(pLowPtYAResidualsHistBneg);
  listBneg->Add(pLowPtYCResidualsHistBneg);
  listBneg->Add(pLowPtZAResidualsHistBneg);
  listBneg->Add(pLowPtZCResidualsHistBneg);

  TH2F* pZYAResidualsHistBnil = new TH2F("fZYAResidualsHistBnil","z-r\\phi residuals side A (z>0), Bnil", 100, -3., 3., 100, -1.5, 1.5 );
  pZYAResidualsHistBnil->SetXTitle("\\deltaz [cm]");
  pZYAResidualsHistBnil->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pZYCResidualsHistBnil = new TH2F("fZYCResidualsHistBnil","z-r\\phi residuals side C (z<0), Bnil", 100, -3., 3., 100, -1.5, 1.5 );
  pZYCResidualsHistBnil->SetXTitle("\\deltaz [cm]");
  pZYCResidualsHistBnil->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pLPAResidualsHistBnil = new TH2F("fLPAResidualsHistBnil", "sin(\\phi) tan(\\lambda) residuals side A (z>0), Bnil", 100, -.05, 0.05, 100, -0.05, 0.05 );
  pLPAResidualsHistBnil->SetXTitle("\\deltasin(\\phi)");
  pLPAResidualsHistBnil->SetYTitle("\\deltatan(\\lambda)");
  TH2F* pLPCResidualsHistBnil = new TH2F("fLPCResidualsHistBnil", "sin(\\phi) tan(\\lambda) residuals side C (z<0), Bnil", 100, -.05, 0.05, 100, -0.05, 0.05 );
  pLPCResidualsHistBnil->SetXTitle("\\deltasin(\\phi)");
  pLPCResidualsHistBnil->SetYTitle("\\deltatan(\\lambda)");
  TH2F* pPhiYAResidualsHistBnil = new TH2F("fPhiYAResidualsHistBnil","\\phi-\\deltar\\phi side A (z>0), Bnil",36,0.0,6.3,100,-1.5,1.5);
  pPhiYAResidualsHistBnil->SetXTitle("\\phi [rad]");
  pPhiYAResidualsHistBnil->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pPhiYCResidualsHistBnil = new TH2F("fPhiYCResidualsHistBnil","\\phi-\\deltar\\phi side C (z<0), Bnil",36,0.0,6.3,100,-1.5,1.5);
  pPhiYCResidualsHistBnil->SetXTitle("\\phi [rad]");
  pPhiYCResidualsHistBnil->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pPhiZAResidualsHistBnil = new TH2F("fPhiZAResidualsHistBnil","\\phi-\\deltaz side A (z>0), Bnil",36,0.0,6.3,100,-3.0,3.0);
  pPhiZAResidualsHistBnil->SetXTitle("\\phi [rad]");
  pPhiZAResidualsHistBnil->SetYTitle("\\deltaz [cm]");
  TH2F* pPhiZCResidualsHistBnil = new TH2F("fPhiZCResidualsHistBnil","\\Pt-\\deltaz side C (z<0), Bnil",36,0.0,6.3,100,-3.0,3.0);
  pPhiZCResidualsHistBnil->SetXTitle("\\phi [rad]");
  pPhiZCResidualsHistBnil->SetYTitle("\\deltaz [cm]");
  TH2F* pPtYAResidualsHistBnil = new TH2F("fPtYAResidualsHistBnil","Pt-\\deltar\\phi side A (z>0), Bnil",20,.3,8.,80,-1.5,1.5);
  pPtYAResidualsHistBnil->SetXTitle("Pt [rad]");
  pPtYAResidualsHistBnil->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pPtYCResidualsHistBnil = new TH2F("fPtYCResidualsHistBnil","Pt-\\deltar\\phi side C (z<0), Bnil",20,.3,8.,80,-1.5,1.5);
  pPtYCResidualsHistBnil->SetXTitle("Pt [rad]");
  pPtYCResidualsHistBnil->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pPtZAResidualsHistBnil = new TH2F("fPtZAResidualsHistBnil","Pt-\\deltaz side A (z>0), Bnil",20,.3,8.,80,-3.0,3.0);
  pPtZAResidualsHistBnil->SetXTitle("Pt");
  pPtZAResidualsHistBnil->SetYTitle("\\deltaz [cm]");
  TH2F* pPtZCResidualsHistBnil = new TH2F("fPtZCResidualsHistBnil","Pt-\\deltaz side C (z<0), Bnil",20,.3,8.,80,-3.0,3.0);
  pPtZCResidualsHistBnil->SetXTitle("Pt");
  pPtZCResidualsHistBnil->SetYTitle("\\deltaz [cm]");
  TH2F* pLowPtYAResidualsHistBnil = new TH2F("fLowPtYAResidualsHistBnil","Pt-\\deltar\\phi side A (z>0), Bnil",100,0.0,1.5,80,-1.5,1.5);
  pLowPtYAResidualsHistBnil->SetXTitle("Pt [rad]");
  pLowPtYAResidualsHistBnil->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pLowPtYCResidualsHistBnil = new TH2F("fLowPtYCResidualsHistBnil","Pt-\\deltar\\phi side C (z<0), Bnil",100,0.0,1.5,80,-1.5,1.5);
  pLowPtYCResidualsHistBnil->SetXTitle("Pt [rad]");
  pLowPtYCResidualsHistBnil->SetYTitle("\\deltar\\phi [cm]");
  TH2F* pLowPtZAResidualsHistBnil = new TH2F("fLowPtZAResidualsHistBnil","Pt-\\deltaz side A (z>0), Bnil",100,0.0,1.5,80,-3.0,3.0);
  pLowPtZAResidualsHistBnil->SetXTitle("Pt");
  pLowPtZAResidualsHistBnil->SetYTitle("\\deltaz [cm]");
  TH2F* pLowPtZCResidualsHistBnil = new TH2F("fLowPtZCResidualsHistBnil","Pt-\\deltaz side C (z<0), Bnil",100,0.0,1.5,80,-3.0,3.0);
  pLowPtZCResidualsHistBnil->SetXTitle("Pt");
  pLowPtZCResidualsHistBnil->SetYTitle("\\deltaz [cm]");
  TList* listBnil = new TList();
  listBnil->SetName("B0");
  listBnil->SetOwner(kTRUE);
  fList->Add(listBnil); //2
  listBnil->Add(pZYAResidualsHistBnil);
  listBnil->Add(pZYCResidualsHistBnil);
  listBnil->Add(pLPAResidualsHistBnil);
  listBnil->Add(pLPCResidualsHistBnil);
  listBnil->Add(pPhiYAResidualsHistBnil);
  listBnil->Add(pPhiYCResidualsHistBnil);
  listBnil->Add(pPhiZAResidualsHistBnil);
  listBnil->Add(pPhiZCResidualsHistBnil);
  listBnil->Add(pPtYAResidualsHistBnil);
  listBnil->Add(pPtYCResidualsHistBnil);
  listBnil->Add(pPtZAResidualsHistBnil);
  listBnil->Add(pPtZCResidualsHistBnil);
  listBnil->Add(pLowPtYAResidualsHistBnil);
  listBnil->Add(pLowPtYCResidualsHistBnil);
  listBnil->Add(pLowPtZAResidualsHistBnil);
  listBnil->Add(pLowPtZCResidualsHistBnil);

  TH1F* pNmatchingEff=new TH1F("pNmatchingEff","matching efficiency",50,0.,1.);
  fList->Add(pNmatchingEff); //3

  TH1I* pChecks = new TH1I("some counters","some counters",10,0,10);
  pChecks->GetXaxis()->SetBinLabel(1+kNoESD,"no ESD");
  pChecks->GetXaxis()->SetBinLabel(1+kNoESDfriend,"no ESDfriend");
  pChecks->GetXaxis()->SetBinLabel(1+kNoFriendTrack,"no friendtrack");
  pChecks->GetXaxis()->SetBinLabel(1+kNoITSoutParams,"no ITS out params");
  pChecks->GetXaxis()->SetBinLabel(1+kESDfriend,"ESD friend");
  pChecks->GetXaxis()->SetBinLabel(1+kFriendsSkipBit,"friends+skipbit");
  pChecks->GetXaxis()->SetBinLabel(1+kFriendTrack,"friendtrack");
  pChecks->GetXaxis()->SetBinLabel(1+kITSoutParams,"ITS out params");
  fList->Add(pChecks); //4

  fAligner = new AliRelAlignerKalman();
  fAligner->SetRejectOutliers(fRejectOutliers);
  fAligner->SetOutRejSigma(fOutRejSigma);
  fAligner->SetRejectOutliersSigma2Median(fRejectOutliersSigma2Median);
  fAligner->SetOutRejSigma2Median(fOutRejSigma2Median);
  fList->Add(fAligner);

  fDebugTree = new TTree("debugTree","tree with debug info");
  fDebugTree->Branch("aligner","AliRelAlignerKalman",&fAligner);
  
  // Post output data.
  PostData(0, fDebugTree);
  PostData(1, fList);
  PostData(2, fArrayITSglobal);
  PostData(3, fArrayITSsa);
}

//________________________________________________________________________
void AliAnalysisTaskITSTPCalignment::UserExec(Option_t *)
{
  // Main loop
  // Called for each event

  TH1I* pChecks = static_cast<TH1I*>(fList->At(4));
  //check for ESD and friends
  AliESDEvent* event = dynamic_cast<AliESDEvent*>(InputEvent());
  AliESDfriend* eventFriend = dynamic_cast<AliESDfriend*>(ESDfriend());
  if (!event)
  {
    AliError("no ESD");
    pChecks->Fill(kNoESD);
    return;
  }

  if (!eventFriend)
  {
    AliError("no ESD friend");
    pChecks->Fill(kNoESDfriend);
    return;
  }
  else
  {
    pChecks->Fill(kESDfriend);
  }

  //event->SetESDfriend(eventFriend);
  
  if (eventFriend->TestSkipBit()) 
  {
    pChecks->Fill(kFriendsSkipBit);
    return;
  }

  //Update the parmeters
  AnalyzeESDevent(event);
}

//________________________________________________________________________
void AliAnalysisTaskITSTPCalignment::AnalyzeESDevent(AliESDEvent* event)
{
  //analyze an ESD event with track matching
  Int_t ntracks = event->GetNumberOfTracks();
  if (ntracks==0) return;

  if (fUseITSoutGlobalTrack)
  {
    AliRelAlignerKalman* alignerGlobal = fArrayITSglobal->GetAligner(event);
    if (alignerGlobal)
      alignerGlobal->AddESDevent(event);
  }

  if (fUseITSoutITSSAtrack)
  { 
    //get the aligner for the event
    //do it with matching
    TObjArray arrayParamITS(ntracks);
    TObjArray arrayParamTPC(ntracks);

    Int_t n = FindMatchingTracks(arrayParamITS, arrayParamTPC, event);
    AliInfo(Form("matched tracklet pairs: %i\n",n));

    TH1F* nMatchingEff=static_cast<TH1F*>(fList->At(3));
    Float_t ratio = (float)n/(float)ntracks;
    nMatchingEff->Fill(ratio);

    AliRelAlignerKalman* alignerSA = NULL;
    if (n>0) alignerSA = fArrayITSsa->GetAligner(event);

    for (Int_t i=0;i<n;i++)
    {
      AliExternalTrackParam* paramsITS=static_cast<AliExternalTrackParam*>(arrayParamITS[i]);
      AliExternalTrackParam* paramsTPC=static_cast<AliExternalTrackParam*>(arrayParamTPC[i]);

      if (!(paramsITS&&paramsTPC)) continue;

      //QA
      if (fDoQA) DoQA(paramsITS,paramsTPC);

      //debug
      if (fAligner->AddTrackParams(paramsITS, paramsTPC))
      {
        fAligner->SetRunNumber(event->GetRunNumber());
        fAligner->SetMagField(event->GetMagneticField());
        fAligner->SetTimeStamp(event->GetTimeStamp());
      }

      //alignment
      if (alignerSA) alignerSA->AddTrackParams(paramsITS, paramsTPC);
    }
    arrayParamITS.Delete();
    arrayParamTPC.Delete();
  }
}

//________________________________________________________________________
void AliAnalysisTaskITSTPCalignment::Terminate(Option_t *)
{
  // Called once at the end of the query
  fArrayITSsa->Print("a");
  fAligner->Print();
}

//________________________________________________________________________
Int_t AliAnalysisTaskITSTPCalignment::FindMatchingTracks(TObjArray& arrITS, TObjArray& arrTPC, AliESDEvent* pESD)
{
  //find matching tracks and return tobjarrays with the params
  //fUniqueID of param object contains tracknumber in event.

  TH1I* pChecks = static_cast<TH1I*>(fList->At(4));
  Int_t ntracks = pESD->GetNumberOfTracks();
  Double_t magfield = pESD->GetMagneticField();

  Int_t* matchedArr = new Int_t[ntracks]; //storage for index of ITS track for which a match was found
  for (Int_t i=0;i<ntracks;i++)
  {
    matchedArr[i]=-1;
  }

  Int_t iMatched=-1;
  for (Int_t i=0; i<ntracks; i++)
  {
    //get track1 and friend
    AliESDtrack* track1 = pESD->GetTrack(i);
    if (!track1) continue;

    if (track1->GetNcls(0) < fMinPointsVol1) continue;

    if (!( ( track1->IsOn(AliESDtrack::kITSrefit)) &&
           (!track1->IsOn(AliESDtrack::kTPCin)) )) continue;

    const AliESDfriendTrack* constfriendtrack1 = track1->GetFriendTrack();
    if (!constfriendtrack1) {AliInfo(Form("no friendTrack1\n"));pChecks->Fill(kNoFriendTrack);continue;}
    pChecks->Fill(kFriendTrack);
    AliESDfriendTrack friendtrack1(*constfriendtrack1);

    if (!friendtrack1.GetITSOut()) {pChecks->Fill(kNoITSoutParams);continue;}
    pChecks->Fill(kITSoutParams);
    AliExternalTrackParam params1(*(friendtrack1.GetITSOut()));

    Double_t bestd = 1000.; //best distance
    Bool_t newi = kTRUE; //whether we start with a new i
    for (Int_t j=0; j<ntracks; j++)
    {
      if (matchedArr[j]>0 && matchedArr[j]!=i) continue; //already matched, everything tried
      //get track2 and friend
      AliESDtrack* track2 = pESD->GetTrack(j);
      if (!track2) continue;
      if (track1==track2) continue;
      if (!(track2->IsOn(AliESDtrack::kTPCin))) continue; //must be TPC
      if (!(track2->IsOn(AliESDtrack::kITSout))) continue; //must have ITS

      //if (track2->GetNcls(0) != track1->GetNcls(0)) continue;
      //if (track2->GetITSClusterMap() != track1->GetITSClusterMap()) continue;
      if (track2->GetNcls(1) < fMinPointsVol2) continue; //min 80 clusters in TPC
      if (track2->GetTgl() > 1.) continue; //acceptance
      //cut crossing tracks
      if (!track2->GetInnerParam()) continue;
      if (!track2->GetOuterParam()) continue;
      if (track2->GetOuterParam()->GetZ()*track2->GetInnerParam()->GetZ()<0) continue;
      if (track2->GetInnerParam()->GetX()>90) continue;
      if (TMath::Abs(track2->GetInnerParam()->GetZ())<5.) continue; //too close to membrane?

      AliExternalTrackParam params2(*(track2->GetInnerParam()));

      //bring to same reference plane
      if (!params2.Rotate(params1.GetAlpha())) continue;
      if (!params2.PropagateTo(params1.GetX(), magfield)) continue;

      //pt cut, only for data with magfield
      if ((params2.Pt()<fMinPt)&&(TMath::Abs(magfield)>1.)) continue;
      //else 
      //if (fMC)
      // {
      //   AliStack* stack = fMC->Stack();
      //   Int_t label = track2->GetLabel();
      //   if (label<0) continue;
      //   TParticle* particle = stack->Particle(label);
      //   if (particle->Pt()<fMinPt) continue;
      // }

      const Double32_t*	p1 = params1.GetParameter();
      const Double32_t*	p2 = params2.GetParameter();

      //hard cuts
      Double_t dy = TMath::Abs(p2[0]-p1[0]);
      Double_t dz = TMath::Abs(p2[1]-p1[1]);
      Double_t dphi = TMath::Abs(p2[2]-p1[2]);
      Double_t dlam = TMath::Abs(p2[3]-p1[3]);
      if (dy > 2.0) continue;
      if (dz > 10.0) continue;
      if (dphi > 0.1 ) continue;
      if (dlam > 0.1 ) continue;

      //best match only
      Double_t d = TMath::Sqrt(dy*dy+dz*dz+dphi*dphi+dlam*dlam);
      if ( d >= bestd) continue;
      bestd = d;
      matchedArr[j]=i; //j-th track matches i-th (ITS) track
      if (newi) iMatched++; newi=kFALSE; //increment at most once per i
      params1.SetUniqueID(i); //store tracknummer
      params2.SetUniqueID(j);
      if (arrITS[iMatched] && arrTPC[iMatched])
      {
        *(arrITS[iMatched]) = params1;
        *(arrTPC[iMatched]) = params2;
      }
      else
      {
        arrITS[iMatched] = new AliExternalTrackParam(params1);
        arrTPC[iMatched] = new AliExternalTrackParam(params2);
      }//else
    }//for j
  }//for i
  delete [] matchedArr;
  return iMatched+1;
}

//________________________________________________________________________
void AliAnalysisTaskITSTPCalignment::DoQA(AliExternalTrackParam* paramsITS,
    AliExternalTrackParam* paramsTPC)
{
  //fill qa histograms in a given list, per field direction (5,-5,0)
  Float_t resy = paramsTPC->GetY() - paramsITS->GetY();
  Float_t resz = paramsTPC->GetZ() - paramsITS->GetZ();
  Float_t ressnp = paramsTPC->GetSnp() - paramsITS->GetSnp();
  Float_t restgl = paramsTPC->GetTgl() - paramsITS->GetTgl();

  TList* pList=NULL;
  Double_t field = fInputEvent->GetMagneticField();
  if (field >= 1.)  pList = static_cast<TList*>(fList->At(0));
  if (field <= -1.) pList = static_cast<TList*>(fList->At(1));
  if (field < 1. && field > -1.) pList = static_cast<TList*>(fList->At(2));
  if (!pList) return;

  TH2F* pZYAResidualsHist = static_cast<TH2F*>(pList->At(0));
  TH2F* pZYCResidualsHist = static_cast<TH2F*>(pList->At(1));
  TH2F* pLPAResidualsHist = static_cast<TH2F*>(pList->At(2));
  TH2F* pLPCResidualsHist = static_cast<TH2F*>(pList->At(3));
  TH2F* pPhiYAResidualsHist = static_cast<TH2F*>(pList->At(4));
  TH2F* pPhiYCResidualsHist = static_cast<TH2F*>(pList->At(5));
  TH2F* pPhiZAResidualsHist = static_cast<TH2F*>(pList->At(6));
  TH2F* pPhiZCResidualsHist = static_cast<TH2F*>(pList->At(7));
  TH2F* pPtYAResidualsHist = static_cast<TH2F*>(pList->At(8));
  TH2F* pPtYCResidualsHist = static_cast<TH2F*>(pList->At(9));
  TH2F* pPtZAResidualsHist = static_cast<TH2F*>(pList->At(10));
  TH2F* pPtZCResidualsHist = static_cast<TH2F*>(pList->At(11));
  TH2F* pLowPtYAResidualsHist = static_cast<TH2F*>(pList->At(12));
  TH2F* pLowPtYCResidualsHist = static_cast<TH2F*>(pList->At(13));
  TH2F* pLowPtZAResidualsHist = static_cast<TH2F*>(pList->At(14));
  TH2F* pLowPtZCResidualsHist = static_cast<TH2F*>(pList->At(15));

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