//-----------------------------------------------------------------------------
/// \class AliMUONSurveyUtil
-/// Utility class for the survey processing of the ALICE DiMuon spectrometer
+/// 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.
/// \author Javier Castillo
//-----------------------------------------------------------------------------
-#include <fstream>
-
-#include <TGeoManager.h>
#include <TClonesArray.h>
#include <TMath.h>
#include <TMatrixDSym.h>
#include <TString.h>
-#include <Riostream.h>
#include "AliAlignObjMatrix.h"
-#include "AliGeomManager.h"
-#include "AliCDBManager.h"
-#include "AliCDBMetaData.h"
-#include "AliCDBId.h"
#include "AliMUONSurveyUtil.h"
#include "AliMUONGeometryTransformer.h"
-#include "AliMUONGeometryMisAligner.h"
#include "AliMUONGeometryModuleTransformer.h"
#include "AliMUONGeometryDetElement.h"
#include "AliMUONGeometryBuilder.h"
}
AliMUONSurveyUtil* AliMUONSurveyUtil::Instance() {
+ /// Return its instance
if (!fgInstance)
fgInstance = new AliMUONSurveyUtil();
void AliMUONSurveyUtil::AnglesToMatrix(const Double_t *angles, Double_t *rot)
{
- // Calculates the rotation matrix using the
- // Euler angles in "x y z" notation
- //
+ /// 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]);
rot[8] = costhe*cospsi;
}
-Double_t AliMUONSurveyUtil::xpCenter(Double_t *x, Double_t *par){
+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]);
return xD;
}
-Double_t AliMUONSurveyUtil::xnCenter(Double_t *x, Double_t *par){
-
+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]);
return xD;
}
-Double_t AliMUONSurveyUtil::phixpn(Double_t *x, Double_t *par){
-
+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])
return phix;
}
-Double_t AliMUONSurveyUtil::phixpp(Double_t *x, Double_t *par){
-
+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])
return phix;
}
-Double_t AliMUONSurveyUtil::phixnn(Double_t *x, Double_t *par){
-
+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])
return phix;
}
-Double_t AliMUONSurveyUtil::phixnp(Double_t *x, Double_t *par){
-
+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])
return phix;
}
-Double_t AliMUONSurveyUtil::ypCenter(Double_t *x, Double_t *par){
- // par : x1l, y1l, z1l, x2l, y2l, z2, lpsi, tht,
+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]);
return yD;
}
-Double_t AliMUONSurveyUtil::phiypn(Double_t *x, Double_t *par){
+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]);
return phiy;
}
-Double_t AliMUONSurveyUtil::phiypp(Double_t *x, Double_t *par){
+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]);
return phiy;
}
-Double_t AliMUONSurveyUtil::ynCenter(Double_t *x, Double_t *par){
-
+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 AliMUONSurveyUtil::phiynn(Double_t *x, Double_t *par){
+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 AliMUONSurveyUtil::phiynp(Double_t *x, Double_t *par){
+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]);
return phiy;
}
-Double_t AliMUONSurveyUtil::znCenter(Double_t *x, Double_t *par){
- // par : x1l, y1l, z1l, x2l, y2l, z2l, psi, tht
+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]);
return zD;
}
-Double_t AliMUONSurveyUtil::zpCenter(Double_t *x, Double_t *par){
- // par : x1l, y1l, z1l, x2l, y2l, z2l, psi, tht
+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]);
}
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;
AliAlignObjMatrix *alignMat = 0x0;
- Int_t modId = (chId<4)? chId : 4+(chId-4)*2;
+// Int_t modId = (chId<4)? chId : 4+(chId-4)*2;
TString chName1;
TString chName2;
if (chId<4){