ROOT logo
/************************************************************************** 
 * Copyright(c) 2007-2009, 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 AliITSAlignMille2Module
/// Alignment class for the ALICE ITS detector 
/// 
/// This class is used by AliITSAlignMille to build custom supermodules    
/// made of ITS sensitive modules. These supermodules are then aligned
/// 
/// Custom supermodules must have VolumeID > 14335
///
/// \author M. Lunardon  
//----------------------------------------------------------------------------- 
 
#include <TGeoManager.h> 
#include <TGeoMatrix.h> 
 
#include "AliITSAlignMille2Module.h" 
#include "AliITSgeomTGeo.h" 
#include "AliGeomManager.h" 
#include "AliAlignObjParams.h" 
#include "AliLog.h" 
#include "AliITSAlignMille2.h"
 
/// \cond CLASSIMP 
ClassImp(AliITSAlignMille2Module) 
/// \endcond 

#define CORHW_


const Float_t AliITSAlignMille2Module::fgkDummyConstraint = 1e-2;//1.E3;
    
//-------------------------------------------------------------
AliITSAlignMille2Module::AliITSAlignMille2Module() : 
  TNamed(), 
  fNSensVol(0), 
  fIndex(-1),  
  fDetType(-1),
  fVolumeID(0),
  fNParTot(0),
  fNParFree(0),
  fParOffs(0),
  fNProcPoints(0),
  fParVals(0),
  fParErrs(0),
  fParCstr(0),
  fSensVolIndex(0),
  fSensVolVolumeID(0),
  fMatrix(NULL),
  fSensVolMatrix(NULL),
  fSensVolModifMatrix(NULL),
  fParent(NULL),
  fChildren(0)
{ 
  /// void constructor  
  fMatrix = new TGeoHMatrix; 
  fSensVolMatrix = new TGeoHMatrix; 
  fSensVolModifMatrix = new TGeoHMatrix; 
  fSensVolIndex.Set(1);
  fSensVolVolumeID.Set(1);
  fSigmaFactor[0]=fSigmaFactor[1]=fSigmaFactor[2]=1.0;
} 

//-------------------------------------------------------------
AliITSAlignMille2Module::AliITSAlignMille2Module(Int_t index, UShort_t volid, const char* symname,
						 const TGeoHMatrix *m, Int_t nsv, const UShort_t *volidsv) : 
  TNamed(), 
  fNSensVol(0), 
  fIndex(-1),  
  fDetType(-1),  
  fVolumeID(0),
  fNParTot(0),
  fNParFree(0),
  fParOffs(kMaxParGeom),
  fNProcPoints(0),
  fParVals(0),
  fParErrs(0),
  fParCstr(0),
  fSensVolIndex(0),
  fSensVolVolumeID(0),  
  fMatrix(NULL),
  fSensVolMatrix(NULL),
  fSensVolModifMatrix(NULL),
  fParent(NULL),
  fChildren(0)
{ 
  /// void constructor  
  fMatrix = new TGeoHMatrix; 
  fSensVolMatrix = new TGeoHMatrix; 
  fSensVolModifMatrix = new TGeoHMatrix; 
  fSigmaFactor[0]=fSigmaFactor[1]=fSigmaFactor[2]=1.0;
  for (int i=kMaxParGeom;i--;) fParOffs[i] = -1;
  if (Set(index,volid,symname,m,nsv,volidsv)) {
    AliInfo("Error in AliITSAlignMille2Module::Set() - initializing void supermodule...");
  }
  AssignDetType();
} 

//-------------------------------------------------------------
AliITSAlignMille2Module::AliITSAlignMille2Module(UShort_t volid) : 
  TNamed(), 
  fNSensVol(0), 
  fIndex(-1),    
  fDetType(-1),
  fVolumeID(0),
  fNParTot(0),
  fNParFree(0),
  fParOffs(kMaxParGeom),
  fNProcPoints(0),
  fParVals(0),
  fParErrs(0),
  fParCstr(0),  
  fSensVolIndex(0),
  fSensVolVolumeID(0),
  fMatrix(NULL),
  fSensVolMatrix(NULL),
  fSensVolModifMatrix(NULL),
  fParent(NULL),
  fChildren(0)
{ 
  /// simple constructor building a supermodule from a single sensitive volume 
  fMatrix = new TGeoHMatrix; 
  fSensVolMatrix = new TGeoHMatrix; 
  fSensVolModifMatrix = new TGeoHMatrix;   
  // temporary align object, just use the rotation...
  fSensVolIndex.Set(1);
  fSensVolVolumeID.Set(1);
  fSigmaFactor[0]=fSigmaFactor[1]=fSigmaFactor[2]=1.0;
  for (int i=kMaxParGeom;i--;) fParOffs[i] = -1;
  //
  fIndex = GetIndexFromVolumeID(volid);  
  if (fIndex>=0 && gGeoManager) { // good sensitive module and geometry loaded
    SetName(AliGeomManager::SymName(volid));
    fVolumeID = volid;
    AddSensitiveVolume(volid);
    SetSensorsProvided(kTRUE);
    if (SensVolMatrix(volid, fMatrix))
       AliInfo("Matrix not defined");
  }
  else {
    AliInfo("Wrong VolumeID or Geometry not loaded - initializing void supermodule...");
  }
  AssignDetType();
} 


//_____________________________________________________________________________
AliITSAlignMille2Module::AliITSAlignMille2Module(const AliITSAlignMille2Module &m) :
  TNamed(m),
  fNSensVol(m.fNSensVol),
  fIndex(m.fIndex),  
  fDetType(m.fDetType),
  fVolumeID(m.fVolumeID),
  fNParTot(m.fNParTot),
  fNParFree(m.fNParFree),
  fParOffs(m.fNParTot),
  fNProcPoints(0),
  fParVals(0),
  fParErrs(0),
  fParCstr(0),  
  fSensVolIndex(m.fSensVolIndex),
  fSensVolVolumeID(m.fSensVolVolumeID),
  fMatrix(new TGeoHMatrix(*m.GetMatrix())),
  fSensVolMatrix(new TGeoHMatrix),
  fSensVolModifMatrix(new TGeoHMatrix),
  fParent(m.fParent),
  fChildren(0)
{
  // Copy constructor
  fSensVolIndex = m.fSensVolIndex;
  fSensVolVolumeID = m.fSensVolVolumeID;
  for (int i=m.fNParTot;i--;) fParOffs[i] = m.fParOffs[i];
  for (int i=3;i--;) fSigmaFactor[i] = m.fSigmaFactor[i];
  if (fNParTot) {
    fParVals = new Float_t[fNParTot];
    fParErrs = new Float_t[fNParTot];
    fParCstr = new Float_t[fNParTot];
    for (int i=fNParTot;i--;) {
      fParVals[i] = m.fParVals[i];
      fParErrs[i] = m.fParErrs[i];
      fParCstr[i] = m.fParCstr[i];
    }
  }
}

//_____________________________________________________________________________
AliITSAlignMille2Module& AliITSAlignMille2Module::operator=(const AliITSAlignMille2Module &m)  
{
  // operator =
  //
  if(this==&m) return *this;
  this->TNamed::operator=(m);
  //
  fNSensVol=m.fNSensVol;
  fIndex=m.fIndex;
  fDetType = m.fDetType;
  fVolumeID=m.fVolumeID;
  fNParTot  = m.fNParTot;
  fNParFree = m.fNParFree; 
  fNProcPoints = m.fNProcPoints; 
  delete[] fParVals; fParVals = 0;
  delete[] fParErrs; fParErrs = 0;
  delete[] fParCstr; fParCstr = 0;
  //
  if (fNParTot) {
    fParVals = new Float_t[fNParTot];
    fParErrs = new Float_t[fNParTot];
    fParCstr = new Float_t[fNParTot];
    for (int i=m.GetNParTot();i--;) {
      fParVals[i] = m.fParVals[i];
      fParErrs[i] = m.fParErrs[i];
      fParCstr[i] = m.fParCstr[i];
    }
  }
  //
  fParOffs.Set(fNParTot);
  for (int i=0;i<fNParTot;i++) fParOffs[i] = m.fParOffs[i];
  for (int i=0;i<3;i++) fSigmaFactor[i] = m.fSigmaFactor[i];
  if (fMatrix) delete fMatrix;
  fMatrix=new TGeoHMatrix(*m.GetMatrix());
  if(fSensVolMatrix) delete fSensVolMatrix;
  fSensVolMatrix = new TGeoHMatrix(*m.fSensVolMatrix);
  if(fSensVolModifMatrix) delete fSensVolModifMatrix;
  fSensVolModifMatrix = new TGeoHMatrix(*m.fSensVolModifMatrix);
  fSensVolIndex = m.fSensVolIndex;
  fSensVolVolumeID = m.fSensVolVolumeID;
  fParent = m.fParent;
  fChildren.Clear();
  for (int i=0;i<m.GetNChildren();i++) fChildren.Add(m.GetChild(i));
  return *this;
}


//-------------------------------------------------------------
AliITSAlignMille2Module::~AliITSAlignMille2Module() { 
  /// Destructor 
  delete fMatrix; 
  delete fSensVolMatrix; 
  delete fSensVolModifMatrix; 
  delete[] fParVals;
  delete[] fParErrs;
  delete[] fParCstr;
  fChildren.Clear();
} 

//-------------------------------------------------------------
Int_t AliITSAlignMille2Module::Set(Int_t index, UShort_t volid, const char* symname, 
				   const TGeoHMatrix *m, Int_t nsv, const UShort_t *volidsv) 
{
  // initialize a custom supermodule
  // index, volid, symname and matrix must be given
  // if (volidsv) add nsv sensitive volumes to the supermodules
  // return 0 if success

  if (index<2198) {
    AliInfo("Index must be >= 2198");
    return -1;
  }
  if (volid<14336) {
    AliInfo("VolumeID must be >= 14336");
    return -2;
  }
  
  if (!symname) return -3;
  for (Int_t i=0; i<2198; i++) {
    if (!strcmp(symname,AliITSgeomTGeo::GetSymName(i))) {
      AliInfo("Symname already used by a Sensitive Volume");
      return -3;
    }
  }
  
  if (!m) return -4;

  // can initialize needed stuffs
  fIndex = index;
  fVolumeID = volid;
  SetName(symname);
  //
  (*fMatrix) = (*m);
  //
  fSensVolIndex.Set(nsv);
  fSensVolVolumeID.Set(nsv);
  // add sensitive volumes
  for (Int_t i=0; i<nsv; i++) AddSensitiveVolume(volidsv[i]);

  return 0;
}

//-------------------------------------------------------------
void AliITSAlignMille2Module::SetFreeDOF(Int_t dof,Double_t cstr)
{
  if (AliITSAlignMille2::IsZero(cstr)) fParCstr[dof] = 0;  // fixed parameter
  else if (cstr>0)                     fParCstr[dof] = fgkDummyConstraint+1.; // the parameter is free and unconstrained
  else                                 fParCstr[dof] = -cstr;                 // the parameter is free but constrained
}

//-------------------------------------------------------------
Bool_t AliITSAlignMille2Module::IsSensor(UShort_t voluid) 
{
  // Does this volid correspond to sensor ?
  AliGeomManager::ELayerID layId = AliGeomManager::VolUIDToLayerSafe(voluid);
  if (layId>0 && layId<7) {
    Int_t mId = Int_t(voluid & 0x7ff);
    if( mId>=0 && mId<AliGeomManager::LayerSize(layId)) return kTRUE;
  }
  return kFALSE;
}

//-------------------------------------------------------------
Int_t AliITSAlignMille2Module::GetIndexFromVolumeID(UShort_t voluid) {
  /// index from volume ID
  AliGeomManager::ELayerID lay = AliGeomManager::VolUIDToLayer(voluid);
  if (lay<1|| lay>6) return -1;
  Int_t idx=Int_t(voluid)-2048*lay;
  if (idx>=AliGeomManager::LayerSize(lay)) return -1;
  for (Int_t ilay=1; ilay<lay; ilay++) 
    idx += AliGeomManager::LayerSize(ilay);
  return idx;
}

//-------------------------------------------------------------
void AliITSAlignMille2Module::AddSensitiveVolume(UShort_t voluid)
{
  /// add a sensitive volume to this supermodule
  if (GetIndexFromVolumeID(voluid)<0) return; // bad volid
  //
  // in principle, the correct size of fSensVol... arrays was set outside but check anyway
  if (fSensVolVolumeID.GetSize()<fNSensVol+1) {
    fSensVolVolumeID.Set(fNSensVol+1);
    fSensVolIndex.Set(fNSensVol+1);
  }
  //
  fSensVolVolumeID[fNSensVol] = Short_t(voluid);
  fSensVolIndex[fNSensVol] = GetIndexFromVolumeID(voluid);
  fNSensVol++;
}

//-------------------------------------------------------------
void AliITSAlignMille2Module::DelSensitiveVolume(Int_t at)
{
  // Suppress sensor at position "at"
  // in fact we are swapping with the last valid one 
  int lastValid = --fNSensVol;
  int tmpv = fSensVolIndex[at];
  fSensVolIndex[at] = fSensVolIndex[lastValid];
  tmpv = fSensVolVolumeID[at];
  fSensVolVolumeID[at] = fSensVolVolumeID[lastValid];
  fSensVolVolumeID[lastValid] = tmpv;
  //
}

//-------------------------------------------------------------
Bool_t AliITSAlignMille2Module::IsIn(UShort_t voluid) const 
{
  /// check if voluid is defined
  if (!voluid) return kFALSE; // only positive voluid are accepted
  for (Int_t i=0; i<fNSensVol; i++) if (UShort_t(fSensVolVolumeID[i])==voluid) return kTRUE;
  return kFALSE;
}

//-------------------------------------------------------------
Bool_t AliITSAlignMille2Module::BelongsTo(AliITSAlignMille2Module* parent) const
{
  /// check if parent contains the sensors of this volume
  if (fNSensVol<1 || fNSensVol>=parent->GetNSensitiveVolumes()) return kFALSE;
  return parent->IsIn( fSensVolVolumeID[0] );
}

//-------------------------------------------------------------
TGeoHMatrix *AliITSAlignMille2Module::GetSensitiveVolumeModifiedMatrix(UShort_t voluid, const Double_t *delta,Bool_t local)
{
  // modify the original TGeoHMatrix of the sensitive module 'voluid' according
  // with a delta transform. applied to the supermodule matrix
  // return NULL if error

  if (!IsIn(voluid)) return NULL;
  if (!gGeoManager)  return NULL;

  // prepare the TGeoHMatrix
  Double_t tr[3],ang[3];
  tr[0]=delta[0]; // in centimeter
  tr[1]=delta[1]; 
  tr[2]=delta[2];
  ang[0]=delta[3]; // psi   (X)  in deg
  ang[1]=delta[4]; // theta (Y)
  ang[2]=delta[5]; // phi   (Z)
  //
  static AliAlignObjParams tempAlignObj;
  tempAlignObj.SetRotation(ang[0],ang[1],ang[2]);
  tempAlignObj.SetTranslation(tr[0],tr[1],tr[2]);
  AliDebug(3,Form("Delta angles: psi=%f  theta=%f   phi=%f",ang[0],ang[1],ang[2]));
  TGeoHMatrix hm;
  tempAlignObj.GetMatrix(hm);
  //printf("\n0: delta matrix\n");hm.Print();

  // 1) start setting fSensVolModif = fSensVol
  if (SensVolMatrix(voluid, fSensVolModifMatrix)) return NULL;
  //
  if (local) {
    // 2) set fSensVolModif = SensVolRel
    fSensVolModifMatrix->MultiplyLeft( &fMatrix->Inverse() );
    // 3) multiply left by delta
    fSensVolModifMatrix->MultiplyLeft( &hm );
    // 4) multiply left by fMatrix
    fSensVolModifMatrix->MultiplyLeft( fMatrix );
  }
  else fSensVolModifMatrix->MultiplyLeft( &hm );
  //
  return fSensVolModifMatrix;
}

//-------------------------------------------------------------
AliAlignObjParams *AliITSAlignMille2Module::GetSensitiveVolumeMisalignment(UShort_t voluid, const Double_t *deltalocal)
{
  // calculate misalignment of sens.vol. 'voluid' according with a displacement 'deltalocal'
  // of the mother volume. The misalignment is returned as AliAlignObjParams object

  if (!IsIn(voluid)) return NULL;
  if (!gGeoManager) return NULL;
  
  // prepare the TGeoHMatrix
  Double_t tr[3],ang[3];
  tr[0]=deltalocal[0]; // in centimeter
  tr[1]=deltalocal[1]; 
  tr[2]=deltalocal[2];
  ang[0]=deltalocal[3]; // psi   (X)  in deg
  ang[1]=deltalocal[4]; // theta (Y)
  ang[2]=deltalocal[5]; // phi   (Z)
  //
  static AliAlignObjParams tempAlignObj;
  tempAlignObj.SetRotation(ang[0],ang[1],ang[2]);
  tempAlignObj.SetTranslation(tr[0],tr[1],tr[2]);
  AliDebug(3,Form("Delta angles: psi=%f  theta=%f   phi=%f",ang[0],ang[1],ang[2]));
  //
  return GetSensitiveVolumeMisalignment(voluid,&tempAlignObj);
}

//-------------------------------------------------------------
AliAlignObjParams *AliITSAlignMille2Module::GetSensitiveVolumeMisalignment(UShort_t voluid, const AliAlignObjParams *a)
{
  // return the misalignment of the sens. vol. 'voluid' corresponding with 
  // a misalignment 'a' in the mother volume
  // return NULL if error

  // Gsv = Gg * Gg-1 * Gsv   -> Lsv,g = Gg-1 * Gsv
  // G'sv = Gg * Dg * Lsv,g === Gsv * Dsv
  // Gg * Dg * Gg-1 * Gsv = Gsv * Gsv-1 * Gg * Dg * Gg-1 * Gsv
  //
  // => Dsv = (Gsv-1 * Gg * Dg * Gg-1 * Gsv)
  //

  if (!IsIn(voluid)) return NULL;
  if (!gGeoManager) return NULL;

  //a->Print("");

  // prepare the Delta matrix Dg
  TGeoHMatrix dg;
  a->GetMatrix(dg);
  //dg.Print();

  // 1) start setting fSensVolModif = Gsv
  if (SensVolMatrix(voluid, fSensVolModifMatrix)) return NULL;
  //printf("\n1: modif=orig del sensvol\n");fSensVolModifMatrix->Print();

  // 2) set fSensVolModif = Gg-1 * Gsv
  fSensVolModifMatrix->MultiplyLeft( &fMatrix->Inverse() );
  //printf("\n2: modif=relative del sensvol\n");fSensVolModifMatrix->Print();
 
  // 3) set fSensVolModif = Dg * Gg-1 * Gsv
  fSensVolModifMatrix->MultiplyLeft( &dg );
  //printf("\n3: modif= delta*relative\n");fSensVolModifMatrix->Print();
  
  // 4) set fSensVolModif = Gg * Dg * Gg-1 * Gsv
  fSensVolModifMatrix->MultiplyLeft( fMatrix );
  //printf("\n4: modif=quasi,manca il Gsv-1...\n");fSensVolModifMatrix->Print();

  // 5) set fSensVolModif = Gsv-1 * Gg * Dg * Gg-1 * Gsv
  if (SensVolMatrix(voluid, &dg)) return NULL;
  fSensVolModifMatrix->MultiplyLeft( &dg.Inverse() );
  //printf("\n5: modif=finale\n");fSensVolModifMatrix->Print();
  //
  // >> RS
 // 6) mo' fSensVolModif dovrebbe essere la Dsv(loc) t.c. G'sv = Gsv*Dsv(loc)
  // per trasformarla in Dsv(loc rispetto al Gsv0, non modificato) dovrebbe essere:
  // Dsv(loc) -> Dpre * Dsv(loc) * Dpre-1
  //TGeoHMatrix dpre; // dpre = Gsv0-1*Gsv
  //if (SensVolOrigGlobalMatrix(voluid, &dg)) return NULL;
  //if (SensVolMatrix(voluid, &dpre)) return NULL;
  //dpre.MultiplyLeft( &dg.Inverse() );
  //fSensVolModifMatrix->Multiply( &dpre.Inverse() );
  //fSensVolModifMatrix->MultiplyLeft( &dpre );
  // direi che NON FUNZIONA!!!!  

  // << RS

  // reset align object (may not be needed...)
  static AliAlignObjParams tempAlignObj;
  tempAlignObj.SetVolUID(0);
  tempAlignObj.SetSymName("");
  tempAlignObj.SetTranslation(0,0,0);
  tempAlignObj.SetRotation(0,0,0);
  //
  // >> RS
#ifdef CORHW_
  // correction for SPD y-shift
  if (voluid>=2048 && voluid<4256) {
    TGeoHMatrix deltay;
    double dy[3]={0.,0.0081,0.};
    deltay.SetTranslation(dy);
    fSensVolModifMatrix->MultiplyLeft( &deltay );
    fSensVolModifMatrix->Multiply( &deltay.Inverse() );
  }
#endif
  // << RS
  if (!tempAlignObj.SetMatrix(*fSensVolModifMatrix)) return NULL;
  tempAlignObj.SetVolUID(voluid);
  tempAlignObj.SetSymName(AliGeomManager::SymName(voluid));
  //
  return &tempAlignObj;
}

// >> RS
//-------------------------------------------------------------
AliAlignObjParams *AliITSAlignMille2Module::GetSensitiveVolumeTotalMisalignment(UShort_t voluid, const Double_t *deltalocal)
{
  // calculate misalignment of sens.vol. 'voluid' according with a displacement 'deltalocal'
  // of the mother volume. The misalignment is returned as AliAlignObjParams object including
  // the (evenctual) prealignment => no merging needed

  if (!IsIn(voluid)) return NULL;
  if (!gGeoManager) return NULL;
  
  // prepare the TGeoHMatrix
  Double_t tr[3],ang[3];
  tr[0]=deltalocal[0]; // in centimeter
  tr[1]=deltalocal[1]; 
  tr[2]=deltalocal[2];
  ang[0]=deltalocal[3]; // psi   (X)  in deg
  ang[1]=deltalocal[4]; // theta (Y)
  ang[2]=deltalocal[5]; // phi   (Z)

  // reset align object (may not be needed...)
  static AliAlignObjParams tempAlignObj;
  tempAlignObj.SetVolUID(0);
  tempAlignObj.SetSymName("");
  tempAlignObj.SetRotation(ang[0],ang[1],ang[2]);
  tempAlignObj.SetTranslation(tr[0],tr[1],tr[2]);
  AliDebug(3,Form("Delta angles: psi=%f  theta=%f   phi=%f",ang[0],ang[1],ang[2]));

  // Gsv = Gg * Gg-1 * Gsv   -> Lsv,g = Gg-1 * Gsv
  // G'sv = Gg * Dg * Lsv,g === DGsv * Gsv 
  //
  // => Dsv = (G0sv-1 * Gg * Dg * Gg-1 * GMsv)  //
  //

  // prepare the Delta matrix Dg
  TGeoHMatrix dg;
  tempAlignObj.GetMatrix(dg);
  //dg.Print();

  // 1) start setting fSensVolModif = Gsv
  if (SensVolMatrix(voluid, fSensVolModifMatrix)) return NULL;
  //printf("\n1: modif=orig del sensvol\n");fSensVolModifMatrix->Print();

  // 2) set fSensVolModif = Gg-1 * Gsv
  fSensVolModifMatrix->MultiplyLeft( &fMatrix->Inverse() );
  //printf("\n2: modif=relative del sensvol\n");fSensVolModifMatrix->Print();
 
  // 3) set fSensVolModif = Dg * Gg-1 * Gsv
  fSensVolModifMatrix->MultiplyLeft( &dg );
  //printf("\n3: modif= delta*relative\n");fSensVolModifMatrix->Print();
  
  // 4) set fSensVolModif = Gg * Dg * Gg-1 * Gsv
  fSensVolModifMatrix->MultiplyLeft( fMatrix );
  //printf("\n4: modif=quasi,manca il Gsv-1...\n");fSensVolModifMatrix->Print();

  // 5) set fSensVolModif = G0sv-1 * Gg * Dg * Gg-1 * Gsv
  // qui usa l'orig anziche' la prealigned...
  if (SensVolOrigGlobalMatrix(voluid, &dg)) return NULL;
  fSensVolModifMatrix->MultiplyLeft( &dg.Inverse() );
  //printf("\n5: modif=finale\n");fSensVolModifMatrix->Print();

  // reset align object (may not be needed...)
  tempAlignObj.SetVolUID(0);
  tempAlignObj.SetSymName("");
  tempAlignObj.SetTranslation(0,0,0);
  tempAlignObj.SetRotation(0,0,0);

#ifdef CORHW_
  // correction for SPD y-shift
  if (voluid>=2048 && voluid<4256) {
    TGeoHMatrix deltay;
    double dy[3]={0.,0.0081,0.};
    deltay.SetTranslation(dy);
    fSensVolModifMatrix->MultiplyLeft( &deltay );
    fSensVolModifMatrix->Multiply( &deltay.Inverse() );
  }
#endif
  if (!tempAlignObj.SetMatrix(*fSensVolModifMatrix)) return NULL;
  tempAlignObj.SetVolUID(voluid);
  tempAlignObj.SetSymName(AliGeomManager::SymName(voluid));

  
  //tempAlignObj.Print("");

  return &tempAlignObj;
}
//-------------------------------------------------------------

//-------------------------------------------------------------
AliAlignObjParams *AliITSAlignMille2Module::GetSensitiveVolumeGlobalMisalignment(UShort_t voluid, const Double_t *deltalocal)
{
  // calculate misalignment of sens.vol. 'voluid' according with a displacement 'deltalocal'
  // of the mother volume. The misalignment is returned as AliAlignObjParams object

  if (!IsIn(voluid)) return NULL;
  if (!gGeoManager) return NULL;
  
  // prepare the TGeoHMatrix
  Double_t tr[3],ang[3];
  tr[0]=deltalocal[0]; // in centimeter
  tr[1]=deltalocal[1]; 
  tr[2]=deltalocal[2];
  ang[0]=deltalocal[3]; // psi   (X)  in deg
  ang[1]=deltalocal[4]; // theta (Y)
  ang[2]=deltalocal[5]; // phi   (Z)

  // reset align object (may not be needed...)
  static AliAlignObjParams tempAlignObj;
  tempAlignObj.SetTranslation(0,0,0);
  tempAlignObj.SetRotation(0,0,0);

  tempAlignObj.SetRotation(ang[0],ang[1],ang[2]);
  tempAlignObj.SetTranslation(tr[0],tr[1],tr[2]);
  AliDebug(3,Form("Delta angles: psi=%f  theta=%f   phi=%f",ang[0],ang[1],ang[2]));

  // Gsv = Gg * Gg-1 * Gsv   -> Lsv,g = Gg-1 * Gsv
  // G'sv = Gg * Dg * Lsv,g === DGsv * Gsv 
  //
  // => DGsv = (Gg * Dg * Gg-1)
  //

  // prepare the Delta matrix Dg
  TGeoHMatrix dg;
  tempAlignObj.GetMatrix(dg);
  //dg.Print();

  dg.MultiplyLeft( fMatrix );
  dg.Multiply( &fMatrix->Inverse() );

  // reset align object (may not be needed...)
  tempAlignObj.SetTranslation(0,0,0);
  tempAlignObj.SetRotation(0,0,0);

  tempAlignObj.SetVolUID(voluid);
  tempAlignObj.SetSymName(AliGeomManager::SymName(voluid));

  if (!tempAlignObj.SetMatrix(dg)) return NULL;
  
  //tempAlignObj.Print("");

  return &tempAlignObj;
}
// << RS

//-------------------------------------------------------------
TGeoHMatrix *AliITSAlignMille2Module::GetSensitiveVolumeMatrix(UShort_t voluid)
{
  // return TGeoHMatrix of the sens.vol. 'voluid' in the current geometry
  if (SensVolMatrix(voluid,fSensVolMatrix)) return NULL;
  return fSensVolMatrix;
}

//-------------------------------------------------------------
TGeoHMatrix *AliITSAlignMille2Module::GetSensitiveVolumeOrigGlobalMatrix(UShort_t voluid)
{
  // return original ideal position (from AliGeomManager::GetOrigGlobalMatrix())
  if (SensVolOrigGlobalMatrix(voluid,fSensVolMatrix)) return NULL;
  return fSensVolMatrix;
}
//-------------------------------------------------------------
Int_t AliITSAlignMille2Module::SensVolMatrix(UShort_t volid, TGeoHMatrix *m) 
{
  // set matrix for sensitive modules (SPD corrected)
  // return 0 if success
  Double_t rot[9];
  Int_t idx=GetIndexFromVolumeID(volid);
  if (idx<0) return -1;
  if (!AliITSgeomTGeo::GetRotation(idx,rot)) return -2;
  m->SetRotation(rot);
  Double_t oLoc[3]={0,0,0};
  Double_t oGlo[3]={0,0,0};
  if (!AliITSgeomTGeo::LocalToGlobal(idx,oLoc,oGlo)) return -3;
  m->SetTranslation(oGlo);
  return 0;
}

//-------------------------------------------------------------
Int_t AliITSAlignMille2Module::SensVolOrigGlobalMatrix(UShort_t volid, TGeoHMatrix *m) 
{
  // set original global matrix for sensitive modules (SPD corrected)
  // return 0 if success
  Int_t idx=GetIndexFromVolumeID(volid);
  if (idx<0) return -1;
  TGeoHMatrix mo;
  if (!AliGeomManager::GetOrigGlobalMatrix(AliGeomManager::SymName(volid),mo)) return -1;
  (*m)=mo;
  //
#ifdef CORHW_
  // SPD y-shift by 81 mu
  if (volid<5000) { 
    Double_t oLoc[3]={0.0,0.0081,0.0};
    Double_t oGlo[3]={0,0,0};
    m->LocalToMaster(oLoc,oGlo);
    m->SetTranslation(oGlo);
  }
#endif
  return 0;
}

//-------------------------------------------------------------
UShort_t AliITSAlignMille2Module::GetVolumeIDFromSymname(const Char_t *symname) {
  /// volume ID from symname
  if (!symname) return 0;

  for (UShort_t voluid=2000; voluid<13300; voluid++) {
    Int_t modId;
    AliGeomManager::ELayerID layerId = AliGeomManager::VolUIDToLayer(voluid,modId);
    if (layerId>0 && layerId<7 && modId>=0 && modId<AliGeomManager::LayerSize(layerId)) {
      if (!strcmp(symname,AliGeomManager::SymName(layerId,modId))) return voluid;
    }
  }

  return 0;
}

//-------------------------------------------------------------
UShort_t AliITSAlignMille2Module::GetVolumeIDFromIndex(Int_t index) {
  /// volume ID from index
  if (index<0 || index>2197) return 0;
  return GetVolumeIDFromSymname(AliITSgeomTGeo::GetSymName(index));
}

//-------------------------------------------------------------
void AliITSAlignMille2Module::Print(Option_t*) const 
{
  // print data
  //
  const char* typeName[] = {"SPD","SDD","SSD"};
  printf("*** ITS SuperModule for AliITSAlignMille ***\n");
  printf("symname  : %s (type: %s)\n",GetName(),fDetType<0 ? "N/A":typeName[fDetType]);
  printf("parent   : %s | %d children\n",fParent ? fParent->GetName() : "N/A",GetNChildren());
  printf("volumeID : %4d  | index : %4d | Geom.Params are %s\n",fVolumeID,fIndex,
	 GeomParamsGlobal() ? "Global":"Local");
  printf("Factors  : X=%.2f Y=%.2f Z=%.2f\n"
	 "DOF: %cTx:%5d| %cTy:%5d| %cTz:%5d| %cPsi:%5d| %cTheta:%5d| %cPhi:%5d|",
	 fSigmaFactor[0],fSigmaFactor[1],fSigmaFactor[2],
	 IsFreeDOF(kDOFTX) ? '+':'-',GetParOffset(kDOFTX),IsFreeDOF(kDOFTY) ? '+':'-',GetParOffset(kDOFTY),
	 IsFreeDOF(kDOFTZ) ? '+':'-',GetParOffset(kDOFTZ),IsFreeDOF(kDOFPS) ? '+':'-',GetParOffset(kDOFPS),
	 IsFreeDOF(kDOFTH) ? '+':'-',GetParOffset(kDOFTH),IsFreeDOF(kDOFPH) ? '+':'-',GetParOffset(kDOFPH));
  if (IsSDD()) {
    printf("%cT0:%5d| %cDVl:%5d| %cDVr:%5d|",IsFreeDOF(kDOFT0)?'+':'-',GetParOffset(kDOFT0),
	   IsFreeDOF(kDOFDVL)?'+':'-',GetParOffset(kDOFDVL),IsFreeDOF(kDOFDVR)?'+':'-',GetParOffset(kDOFDVR));
    if (IsVDriftLRSame()) printf("(dVL=dVR)");
  }
  printf("\n");
  fMatrix->Print();
  printf("%4d Sensitive volumes | %6d Processed Points\n",fNSensVol,fNProcPoints);
  for (Int_t i=0; i<fNSensVol; i++) printf("   voluid[%d] = %d\n",i,UShort_t(fSensVolVolumeID[i]));
}

//-------------------------------------------------------------
Bool_t AliITSAlignMille2Module::IsAlignable() const
{
  // it it alignable?
  TGeoManager* geoManager = AliGeomManager::GetGeometry();
  if (!geoManager) {
    AliInfo("Couldn't initialize geometry");
    return kFALSE;
  }
  return geoManager->GetAlignableEntry(GetName())!=0;
}

//-------------------------------------------------------------
void AliITSAlignMille2Module::GetLocalMatrix(TGeoHMatrix &mat) const
{
  // return the local matrix for transformation to its parent
  mat = *fMatrix;
  if (fParent) mat.MultiplyLeft( &fParent->GetMatrix()->Inverse() );
}

//-------------------------------------------------------------
void AliITSAlignMille2Module::AssignDetType()
{
  // assign the detector type
  TString tp = GetName();
  if      (tp.Contains("SPD",TString::kIgnoreCase)) fDetType = kSPD;
  else if (tp.Contains("SDD",TString::kIgnoreCase)) fDetType = kSDD;
  else if (tp.Contains("SSD",TString::kIgnoreCase)) fDetType = kSSD;
  else fDetType = -1;
  fNParTot = IsSDD() ? kMaxParTot:kMaxParGeom;
  fNParFree = 0;
  fParVals = new Float_t[fNParTot];
  fParErrs = new Float_t[fNParTot];  
  fParCstr = new Float_t[fNParTot];  
  if (fParOffs.GetSize()<fNParTot) fParOffs.Set(fNParTot);
  for (int i=fNParTot;i--;) {
    fParVals[i] = fParErrs[i] = 0.; 
    fParCstr[i] = 0.;
    fParOffs[i] = -1;
  }
}

//-------------------------------------------------------------
void AliITSAlignMille2Module::EvaluateDOF()
{
  // count d.o.f.
  fNParFree = 0;
  for (int i=fNParTot;i--;) if (IsFreeDOF(i)) fNParFree++;
}

//-------------------------------------------------------------
void AliITSAlignMille2Module::GetSensVolGlobalParams(UShort_t volid,Double_t *t, Double_t *r)
{
  // return global parameters of the sensor volid
  for (int i=3;i--;) t[i] = r[i] = 0.;
  if (SensVolMatrix(volid,fSensVolMatrix)) return;  
  AliAlignObjParams tempAlignObj;
  tempAlignObj.SetMatrix(*fSensVolMatrix);
  tempAlignObj.GetPars(t,r);
}

//-------------------------------------------------------------
void AliITSAlignMille2Module::GetSensVolLocalParams(UShort_t volid,Double_t *t, Double_t *r)
{
  // return parameters of the sensor volid in the current module
  for (int i=3;i--;) t[i] = r[i] = 0.;
  if (SensVolMatrix(volid,fSensVolMatrix)) return;  
  fSensVolMatrix->MultiplyLeft( &fMatrix->Inverse() );
  AliAlignObjParams tempAlignObj;  
  tempAlignObj.SetMatrix(*fSensVolMatrix);
  tempAlignObj.GetPars(t,r);
}

//-------------------------------------------------------------
void AliITSAlignMille2Module::GetSensVolGlobalParams(UShort_t volid,const Double_t* loct, const Double_t* locr,Double_t *t, Double_t *r)
{
  // return global parameters of the sensor volid modified by the localDelta params
  for (int i=3;i--;) t[i] = r[i] = 0.;
  if (SensVolMatrix(volid,fSensVolMatrix)) return;  
  AliAlignObjParams tempAlignObj;
  tempAlignObj.SetTranslation(loct[0],loct[1],loct[2]);
  tempAlignObj.SetRotation(locr[0],locr[1],locr[2]);
  //
  tempAlignObj.GetMatrix(*fSensVolModifMatrix);      // obtain local delta
  fSensVolModifMatrix->MultiplyLeft( fSensVolMatrix ); // obtain global delta
  tempAlignObj.SetMatrix(*fSensVolModifMatrix);
  tempAlignObj.GetPars(t,r);                         // obtain global params
}

//-------------------------------------------------------------
void AliITSAlignMille2Module::GetSensVolLocalParams(UShort_t volid,const Double_t* loct,const Double_t* locr,Double_t *t, Double_t *r)
{
  // return parameters of the sensor volid (modified by the localDelta params) in the current volume
  for (int i=3;i--;) t[i] = r[i] = 0.;
  if (SensVolMatrix(volid,fSensVolMatrix)) return;  
  AliAlignObjParams tempAlignObj;
  tempAlignObj.SetTranslation(loct[0],loct[1],loct[2]);
  tempAlignObj.SetRotation(locr[0],locr[1],locr[2]);
  //
  tempAlignObj.GetMatrix(*fSensVolModifMatrix);      // obtain local delta
  fSensVolModifMatrix->MultiplyLeft( fSensVolMatrix ); // obtain global delta
  fSensVolModifMatrix->MultiplyLeft( &fMatrix->Inverse() ); // obtain delta in current volume
  tempAlignObj.SetMatrix(*fSensVolModifMatrix);
  tempAlignObj.GetPars(t,r);                         // obtain params
}

//-------------------------------------------------------------
void AliITSAlignMille2Module::SetParVals(Double_t *vl,Int_t npar)
{
  // set parameters
  for (int i=TMath::Min(npar,(Int_t)fNParTot);i--;) fParVals[i] = vl[i];
}

//-------------------------------------------------------------
void AliITSAlignMille2Module::GetGeomParamsGlo(Double_t *pars)
{
  // recompute parameters from local to global frame
  //
  // is there anything to do?
  if (GeomParamsGlobal()) {for (int i=kMaxParGeom;i--;) pars[i] = fParVals[i]; return;}
  //
  // IMPORTANT: It is assumed that the parents params are defined in a same way (local or global)
  // as for the current module. Since in the mp2 the modules are stored from parents to children,
  // it is safe to call this method in loop staring from the lowest level child, i.e. from the end
  // of the modules array.
  //
  // DeltaGlobal = (ModifParents)*DeltaLocal*(ModifParents)^-1 
  //
  *fSensVolMatrix = *fMatrix;   // current global matrix
  AliAlignObjParams tempAlignObj;
  AliITSAlignMille2Module* parent = GetParent();
  while (parent) {
    if (parent->GeomParamsGlobal()) {
      AliError("Cannot convert params to Global when the parents are already Global\n");
      for (int i=kMaxParGeom;i--;) pars[i] = 0;
      return;
    }
    fSensVolMatrix->MultiplyLeft( &parent->GetMatrix()->Inverse() ); // Local Matrix
    Float_t *parpar = parent->GetParVals();
    tempAlignObj.SetTranslation(parpar[0],parpar[1],parpar[2]);
    tempAlignObj.SetRotation(parpar[3],parpar[4],parpar[5]);
    tempAlignObj.GetMatrix(*fSensVolModifMatrix);
    fSensVolMatrix->MultiplyLeft(fSensVolModifMatrix);
    fSensVolMatrix->MultiplyLeft(parent->GetMatrix());  // global matrix after parents modifications
    parent = parent->GetParent();
  }
  //
  tempAlignObj.SetTranslation(fParVals[0],fParVals[1],fParVals[2]);
  tempAlignObj.SetRotation(fParVals[3],fParVals[4],fParVals[5]);
  tempAlignObj.GetMatrix(*fSensVolModifMatrix);  // local delta matrix
  fSensVolModifMatrix->Multiply( &fSensVolMatrix->Inverse() );
  fSensVolModifMatrix->MultiplyLeft( fSensVolMatrix );
  tempAlignObj.SetMatrix( *fSensVolModifMatrix );  // global delta matrix
  tempAlignObj.GetPars(pars,pars+3);
  //
}

//-------------------------------------------------------------
void AliITSAlignMille2Module::GetGeomParamsLoc(Double_t *pars)
{
  // recompute parameters from global to local frame
  //
  // is there anything to do?
  if (!GeomParamsGlobal()) {for (int i=kMaxParGeom;i--;) pars[i] = fParVals[i]; return;}
  //
  // IMPORTANT: It is assumed that the parents params are defined in a same way (local or global)
  // as for the current module. Since in the mp2 the modules are stored from parents to children,
  // it is safe to call this method in loop staring from the lowest level child, i.e. from the end
  // of the modules array.
  //
  //  DeltaLocal = (DeltaParents*GlobalMat)^-1*DeltaGlobal*(DeltaParents*GlobalMat)
  //
  AliITSAlignMille2Module* parent = GetParent();
  AliAlignObjParams tempAlignObj;
  tempAlignObj.SetTranslation(0.,0.,0.);
  tempAlignObj.SetRotation(0.,0.,0.);
  tempAlignObj.GetMatrix(*fSensVolMatrix); // get no-shift matrix
  //
  while (parent) { // accumulate the product of parents global modifications
    if (!parent->GeomParamsGlobal()) {
      AliError("Cannot convert params to Local when the parents are already Local\n");
      for (int i=kMaxParGeom;i--;) pars[i] = 0;
      return;
    }
    Float_t *parpar = parent->GetParVals();
    tempAlignObj.SetTranslation(parpar[0],parpar[1],parpar[2]);
    tempAlignObj.SetRotation(parpar[3],parpar[4],parpar[5]);
    tempAlignObj.GetMatrix(*fSensVolModifMatrix);
    fSensVolMatrix->Multiply(fSensVolModifMatrix); 
    parent = parent->GetParent();
  }
  // global matrix after parents modifications
  fSensVolMatrix->Multiply(fMatrix);
  //
  tempAlignObj.SetTranslation(fParVals[0],fParVals[1],fParVals[2]);
  tempAlignObj.SetRotation(fParVals[3],fParVals[4],fParVals[5]);
  tempAlignObj.GetMatrix(*fSensVolModifMatrix);  // global delta matrix
  fSensVolModifMatrix->MultiplyLeft( &fSensVolMatrix->Inverse() );
  fSensVolModifMatrix->Multiply( fSensVolMatrix );
  tempAlignObj.SetMatrix( *fSensVolModifMatrix );  // local delta matrix
  tempAlignObj.GetPars(pars,pars+3);
  //
}


//-------------------------------------------------------------
void AliITSAlignMille2Module::CalcDerivDPosDPar(Int_t sensVol,const Double_t* pl, Double_t *deriv)
{
  // calculate jacobian of the global position vs Parameters (dPos/dParam) 
  // for the point in the sensor sensVol
  const double kDel = 0.01;
  double pos0[3],pos1[3],pos2[3],pos3[3];
  double delta[kMaxParGeom];
  //
  for (int ip=kMaxParGeom;ip--;) delta[ip] = 0;
  //
  for (int ip=kMaxParGeom;ip--;) {
    //
    delta[ip] -= kDel;
    GetSensitiveVolumeModifiedMatrix(sensVol,delta,!GeomParamsGlobal())->LocalToMaster(pl,pos0);    
    delta[ip] += kDel/2;
    GetSensitiveVolumeModifiedMatrix(sensVol,delta,!GeomParamsGlobal())->LocalToMaster(pl,pos1);    
    delta[ip] += kDel;
    GetSensitiveVolumeModifiedMatrix(sensVol,delta,!GeomParamsGlobal())->LocalToMaster(pl,pos2);    
    delta[ip] += kDel/2;
    GetSensitiveVolumeModifiedMatrix(sensVol,delta,!GeomParamsGlobal())->LocalToMaster(pl,pos3);    
    //
    delta[ip] = 0;
    double *curd = deriv + ip*3;
    for (int i=3;i--;) curd[i] = (8.*(pos2[i]-pos1[i]) - (pos3[i]-pos0[i]))/6./kDel;
  }
  //
}

//-------------------------------------------------------------
void AliITSAlignMille2Module::CalcDerivGloLoc(Int_t idx,Double_t *deriv)
{
  // calculate derivative of global params vs local param idx:  deriv[j] = dParGlo[j]/dParLoc[idx]
  Double_t lpar[kMaxParGeom];
  for (int i=kMaxParGeom;i--;) lpar[i] = 0.;
  //  using f(x+h),f(x-h),f(x+h/2),f(x-h2)...
  Double_t par1[kMaxParGeom]; // f(x-h)
  Double_t par2[kMaxParGeom]; // f(x-h/2)
  Double_t par3[kMaxParGeom]; // f(x+h/2)
  Double_t par4[kMaxParGeom]; // f(x+h)
  //
  const Double_t dpar = 1e-3;
  //
  // first values
  lpar[idx] -= dpar;
  GetGlobalParams(lpar,lpar+3, par1,par1+3);
  //
  // second values
  lpar[idx] += dpar/2;
  GetGlobalParams(lpar,lpar+3, par2,par2+3);
  //
  // third values
  lpar[idx] += dpar;
  GetGlobalParams(lpar,lpar+3, par3,par3+3);
  //
  // fourth values
  lpar[idx] += dpar/2;
  GetGlobalParams(lpar,lpar+3, par4,par4+3);
  //
  Double_t h2 = 1./(2.*dpar);
  for (int i=kMaxParGeom;i--;) {
    Double_t d0 = par4[i]-par1[i];
    Double_t d2 = 2.*(par3[i]-par2[i]);
    deriv[i] = h2*(4*d2 - d0)/3.;
    if (TMath::Abs(deriv[i]) < 1.0e-9) deriv[i] = 0.0;
  }
  //
}

//-------------------------------------------------------------
void AliITSAlignMille2Module::CalcDerivLocGlo(Double_t *deriv)
{
  // calculate derivative of local params vs global params:  deriv[i][j] = dParLoc[i]/dParGlo[j]
  Double_t gpar[kMaxParGeom];
  for (int i=kMaxParGeom;i--;) gpar[i] = 0.;
  //  using f(x+h),f(x-h),f(x+h/2),f(x-h2)...
  Double_t par1[kMaxParGeom]; // f(x-h)
  Double_t par2[kMaxParGeom]; // f(x-h/2)
  Double_t par3[kMaxParGeom]; // f(x+h/2)
  Double_t par4[kMaxParGeom]; // f(x+h)
  //
  const Double_t dpar = 1e-3;
  //
  for (int ig=kMaxParGeom;ig--;) {
    // first values
    gpar[ig] -= dpar;
    GetLocalParams(gpar,gpar+3, par1,par1+3);
    //
    // second values
    gpar[ig] += dpar/2;
    GetLocalParams(gpar,gpar+3, par2,par2+3);
    //
    // third values
    gpar[ig] += dpar;
    GetLocalParams(gpar,gpar+3, par3,par3+3);
    //
    // fourth values
    gpar[ig] += dpar/2;
    GetLocalParams(gpar,gpar+3, par4,par4+3);
    //
    Double_t h2 = 1./(2.*dpar);
    for (int i=kMaxParGeom;i--;) {
      Double_t d0 = par4[i]-par1[i];
      Double_t d2 = 2.*(par3[i]-par2[i]);
      int idig = i*kMaxParGeom + ig;
      deriv[idig] = h2*(4*d2 - d0)/3.;
      if (TMath::Abs(deriv[idig]) < 1.0e-9) deriv[idig] = 0.0;
    }
  }
  //
}

//________________________________________________________________________________________________________
void AliITSAlignMille2Module::CalcDerivGloLoc(Int_t sensVol,Int_t paridx,Double_t* derivative)
{
  /// calculate numerically the derivatives of global params vs local param paridx for sensor sensVol: dPglob/dPloc_paridx
  //
  Double_t lpar[kMaxParGeom];
  for (int i=kMaxParGeom;i--;) lpar[i] = 0.;
  //  using f(x+h),f(x-h),f(x+h/2),f(x-h2)...
  Double_t par1[kMaxParGeom]; // f(x-h)
  Double_t par2[kMaxParGeom]; // f(x-h/2)
  Double_t par3[kMaxParGeom]; // f(x+h/2)
  Double_t par4[kMaxParGeom]; // f(x+h)
  //
  const Double_t dpar = 1e-3;
  //
  // first values
  lpar[paridx] -= dpar;
  GetSensVolGlobalParams(sensVol,lpar,lpar+3, par1,par1+3);
  //
  // second values
  lpar[paridx] += dpar/2;
  GetSensVolGlobalParams(sensVol,lpar,lpar+3, par2,par2+3);
  //
  // third values
  lpar[paridx] += dpar;
  GetSensVolGlobalParams(sensVol,lpar,lpar+3, par3,par3+3);
  //
  // fourth values
  lpar[paridx] += dpar/2;
  GetSensVolGlobalParams(sensVol,lpar,lpar+3, par4,par4+3);
  //
  Double_t h2 = 1./(2.*dpar);
  for (int i=kMaxParGeom;i--;) {
    Double_t d0 = par4[i]-par1[i];
    Double_t d2 = 2.*(par3[i]-par2[i]);
    derivative[i] = h2*(4*d2 - d0)/3.;
    if (TMath::Abs(derivative[i]) < 1.0e-9) derivative[i] = 0.0;
  }
  //
}

//________________________________________________________________________________________________________
void AliITSAlignMille2Module::CalcDerivCurLoc(Int_t sensVol,Int_t paridx,Double_t* derivative)  
{
  /// calculate numerically the derivatives of sensor params in the current volume vs sensor local param paridx
  //
  Double_t lpar[kMaxParGeom];
  for (int i=kMaxParGeom;i--;) lpar[i] = 0.;
  //  using f(x+h),f(x-h),f(x+h/2),f(x-h2)...
  Double_t par1[kMaxParGeom]; // f(x-h)
  Double_t par2[kMaxParGeom]; // f(x-h/2)
  Double_t par3[kMaxParGeom]; // f(x+h/2)
  Double_t par4[kMaxParGeom]; // f(x+h)
  //
  const Double_t dpar = 1e-3;
  //
  // first values
  lpar[paridx] -= dpar;
  GetSensVolLocalParams(sensVol,lpar,lpar+3, par1,par1+3);
  //
  // second values
  lpar[paridx] += dpar/2;
  GetSensVolLocalParams(sensVol,lpar,lpar+3, par2,par2+3);
  //
  // third values
  lpar[paridx] += dpar;
  GetSensVolLocalParams(sensVol,lpar,lpar+3, par3,par3+3);
  //
  // fourth values
  lpar[paridx] += dpar/2;
  GetSensVolLocalParams(sensVol,lpar,lpar+3, par4,par4+3);
  //
  Double_t h2 = 1./(2.*dpar);
  for (int i=kMaxParGeom;i--;) {
    Double_t d0 = par4[i]-par1[i];
    Double_t d2 = 2.*(par3[i]-par2[i]);
    derivative[i] = h2*(4*d2 - d0)/3.;
    if (TMath::Abs(derivative[i]) < 1.0e-9) derivative[i] = 0.0;
  }
  //
}


//-------------------------------------------------------------
void AliITSAlignMille2Module::GetGlobalParams(Double_t *t, Double_t *r) const
{
  // global parameters of the module
  AliAlignObjParams tempAlignObj;
  tempAlignObj.SetMatrix( *fMatrix );
  tempAlignObj.GetPars(t,r);
}

//-------------------------------------------------------------
void AliITSAlignMille2Module::GetGlobalParams(const Double_t* loct, const Double_t* locr, Double_t *t, Double_t *r)
{
  // global parameters of the module after the modification by local loct,locr
  AliAlignObjParams tempAlignObj;
  tempAlignObj.SetTranslation(loct[0],loct[1],loct[2]);
  tempAlignObj.SetRotation(locr[0],locr[1],locr[2]);
  tempAlignObj.GetMatrix(*fSensVolModifMatrix);  
  *fSensVolMatrix = *fMatrix;
  fSensVolMatrix->Multiply(fSensVolModifMatrix);
  tempAlignObj.SetMatrix(*fSensVolMatrix);
  tempAlignObj.GetPars(t,r);
}

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