]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONSurveyUtil.cxx
MUON + CheckCompiler
[u/mrichter/AliRoot.git] / MUON / AliMUONSurveyUtil.cxx
diff --git a/MUON/AliMUONSurveyUtil.cxx b/MUON/AliMUONSurveyUtil.cxx
deleted file mode 100644 (file)
index 81895cf..0000000
+++ /dev/null
@@ -1,711 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-//-----------------------------------------------------------------------------
-/// \class AliMUONSurveyUtil
-/// Singleton utility class for the survey processing of the ALICE DiMuon spectrometer 
-/// 
-/// This class contains various functions to calculate misalignement parameters
-/// from survey data and designed positions of survey targets.
-/// Macro also includes a method to get the new AliMUONGeometryTranformer.
-/// 
-/// \author Javier Castillo
-//-----------------------------------------------------------------------------
-
-#include <TClonesArray.h>
-#include <TMath.h>
-#include <TMatrixDSym.h>
-#include <TString.h>
-
-#include "AliAlignObjMatrix.h"
-
-#include "AliMUONSurveyUtil.h"
-#include "AliMUONGeometryTransformer.h"
-#include "AliMUONGeometryModuleTransformer.h"
-#include "AliMUONGeometryDetElement.h"
-#include "AliMUONGeometryBuilder.h"
-#include "AliMpExMap.h"
-#include "AliMpExMapIterator.h"
-
-/// \cond CLASSIMP
-ClassImp(AliMUONSurveyUtil)
-/// \endcond
-
-int AliMUONSurveyUtil::fgNDetElemCh[10] = {4,4,4,4,18,18,26,26,26,26};
-AliMUONSurveyUtil* AliMUONSurveyUtil::fgInstance(0x0);
-
-AliMUONSurveyUtil::~AliMUONSurveyUtil(){
-  printf("WHAT AM I DOING HERE????????????????\n");
-  fgInstance = 0x0;
-}
-
-AliMUONSurveyUtil* AliMUONSurveyUtil::Instance() {
-  ///  Return its instance 
-  if (!fgInstance) 
-    fgInstance = new AliMUONSurveyUtil();
-  
-  return fgInstance;
-}
-
-Bool_t AliMUONSurveyUtil::MatrixToAngles(const Double_t *rot, Double_t *angles)
-{
-  /// Calculates the Euler angles in "x y z" notation
-  /// using the rotation matrix
-  /// Returns false in case the rotation angles can not be
-
-  // extracted from the matrix
-  //
-  if(TMath::Abs(rot[0])<1e-7 || TMath::Abs(rot[8])<1e-7) {
-    printf("Failed to extract roll-pitch-yall angles!");
-    return kFALSE;
-  }
-  //   Double_t raddeg = TMath::RadToDeg();
-  angles[0]=TMath::ATan2(-rot[5],rot[8]);
-  angles[1]=TMath::ASin(rot[2]);
-  angles[2]=TMath::ATan2(-rot[1],rot[0]);
-  return kTRUE;
-}
-
-void AliMUONSurveyUtil::AnglesToMatrix(const Double_t *angles, Double_t *rot)
-{
-  /// Calculates the rotation matrix using the 
-  /// Euler angles in "x y z" notation
-  ///
-  //  Double_t degrad = TMath::DegToRad();
-  Double_t degrad = 1.;
-  Double_t sinpsi = TMath::Sin(degrad*angles[0]);
-  Double_t cospsi = TMath::Cos(degrad*angles[0]);
-  Double_t sinthe = TMath::Sin(degrad*angles[1]);
-  Double_t costhe = TMath::Cos(degrad*angles[1]);
-  Double_t sinphi = TMath::Sin(degrad*angles[2]);
-  Double_t cosphi = TMath::Cos(degrad*angles[2]);
-
-  rot[0] =  costhe*cosphi;
-  rot[1] = -costhe*sinphi;
-  rot[2] =  sinthe;
-  rot[3] =  sinpsi*sinthe*cosphi + cospsi*sinphi;
-  rot[4] = -sinpsi*sinthe*sinphi + cospsi*cosphi;
-  rot[5] = -costhe*sinpsi;
-  rot[6] = -cospsi*sinthe*cosphi + sinpsi*sinphi;
-  rot[7] =  cospsi*sinthe*sinphi + sinpsi*cosphi;
-  rot[8] =  costhe*cospsi;
-}
-
-Double_t AliMUONSurveyUtil::XpCenter(const Double_t *x, const Double_t *par) const{
-  /// Returns center x position using x coord. of 2 button targets. + solution. 
-  Double_t lCos2Tht = TMath::Cos(2*par[6]);
-  Double_t lSinTht = TMath::Sin(par[6]);
-
-  Double_t inSqrt = TMath::Abs((par[0] - par[3])*(par[0] - par[3]) 
-                              -2*(x[0] -x[1])*(x[0] -x[1]) 
-                              +(par[1] - par[4] + par[2] - par[5])*(par[1] - par[4] - par[2] + par[5]) 
-                              +((par[0] - par[3])*(par[0] - par[3]) 
-                                +(par[1] - par[4])*(par[1] - par[4]) 
-                                +(par[2] - par[5])*(par[2] - par[5]))*lCos2Tht 
-                              +4*(x[0] - x[1])*(par[2] - par[5])*lSinTht);
-
-  if (inSqrt<0) return inSqrt*1e10;
-
-  Double_t xD = ((2*(par[0]*par[0]*x[1] 
-                    -par[0]*par[3]*(x[0] + x[1]) 
-                    +x[1]*par[1]*(par[1] - par[4]) 
-                    +x[0]*(par[3]*par[3] - par[1]*par[4] + par[4]*par[4])) 
-                 -2*(par[3]*par[3]*par[2] 
-                     +par[0]*par[0]*par[5] 
-                     -par[0]*par[3]*(par[2] + par[5]) 
-                     +(par[1] - par[4])*(-par[4]*par[2] +par[1]*par[5]))*lSinTht 
-                 +TMath::Sqrt(2)*(-par[3]*par[1] + par[0]*par[4])
-                 *TMath::Sqrt(inSqrt))
-                /(2*((par[0] - par[3])*(par[0] - par[3]) + (par[1] - par[4])*(par[1] - par[4]))));
-
-  return xD;
-}
-
-Double_t AliMUONSurveyUtil::XnCenter(const Double_t *x, const Double_t *par) const{
-  /// Returns center x position using x coord. of 2 button targets. - solution. 
-  Double_t lCos2Tht = TMath::Cos(2*par[6]);
-  Double_t lSinTht = TMath::Sin(par[6]);
-
-  Double_t inSqrt = TMath::Abs((par[0] - par[3])*(par[0] - par[3]) 
-                              -2*(x[0] - x[1])*(x[0] - x[1]) 
-                              +(par[1] - par[4] + par[2] - par[5])*(par[1] - par[4] - par[2] + par[5]) 
-                              +((par[0] - par[3])*(par[0] - par[3]) 
-                                +(par[1] - par[4])*(par[1] - par[4]) 
-                                +(par[2] - par[5])*(par[2] - par[5]))*lCos2Tht
-                              +4*(x[0] - x[1])*(par[2] - par[5])*lSinTht);
-
-  if (inSqrt<0) return inSqrt*1e10;
-
-  Double_t xD = ((2*(par[0]*par[0]*x[1] 
-                    -par[0]*par[3]*(x[0] + x[1]) 
-                    +x[1]*par[1]*(par[1] - par[4]) 
-                    +x[0]*(par[3]*par[3] - par[1]*par[4] + par[4]*par[4])) 
-                 -2*(par[3]*par[3]*par[2] + par[0]*par[0]*par[5] 
-                     -par[0]*par[3]*(par[2] + par[5]) 
-                     +(par[1] - par[4])*(-par[4]*par[2] + par[1]*par[5]))*lSinTht 
-                 +TMath::Sqrt(2)*(par[3]*par[1] - par[0]*par[4])
-                 *TMath::Sqrt(inSqrt))
-                /(2*((par[0] - par[3])*(par[0] - par[3]) + (par[1] - par[4])*(par[1] - par[4]))));
-
-  return xD;
-}
-
-Double_t AliMUONSurveyUtil::PhiXpn(const Double_t *x, const Double_t *par) const{
-  /// Returns phi rot. using x coord. of 2 button targets. +- solution. 
-  Double_t inSqrt = TMath::Abs(((par[0] - par[3])*(par[0] - par[3]) 
-                               -2*(x[0] - x[1])*(x[0] - x[1]) 
-                               +(par[1] - par[4] + par[2] - par[5])*(par[1] - par[4] - par[2] + par[5]) 
-                               +(+(par[0] - par[3])*(par[0] - par[3]) 
-                                 +(par[1] - par[4])*(par[1] - par[4]) 
-                                 +(par[2] - par[5])*(par[2] - par[5]))*TMath::Cos(2*par[6]) 
-                               +4*(x[0] - x[1])*(par[2] - par[5])*TMath::Sin(par[6])));
-
-  if (inSqrt<0) return inSqrt*1e10;
-  
-  Double_t phix = ((+2*(par[0] - par[3])*(x[0] - x[1]) 
-                   -2*(par[0] - par[3])*(par[2] - par[5])*TMath::Sin(par[6]) 
-                   +TMath::Sqrt(2)*(par[1] - par[4])
-                   *TMath::Sqrt(inSqrt))
-                  /(2*(+(par[0] - par[3])*(par[0] - par[3]) 
-                       +(par[1] - par[4])*(par[1] - par[4]))*TMath::Cos(par[6])));
-
-  phix = -TMath::ACos(phix);
-
-  return phix;
-}
-
-Double_t AliMUONSurveyUtil::PhiXpp(const Double_t *x, const Double_t *par) const{
-  /// Returns phi rot. using x coord. of 2 button targets. ++ solution. 
-  Double_t inSqrt = TMath::Abs(+(par[0] - par[3])*(par[0] - par[3]) 
-                              -2*(x[0] - x[1])*(x[0] - x[1]) 
-                              +(par[1] - par[4] + par[2] - par[5])*(par[1] - par[4] - par[2] + par[5]) 
-                              +(+(par[0] - par[3])*(par[0] - par[3]) 
-                                +(par[1] - par[4])*(par[1] - par[4]) 
-                                +(par[2] - par[5])*(par[2] - par[5]))*TMath::Cos(2*par[6]) 
-                              +4*(x[0] - x[1])*(par[2] - par[5])*TMath::Sin(par[6]));
-
-  if (inSqrt<0) return inSqrt*1e10;
-
-  Double_t phix = ((+2*(par[0] - par[3])*(x[0] - x[1]) 
-                   -2*(par[0] - par[3])*(par[2] - par[5])*TMath::Sin(par[6]) 
-                   +TMath::Sqrt(2)*(par[1] - par[4])
-                   *TMath::Sqrt(inSqrt))
-                  /(2*(+(par[0] - par[3])*(par[0] - par[3]) 
-                       +(par[1] - par[4])*(par[1] - par[4]))*TMath::Cos(par[6])));
-
-  phix = TMath::ACos(phix);
-
-  return phix;
-}
-
-Double_t AliMUONSurveyUtil::PhiXnn(const Double_t *x, const Double_t *par) const{
-  /// Returns phi rot. using x coord. of 2 button targets. -- solution. 
-  Double_t inSqrt = TMath::Abs(+(par[0] - par[3])*(par[0] - par[3]) 
-                              -2*(x[0] - x[1])*(x[0] - x[1]) 
-                              +(par[1] - par[4] + par[2] - par[5])*(par[1] - par[4] - par[2] + par[5]) 
-                              +(+(par[0] - par[3])*(par[0] - par[3]) 
-                                +(par[1] - par[4])*(par[1] - par[4]) 
-                                +(par[2] - par[5])*(par[2] - par[5]))*TMath::Cos(2*par[6]) 
-                              + 4*(x[0] - x[1])*(par[2] - par[5])*TMath::Sin(par[6]));
-
-  if (inSqrt<0) return inSqrt*1e10;
-  
-  Double_t phix = (+(+2*(par[0] - par[3])*(x[0] - x[1]) 
-                    -2*(par[0] - par[3])*(par[2] - par[5])*TMath::Sin(par[6]) 
-                    +TMath::Sqrt(2)*(-par[1] + par[4])
-                    *TMath::Sqrt(inSqrt))
-                  /(2*(+(par[0] - par[3])*(par[0] - par[3]) 
-                       +(par[1] - par[4])*(par[1] - par[4]))*TMath::Cos(par[6])));
-
-  phix = -TMath::ACos(phix);
-
-  return phix;
-}
-
-Double_t AliMUONSurveyUtil::PhiXnp(const Double_t *x, const Double_t *par) const{
-  /// Returns phi rot. using x coord. of 2 button targets. +- solution. 
-  Double_t inSqrt = TMath::Abs(+(par[0] - par[3])*(par[0] - par[3]) 
-                              -2*(x[0] - x[1])*(x[0] - x[1]) 
-                              +(par[1] - par[4] + par[2] - par[5])*(par[1] - par[4] - par[2] + par[5]) 
-                              +(+(par[0] - par[3])*(par[0] - par[3]) 
-                                +(par[1] - par[4])*(par[1] - par[4]) 
-                                +(par[2] - par[5])*(par[2] - par[5]))*TMath::Cos(2*par[6]) 
-                              +4*(x[0] - x[1])*(par[2] - par[5])*TMath::Sin(par[6]));
-
-  if (inSqrt<0) return inSqrt*1e10;
-
-  Double_t phix = (+(+2*(par[0] - par[3])*(x[0] - x[1]) 
-                    -2*(par[0] - par[3])*(par[2] - par[5])*TMath::Sin(par[6]) 
-                    +TMath::Sqrt(2)*(-par[1] + par[4])
-                    *TMath::Sqrt(inSqrt))
-                  /(2*(+(par[0] - par[3])*(par[0] - par[3]) 
-                       +(par[1] - par[4])*(par[1] - par[4]))*TMath::Cos(par[6])));
-
-  phix = TMath::ACos(phix);
-
-  return phix;
-}
-
-Double_t AliMUONSurveyUtil::YpCenter(const Double_t *x, const Double_t *par) const{
-  /// Returns center y position using y coord. of 2 button targets. + solution. 
-
-  // par : x1l, y1l, z1l, x2l, y2l, z2, lpsi, tht,
-  Double_t lCosPsi = TMath::Cos(par[6]);
-  Double_t lSinPsi = TMath::Sin(par[6]);
-  Double_t lCosTht = TMath::Cos(par[7]);
-  Double_t lSinTht = TMath::Sin(par[7]);
-
-  Double_t yD = ((1./((par[0] - par[3])*(par[0] - par[3]) + (par[1] - par[4])*(par[1] - par[4])))
-                *(+par[3]*par[3]*x[0] 
-                  +par[0]*par[0]*x[1] 
-                  -par[0]*par[3]*(x[0] + x[1]) 
-                  +(par[1] - par[4])*(-x[0]*par[4] + par[1]*x[1]) 
-                  +(par[3]*par[3]*par[2] 
-                    +par[0]*par[0]*par[5] 
-                    -par[0]*par[3]*(par[2] + par[5]) 
-                    +(par[1] - par[4])*(-par[4]*par[2] + par[1]*par[5]))*lCosTht*lSinPsi 
-                  +(-par[3]*par[1] + par[0]*par[4])
-                  *TMath::Sqrt(-(x[0] - x[1] 
-                                 +(par[2] - par[5])*lCosTht*lSinPsi)
-                               *(x[0] - x[1] 
-                                 +(par[2] - par[5])*lCosTht*lSinPsi) 
-                               + ((par[0] - par[3])*(par[0] - par[3]) 
-                                  +(par[1] - par[4])*(par[1] - par[4]))*(lCosPsi*lCosPsi 
-                                                                         +lSinPsi*lSinPsi*lSinTht*lSinTht))));
-
-  return yD;  
-}
-
-Double_t AliMUONSurveyUtil::PhiYpn(const Double_t *x, const Double_t *par) const{
-  /// Returns phi rot. using y coord. of 2 button targets. +- solution. 
-
-  Double_t lCosPsi = TMath::Cos(par[6]);
-  Double_t lSinPsi = TMath::Sin(par[6]);
-  Double_t lCosTht = TMath::Cos(par[7]);
-  Double_t lSinTht = TMath::Sin(par[7]);
-
-  Double_t phiy = ((lCosPsi*((par[1] - par[4])*(x[0] - x[1]) 
-                            +(par[1] - par[4])*(par[2] - par[5])*lCosTht*lSinPsi 
-                            +(-par[0] + par[3])
-                            *TMath::Sqrt(-(x[0] - x[1] 
-                                           +(par[2] - par[5])*lCosTht*lSinPsi)
-                                         *(x[0] - x[1] 
-                                           +(par[2] - par[5])*lCosTht*lSinPsi) 
-                                         +(+(par[0] - par[3])*(par[0] - par[3]) 
-                                           +(par[1] - par[4])*(par[1] - par[4]))*(lCosPsi*lCosPsi
-                                                                                  +lSinPsi*lSinPsi*lSinTht*lSinTht))) 
-                   +lSinPsi*lSinTht*((par[0] - par[3])*(x[0] - x[1]) 
-                                     +(par[0] - par[3])*(par[2] - par[5])*lCosTht*lSinPsi 
-                                     +(par[1] - par[4])
-                                     *TMath::Sqrt(-(x[0] - x[1] 
-                                                    +(par[2] - par[5])*lCosTht*lSinPsi)
-                                                  *(x[0] - x[1] 
-                                                    +(par[2] - par[5])*lCosTht*lSinPsi) 
-                                                  + ((par[0] - par[3])*(par[0] - par[3]) 
-                                                     +(par[1] - par[4])*(par[1] - par[4]))*(lCosPsi*lCosPsi 
-                                                                                            +lSinPsi*lSinPsi*lSinTht*lSinTht))))
-                  /((+(par[0] - par[3])*(par[0] - par[3]) 
-                     +(par[1] - par[4])*(par[1] - par[4]))*(lCosPsi*lCosPsi 
-                                                            +lSinPsi*lSinPsi*lSinTht*lSinTht)));
-  
-  phiy = -TMath::ACos(phiy);
-
-
-  return phiy;
-}
-
-Double_t AliMUONSurveyUtil::PhiYpp(const Double_t *x, const Double_t *par) const{
-  /// Returns phi rot. using y coord. of 2 button targets. ++ solution. 
-
-  Double_t lCosPsi = TMath::Cos(par[6]);
-  Double_t lSinPsi = TMath::Sin(par[6]);
-  Double_t lCosTht = TMath::Cos(par[7]);
-  Double_t lSinTht = TMath::Sin(par[7]);
-
-  Double_t phiy = ((lCosPsi*((par[1] - par[4])*(x[0] - x[1]) 
-                            +(par[1] - par[4])*(par[2] - par[5])*lCosTht*lSinPsi 
-                            +(-par[0] + par[3])
-                            *TMath::Sqrt(-(x[0] - x[1] 
-                                           +(par[2] - par[5])*lCosTht*lSinPsi)
-                                         *(x[0] - x[1] 
-                                           +(par[2] - par[5])*lCosTht*lSinPsi) 
-                                         +((par[0] - par[3])*(par[0] - par[3]) 
-                                           +(par[1] - par[4])*(par[1] - par[4]))*(lCosPsi*lCosPsi 
-                                                                                  +lSinPsi*lSinPsi*lSinTht*lSinTht))) 
-                   +lSinPsi*lSinTht*((par[0] - par[3])*(x[0] - x[1]) 
-                                     +(par[0] - par[3])*(par[2] - par[5])*lCosTht*lSinPsi 
-                                     +(par[1] - par[4])*TMath::Sqrt(-(x[0] - x[1] 
-                                                                      +(par[2] - par[5])*lCosTht*lSinPsi)
-                                                                    *(x[0] - x[1] 
-                                                                      +(par[2] - par[5])*lCosTht*lSinPsi) 
-                                                                    +((par[0] - par[3])*(par[0] - par[3])
-                                                                      +(par[1] - par[4])*(par[1] - par[4]))*(lCosPsi*lCosPsi 
-                                                                                                             +lSinPsi*lSinPsi*lSinTht*lSinTht))))
-                  /(((par[0] - par[3])*(par[0] - par[3]) 
-                     +(par[1] - par[4])*(par[1] - par[4]))*(lCosPsi*lCosPsi 
-                                                            +lSinPsi*lSinPsi*lSinTht*lSinTht)));
-  
-  phiy = TMath::ACos(phiy);
-
-  return phiy;
-}
-Double_t AliMUONSurveyUtil::YnCenter(const Double_t *x, const Double_t *par) const{
-  /// Returns center y position using y coord. of 2 button targets. - solution. 
-  Double_t lCosPsi = TMath::Cos(par[6]);
-  Double_t lSinPsi = TMath::Sin(par[6]);
-  Double_t lCosTht = TMath::Cos(par[7]);
-  Double_t lSinTht = TMath::Sin(par[7]);
-
-  Double_t yD = ((1./(+(par[0] - par[3])*(par[0] - par[3]) 
-                     +(par[1] - par[4])*(par[1] - par[4])))
-                *(+par[3]*par[3]*x[0] 
-                  +par[0]*par[0]*x[1] 
-                  -par[0]*par[3]*(x[0] + x[1]) 
-                  +(par[1] - par[4])*(-x[0]*par[4] + par[1]*x[1]) 
-                  +(+par[3]*par[3]*par[2] 
-                    +par[0]*par[0]*par[5] 
-                    -par[0]*par[3]*(par[2] + par[5]) 
-                    +(par[1] - par[4])*(-par[4]*par[2] + par[1]*par[5]))*lCosTht*lSinPsi 
-                  +(par[3]*par[1] - par[0]*par[4])
-                  *TMath::Sqrt(-(+x[0] - x[1] 
-                                 +(par[2] - par[5])*lCosTht*lSinPsi)
-                               *(x[0] - x[1] 
-                                 +(par[2] - par[5])*lCosTht*lSinPsi) 
-                               +((par[0] - par[3])*(par[0] - par[3]) 
-                                 +(par[1] - par[4])*(par[1] - par[4]))*(+lCosPsi*lCosPsi 
-                                                                        +lSinPsi*lSinPsi*lSinTht*lSinTht))));
-  
-  return yD;  
-}
-
-Double_t AliMUONSurveyUtil::PhiYnn(const Double_t *x, const Double_t *par) const{
-  /// Returns phi rot. using y coord. of 2 button targets. -- solution. 
-
-  Double_t lCosPsi = TMath::Cos(par[6]);
-  Double_t lSinPsi = TMath::Sin(par[6]);
-  Double_t lCosTht = TMath::Cos(par[7]);
-  Double_t lSinTht = TMath::Sin(par[7]);
-
-  Double_t phiy = ((lCosPsi*(+(par[1] - par[4])*(x[0] - x[1]) 
-                            +(par[1] - par[4])*(par[2] - par[5])*lCosTht*lSinPsi 
-                            +(par[0] - par[3])
-                            *TMath::Sqrt(-(x[0] - x[1] 
-                                           +(par[2] - par[5])*lCosTht*lSinPsi)
-                                         *(x[0] - x[1] 
-                                           +(par[2] - par[5])*lCosTht*lSinPsi) 
-                                         +(+(par[0] - par[3])*(par[0] - par[3]) 
-                                           +(par[1] - par[4])*(par[1] - par[4]))*(+lCosPsi*lCosPsi 
-                                                                                  +lSinPsi*lSinPsi*lSinTht*lSinTht))) 
-                   +lSinPsi*lSinTht*(+(par[0] - par[3])*(x[0] - x[1]) 
-                                     +(par[0] - par[3])*(par[2] - par[5])*lCosTht*lSinPsi 
-                                     +(-par[1] + par[4])
-                                     *TMath::Sqrt(-(x[0] - x[1] 
-                                                    +(par[2] - par[5])*lCosTht*lSinPsi)
-                                                  *(x[0] - x[1] 
-                                                    +(par[2] - par[5])*lCosTht*lSinPsi) 
-                                                  +(+(par[0] - par[3])*(par[0] - par[3]) 
-                                                    +(par[1] - par[4])*(par[1] - par[4]))*(+lCosPsi*lCosPsi 
-                                                                                           +lSinPsi*lSinPsi*lSinTht*lSinTht))))
-                  /((+(par[0] - par[3])*(par[0] - par[3]) 
-                     +(par[1] - par[4])*(par[1] - par[4]))*(+lCosPsi*lCosPsi 
-                                                            +lSinPsi*lSinPsi*lSinTht*lSinTht)));
-  
-  phiy = -TMath::ACos(phiy);
-  
-  return phiy;
-}
-
-
-Double_t AliMUONSurveyUtil::PhiYnp(const Double_t *x, const Double_t *par) const{
-  /// Returns phi rot. using y coord. of 2 button targets. -+ solution. 
-
-  Double_t lCosPsi = TMath::Cos(par[6]);
-  Double_t lSinPsi = TMath::Sin(par[6]);
-  Double_t lCosTht = TMath::Cos(par[7]);
-  Double_t lSinTht = TMath::Sin(par[7]);
-
-  Double_t phiy = ((lCosPsi*(+(par[1] - par[4])*(x[0] - x[1]) 
-                            +(par[1] - par[4])*(par[2] - par[5])*lCosTht*lSinPsi 
-                            +(par[0] - par[3])
-                            *TMath::Sqrt(-(x[0] - x[1] 
-                                           +(par[2] - par[5])*lCosTht*lSinPsi)
-                                         *(x[0] - x[1] 
-                                           +(par[2] - par[5])*lCosTht*lSinPsi) 
-                                         +((par[0] - par[3])*(par[0] - par[3]) 
-                                           +(par[1] - par[4])*(par[1] - par[4]))*(+lCosPsi*lCosPsi 
-                                                                                  +lSinPsi*lSinPsi*lSinTht*lSinTht))) 
-                   +lSinPsi*lSinTht*(+(par[0] - par[3])*(x[0] - x[1]) 
-                                     +(par[0] - par[3])*(par[2] - par[5])*lCosTht*lSinPsi 
-                                     +(-par[1] + par[4])
-                                     *TMath::Sqrt(-(x[0] - x[1] 
-                                                    +(par[2] - par[5])*lCosTht*lSinPsi)
-                                                  *(x[0] - x[1] 
-                                                    +(par[2] - par[5])*lCosTht*lSinPsi) 
-                                                  +((par[0] - par[3])*(par[0] - par[3]) 
-                                                    +(par[1] - par[4])*(par[1] - par[4]))*(+lCosPsi*lCosPsi 
-                                                                                           +lSinPsi*lSinPsi*lSinTht*lSinTht))))
-                  /((+(par[0] - par[3])*(par[0] - par[3])
-                     +(par[1] - par[4])*(par[1] - par[4]))*(+lCosPsi*lCosPsi 
-                                                            +lSinPsi*lSinPsi*lSinTht*lSinTht)));
-  
-  phiy = TMath::ACos(phiy);
-  
-  return phiy;
-}
-
-Double_t AliMUONSurveyUtil::ZnCenter(const Double_t *x, const Double_t *par) const{
-  /// Returns center z position using z coord. of 2 button targets. - solution. 
-
-  // par :  x1l, y1l, z1l, x2l, y2l, z2l, psi, tht
-  Double_t lCosPsi = TMath::Cos(par[6]);
-  Double_t lSinPsi = TMath::Sin(par[6]);
-  Double_t lCosTht = TMath::Cos(par[7]);
-  Double_t lSinTht = TMath::Sin(par[7]);
-
-  Double_t inSqrt = ((par[3]*par[1] - par[0]*par[4])*(par[3]*par[1] - par[0]*par[4])
-                    *((-(x[0] - x[1])*(x[0] - x[1]))
-                      +(((par[0] - par[3])*(par[0] - par[3])
-                         +(par[1] - par[4])*(par[1] - par[4])))*lSinPsi*lSinPsi
-                      +lCosPsi*((-(par[2] - par[5]))
-                                *lCosTht*(-2*x[0]+2*x[1]
-                                          +(par[2] - par[5])*lCosPsi*lCosTht)
-                                +((par[0] - par[3])*(par[0] - par[3])
-                                  +(par[1] - par[4])*(par[1] - par[4]))*lCosPsi*lSinTht*lSinTht)));
-
-  if (inSqrt<0) return inSqrt*1e10;
-
-  Double_t zD = ((1./((par[0] - par[3])*(par[0] - par[3]) 
-                     +(par[1] - par[4])*(par[1] - par[4])))
-                *(-par[1]*par[4]*x[0] 
-                  +par[4]*par[4]*x[0] 
-                  +par[0]*par[0]*x[1] 
-                  +par[1]*par[1]*x[1] 
-                  -par[1]*par[4]*x[1] 
-                  -par[0]*par[3]*(x[0] + x[1]) 
-                  +par[3]*par[3]*x[0]
-                  +(+par[1]*par[4]*par[2] 
-                    -par[4]*par[4]*par[2] 
-                    -par[0]*par[0]*par[5] 
-                    -par[1]*par[1]*par[5] 
-                    +par[1]*par[4]*par[5] 
-                    +par[0]*par[3]*(par[2] + par[5])
-                    -par[3]*par[3]*par[2])*lCosPsi*lCosTht
-                  -TMath::Sqrt(inSqrt)));
-  
-  return zD;
-}
-
-Double_t AliMUONSurveyUtil::ZpCenter(const Double_t *x, const Double_t *par) const{
-  /// Returns center z position using z coord. of 2 button targets. + solution. 
-
-  // par :  x1l, y1l, z1l, x2l, y2l, z2l, psi, tht
-  Double_t lCosPsi = TMath::Cos(par[6]);
-  Double_t lSinPsi = TMath::Sin(par[6]);
-  Double_t lCosTht = TMath::Cos(par[7]);
-  Double_t lSinTht = TMath::Sin(par[7]);
-
-  Double_t inSqrt = ((par[3]*par[1] - par[0]*par[4])*(par[3]*par[1] - par[0]*par[4])
-                    *((-(x[0] - x[1])*(x[0] - x[1]))
-                      +(((par[0] - par[3])*(par[0] - par[3])
-                         +(par[1] - par[4])*(par[1] - par[4])))*lSinPsi*lSinPsi
-                      +lCosPsi*((-(par[2] - par[5]))
-                                *lCosTht*(-2*x[0]+2*x[1]
-                                          +(par[2] - par[5])*lCosPsi*lCosTht)
-                                +((par[0] - par[3])*(par[0] - par[3])
-                                  +(par[1] - par[4])*(par[1] - par[4]))*lCosPsi*lSinTht*lSinTht)));
-
-  if (inSqrt<0) return inSqrt*1e10;  
-
-  Double_t zD = ((1./((par[0] - par[3])*(par[0] - par[3]) 
-                     +(par[1] - par[4])*(par[1] - par[4])))
-                *(-par[1]*par[4]*x[0] 
-                  +par[4]*par[4]*x[0] 
-                  +par[0]*par[0]*x[1] 
-                  +par[1]*par[1]*x[1] 
-                  -par[1]*par[4]*x[1] 
-                  -par[0]*par[3]*(x[0] + x[1]) 
-                  +par[3]*par[3]*x[0]
-                  +(+par[1]*par[4]*par[2] 
-                    -par[4]*par[4]*par[2] 
-                    -par[0]*par[0]*par[5] 
-                    -par[1]*par[1]*par[5] 
-                    +par[1]*par[4]*par[5] 
-                    +par[0]*par[3]*(par[2] + par[5])
-                    -par[3]*par[3]*par[2])*lCosPsi*lCosTht
-                  +TMath::Sqrt(inSqrt)));
-
-  return zD;
-}
-
-//______________________________________________________________________
-AliMUONGeometryTransformer* AliMUONSurveyUtil::ReAlign(const AliMUONGeometryTransformer * transformer, 
-                                                      int rMod, int rNDetElems, int rDetElemPseudoIdToDetElem[], TGeoCombiTrans deltaDetElemTransf[], Bool_t verbose)
-{
-  /////////////////////////////////////////////////////////////////////
-  ///   Takes the internal geometry module transformers, copies them
-  /// and gets the Detection Elements from them.
-  /// Takes misalignment parameters and applies these
-  /// to the local transform of the Detection Element
-  /// Obtains the global transform by multiplying the module transformer
-  /// transformation with the local transformation 
-  /// Applies the global transform to a new detection element
-  /// Adds the new detection element to a new module transformer
-  /// Adds the new module transformer to a new geometry transformer
-  /// Returns the new geometry transformer
-
-  Int_t iDetElemId = 0;
-  Int_t iDetElemPseudoId = 0;
-
-  AliMUONGeometryTransformer *newGeometryTransformer =
-    new AliMUONGeometryTransformer();
-  for (Int_t iMt = 0; iMt < transformer->GetNofModuleTransformers(); iMt++) {
-    // module transformers    
-    const AliMUONGeometryModuleTransformer *kModuleTransformer =
-      transformer->GetModuleTransformer(iMt, true);
-      
-    AliMUONGeometryModuleTransformer *newModuleTransformer =
-      new AliMUONGeometryModuleTransformer(iMt);
-    newGeometryTransformer->AddModuleTransformer(newModuleTransformer);
-    
-    TGeoCombiTrans moduleTransform =
-      TGeoCombiTrans(*kModuleTransformer->GetTransformation());
-    // New module transformation
-    TGeoCombiTrans *newModuleTransform;
-    if ((rMod<4 && iMt==rMod) || (rMod>=4 && (iMt==4+(rMod-4)*2||iMt==4+(rMod-4)*2+1))) {
-      newModuleTransform = new TGeoCombiTrans(moduleTransform*deltaDetElemTransf[rNDetElems]);
-    } else {
-      newModuleTransform = new TGeoCombiTrans(moduleTransform);
-    }
-    newModuleTransformer->SetTransformation(*newModuleTransform);
-    
-    // For the selected chamber add misalign module
-    if ((rMod<4 && iMt==rMod) || (rMod>=4 && (iMt==4+(rMod-4)*2||iMt==4+(rMod-4)*2+1))) {
-      // Get delta transformation: 
-      // Tdelta = Tnew * Told.inverse
-      TGeoHMatrix deltaModuleTransform = 
-       AliMUONGeometryBuilder::Multiply(*newModuleTransform, 
-                                        kModuleTransformer->GetTransformation()->Inverse());    
-      // Create module mis alignment matrix
-      newGeometryTransformer
-       ->AddMisAlignModule(kModuleTransformer->GetModuleId(), deltaModuleTransform);
-    }
-    
-    AliMpExMap *detElements = kModuleTransformer->GetDetElementStore();
-    
-    if (verbose)
-      printf("%i DEs in old GeometryStore  %i\n",detElements->GetSize(), iMt);
-    TGeoCombiTrans *deltaLocalTransform;
-    TIter next(detElements->CreateIterator());
-    AliMUONGeometryDetElement *detElement;
-    while ((detElement = static_cast<AliMUONGeometryDetElement*>(next()))){
-      /// make a new detection element
-      AliMUONGeometryDetElement *newDetElement =
-       new AliMUONGeometryDetElement(detElement->GetId(),
-                                     detElement->GetVolumePath());
-      TString lDetElemName(detElement->GetDEName());
-      lDetElemName.ReplaceAll("DE","");
-      iDetElemId = lDetElemName.Atoi();
-      iDetElemPseudoId = iDetElemId%100;
-      if ((rMod<4 && iMt==rMod) || (rMod>=4 && (iMt==4+(rMod-4)*2||iMt==4+(rMod-4)*2+1))) {
-       deltaLocalTransform = new TGeoCombiTrans(deltaDetElemTransf[rDetElemPseudoIdToDetElem[iDetElemPseudoId]]);       
-      } else {
-       deltaLocalTransform = new TGeoCombiTrans(*gGeoIdentity);
-      }
-      
-      // local transformation of this detection element.
-      TGeoCombiTrans localTransform
-       = TGeoCombiTrans(*detElement->GetLocalTransformation());
-      //      TGeoHMatrix newLocalMatrix = localTransform * (*deltaLocalTransform);
-      TGeoCombiTrans newLocalTransform 
-       = TGeoCombiTrans(localTransform * (*deltaLocalTransform));
-      newDetElement->SetLocalTransformation(newLocalTransform);          
-      // global transformation
-      TGeoHMatrix newGlobalTransform =
-       AliMUONGeometryBuilder::Multiply(*newModuleTransform,
-                                        newLocalTransform);
-      newDetElement->SetGlobalTransformation(newGlobalTransform);
-      
-      // add this det element to module
-      newModuleTransformer->GetDetElementStore()->Add(newDetElement->GetId(),
-                                                     newDetElement);
-      
-      // In the Alice Alignment Framework misalignment objects store
-      // global delta transformation
-      // Get detection "intermediate" global transformation
-      TGeoHMatrix newOldGlobalTransform = (*newModuleTransform) * localTransform;
-      // Get detection element global delta transformation: 
-      // Tdelta = Tnew * Told.inverse
-      TGeoHMatrix  deltaGlobalTransform
-       = AliMUONGeometryBuilder::Multiply(newGlobalTransform, 
-                                          newOldGlobalTransform.Inverse());
-      
-      // Create mis alignment matrix
-      newGeometryTransformer
-       ->AddMisAlignDetElement(detElement->GetId(), deltaGlobalTransform);
-    }
-      
-    if (verbose)
-      printf("Added module transformer %i to the transformer\n", iMt);
-    newGeometryTransformer->AddModuleTransformer(newModuleTransformer);
-  }
-  return newGeometryTransformer;
-}
-
-void AliMUONSurveyUtil::SetAlignmentResolution(const TClonesArray* misAlignArray, Int_t chId, Double_t chResX, Double_t chResY, Double_t deResX, Double_t deResY){
-  /// Sets the alignment resolution to the AliAlignObjMatrix correlation matrix
-
-  TMatrixDSym mChCorrMatrix(6);
-  mChCorrMatrix[0][0]=chResX*chResX;
-  mChCorrMatrix[1][1]=chResY*chResY;
-  //  mChCorrMatrix.Print();
-
-  TMatrixDSym mDECorrMatrix(6);
-  mDECorrMatrix[0][0]=deResX*deResX;
-  mDECorrMatrix[1][1]=deResY*deResY;
-  //  mDECorrMatrix.Print();
-
-  AliAlignObjMatrix *alignMat = 0x0;
-
-//  Int_t modId = (chId<4)? chId : 4+(chId-4)*2;   
-  TString chName1;
-  TString chName2;
-  if (chId<4){
-    chName1 = Form("GM%d",chId);
-    chName2 = Form("GM%d",chId);
-  } else {
-    chName1 = Form("GM%d",4+(chId-4)*2);
-    chName2 = Form("GM%d",4+(chId-4)*2+1);
-  }
-  
-  for (int i=0; i<misAlignArray->GetEntries(); i++) {
-    alignMat = (AliAlignObjMatrix*)misAlignArray->At(i);
-    TString volName(alignMat->GetSymName());
-    if((volName.Contains(chName1)&&
-       volName.Last('/')<=volName.Index(chName1)+chName1.Length())||
-       (volName.Contains(chName2)&&
-       volName.Last('/')<=volName.Index(chName2)+chName2.Length())) {
-      volName.Remove(0,volName.Last('/')+1);
-      if (volName.Contains("GM")) {
-       //      alignMat->Print("NULL");
-       alignMat->SetCorrMatrix(mChCorrMatrix);
-      } else if (volName.Contains("DE")) {
-       //      alignMat->Print("NULL");
-       alignMat->SetCorrMatrix(mDECorrMatrix);
-      }
-    }
-  }
-}