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


////////////////////////////////////////////////////////////////////////////
//                                                                        //
// AliTPCCalibGlobalMisalignment class                                        //
// The class calculates the space point distortions due to simple         // 
// misalignments like shifts in caresian coordinates or a rotation        //
// of the TPC read out planes (A and C side)                              //
// Optionaly possible to use it for visualization of the alignemnt form the Alignment OCDB //
// fUseGeoManager has to be set to kTRUE to enable this option
//                                                                        //
// date: 06/05/2010                                                       //
// Authors: Stefan Rossegger, Jim Thomas, Magnus Mager                    //
////////////////////////////////////////////////////////////////////////////

#include "AliTPCCalibGlobalMisalignment.h"
#include "TMath.h"
#include "TGeoMatrix.h"
#include "AliTPCROC.h"
#include "AliTPCcalibDB.h"
#include "AliTPCParam.h"
#include <TGeoPhysicalNode.h>
//
#include "AliAlignObjParams.h"
#include "AliGeomManager.h"
#include "AliCDBManager.h"
#include "AliCDBEntry.h"

AliTPCCalibGlobalMisalignment::AliTPCCalibGlobalMisalignment()
  : AliTPCCorrection("mialign","Misalignment"),
    fXShift(0.),fYShift(0.),fZShift(0.),
    fRotPhiA(0.),fRotPhiC(0.),
    fdRPhiOffsetA(0.), 
    fdRPhiOffsetC(0.), 
    fQuadrantQ0(0),   //OROC medium pads -delta ly+ - ly - shift
    fQuadrantRQ0(0),  //OROC medium pads -delta ly+ - ly - rotation 
    fQuadrantQ1(0),   //OROC long   pads -delta ly+ - ly - shift
    fQuadrantQ2(0),   //OROC long   pads -shift
    fQuadrantRQ1(0),  //OROC long   pads -delta ly+ - ly - rotation
    fQuadrantRQ2(0),  //OROC long   pads -rotation
    fMatrixGlobal(0), // global Alignment common
    fMatrixGlobalDelta(0), // global Alignment Delta A side-c side
    fArraySector(0)   // fArraySector
{
  //
  // default constructor
  //
}

AliTPCCalibGlobalMisalignment::~AliTPCCalibGlobalMisalignment() {
  //
  // destructor
  //
  delete fQuadrantQ0;   //OROC medium pads -delta ly+ - ly - shift
  delete fQuadrantRQ0;  //OROC medium pads -delta ly+ - ly - rotation 
  delete fQuadrantQ1;   //OROC long   pads -delta ly+ - ly - shift
  delete fQuadrantQ2;   //OROC long   pads -shift
  delete fQuadrantRQ1;  //OROC long   pads -delta ly+ - ly - rotation
  delete fQuadrantRQ2;  //OROC long   pads -rotation
  delete fMatrixGlobal; // global matrix
  delete fMatrixGlobal; // global matrix
  delete fArraySector;  // sector matrices
}
 
void AliTPCCalibGlobalMisalignment::SetQuadranAlign(const TVectorD *quadrantQ0, const TVectorD *quadrantRQ0, const TVectorD *quadrantQ1,const TVectorD *quadrantRQ1,  const TVectorD *quadrantQ2,  const TVectorD *quadrantRQ2){
  //
  // Set quadrant alignment
  // 6 vectors for 36 (super) sectors
  //
  if (quadrantQ0) fQuadrantQ0   = new TVectorD(*quadrantQ0);
  if (quadrantRQ0) fQuadrantRQ0 = new TVectorD(*quadrantRQ0);
  //
  if (quadrantQ1) fQuadrantQ1   = new TVectorD(*quadrantQ1);
  if (quadrantQ1) fQuadrantRQ1  = new TVectorD(*quadrantRQ1);
  if (quadrantQ2) fQuadrantQ2   = new TVectorD(*quadrantQ2);
  if (quadrantQ2) fQuadrantRQ2  = new TVectorD(*quadrantRQ2);
}



void AliTPCCalibGlobalMisalignment::SetAlignGlobal(const TGeoMatrix * matrixGlobal){
  //
  // Set global misalignment
  // Object is OWNER 
  // 
  if (fMatrixGlobal) delete fMatrixGlobal;
  fMatrixGlobal=0;
  if (matrixGlobal) fMatrixGlobal = new TGeoHMatrix(*matrixGlobal);
}

void AliTPCCalibGlobalMisalignment::SetAlignGlobalDelta(const TGeoMatrix * matrixGlobalDelta){
  //
  // Set global misalignment
  // Object is OWNER 
  // 
  if (fMatrixGlobalDelta) delete fMatrixGlobalDelta;
  fMatrixGlobalDelta=0;
  if (matrixGlobalDelta) fMatrixGlobalDelta = new TGeoHMatrix(*matrixGlobalDelta);
}

void AliTPCCalibGlobalMisalignment::SetAlignSectors(const TObjArray *arraySector){
  //
  // Set misalignment TObjArray of TGeoMatrices  - for each sector
  // Object is OWNER
  // 
  if (fArraySector) delete fArraySector;
  fArraySector=0;
  if (arraySector) fArraySector = (TObjArray*)arraySector->Clone();
}


//void AliTPCCalibGlobalMisalignment::Init() {
//  //
// // Initialization funtion
//  //

//  // nothing to be initialized, results of this calibration class will go to the global aligment structure

//}

//void AliTPCCalibGlobalMisalignment::Update(const TTimeStamp &/*timeStamp*/) {
//  //
//  // Update function 
//  //
//
//  // nothing to be updated, results of this calibration class will go to the global aligment structure
//
//}



void AliTPCCalibGlobalMisalignment::GetCorrection(const Float_t x[],const Short_t roc,Float_t dx[]) {
  //
  // Calculates the simple correction due to a shift (in x,y,z) or an rotation of the TPC (around z)
  //  
  static AliTPCROC *tpcRoc =AliTPCROC::Instance();  
  Double_t xref  = ( tpcRoc->GetPadRowRadii(0,0)+tpcRoc->GetPadRowRadii(36,tpcRoc->GetNRows(36)-1))*0.5;
  Double_t xquadrant  = tpcRoc->GetPadRowRadii(36,53); // row 53 from uli
  Double_t xIO  = ( tpcRoc->GetPadRowRadii(0,tpcRoc->GetNRows(0)-1)+tpcRoc->GetPadRowRadii(36,0))*0.5;
  Double_t r=0, phi=0;
  r   = TMath::Sqrt( x[0]*x[0] + x[1]*x[1] );
  phi = TMath::ATan2(x[1],x[0]);
  // Getsector number
  Double_t sec=TMath::Nint(-0.5+(phi*9./TMath::Pi()));
  if (sec<0) sec+=18;
  Int_t isec = TMath::Nint(sec);    
  if  (roc%36>=18) isec+=18;
  //
  // Get the point on the local coordiante frame
  //
  Double_t alpha=(sec+0.5)*TMath::Pi()/9;
  Double_t pos[3]={0,0,x[2]};
  pos[0]=  TMath::Cos(alpha)*x[0]+TMath::Sin(alpha)*x[1];
  pos[1]= -TMath::Sin(alpha)*x[0]+TMath::Cos(alpha)*x[1];
  if (pos[0]>tpcRoc->GetPadRowRadiiUp(0))  isec+=36;

  //
  // apply quadrant alignment if available - in local coordinate frame
  //
  //
  Double_t posQG[3]={x[0],x[1],x[2]};
  {
    Double_t dly=0;
    Bool_t isQ0 = (pos[0]<xquadrant)&&(pos[0]>xIO);
    Bool_t isQ1 = (pos[0]>xquadrant);
    Double_t  sign = (pos[1]>0)? 1.: -1.;
    if (isQ0){
      if (fQuadrantQ0)  dly+=sign*(*fQuadrantQ0)[isec%36];  // shift in cm
      if (fQuadrantRQ0) dly+=sign*(*fQuadrantRQ0)[isec%36]*(pos[0]-xref);      
    }
    if (isQ1){
      if (fQuadrantQ1)  dly+=sign*(*fQuadrantQ1)[isec%36];  // shift in cm
      if (fQuadrantRQ1) dly+=sign*(*fQuadrantRQ1)[isec%36]*(pos[0]-xref);      
      if (fQuadrantQ2)  dly+=(*fQuadrantQ2)[isec%36];  // shift in cm
      if (fQuadrantRQ2) dly+=(*fQuadrantRQ2)[isec%36]*(pos[0]-xref);      
    }
    // Tranform the corrected point to the global frame
    posQG[0]=  TMath::Cos(alpha)*pos[0]-TMath::Sin(alpha)*(pos[1]+dly);
    posQG[1]=  TMath::Sin(alpha)*pos[0]+TMath::Cos(alpha)*(pos[1]+dly);
  }
  //
  // rotation of the read-out planes
  if  (roc%36<18) // A side
    phi += fRotPhiA;
  else         // C side
    phi += fRotPhiC;
  
  // Simply adding a constant dRPHi residual. PURELY FOR CALIBRATION PURPOSES
  if  (roc%36<18) // A side
    phi += fdRPhiOffsetA/r;
  else         // C side
    phi += fdRPhiOffsetC/r;
  
  dx[0] = r * TMath::Cos(phi) - x[0];
  dx[1] = r * TMath::Sin(phi) - x[1]; 
  dx[2] = 0.; 

  // Simple shifts
  dx[0] -= fXShift;
  dx[1] -= fYShift;
  dx[2] -= fZShift;
  // quadrant shifts
  dx[0] += (posQG[0]-x[0]);
  dx[1] += (posQG[1]-x[1]);
  //
  //
  if (fMatrixGlobal){
    // apply global alignment matrix
    Double_t ppos[3]={x[0],x[1],x[2]};
    Double_t pposC[3]={x[0],x[1],x[2]};
    fMatrixGlobal->LocalToMaster(ppos,pposC);
    dx[0]+=pposC[0]-ppos[0];
    dx[1]+=pposC[1]-ppos[1];
    dx[2]+=pposC[2]-ppos[2];
  }
  if (fMatrixGlobalDelta){
    // apply global alignment matrix A-C Side side
    Double_t ppos[3]={x[0],x[1],x[2]};
    Double_t pposC[3]={x[0],x[1],x[2]};
    fMatrixGlobalDelta->LocalToMaster(ppos,pposC);
    Double_t ssign=(roc%36<18) ? 1.:-1.;
    dx[0]+=ssign*(pposC[0]-ppos[0]);
    dx[1]+=ssign*(pposC[1]-ppos[1]);
    dx[2]+=ssign*(pposC[2]-ppos[2]);
  }

  if (fArraySector){
    // apply global alignment matrix
    TGeoMatrix  *mat = (TGeoMatrix*)fArraySector->At(isec);
    if (mat){
      Double_t ppos[3]={x[0],x[1],x[2]};
      Double_t pposC[3]={x[0],x[1],x[2]};
      mat->LocalToMaster(ppos,pposC);
      dx[0]+=pposC[0]-ppos[0];
      dx[1]+=pposC[1]-ppos[1];
      dx[2]+=pposC[2]-ppos[2];
    }
  }
}

void AliTPCCalibGlobalMisalignment::Print(Option_t* /*option*/ ) const {
  //
  // Print function to check the settings 
  //
  printf("%s",GetTitle());  
  printf(" - Trivial Misalignments for calibration purposes: \n");
  printf(" - X-Shift: %1.3f cm, Y-Shift: %1.3f cm, Z-Shift: %1.3f cm \n",fXShift,fYShift,fZShift);
  printf(" - Phi-Rotations: A side: %1.5f rad, C side: %1.5f rad\n",fRotPhiA,fRotPhiC);
  printf(" - dRPhi offsets: A side: %1.5f cm, C side: %1.5f cm\n",fdRPhiOffsetA,fdRPhiOffsetC);
 
 
}

void AliTPCCalibGlobalMisalignment::AddAlign(const  AliTPCCalibGlobalMisalignment & add){
  //
  // Add the alignmnet to current object
  //
  fXShift+=add.fXShift;               // Shift in global X [cm]
  fYShift+=add.fYShift;               // Shift in global Y [cm]
  fZShift+=add.fZShift;               // Shift in global Z [cm]

  fRotPhiA+=add.fRotPhiA;      // simple rotation of A side read-out plane around the Z axis [rad]
  fRotPhiC+=add.fRotPhiC;      // simple rotation of C side read-out plane around the Z axis [rad]
  fdRPhiOffsetA+=add.fdRPhiOffsetA;  // add a constant offset of dRPhi (or local Y) in [cm]: purely for calibration purposes!
  fdRPhiOffsetC+=add.fdRPhiOffsetC;  // add a constant offset of dRPhi (or local Y) in [cm]: purely for calibration purposes!
  //
  // Quadrant alignment
  //
  if (add.fQuadrantQ0) {
    if (fQuadrantQ0) fQuadrantQ0->Add(*(add.fQuadrantQ0));
    if (!fQuadrantQ0) fQuadrantQ0 = (TVectorD*)(add.fQuadrantQ0->Clone());
  }
  if (add.fQuadrantRQ0) {
    if (fQuadrantRQ0) fQuadrantRQ0->Add(*(add.fQuadrantRQ0));
    if (!fQuadrantRQ0) fQuadrantRQ0 = (TVectorD*)(add.fQuadrantRQ0->Clone());
  }
  //
  if (add.fQuadrantQ1) {
    if (fQuadrantQ1) fQuadrantQ1->Add(*(add.fQuadrantQ1));
    if (!fQuadrantQ1) fQuadrantQ1 = (TVectorD*)(add.fQuadrantQ1->Clone());
  }
  if (add.fQuadrantRQ1) {
    if (fQuadrantRQ1) fQuadrantRQ1->Add(*(add.fQuadrantRQ1));
    if (!fQuadrantRQ1) fQuadrantRQ1 = (TVectorD*)(add.fQuadrantRQ1->Clone());
  }
  //
  if (add.fQuadrantQ2) {
    if (fQuadrantQ2) fQuadrantQ2->Add(*(add.fQuadrantQ2));
    if (!fQuadrantQ2) fQuadrantQ2 = (TVectorD*)(add.fQuadrantQ2->Clone());
  }
  if (add.fQuadrantRQ2) {
    if (fQuadrantRQ2) fQuadrantRQ2->Add(*(add.fQuadrantRQ2));
    if (!fQuadrantRQ2) fQuadrantRQ2 = (TVectorD*)(add.fQuadrantRQ2->Clone());
  }
  //
  // Global alignment - use native ROOT representation
  //
  if (add.fMatrixGlobal){
    if (!fMatrixGlobal)  fMatrixGlobal = new TGeoHMatrix(*(add.fMatrixGlobal)); 
    if (fMatrixGlobal)   ((TGeoHMatrix*)fMatrixGlobal)->Multiply(add.fMatrixGlobal); 
  }
  if (add.fArraySector){
    if (!fArraySector) {SetAlignSectors(add.fArraySector);
    }else{
      for (Int_t isec=0; isec<72; isec++){
	TGeoHMatrix *mat0= (TGeoHMatrix*)fArraySector->At(isec);
	TGeoHMatrix *mat1= (TGeoHMatrix*)add.fArraySector->At(isec);
	if (mat0&&mat1) mat0->Multiply(mat1);
      }
    }
  }
}


AliTPCCalibGlobalMisalignment *  AliTPCCalibGlobalMisalignment::CreateOCDBAlign(){
  //
  // Create  AliTPCCalibGlobalMisalignment from OCDB Alignment entry
  // OCDB has to be initialized before in user code
  // All storages (defualt and specific)  and run number 
  //
  AliCDBEntry * entry = AliCDBManager::Instance()->Get("TPC/Align/Data");
  if (!entry){
    printf("Missing alignmnet entry. OCDB not initialized?\n");
    return 0;
  }
  TClonesArray * array = (TClonesArray*)entry->GetObject();
  Int_t entries = array->GetEntries();
  TGeoHMatrix matrixGlobal;
  TObjArray *alignArrayOCDB= new TObjArray(73);  // sector misalignment + global misalignment
  //                                            // global is number 72
  //
  { for (Int_t i=0;i<entries; i++){
      //
      //
      TGeoHMatrix matrix;
      AliAlignObjParams *alignP = (AliAlignObjParams*)array->UncheckedAt(i);
      alignP->GetMatrix(matrix);
      Int_t imod;
      AliGeomManager::ELayerID ilayer;
      alignP->GetVolUID(ilayer, imod);
      if (ilayer==AliGeomManager::kInvalidLayer) {
	alignArrayOCDB->AddAt(matrix.Clone(),72);
	alignP->GetMatrix(matrixGlobal);
      }else{
	Int_t sector=imod;
	if (ilayer==AliGeomManager::kTPC2) sector+=36;
	alignArrayOCDB->AddAt(matrix.Clone(),sector);
      }
    }
  }
  AliTPCCalibGlobalMisalignment *align = new  AliTPCCalibGlobalMisalignment;
  align->SetAlignGlobal(&matrixGlobal);
  align->SetAlignSectors(alignArrayOCDB);
  return align;
}


AliTPCCalibGlobalMisalignment *  AliTPCCalibGlobalMisalignment::CreateMeanAlign(const AliTPCCalibGlobalMisalignment *alignIn){
  //
  // Create new object, disantangle common mean alignmnet and sector alignment
  //
  // 1. Try to get mean alignment
  // 2. Remove mean alignment from sector alignment
  // 3. Create new object
  //
  TObjArray * array = alignIn->GetAlignSectors();
  TObjArray * arrayNew = new TObjArray(72);
  //
  //Get mean transformation
  TGeoHMatrix matrix;  
  {for (Int_t isec=0; isec<72; isec++){
      const TGeoMatrix* cmatrix=(TGeoMatrix*)array->At(isec);
      if (!cmatrix) continue;
      matrix.Multiply(cmatrix);
    }}
  TGeoHMatrix matrixMean(matrix);
  matrixMean.SetDx(matrix.GetTranslation()[0]/72.);
  matrixMean.SetDy(matrix.GetTranslation()[1]/72.);
  matrixMean.SetDz(matrix.GetTranslation()[2]/72.);
  Double_t rotation[12];
  {for (Int_t i=0; i<12; i++) {
      rotation[i]=1.0;
      if (TMath::Abs(matrix.GetRotationMatrix()[i]-1.)>0.1){
      rotation[i]=matrix.GetRotationMatrix()[i]/72.;
      }
    }}
  matrixMean.SetRotation(rotation);
  TGeoHMatrix matrixInv = matrixMean.Inverse();
  //
  {for (Int_t isec=0; isec<72; isec++){
      TGeoHMatrix* amatrix=(TGeoHMatrix*)(array->At(isec)->Clone());
      if (!amatrix) continue;
      amatrix->Multiply(&matrixInv);
      arrayNew->AddAt(amatrix,isec);
    }}
  if (alignIn->GetAlignGlobal()) matrixMean.Multiply((alignIn->GetAlignGlobal()));
  AliTPCCalibGlobalMisalignment *alignOut = new  AliTPCCalibGlobalMisalignment;
  alignOut->SetAlignGlobal(&matrixMean);  
  alignOut->SetAlignSectors(arrayNew);  
  /*
    Checks transformation:   
    AliTPCCalibGlobalMisalignment *  alignIn =  AliTPCCalibGlobalMisalignment::CreateOCDBAlign()
    AliTPCCalibGlobalMisalignment * alignOut =  AliTPCCalibGlobalMisalignment::CreateMeanAlign(alignIn)
    alignOutM= (AliTPCCalibGlobalMisalignment*)alignOut->Clone();
    alignOutS= (AliTPCCalibGlobalMisalignment*)alignOut->Clone();
    alignOutS->SetAlignGlobal(0);  
    alignOutM->SetAlignSectors(0);  
    //
    AliTPCCorrection::AddVisualCorrection(alignOut,0);
    AliTPCCorrection::AddVisualCorrection(alignOutM,1);
    AliTPCCorrection::AddVisualCorrection(alignOutS,2);
    AliTPCCorrection::AddVisualCorrection(alignIn,3);
    
    TF1 f0("f0","AliTPCCorrection::GetCorrSector(x,85,0.9,1,0)",0,18);
    TF1 f1("f1","AliTPCCorrection::GetCorrSector(x,85,0.9,1,1)",0,18);
    TF1 f2("f2","AliTPCCorrection::GetCorrSector(x,85,0.9,1,2)",0,18);
    TF1 f3("f3","AliTPCCorrection::GetCorrSector(x,85,0.9,1,3)",0,18);
    f0->SetLineColor(1);
    f1->SetLineColor(2);
    f2->SetLineColor(3);
    f3->SetLineColor(4);
    f0->Draw();
    f1->Draw("same");
    f2->Draw("same");
    f3->Draw("same");

    TF2 f2D("f2D","AliTPCCorrection::GetCorrSector(x,y,0.9,1,0)-AliTPCCorrection::GetCorrSector(x,y,0.9,1,3)",0,18,85,245);
  */
  return alignOut;
}


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