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

/* $Id$ */

//////////////////////////////////////////////////////////////////////////
//   Class to convert survey tables in alignment objects
//   for SSD and SDD
//   origin: Marco Van Leeuwen (m.vanleeuwen1@uu.nl)
//           Panos.Christakoglou (Panos.Christakoglou@cern.ch)
//           Martin Poghosyan (Martin.Poghosyan@to.infn.it)
//////////////////////////////////////////////////////////////////////////

#include "TGeoManager.h"
#include "TGeoPhysicalNode.h"
#include "TMatrixD.h"
#include "TMath.h"

#include "AliITSSurveyToAlign.h"
#include "AliSurveyPoint.h"
#include "AliAlignObjParams.h"
#include "AliGeomManager.h"

#include "AliLog.h"

#include "AliCDBManager.h"

#include "AliITSgeomTGeo.h"


//#include "dataSDDladder.h"
ClassImp(AliITSSurveyToAlign)

const Double_t AliITSSurveyToAlign::fgkLocR[6][3]={{ 3.24,0.21905,-2.4},
                                                   { 3.58,0.21905, 0. },
						   { 3.24,0.21905,+2.4},
						   {-3.24,0.21905,+2.4},
						   {-3.58,0.21905, 0. },
						   {-3.24,0.21905,-2.4}};

const Double_t AliITSSurveyToAlign::fgkLocL[6][3]={{-3.24,0.21905, 2.4},
						   {-3.58,0.21905, 0. },
						   {-3.24,0.21905,-2.4},
						   { 3.24,0.21905,-2.4},
						   { 3.58,0.21905, 0. },
						   { 3.24,0.21905, 2.4}};

const Double_t kRadToDeg = 180./TMath::Pi();

//________________________________________________________________________
AliITSSurveyToAlign::AliITSSurveyToAlign(Int_t run, Int_t repModSDD, Int_t repModVerSDD, Int_t repLadSDD, Int_t repLadVerSDD, Int_t repModSSD, Int_t repModVerSSD, Int_t repLaddSSD, Int_t repLaddVerSSD) :
  AliSurveyToAlignObjs(),
  fRun(run),
  fSDDModuleRepNumber(repModSDD),
  fSDDModuleRepVersion(repModVerSDD),
  fSDDLadderRepNumber(repLadSDD),
  fSDDLadderRepVersion(repLadVerSDD),
  fSSDModuleRepNumber(repModSSD),
  fSSDModuleRepVersion(repModVerSSD),
  fSSDLadderRepNumber(repLaddSSD),
  fSSDLadderRepVersion(repLaddVerSSD)
 {
   // Standard constructor
  for(Int_t i=0; i<260; i++)
    {
      fuidSDDm[i]= 0;
      fsymnameSDDm[i]=TString("");
      fxSDDm[i]=0;
      fySDDm[i]=0;
      fzSDDm[i]=0;
      fpsiSDDm[i]=0;
      ftetSDDm[i]=0;
      fphiSDDm[i]=0;
      if(i>35) continue;
      fuidSDDl[i]=0;
      fsymnameSDDl[i]=TString("");
      fxSDDl[i]=0;
      fySDDl[i]=0;
      fzSDDl[i]=0;
      fpsiSDDl[i]=0;
      ftetSDDl[i]=0;
      fphiSDDl[i]=0;
    }

   //   ftypeSDDlad=0;
  //
  //  default constructor
  //  Arguments are report numbers for survey data. 
  //  The defaults point to reports from detector construction
  // 
}

//_________________________________________________________________________
AliITSSurveyToAlign::AliITSSurveyToAlign(const AliITSSurveyToAlign &align) :
  AliSurveyToAlignObjs(align),
  fRun(align.fRun),
  fSDDModuleRepNumber(align.fSDDModuleRepNumber),
  fSDDModuleRepVersion(align.fSDDModuleRepVersion),
  fSDDLadderRepNumber(align.fSDDLadderRepNumber),
  fSDDLadderRepVersion(align.fSDDLadderRepVersion),
  fSSDModuleRepNumber(align.fSSDModuleRepNumber),
  fSSDModuleRepVersion(align.fSSDModuleRepVersion),
  fSSDLadderRepNumber(align.fSSDLadderRepNumber),
  fSSDLadderRepVersion(align.fSSDLadderRepVersion)
{
  //
  //  copy constructor 
  //
  for(Int_t i=0; i<260; i++)
    {
      fuidSDDm[i]= align.fuidSDDm[i];
      fsymnameSDDm[i]=TString(align.fsymnameSDDm[i]);
      fxSDDm[i]=align.fxSDDm[i];
      fySDDm[i]=align.fySDDm[i];
      fzSDDm[i]=align.fzSDDm[i];
      fpsiSDDm[i]=align.fpsiSDDm[i];
      ftetSDDm[i]=align.ftetSDDm[i];
      fphiSDDm[i]=align.fphiSDDm[i];
      if(i>35) continue;
      fuidSDDl[i]=align.fuidSDDl[i];
      fsymnameSDDl[i]=TString(align.fsymnameSDDl[i]);
      fxSDDl[i]=align.fxSDDl[i];
      fySDDl[i]=align.fySDDl[i];
      fzSDDl[i]=align.fzSDDl[i];
      fpsiSDDl[i]=align.fpsiSDDl[i];
      ftetSDDl[i]=align.ftetSDDl[i];
      fphiSDDl[i]=align.fphiSDDl[i];
    }

}

//__________________________________________________________________________
AliITSSurveyToAlign & AliITSSurveyToAlign::operator =(const AliITSSurveyToAlign& align)  {
  //
  // assignment operator
  //
  this->~AliITSSurveyToAlign();
  new(this) AliITSSurveyToAlign(align);
  return *this;
}

//__________________________________________________________________________
AliITSSurveyToAlign::~AliITSSurveyToAlign() {
  //
  // destructor
  //
}

//______________________________________________________________________
void AliITSSurveyToAlign::Run() { 
  //
  // Runs the full chain
  // User should call StoreAlignObjToFile or StoreAlignObjToCDB afterwards to 
  // store output (not included here to leave the choice between the two)
  //

  // Load ideal geometry from the OCDB
  AliCDBManager *cdb = AliCDBManager::Instance();
  cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
  cdb->SetRun(fRun);
  AliGeomManager::LoadGeometry();

  if(!CreateAlignObjs()) AliError("Construction of alignment objects from survey failed!");
} 

//______________________________________________________________________
Bool_t AliITSSurveyToAlign::CreateAlignObjs() { 
  // Fill the array of alignment objects with alignment objects
  // from survey for all three subdetectors
  //

  //for SPD
  CreateAlignObjDummySPD();

  ///////////////////////////
  // for SDD
  if(!LoadSurveyFromAlienFile("ITS", fSDDModuleRepNumber, fSDDModuleRepVersion)){
      AliError("Loading of alignment objects from survey for SDD modules failed!");
      return kFALSE;
  }
  CreateAlignObjSDDModules();

  if(!LoadSurveyFromAlienFile("ITS", fSDDLadderRepNumber, fSDDLadderRepVersion)){
      AliError("Loading of alignment objects from survey for SDD ladder failed!");
      return kFALSE;
  }
  CreateAlignObjSDDLadders();
  if(!ApplyAlignObjSDD()) return kFALSE;


  // for SSD ladders
  if(!LoadSurveyFromAlienFile("ITS", fSSDLadderRepNumber, fSSDLadderRepVersion)){
      AliError("Loading of alignment objects from survey for SSD ladders failed!");
      return kFALSE;
  }
  CreateAlignObjSSDLadders();

  // for SSD modules
  if(!ApplyAlignObjSSDLadders()) return kFALSE; // needed to build correctly the objects for SSD modules
  if(!LoadSurveyFromAlienFile("ITS", fSSDModuleRepNumber, fSSDModuleRepVersion)){
      AliError("Loading of alignment objects from survey for SSD modules failed!");
      return kFALSE;
  }
  CreateAlignObjSSDModules();

  return kTRUE;
}

//______________________________________________________________________
void AliITSSurveyToAlign::CreateAlignObjDummySPD(){
  // 
  // Create alignObjs for SPD
  //    For the moment, uses 0,0,0,0,0,0
  //
  for(Int_t imod = 0; imod < 240; imod++) {
    Int_t ilayer = (imod < 80) ? AliGeomManager::kSPD1 : AliGeomManager::kSPD2;
    Int_t imodule = (imod < 80) ? imod : imod - 80;

    Int_t uid = AliGeomManager::LayerToVolUID(ilayer,imodule);
    const Char_t *symname = AliGeomManager::SymName(uid);

    new((*fAlignObjArray)[imod]) AliAlignObjParams(symname, uid, 0., 0., 0., 0., 0., 0., kTRUE);
  }//module loop

}
Bool_t AliITSSurveyToAlign::ApplyAlignObjSDD()
{
  // Apply alignment for SDD
  Int_t applied=0;

  for(Int_t iLadd=0; iLadd<36; iLadd++)
    {
      new((*fAlignObjArray)[240+iLadd]) AliAlignObjParams(fsymnameSDDl[iLadd].Data(), fuidSDDl[iLadd], 
					       fxSDDl[iLadd]  , fySDDl[iLadd]  , fzSDDl[iLadd]  , 
					       fpsiSDDl[iLadd], ftetSDDl[iLadd], fphiSDDl[iLadd], kFALSE);
      //      new((*fAlignObjArray)[240+iLadd]) AliAlignObjParams(fsymnameSDDl[iLadd].Data(), fuidSDDl[iLadd], 
      //			       fxSDDl[iLadd]  , fySDDl[iLadd]  , fzSDDl[iLadd]  , 
      //			       0, 0, 0, kFALSE);

      AliAlignObjParams* ap = dynamic_cast<AliAlignObjParams*> (fAlignObjArray->UncheckedAt(240+iLadd));
      //      printf("%s  %f  %f  %f\n",fxSDDl[iLadd], fsymnameSDDl[iLadd].Data(), fySDDl[iLadd]  , fzSDDl[iLadd]);
      //printf("%d  %f\n", iLadd, fzSDDl[iLadd]);

      if(ap != 0 && fsymnameSDDl[iLadd].Contains("SDD") && fsymnameSDDl[iLadd].Contains("Ladder"))
	{
	  //	  printf("%d  %s  %d\n",240+iLadd, fsymnameSDDl[iLadd].Data(),fuidSDDl[iLadd] );

	  if(!ap->ApplyToGeometry()) return kFALSE;
	  applied++;
	}
      else
	{
	  AliError("SDD Ladder array is not initialized correctly");
	  return kFALSE;
	}
    }

  for(Int_t iMod=0; iMod<260; iMod++)
    {
      //           printf("%d s=%s  x= %f  y= %f  z= %f\n",240+36+iMod, fsymnameSDDm[iMod].Data(),fxSDDm[iMod], fySDDm[iMod], fzSDDm[iMod] );

      new((*fAlignObjArray)[240+36+iMod]) AliAlignObjParams(fsymnameSDDm[iMod].Data(), fuidSDDm[iMod], 
					     fxSDDm[iMod]  , fySDDm[iMod]  , fzSDDm[iMod], 
					     fpsiSDDm[iMod], ftetSDDm[iMod], fphiSDDm[iMod], kFALSE);

     
          if(!fsymnameSDDm[iMod].Contains("SDD") || !fsymnameSDDm[iMod].Contains("Sensor"))
	    {
	  AliError("SDD Module array is not initialized correctly\n");
	  return kFALSE;
	    }

    }

  AliInfo(Form(" %d alignment objects for SDD ladders applied to geometry.",applied));
  return kTRUE;
}

//______________________________________________________________________
void AliITSSurveyToAlign::CreateAlignObjSDDModules(){
  //
  // Create alignment objects for SDD
  // Called by Run()
  //
  Int_t uid = 0;
  const char* symname = 0;
  AliSurveyPoint* pt = 0;
 
  Int_t iModuleIndex=240;
  Int_t iModule0=0;
  Int_t iLadder0=0;
  Int_t iLayer0=3;
  Int_t nModules=0;

  if (fSurveyPoints == 0 || fSurveyPoints->GetEntries() == 0) {
    AliWarning("SDD survey data are not available, using zero values");
    CreateAlignObjDummySDDModules();
    return;
  }

  for(Int_t imod = 1; imod < fSurveyPoints->GetEntries(); imod++) {
    pt = (AliSurveyPoint*) fSurveyPoints->At(imod);
    if(!pt) continue;

    Int_t iLayer, iLadder, iModule, iPoint;
    ReadPointNameSDD(pt->GetName(),iLayer, iLadder, iModule, iPoint);

      Double_t x =pt->GetX();
      Double_t y =pt->GetY();
      Double_t z =pt->GetZ();
      Double_t xE=pt->GetPrecisionX();
      Double_t yE=pt->GetPrecisionY();
      Double_t zE=pt->GetPrecisionZ();
  
         if(iLayer==3 && iLadder==2)
      	{
      	  if(iPoint<3) iPoint+=3;
      	  else if(iPoint>2) iPoint-=3;
      	  iModule=TMath::Abs(iModule - 5);
      	  x=500-x;
      	  y*=-1;
      	}
      

      iModuleIndex = AliITSgeomTGeo::GetModuleIndex(iLayer0,iLadder0+1,iModule0+1);
      Int_t iModuleIndex1 = AliITSgeomTGeo::GetModuleIndex(iLayer,iLadder+1,iModule+1);

    if(iModuleIndex==iModuleIndex1)
    {
      fSDDmeP[iPoint][0]=x;
      fSDDmeP[iPoint][1]=y;
      fSDDmeP[iPoint][2]=z;
      fSDDmeP[iPoint][3]=xE;
      fSDDmeP[iPoint][4]=yE;
      fSDDmeP[iPoint][5]=zE;
      fSDDisMe[iPoint]=kTRUE;

      if(iLayer==3) uid = AliGeomManager::LayerToVolUID(iLayer0,iModuleIndex-240);
      if(iLayer==4) uid = AliGeomManager::LayerToVolUID(iLayer0,iModuleIndex-324);
      symname = AliGeomManager::SymName(uid);
      GetIdPosSDD(uid,iLayer0, iModule0, iPoint);
      nModules++;


      //      printf("%s\n",pt->GetName());
      //      printf("Me: %7.4f  %7.4f  %7.4f\n", fSDDmeP[iPoint][0], fSDDmeP[iPoint][1], fSDDmeP[iPoint][2]);
      //      printf("Id: %7.4f  %7.4f  %7.4f\n", fSDDidP[iPoint][0], fSDDidP[iPoint][1], fSDDidP[iPoint][2]);
    }

    //    cout << "Points red module " << imod << endl;
    if((iModuleIndex!=iModuleIndex1)||(imod==(fSurveyPoints->GetEntries()-1)))
    {
      ConvertToRSofModulesAndRotSDD(iLayer0, iModule0);

      Double_t tet = 0.;
      Double_t psi = 0.;
      Double_t phi = 0.;
      Double_t x0  = 0.;
      Double_t y0  = 0.;
      Double_t z0  = 0.;

      if(nModules==2) CalcShiftSDD(x0,y0,z0);
      if(nModules>2)   CalcShiftRotSDD(tet, psi, phi, x0, y0, z0);
      //          printf("%s  %d  %f  %f  %f  %f  %f  %f\n",symname, uid, x0/10., y0/10., z0/10., psi, tet, phi);
      tet*=kRadToDeg;
      psi*=kRadToDeg;
      phi*=kRadToDeg;
//      cout << "Allocate alignobjparams " << imod << endl;
//      new((*fAlignObjArray)[iModuleIndex]) AliAlignObjParams(symname, uid, x0/10., y0/10., z0/10., psi, tet, phi, kFALSE);
//       printf("INDEX:   Module: %d\n",iModuleIndex);


      fsymnameSDDm[iModuleIndex-240]=TString(symname);
      fuidSDDm[iModuleIndex-240]=uid;
      fxSDDm[iModuleIndex-240]=x0/10.;
      fySDDm[iModuleIndex-240]=y0/10.;
      fzSDDm[iModuleIndex-240]=z0/10.;
      fpsiSDDm[iModuleIndex-240]=psi;
      ftetSDDm[iModuleIndex-240]=tet;
      fphiSDDm[iModuleIndex-240]=phi;
      //      new((*fAlignObjArray)[36+iModuleIndex]) AliAlignObjParams(fsymnameSDDm[iModuleIndex-240].Data(), fuidSDDm[iModuleIndex-240], 
      //					     fxSDDm[iModuleIndex-240], fySDDm[iModuleIndex-240], fzSDDm[iModuleIndex-240], 
      //					     fpsiSDDm[iModuleIndex-240], ftetSDDm[iModuleIndex-240], fphiSDDm[iModuleIndex-240], kFALSE);
      iModule0=iModule;
      iLayer0=iLayer;
      iLadder0=iLadder;
      nModules=0;
      //      iModuleIndex = AliITSgeomTGeo::GetModuleIndex(iLayer,iLadder+1,iModule+1);
      for(Int_t i=0; i<6;i++) fSDDisMe[i]=kFALSE;
      if(imod!=(fSurveyPoints->GetEntries()-1)) imod--;
    }
  }//module loop
//  printf("done\n");
}

//______________________________________________________________________
void AliITSSurveyToAlign::CreateAlignObjDummySDDModules(){
  // 
  // Create empty alignment objects
  // Used when fSurveySDD == 0
  //
  for(Int_t imod = 0; imod < 260; imod++) {

    Int_t ilayer = (imod < 84) ? AliGeomManager::kSDD1 : AliGeomManager::kSDD2;
    Int_t imodule = (imod < 84) ? imod : imod - 84;

    Int_t uid = AliGeomManager::LayerToVolUID(ilayer,imodule);
    const Char_t *symname = AliGeomManager::SymName(uid);

      fsymnameSDDm[imod]=TString(symname);
      fuidSDDm[imod]=uid;
      fxSDDm[imod]=0.;
      fySDDm[imod]=0.;
      fzSDDm[imod]=0.;
      fpsiSDDm[imod]=0.;
      ftetSDDm[imod]=0.;
      fphiSDDm[imod]=0.;

    //    new((*fAlignObjArray)[imod+36+240]) AliAlignObjParams(symname, uid, 0., 0., 0., 0., 0., 0., kTRUE);
  }//module loop
}

//______________________________________________________________________
void AliITSSurveyToAlign::CreateAlignObjSSDModules(){
  //
  // Create alignment objects for SSD modules
  // Objects for SSD ladders must be applied to geometry first
  //
  Double_t sx, sz;
  const Float_t kMu2Cm = 1e-4;
  const Float_t kSensLength = 7.464;
  const Int_t kSSDMODULES = 1698;

  if (fSurveyPoints == 0 || fSurveyPoints->GetEntries() == 0) {
    AliWarning("SSD module survey data not available; using dummy values");
    CreateAlignObjDummySSDModules();
    return;
  }

  // First do module-by-module

  for(Int_t imod = 500; imod < kSSDMODULES + 500; imod++) {
    Int_t iLayer, iLadder, iLaddMod;
    AliITSgeomTGeo::GetModuleId(imod,iLayer,iLadder,iLaddMod);  // returns 1-based numbers
 
    TString pname="ITS/SSD";
    pname += iLayer-1;
    pname += "/Ladder";
    pname += iLadder-1;
    pname += "/Sensor";
    pname += iLaddMod-1;
    AliSurveyPoint *pt1 = (AliSurveyPoint*) fSurveyPoints->FindObject(pname+"/Point0");
    AliSurveyPoint *pt2 = (AliSurveyPoint*) fSurveyPoints->FindObject(pname+"/Point1");
    if(!pt1 || !pt2) {
      AliWarning(Form("No Survey points for iladd %d imod %d",iLadder,iLaddMod));
      continue;
    }

    sx = 0.5*(pt1->GetX() + pt2->GetX()) * kMu2Cm;
    sz = 0.5*(pt1->GetZ() + pt2->GetZ()) * kMu2Cm;

    // Minus sign to change local coordinate convention 
    Float_t theta = -(pt2->GetZ() - pt1->GetZ())*kMu2Cm/kSensLength;

    theta *= kRadToDeg;
    Int_t iLayMod = imod - 500;
    if (iLayer == 6)
      iLayMod -= 748;
    Int_t uid = AliGeomManager::LayerToVolUID(iLayer,iLayMod);

    const Char_t *symname = AliGeomManager::SymName(uid);
    if (pname.CompareTo(symname) != 0)
      AliWarning(Form("Mapping mismatch survey point %s volume name %s",pname.Data(),symname));
    /*
    if (imod >= 676 && imod <= 697) {
      cout << "ilayer " << iLayer << " imod " << imod 
	   << " uid " << uid << " name " << symname 
	   << " survey shift " << sx << " " << 0 << " " << sz << endl
	   << " theta " << theta << endl;
    }
    */
    new((*fAlignObjArray)[imod+36]) AliAlignObjParams(symname, uid, sx, 0, sz, 0., theta, 0., kFALSE);
  } //module loop
}

//______________________________________________________________________
Bool_t AliITSSurveyToAlign::ApplyAlignObjSSDLadders(){
  //
  //   Apply alignment objects for SSD ladders to geometry, needed to correctly
  //   build alignment objects for SSD modules
  // 
  Int_t applied=0;

  for(Int_t jj=0; jj<fAlignObjArray->GetEntriesFast(); jj++)
  {
      AliAlignObjParams* ap = dynamic_cast<AliAlignObjParams*> (fAlignObjArray->UncheckedAt(jj));
      if(ap) 
      {
	  TString sName(ap->GetSymName());
	  if(sName.Contains("SSD") && sName.Contains("Ladder"))
	  {
	      if(!ap->ApplyToGeometry()) return kFALSE;
	      applied++;
	  }
      }
  }
  AliInfo(Form(" %d alignment objects for SSD ladders applied to geometry.",applied));

  return kTRUE;
}
//______________________________________________________________________
/*
Bool_t AliITSSurveyToAlign::ApplyAlignObjSDDLadders(){
  //
  //   Apply alignment objects for SDD ladders to geometry, needed to correctly
  //   build alignment objects for SDD modules
  // 
  Int_t applied=0;

  for(Int_t jj=0; jj<fAlignObjArray->GetEntriesFast(); jj++)
  {
      AliAlignObjParams* ap = dynamic_cast<AliAlignObjParams*> (fAlignObjArray->UncheckedAt(jj));
      if(ap) 
      {
	  TString sName(ap->GetSymName());
//	  printf("%s\n",sName.Data());
	  if(sName.Contains("SDD") && sName.Contains("Ladder"))
	  {
	      if(!ap->ApplyToGeometry()) return kFALSE;
	      applied++;
	  }
      }
  }
  AliInfo(Form(" %d alignment objects for SDD ladders applied to geometry.",applied));

  return kTRUE;
}
*/
//______________________________________________________________________
void AliITSSurveyToAlign::CreateAlignObjDummySDDLadders()
{
  // 
  // Create empty alignment objects
  TString sddName = "ITS/SDD";
  Int_t iLadd = 0;

  for (Int_t ilayer =  0; ilayer <  2; ilayer ++)
    {
    Int_t nLadder = 14;              // layer SDD1
    if (ilayer == 1)  nLadder = 22;  // layer SDD2
    for (Int_t iLadder = 0; iLadder < nLadder; iLadder++) {
      TString ladName = sddName;
      ladName += (ilayer+2);      
      ladName += "/Ladder";
      ladName += iLadder;
      fsymnameSDDl[iLadd]=TString(ladName);
      fuidSDDl[iLadd]=0;
      fxSDDl[iLadd]=0;
      fySDDl[iLadd]=0;
      fzSDDl[iLadd]=0;
      fpsiSDDl[iLadd]=0;
      ftetSDDl[iLadd]=0;
      fphiSDDl[iLadd]=0;
      iLadd++;
    }  // Ladder loop
  }  // Layer loop

}



void AliITSSurveyToAlign::CreateAlignObjSDDLadders(){
  //
  //   Alignment objects from survey for SDD ladders
  // 
  const Float_t kLaddLenz[2] ={500, 650};  // Layer 2,3: distance between mouting points along z (mm)
  const Float_t kLaddLenx    = 28 ;        // Layer 2,3: distance between mouting points along x (mm)

  TString sddName = "ITS/SDD";

 TObjArray *ladderPoints = fSurveyPoints;  
  if (ladderPoints == 0 || ladderPoints->GetEntries() == 0) {
    AliWarning("No SDD Ladder alignment points found. Skipping");
    return;
  }
  if (ladderPoints->GetEntries()!= 72) {
    AliWarning(Form("Unexpected number of survey points %d, should be 72",ladderPoints->GetEntries())); 
  }
 

/*
TAlien::Connect("alien://");
gSystem->Load("libXMLParser.so");
.x loadlibs.C 

AliCDBManager *cdb = AliCDBManager::Instance();
cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
cdb->SetRun(0);
AliGeomManager::LoadGeometry();
AliITSSurveyToAlign *a = new AliITSSurveyToAlign(); 

a->CreateAlignObjSDDLadders()                     
a->ApplyAlignObjSDDLadders();

a->LoadSurveyFromAlienFile("ITS", 845069, 1);
a->CreateAlignObjSDD();

a->CreateAlignObjs();
*/

  Int_t iLadd = 0;

  for (Int_t ilayer =  0; ilayer <  2; ilayer ++)
    {
    Int_t nLadder = 14;              // layer SDD1
    if (ilayer == 1)  nLadder = 22;  // layer SDD2

    for (Int_t iLadder = 0; iLadder < nLadder; iLadder++) {
      TString ladName = sddName;
      ladName += (ilayer+2);      
      ladName += "/Ladder";
      ladName += iLadder;


      /////////////////////////////////////////////////////////////////////////////
      AliSurveyPoint *p24 =  (AliSurveyPoint*) ladderPoints->FindObject(ladName+"/RB24");
      AliSurveyPoint *p26 =  (AliSurveyPoint*) ladderPoints->FindObject(ladName+"/RB26");
      if (p24 == 0) {
	AliWarning(Form("Cannot find RB24 side point for ladder %s",ladName.Data()));
	continue;
      }
      if (p26 == 0) {
	AliWarning(Form("Cannot find RB26 side point for ladder %s",ladName.Data()));
	continue;
      }

      TString tmpStr;
      tmpStr.Insert(0,p24->GetName(),3);
      Int_t ladder = tmpStr.Atoi();
      tmpStr="";
      tmpStr.Insert(0,p26->GetName(),3);
      if (tmpStr.Atoi() != ladder) 
	AliError(Form("Survey data file error. Expect pairs of RB24, RB26 points. Got ladders %d %d",ladder,tmpStr.Atoi()));


      Double_t x24, y24, z24;
      Double_t x26, y26, z26;

      x24=p24->GetX();
      y24=p24->GetY();
      z24=p24->GetZ();
      x26=p26->GetX();
      y26=p26->GetY();
      z26=p26->GetZ();

      // for top ladders: RS(local) = RS(global) + Y_shift 
      // rot around z-axis
      Double_t phi = 0;  // Not measured
      // rot around y-axis
      Double_t theta = 0;
      // rot around x-axis
      Double_t psi = 0;


      psi=TMath::ATan((y26-y24)/(kLaddLenz[ilayer]+z24-z26));
      Double_t tgtet0 = kLaddLenx/kLaddLenz[ilayer];
      Double_t tgtet1 = (x24-x26+kLaddLenx)/(kLaddLenz[ilayer]+z24-z26);
      theta=TMath::ATan((tgtet1-tgtet0)/(1+tgtet1*tgtet0));

      Double_t x0=x24-theta*kLaddLenz[ilayer]/2;
      Double_t y0=y24+psi*kLaddLenz[ilayer]/2;
      Double_t z0=z24+theta*kLaddLenx/2;

      theta*= kRadToDeg;
      psi*= kRadToDeg;

      // local delta transformation by passing 3 shifts (in centimeters) and 3 angles (expressed in degrees)    
      //      new((*fAlignObjArray)[500+1698+144+iLadd]) AliAlignObjParams(ladName,0,drLoc[0],drLoc[1],drLoc[2],psi,theta,phi,kFALSE);
      fsymnameSDDl[iLadd]=TString(ladName);
      fuidSDDl[iLadd]=0;
      fxSDDl[iLadd]=x0/10.;
      fySDDl[iLadd]=y0/10.;
      fzSDDl[iLadd]=z0/10.;
      fpsiSDDl[iLadd]=psi;
      ftetSDDl[iLadd]=theta;
      fphiSDDl[iLadd]=phi;
      //      new((*fAlignObjArray)[240+iLadd]) AliAlignObjParams(fsymnameSDDl[iLadd].Data(), fuidSDDl[iLadd], 
      //					       fxSDDl[iLadd]  , fySDDl[iLadd]  , fzSDDl[iLadd]  , 
      //					       fpsiSDDl[iLadd], ftetSDDl[iLadd], fphiSDDl[iLadd], kFALSE);
      //       printf("INDEX:   Ladder: %d\n",iLadd);
      iLadd++;
    }  // Ladder loop
  }  // Layer loop
}
////////////////////////////////////////////////////////////////////////////////////////



//______________________________________________________________________
void AliITSSurveyToAlign::CreateAlignObjSSDLadders(){
  //
  //   Alignment objects from survey for SSD ladders (Torino data)
  // 
  const Float_t kLaddLen5 = 90.27;  // Layer 5: distance between mouting points
  const Float_t kLaddLen6 = 102.0;  // Layer 6: distance between mouting points
  const Float_t zLag = 2.927;         // Distance between V mounting point and Zloc = 0
                                    // = half ladder length - nom z-position of ladder from gGeoManager
  const Float_t kMu2Cm = 1e-4;

  TString ssdName = "ITS/SSD";

  TObjArray *ladderPoints = fSurveyPoints;  
  if (ladderPoints == 0 || ladderPoints->GetEntries() == 0) {
    AliWarning("No SSD Ladder alignment points found. Skipping");
    return;
  }
  if (ladderPoints->GetEntries()!= 2*(34+38)) {
    AliWarning(Form("Unexpected number of survey points %d, should be 144",ladderPoints->GetEntries())); 
  }
  Int_t iLadd = 0;
  for (Int_t ilayer =  4; ilayer <=  5; ilayer ++) {
    Int_t nLadder = 34; // layer 5
    if (ilayer == 5)
      nLadder = 38;     // layer 6

    for (Int_t iLadder = 0; iLadder < nLadder; iLadder++) {
      TString ladName = ssdName;
      ladName += ilayer;
      ladName += "/Ladder";
      ladName += iLadder;

      AliSurveyPoint *vPoint =  (AliSurveyPoint*) ladderPoints->FindObject(ladName+"/V");
      AliSurveyPoint *qPoint =  (AliSurveyPoint*) ladderPoints->FindObject(ladName+"/Q");
      if (vPoint == 0) {
	AliWarning(Form("Cannot find V side point for ladder %s",ladName.Data()));
	continue;
      }
      if (qPoint == 0) {
	AliWarning(Form("Cannot find Q side point for ladder %s",ladName.Data()));
	continue;
      }

      TString tmpStr;
      tmpStr.Insert(0,vPoint->GetName(),3);
      Int_t ladder = tmpStr.Atoi();
      tmpStr="";
      tmpStr.Insert(0,qPoint->GetName(),3);
      if (tmpStr.Atoi() != ladder) 
	AliError(Form("Survey data file error. Expect pairs of V,Q points. Got ladders %d %d",ladder,tmpStr.Atoi()));

      // Note: file gives meas-nom in local offline coordinates, 
      // ie. local z = - global z and local x = - global x (for ladder 508, i.e. top ladder)
      Double_t dxLoc = vPoint->GetX() * kMu2Cm;
      Double_t dyLoc = vPoint->GetY() * kMu2Cm;
      Double_t dzLoc = vPoint->GetZ() * kMu2Cm;

      // rot around z-axis
      Double_t phi = 0;  // Not measured
      // rot around y-axis
      Double_t theta = 0;
      Double_t psi = 0;

      // Note: local psi = -global psi, psi = atan(-(y(z1) - y(z0)) / (z1-z0))  
      // local theta = global theta = atan(dx/dz) 
      // V side is A side is large global z 
      // Q side is C side is large local z


      if (ladder >= 600) {
	theta = TMath::ATan((qPoint->GetX() - vPoint->GetX())*kMu2Cm/kLaddLen6);
	psi = TMath::ATan((vPoint->GetY() - qPoint->GetY())*kMu2Cm/kLaddLen6);
      }
      else {
	theta = TMath::ATan((qPoint->GetX() - vPoint->GetX())*kMu2Cm/kLaddLen5);
	psi = TMath::ATan((vPoint->GetY() - qPoint->GetY())*kMu2Cm/kLaddLen5);
      } 

      // Move along ladder to local Z = 0 point
      dxLoc += zLag*theta;
      dyLoc -= zLag*psi;

      // Convert to degrees
      theta *= kRadToDeg;
      psi *= kRadToDeg;
      AliDebug(1,Form("ladname %f %f %f %f %f %f ",dxLoc,dyLoc,dzLoc,psi,theta,phi));  
      
      new((*fAlignObjArray)[500+36+1698+iLadd]) AliAlignObjParams(ladName,0,dxLoc,dyLoc,dzLoc,psi,theta,phi,kFALSE);

      iLadd++;
    }  // Ladder loop
  }  // Layer loop
}
////////////////////////////////////////////////////////////////////////////////////////

//______________________________________________________________________
void AliITSSurveyToAlign::CreateAlignObjDummySSDModules(){
  // 
  // Create empty alignment objects
  // Used when fSurveySSD == 0
  //
  for(Int_t imod = 0; imod < 1698; imod++) {
    Int_t ilayer = (imod < 748) ? AliGeomManager::kSSD1 : AliGeomManager::kSSD2;
    Int_t imodule = (imod < 748) ? imod : imod - 748;

    Int_t uid = AliGeomManager::LayerToVolUID(ilayer,imodule);
    const Char_t *symname = AliGeomManager::SymName(uid);

    new((*fAlignObjArray)[500+36+imod]) AliAlignObjParams(symname, uid, 0., 0., 0., 0., 0., 0., kTRUE);
  }//module loop
}


//______________________________________________________________________
void AliITSSurveyToAlign::GetIdPosSDD(Int_t uid, Int_t layer, Int_t module, Int_t iPoint)
{
  // 
  //    Utility function used by CreateAlignObjSDD
  // 
  TGeoHMatrix gMod = *AliGeomManager::GetMatrix(uid); //global matrix of sensor
  TGeoPNEntry* pne = gGeoManager->GetAlignableEntryByUID(uid);
  // TString ladderPath = AliGeomManager::SymName(uid);
  TString ladderPath(pne->GetTitle());
  if(ladderPath.EndsWith("/")) ladderPath.Remove(TString::kTrailing,'/');
  ladderPath.Remove(ladderPath.Last('/'));
  //  ladderPath.Remove(ladderPath.Last('/'));
  gGeoManager->cd(ladderPath.Data());
  TGeoHMatrix gLad = *gGeoManager->GetCurrentMatrix(); // global matrix of ladder


  TGeoHMatrix rel = gMod; // to equal relative matrix ladder to sensor.
  TGeoHMatrix invgLad = gLad.Inverse();
  rel.MultiplyLeft(&invgLad);
  TGeoRotation* rr = new TGeoRotation("rr",90,90,0,0,90,180);
  TGeoCombiTrans* ct = 0;
  if(layer==3) ct= new TGeoCombiTrans(25.,0.,0.,rr);
  if(layer==4) ct= new TGeoCombiTrans(25.+7.5,0.,0.,rr);

  rel.MultiplyLeft(ct);
  
  if((layer==3)&&(module<3)) rel.LocalToMaster(fgkLocR[iPoint],fSDDidP[iPoint]);
  if((layer==3)&&(module>2)) rel.LocalToMaster(fgkLocL[iPoint],fSDDidP[iPoint]);
  if((layer==4)&&(module<4)) rel.LocalToMaster(fgkLocR[iPoint],fSDDidP[iPoint]);
  if((layer==4)&&(module>3)) rel.LocalToMaster(fgkLocL[iPoint],fSDDidP[iPoint]);

  for(Int_t i=0; i<3; i++) fSDDidP[iPoint][i]*=10; 
  fSDDidP[iPoint][2]-=0.5205;

  //  if(ladderPath.Data(),"/ALIC_1/ITSV_1/ITSsddLayer3_1/ITSsddLadd_3");
  //  if(ladderPath.Contains("ITSsddLayer3_1") && (ladderPath.Contains("ITSsddLadd_3")|| ladderPath.Contains("ITSsddLadd_10")))
  //  {
  ///ALIC_1/ITSV_1/ITSsddLayer4_1/ITSsddLadd_5
  ///ALIC_1/ITSV_1/ITSsddLayer4_1/ITSsddLadd_16
  //  gLad.Print();
  //  printf("%s  : Module# %d  Point# %d\n",ladderPath.Data(), module, iPoint);

  if((layer==3)&&(module<3)) rel.LocalToMaster(fgkLocR[1],fSDDidP[1]);
  if((layer==3)&&(module>2)) rel.LocalToMaster(fgkLocL[1],fSDDidP[1]);
  if((layer==4)&&(module<4)) rel.LocalToMaster(fgkLocR[1],fSDDidP[1]);
  if((layer==4)&&(module>3)) rel.LocalToMaster(fgkLocL[1],fSDDidP[1]);
  for(Int_t i=0; i<3; i++) fSDDidP[1][i]*=10;
  fSDDidP[1][2]-=0.5205;

  //  rel.LocalToMaster(fgkLocR[1],fSDDidP[1]);
  //  printf("ID   {%f, %f, %f}\n", fSDDidP[iPoint][0],fSDDidP[iPoint][1],fSDDidP[iPoint][2]);
  //  printf("Me   {%f, %f, %f}\n", fSDDmeP[iPoint][0],fSDDmeP[iPoint][1],fSDDmeP[iPoint][2]);
  //  }
}

//______________________________________________________________________
void AliITSSurveyToAlign::ReadPointNameSDD(const char str[], Int_t &iLayer, Int_t &iLader, Int_t &iModul, Int_t &iPoint) const
{
  // 
  //    Utility function used by CreateAlignObjSDD
  // 
  iLayer=-1;
  iLader=-1;
  iModul=-1;
  iPoint=-1;

  if(str[7]=='2') iLayer=3;
  if(str[7]=='3') iLayer=4;

  if(str[15]=='0') iLader=0;
  if(str[15]=='1') iLader=1;
  if(str[15]=='2') iLader=2;
  if(str[15]=='3') iLader=3;
  if(str[15]=='4') iLader=4;
  if(str[15]=='5') iLader=5;
  if(str[15]=='6') iLader=6;
  if(str[15]=='7') iLader=7;
  if(str[15]=='8') iLader=8;
  if(str[15]=='9') iLader=9;

  Int_t ord=0;
  if(str[16]=='0') {iLader=10*iLader+0; ord=1;}
  if(str[16]=='1') {iLader=10*iLader+1; ord=1;}
  if(str[16]=='2') {iLader=10*iLader+2; ord=1;}
  if(str[16]=='3') {iLader=10*iLader+3; ord=1;}
  if(str[16]=='4') {iLader=10*iLader+4; ord=1;}
  if(str[16]=='5') {iLader=10*iLader+5; ord=1;}
  if(str[16]=='6') {iLader=10*iLader+6; ord=1;}
  if(str[16]=='7') {iLader=10*iLader+7; ord=1;}
  if(str[16]=='8') {iLader=10*iLader+8; ord=1;}
  if(str[16]=='9') {iLader=10*iLader+9; ord=1;}

  /*
  //tmp solution
  Int_t module=-1;
  if(str[23+ord]=='0') module=0;
  if(str[23+ord]=='1') module=1;
  if(str[23+ord]=='2') module=2;
  if(str[23+ord]=='3') module=3;
  if(str[23+ord]=='4') module=4;
  if(str[23+ord]=='5') module=5;
  if(str[23+ord]=='6') module=6;
  if(str[23+ord]=='7') module=7;
  if(str[23+ord]=='8') module=8;
  if(str[23+ord]=='9') module=9;

  if(iLayer==3)
    {
      if(module==0) iModul= 5;
      if(module==1) iModul= 4;
      if(module==2) iModul= 3;
      if(module==3) iModul= 2;
      if(module==4) iModul= 1;
      if(module==5) iModul= 0;
    }


  if(iLayer==4)
    {
      if(module==0) iModul= 7;
      if(module==1) iModul= 6;
      if(module==2) iModul= 5;
      if(module==3) iModul= 4;
      if(module==4) iModul= 3;
      if(module==5) iModul= 2;
      if(module==6) iModul= 1;
      if(module==7) iModul= 0;
    }

  if(module<0) {printf("ERROR MOULE\n"); iModul=0;}
  */

  if(str[23+ord]=='0') iModul=0;
  if(str[23+ord]=='1') iModul=1;
  if(str[23+ord]=='2') iModul=2;
  if(str[23+ord]=='3') iModul=3;
  if(str[23+ord]=='4') iModul=4;
  if(str[23+ord]=='5') iModul=5;
  if(str[23+ord]=='6') iModul=6;
  if(str[23+ord]=='7') iModul=7;
  if(str[23+ord]=='8') iModul=8;
  if(str[23+ord]=='9') iModul=9;


  if((str[25+ord]=='R')&&(str[26+ord]=='D')) iPoint=0;
  if((str[25+ord]=='R')&&(str[26+ord]=='C')) iPoint=1;
  if((str[25+ord]=='R')&&(str[26+ord]=='U')) iPoint=2;
  if((str[25+ord]=='L')&&(str[26+ord]=='U')) iPoint=3;
  if((str[25+ord]=='L')&&(str[26+ord]=='C')) iPoint=4;
  if((str[25+ord]=='L')&&(str[26+ord]=='D')) iPoint=5;

  return;
}


//______________________________________________________________________
void AliITSSurveyToAlign::ConvertToRSofModulesAndRotSDD(Int_t Layer, Int_t Module)
{
  // 
  //    Utility function used by CreateAlignObjSDD
  // 

  Double_t ymId;
  Double_t zmId;

  Double_t ymMe;
  Double_t zmMe;
  Double_t ymMeE;
  Double_t zmMeE;

  Double_t x0=fSDDidP[1][0];
  Double_t z0=fSDDidP[1][2];//-0.5205;
  //  Double_t z0=fSDDidP[1][2]-0.5;
  //  printf("x0= %f   z0= %f \n",x0,z0);
  for(Int_t i=0; i<6; i++)
    {
      //      fSDDidP[i][2]-=0.5205;
      //      fSDDidP[i][2]-=0.5;

      if(!fSDDisMe[i]) continue; 

      //      printf("Me1_0: %d:  %f  %f  %f\n",i, fSDDmeP[i][0], fSDDmeP[i][1], fSDDmeP[i][2]);
      //      printf("Id1_0: %d:  %f  %f  %f\n",i, fSDDidP[i][0], fSDDidP[i][1], fSDDidP[i][2]);

      fSDDidP[i][0]-=x0;
      fSDDidP[i][2]-=z0;
      fSDDmeP[i][0]-=x0;
      fSDDmeP[i][2]-=z0;
				
      ymId=fSDDidP[i][1];
      zmId=fSDDidP[i][2];
			
      fSDDidP[i][2]=fSDDidP[i][0];
      fSDDidP[i][0]=ymId;
      fSDDidP[i][1]=zmId;
			
      ymMe=fSDDmeP[i][1];
      zmMe=fSDDmeP[i][2];
			
      ymMeE=fSDDmeP[i][4];
      zmMeE=fSDDmeP[i][5];
			
      fSDDmeP[i][2]=fSDDmeP[i][0];
      fSDDmeP[i][0]=ymMe;
      fSDDmeP[i][1]=zmMe;
      fSDDmeP[i][5]=fSDDmeP[i][3];
      fSDDmeP[i][3]=ymMeE;
      fSDDmeP[i][4]=zmMeE;
			

      if(((Layer==3)&&(Module>2))||((Layer==4)&&(Module>3)))
	{
	  fSDDidP[i][0]*=(-1);
	  fSDDidP[i][2]*=(-1);
	  fSDDmeP[i][0]*=(-1);
	  fSDDmeP[i][2]*=(-1);
	}
      //      printf("Me1_1: %d:  %f  %f  %f\n",i, fSDDmeP[i][0], fSDDmeP[i][1], fSDDmeP[i][2] );
      //      printf("Id1_1: %d:  %f  %f  %f\n",i, fSDDidP[i][0], fSDDidP[i][1], fSDDidP[i][2]);

    }	
}


//______________________________________________________________________
void AliITSSurveyToAlign::CalcShiftSDD(Double_t &x0,Double_t &y0,Double_t &z0) const
{
    // Calculates the 3 shifts for the present SDD module
    // and sets the three reference arguments
    //
  Double_t xId, yId, zId;
  Double_t xMe, yMe, zMe, sX2, sY2, sZ2;
  Double_t aX=0., bX=0.;
  Double_t aY=0., bY=0.;
  Double_t aZ=0., bZ=0.;
  for(Int_t iP1=0; iP1<6; iP1++)
    {
      if(!fSDDisMe[iP1]) continue;
      xId=fSDDidP[iP1][0];
      yId=fSDDidP[iP1][1];
      zId=fSDDidP[iP1][2];
      xMe=fSDDmeP[iP1][0];
      yMe=fSDDmeP[iP1][1];
      zMe=fSDDmeP[iP1][2];
      sX2 =fSDDmeP[iP1][3]*fSDDmeP[iP1][3];
      sY2 =fSDDmeP[iP1][4]*fSDDmeP[iP1][4];
      sZ2 =fSDDmeP[iP1][5]*fSDDmeP[iP1][5];
      aX+=(1./sX2);
      bX+=((xMe-xId)/sX2); 
      aY+=(1./sY2);
      bY+=((yMe-yId)/sY2); 
      aZ+=(1./sZ2);
      bZ+=((zMe-zId)/sZ2); 
    }
  Double_t x1 = bX/aX;
  Double_t x2 = bY/aY;
  Double_t x3 = bZ/aZ;
  x0=x1;
  y0=x2;
  z0=x3;

/*
  for(Int_t iP1=0; iP1<6; iP1++)
    {
      if(!fSDDisMe[iP1]) continue;
      printf("%d Me: %6.3f  %6.3f  %6.3f\n",iP1, fSDDmeP[iP1][0], fSDDmeP[iP1][1], fSDDmeP[iP1][2]);
      printf("%d Id: %6.3f  %6.3f  %6.3f\n",iP1, fSDDidP[iP1][0], fSDDidP[iP1][1], fSDDidP[iP1][2]);
    }
*/

  return;
}


//______________________________________________________________________
void AliITSSurveyToAlign::CalcShiftRotSDD(Double_t &tet,Double_t &psi,Double_t &phi,Double_t &x0,Double_t &y0,Double_t &z0)
{
    // Calculates the 3 shifts and 3 euler angles for the present SDD module
    // and sets the six reference arguments
    //
  TMatrixD pC(6,6);

  Double_t a[6][6];
  for(Int_t ii=0; ii<6; ii++){
      for(Int_t jj=0; jj<6; jj++){
	  a[ii][jj]=0.;
      }
  }

  Double_t c[6];
  for(Int_t ii=0; ii<6; ii++)
      c[ii]=0.;

  Double_t xId, yId, zId;
  Double_t xMe, yMe, zMe, sX2, sY2, sZ2;

  //  printf("\n");

  for(Int_t iP1=0; iP1<6; iP1++)
    {
      if(!fSDDisMe[iP1]) continue;

      //ideal x,y,z for fiducial mark iP1
      xId= fSDDidP[iP1][0];
      yId= fSDDidP[iP1][1];
      zId= fSDDidP[iP1][2];

      //measured x,y,z for fiducial mark iP1
      xMe= fSDDmeP[iP1][0];
      yMe= fSDDmeP[iP1][1];
      zMe= fSDDmeP[iP1][2];

      //      printf("Me1: %d:  %f  %f  %f\n",iP1, xMe, yMe, zMe );
      //      printf("MeE: %d:  %f  %f  %f\n",iP1, fSDDmeP[iP1][3], fSDDmeP[iP1][4], fSDDmeP[iP1][5] );
      //      printf("Id1: %d:  %f  %f  %f\n",iP1, xId, yId, zId );
      //      printf("Res: %d:  %f  %f  %f\n",iP1, xMe-xId, yMe-yId, zMe-zId );

      //squared precisions of measured x,y,z for fiducial mark iP1
      sX2 = fSDDmeP[iP1][3]* fSDDmeP[iP1][3];
      sY2 = fSDDmeP[iP1][4]* fSDDmeP[iP1][4];
      sZ2 = fSDDmeP[iP1][5]* fSDDmeP[iP1][5];

      a[0][0]+=(zId*zId/sX2+xId*xId/sZ2);
      //      printf("%f\n",a[0][0]);
      a[0][1]-=(zId*yId/sX2);
      a[0][2]-=(xId*yId/sZ2);
      a[0][3]-=(zId/sX2);
      a[0][4] =0.;
      a[0][5]+=(xId/sZ2);
      c[0]+=(xId*(zMe-zId)/sZ2-zId*(xMe-xId)/sX2); 

      a[1][0]-=(yId*zId/sX2);
      a[1][1]+=(xId*xId/sY2+yId*yId/sX2);
      a[1][2]-=(xId*zId/sY2);
      a[1][3]+=(yId/sX2);
      a[1][4]-=(xId/sY2);
      a[1][5] =0.;
      c[1]+=(yId*(xMe-xId)/sX2-xId*(yMe-yId)/sY2); 

      a[2][0]-=(yId*xId/sZ2);
      a[2][1]-=(xId*zId/sY2);
      a[2][2]+=(zId*zId/sY2+yId*yId/sZ2);
      a[2][3] =0.;
      a[2][4]+=(zId/sY2);
      a[2][5]-=(yId/sZ2);
      c[2]+=(zId*(yMe-yId)/sY2-yId*(zMe-zId)/sZ2); 

      a[3][0]-=(zId/sX2);
      a[3][1]+=(yId/sX2);
      a[3][2] =0.;
      a[3][3]+=(1./sX2);
      a[3][4] =0.;
      a[3][5] =0.;
      c[3]+=((xMe-xId)/sX2); 

      a[4][0] =0.;
      a[4][1]-=(xId/sY2);
      a[4][2]+=(zId/sY2);
      a[4][3] =0.;
      a[4][4]+=(1./sY2);
      a[4][5] =0.;
      c[4]+=((yMe-yId)/sY2); 

      a[5][0]+=(xId/sZ2);
      a[5][1] =0.;
      a[5][2]-=(yId/sZ2);
      a[5][3] =0.;
      a[5][4] =0.;
      a[5][5]+=(1./sZ2);
      c[5]+=((zMe-zId)/sZ2); 
    }

  ///////////////////////////////////////////////////////////////

  pC.SetMatrixArray(&(a[0][0]));
  TMatrixD p1(pC);
  TMatrixD p2(pC);
  TMatrixD p3(pC);
  TMatrixD p4(pC);
  TMatrixD p5(pC);
  TMatrixD p6(pC);

  for(Int_t raw=0; raw<6; raw++)
      p1[raw][0]=c[raw];
  for(Int_t raw=0; raw<6; raw++)
      p2[raw][1]=c[raw];
  for(Int_t raw=0; raw<6; raw++)
      p3[raw][2]=c[raw];
  for(Int_t raw=0; raw<6; raw++)
      p4[raw][3]=c[raw];
  for(Int_t raw=0; raw<6; raw++)
      p5[raw][4]=c[raw];
  for(Int_t raw=0; raw<6; raw++)
      p6[raw][5]=c[raw];

  // cout << "calculating determinants" << endl;
  Double_t det0=pC.Determinant();
  Double_t x1 = p1.Determinant()/det0;
  Double_t x2 = p2.Determinant()/det0;
  Double_t x3 = p3.Determinant()/det0;
  Double_t x4 = p4.Determinant()/det0;
  Double_t x5 = p5.Determinant()/det0;
  Double_t x6 = p6.Determinant()/det0;
  //cout << "calculating determinants done" << endl;
  if (TMath::Abs(x1) < 1.e-10) {
    AliInfo("p1 singular ");
    p1.Print();
  }
  if (TMath::Abs(x2) < 1.e-10) {
    AliInfo("p2 singular ");
    p2.Print();
  }
  if (TMath::Abs(x3) < 1.e-10) {
    AliInfo("p3 singular ");
    p3.Print();
  }
  if (TMath::Abs(x4) < 1.e-10) {
    AliInfo("p4 singular ");
    p4.Print();
  }
  if (TMath::Abs(x5) < 1.e-10) {
    AliInfo("p5 singular ");
    p5.Print();
  }
  if (TMath::Abs(x6) < 1.e-10) {
    AliInfo("p6 singular ");
    p6.Print();
  }


  tet=x1;
  psi=x2;
  phi=x3;
  x0=x4;
  y0=x5;
  z0=x6;

  //  for(Int_t i=0; i<6; i++)
    //  printf("%f  %f  %f  %f  %f  %f\n",a[i][0], a[i][1], a[i][2], a[i][3], a[i][4], a[i][5]);

  //  pC.Print();
  //  p1.Print();
  //  p2.Print();
  //  p3.Print();
  //  p4.Print();
  //  p5.Print();
  //  p6.Print();


  //  printf("fit: %f  %f  %f  %f  %f  %f\n",x0, y0, z0, tet, psi, phi);

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