#include "AliFMDSurveyToAlignObjs.h"
#include "AliLog.h"
#include "AliSurveyPoint.h"
#include <TGraph2DErrors.h>
#include <TF2.h>
#include <TVector3.h>
#include <iostream>
#include <iomanip>
#include <TMath.h>
#include <TRotation.h>
#include <TGeoMatrix.h>
#include <TGeoManager.h>
#include <TGeoPhysicalNode.h>
#include "AliFMDGeometry.h"
Double_t
AliFMDSurveyToAlignObjs::GetUnitFactor() const
{
if (!fSurveyObj) return 0;
TString units(fSurveyObj->GetUnits());
if (units.CompareTo("mm", TString::kIgnoreCase) == 0) return .1;
else if (units.CompareTo("cm", TString::kIgnoreCase) == 0) return 1.;
else if (units.CompareTo("m", TString::kIgnoreCase) == 0) return 100.;
return 1;
}
Bool_t
AliFMDSurveyToAlignObjs::GetPoint(const char* name,
TVector3& point,
TVector3& error) const
{
if (!fSurveyPoints) return kFALSE;
Double_t unit = GetUnitFactor();
if (unit == 0) return kFALSE;
TObject* obj = fSurveyPoints->FindObject(name);
if (!obj) return kFALSE;
AliSurveyPoint* p = static_cast<AliSurveyPoint*>(obj);
point.SetXYZ(unit * p->GetX(),
unit * p->GetY(),
unit * p->GetZ());
error.SetXYZ(unit * p->GetPrecisionX(),
unit * p->GetPrecisionY(),
unit * p->GetPrecisionZ());
return kTRUE;
}
Bool_t
AliFMDSurveyToAlignObjs::CalculatePlane(const TVector3& a,
const TVector3& b,
const TVector3& c,
Double_t depth,
Double_t* trans,
Double_t* rot) const
{
TVector3 ab(b-a), bc(c-a);
TVector3 nn(ab.Cross(bc));
if (nn.Mag() < 1e-8) {
Info("CalculatePlane", "Normal vector is null vector");
return kFALSE;
}
TVector3 n(nn.Unit());
TVector3 md(c + b);
md *= 1./2;
TVector3 orig(md - depth * n);
trans[0] = orig[0];
trans[1] = orig[1];
trans[2] = orig[2];
TVector3 uab(ab.Unit());
TVector3 ubc(bc.Unit());
for (size_t i = 0; i < 3; i++) {
rot[i * 3 + 0] = ubc[i];
rot[i * 3 + 1] = uab[i];
rot[i * 3 + 2] = n[i];
}
return kTRUE;
}
Bool_t
AliFMDSurveyToAlignObjs::FitPlane(const TObjArray& points,
const TObjArray& errors,
Double_t ,
Double_t* trans,
Double_t* rot) const
{
Int_t nPoints = points.GetEntries();
if (nPoints < 4) {
AliError(Form("Cannot fit a plane equation to less than 4 survey points, "
"got only %d", nPoints));
return kFALSE;
}
TGraph2DErrors g;
for (int i = 0; i < nPoints; i++) {
TVector3* p = static_cast<TVector3*>(points.At(i));
TVector3* e = static_cast<TVector3*>(errors.At(i));
if (!p || !e) continue;
g.SetPoint(i, p->X(), p->Y(), p->Z());
g.SetPointError(i, e->X(), e->Y(), e->Z());
}
if (g.GetN() < 4) {
AliError(Form("Only got %d survey points - no good for plane fit",
g.GetN()));
return kFALSE;
}
TF2 f("plane", "-[0]*x-[1]*y-[2]",
g.GetXmin(), g.GetXmax(), g.GetYmin(), g.GetYmax());
g.Fit(&f, "Q");
TVector3 nv(f.GetParameter(0), f.GetParameter(1), 1);
TVector3 n(nv.Unit());
Double_t p = -f.GetParameter(2);
TVector3 a(1, 0, f.Eval(1, 0)-p);
TVector3 b(0, -1, f.Eval(0, -1)-p);
TVector3 ua(a.Unit());
TVector3 ub(b.Unit());
for (size_t i = 0; i < 3; i++) {
rot[i * 3 + 0] = ua[i];
rot[i * 3 + 1] = ub[i];
rot[i * 3 + 2] = n[i];
}
trans[0] = 0;
trans[1] = 0;
trans[2] = p;
return kTRUE;
}
Bool_t
AliFMDSurveyToAlignObjs::MakeDelta(const char* path,
const Double_t* rot,
const Double_t* trans,
TGeoHMatrix& delta) const
{
if (!gGeoManager) return kFALSE;
if (!gGeoManager->cd(path)) return kFALSE;
TGeoMatrix* global = gGeoManager->GetCurrentMatrix();
#if 0
PrintRotation(Form("%s rot:", global->GetName()),global->GetRotationMatrix());
PrintVector(Form("%s trans:", global->GetName()),global->GetTranslation());
#endif
return MakeDelta(global, rot, trans, delta);
}
Bool_t
AliFMDSurveyToAlignObjs::MakeDelta(const TGeoMatrix* global,
const Double_t* rot,
const Double_t* trans,
TGeoHMatrix& delta) const
{
TGeoHMatrix* geoM = new TGeoHMatrix;
geoM->SetTranslation(trans);
geoM->SetRotation(rot);
delta = global->Inverse();
delta.MultiplyLeft(geoM);
return true;
}
namespace {
Double_t getFMD1Offset()
{
static Double_t off = 0;
return off;
#if 0
if (off != 0) return off;
const char* lidN = "FMD1_lid_mat0";
TGeoMatrix* lidM = static_cast<TGeoMatrix*>(gGeoManager->GetListOfMatrices()
->FindObject(lidN));
if (!lidM) {
Error("getFMD1Offset", "Couldn't find FMD1 lid transformation %s", lidN);
return 0;
}
const Double_t* lidT = lidM->GetTranslation();
Double_t lidZ = lidT[2];
off = lidZ-3.3;
return off;
#endif
}
}
Bool_t
AliFMDSurveyToAlignObjs::GetFMD1Plane(Double_t* rot, Double_t* trans) const
{
TVector3 icb, ict, ocb, oct, eicb, eict, eocb, eoct;
Int_t missing = 0;
if (!GetPoint("V0L_ICB", icb, eicb)) missing++;
if (!GetPoint("V0L_ICT", ict, eict)) missing++;
if (!GetPoint("V0L_OCB", ocb, eocb)) missing++;
if (!GetPoint("V0L_OCT", oct, eoct)) missing++;
if (missing > 1) {
AliWarning(Form("Only got %d survey points - no good for FMD1 plane",
4-missing));
return kFALSE;
}
#if 0
TObjArray points;
TObjArray errors;
points.Add(&icb); errors.Add(&eicb);
points.Add(&ict); errors.Add(&eict);
points.Add(&oct); errors.Add(&eoct);
points.Add(&ocb); errors.Add(&eocb);
Bool_t ret = FitPlane(points, errors, 0, trans, rot);
if (!ret) {
Warning("GetFMD1Plane", "fit to plane failed");
}
for (Int_t i = 0; i < 4; i++) {
TVector3* v = static_cast<TVector3*>(points.At(i));
TVector3* e = static_cast<TVector3*>(errors.At(i));
Info("GetFMD1Plane", "p%d=(%8f,%8f,%8f)+/-(%8f,%8f,%8f)",
i, v->X(), v->Y(), v->Z(), e->X(), e->Y(), e->Z());
}
#else
Double_t off = getFMD1Offset();
Info("GetFMD1Plane", "Lid offset is %f", off);
Bool_t ret = CalculatePlane(oct, ocb, ict, off, trans, rot);
#endif
PrintRotation("FMD1 rotation:", rot);
PrintVector("FMD1 translation:", trans);
return ret;
}
Bool_t
AliFMDSurveyToAlignObjs::DoFMD1()
{
Double_t rot[9], trans[3];
if (!GetFMD1Plane(rot, trans)) return kFALSE;
#if 0
Double_t gRot[9], gTrans[3];
TVector3 ocb(-127, -220, 324.67);
TVector3 oct(-127, +220, 324.67);
TVector3 icb(+127, -220, 324.67);
TVector3 ict(+127, +220, 324.67);
if (!CalculatePlane(ocb, icb, oct, 0, gTrans, gRot)) {
Warning("DoFMD1", "Failed to make reference plane");
return kFALSE;
}
PrintRotation("FMD1 ref rotation:", gRot);
PrintVector("FMD1 ref translation:", gTrans);
TGeoRotation ggRot; ggRot.SetMatrix(gRot);
TGeoCombiTrans global(gTrans[0], gTrans[1], gTrans[2], &ggRot);
#endif
Double_t off = getFMD1Offset();
Info("DoFMD1", "Lid offset is %f", off);
TGeoTranslation global(0,0,324.670-off);
if (!MakeDelta(&global, rot, trans, fFMD1Delta))
return kFALSE;
return kTRUE;
}
Bool_t
AliFMDSurveyToAlignObjs::GetFMD2Plane(Double_t* rot, Double_t* trans) const
{
const char* names[] = { "FMD2_ITOP", "FMD2_OTOP",
"FMD2_IBOTM", "FMD2_OBOTM",
"FMD2_IBOT", "FMD2_OBOT",
0 };
const char** name = names;
TObjArray points;
TObjArray errors;
int i = 0;
while (*name) {
TVector3 p, e;
if (!GetPoint(*name, p, e)) {
name++;
i++;
continue;
}
if (i == 5) {
Warning("GetFMD2plane", "Setting error on %d, %s to 0.4", i, *name);
e.SetXYZ(0.4, 0.4, 0.4);
}
points.Add(new TVector3(p));
errors.Add(new TVector3(e));
name++;
i++;
}
if (points.GetEntries() < 4) {
AliWarning(Form("Only got %d survey points - no good for FMD2 plane",
points.GetEntries()));
return kFALSE;
}
return FitPlane(points, errors, 0, trans, rot);
}
#define M(I,J) rot[(J-1) * 3 + (I-1)]
Bool_t
AliFMDSurveyToAlignObjs::DoFMD2()
{
Double_t rot[9], trans[3];
if (!GetFMD2Plane(rot, trans)) return kFALSE;
PrintRotation("FMD2 rotation:", rot);
PrintVector("FMD2 translation:", trans);
#if 0
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
rot[i*3+j] = (i == j ? 1 : 0);
}
}
#endif
trans[0] = trans[1] = 0;
trans[2] += 0.015;
if (!MakeDelta("/ALIC_1/F2MT_2/FMD2_support_0/FMD2_back_cover_2",
rot, trans, fFMD2Delta)) return kFALSE;
return kTRUE;
}
void
AliFMDSurveyToAlignObjs::Run()
{
AliFMDGeometry* geom = AliFMDGeometry::Instance();
geom->Init();
geom->InitTransformations();
DoFMD1();
DoFMD2();
}
void
AliFMDSurveyToAlignObjs::Run(const char** files)
{
AliFMDGeometry* geom = AliFMDGeometry::Instance();
geom->Init();
geom->InitTransformations();
const char** file = files;
while (*file) {
if ((*file)[0] == '\0') {
Warning("Run", "no file specified");
file++;
continue;
}
if (!LoadSurveyFromLocalFile(*file)) {
Warning("Run", "Failed to load %s", *file);
file++;
continue;
}
TString sDet(fSurveyObj->GetDetector());
Int_t d = Int_t(sDet[sDet.Length()-1] - '0');
Info("Run", "Making alignment for %s (%d)", sDet.Data(), d);
Bool_t ret = true;
switch (d) {
case 1: ret = DoFMD1(); break;
case 2: ret = DoFMD2(); break;
default:
Warning("Run", "Do not know how to deal with %s", sDet.Data());
break;
}
if (!ret) {
Warning("Run", "Calculation for %s failed", sDet.Data());
}
file++;
}
CreateAlignObjs();
GetAlignObjArray()->Print();
FillDefaultAlignObjs();
}
AliAlignObjParams*
AliFMDSurveyToAlignObjs::CreateDefaultAlignObj(const TString& path,
Int_t id)
{
Int_t nAlign = fAlignObjArray->GetEntries();
AliAlignObjParams* obj =
new ((*fAlignObjArray)[nAlign]) AliAlignObjParams(path.Data(),
id,0,0,0,0,0,0,kTRUE);
if (!obj) {
AliError(Form("Failed to create alignment object for %s", path.Data()));
return 0;
}
if (!obj->SetLocalPars(0, 0, 0, 0, 0, 0)) {
AliError(Form("Failed to set local transforms on %s", path.Data()));
return obj;
}
return obj;
}
AliAlignObjParams*
AliFMDSurveyToAlignObjs::FindAlignObj(const TString& path) const
{
AliAlignObjParams* p = 0;
for (int i = 0; i < fAlignObjArray->GetEntries(); i++) {
p = static_cast<AliAlignObjParams*>(fAlignObjArray->At(i));
if (path.EqualTo(p->GetSymName())) return p;
}
return 0;
}
Bool_t
AliFMDSurveyToAlignObjs::FillDefaultAlignObjs()
{
for (int d = 1; d <= 3; d++) {
const char sides[] = { 'T', 'B', 0 };
const char* side = sides;
while (*side) {
TString path = TString::Format("FMD/FMD%d_%c", d, *side);
if (!FindAlignObj(path)) CreateDefaultAlignObj(path, 0);
const char halves[] = { 'I', d == 1 ? '\0' : 'O', 0 };
const char* half = halves;
while (*half) {
int nsec = *half == 'I' ? 10 : 20;
int start = *side == 'T' ? 0 : nsec/2;
int end = *side == 'T' ? nsec/2 : nsec;
for (int s=start; s < end; s++) {
path = TString::Format("FMD/FMD%d_%c/FMD%c_%02d",
d, *side, *half, s);
CreateDefaultAlignObj(path, 0);
}
half++;
}
side++;
}
}
return true;
}
Bool_t
AliFMDSurveyToAlignObjs::CreateAlignObjs()
{
TClonesArray& array = *fAlignObjArray;
Int_t n = array.GetEntriesFast();
if (!fFMD1Delta.IsIdentity()) {
new (array[n++]) AliAlignObjParams("FMD/FMD1_T", 0, fFMD1Delta, kTRUE);
new (array[n++]) AliAlignObjParams("FMD/FMD1_B", 0, fFMD1Delta, kTRUE);
}
if (!fFMD2Delta.IsIdentity()) {
new (array[n++]) AliAlignObjParams("FMD/FMD2_T", 0, fFMD2Delta, kTRUE);
new (array[n++]) AliAlignObjParams("FMD/FMD2_B", 0, fFMD2Delta, kTRUE);
}
return kTRUE;
}
void
AliFMDSurveyToAlignObjs::PrintVector(const char* text, const TVector3& v)
{
Double_t va[] = { v.X(), v.Y(), v.Z() };
PrintVector(text, va);
}
void
AliFMDSurveyToAlignObjs::PrintVector(const char* text, const Double_t* v)
{
std::cout << text
<< std::setw(15) << v[0]
<< std::setw(15) << v[1]
<< std::setw(15) << v[2]
<< std::endl;
}
void
AliFMDSurveyToAlignObjs::PrintRotation(const char* text, const Double_t* rot)
{
std::cout << text << std::endl;
for (size_t i = 0; i < 3; i++) {
for (size_t j = 0; j < 3; j++)
std::cout << std::setw(15) << rot[i * 3 + j];
std::cout << std::endl;
}
}
AliFMDSurveyToAlignObjs.cxx:1 AliFMDSurveyToAlignObjs.cxx:2 AliFMDSurveyToAlignObjs.cxx:3 AliFMDSurveyToAlignObjs.cxx:4 AliFMDSurveyToAlignObjs.cxx:5 AliFMDSurveyToAlignObjs.cxx:6 AliFMDSurveyToAlignObjs.cxx:7 AliFMDSurveyToAlignObjs.cxx:8 AliFMDSurveyToAlignObjs.cxx:9 AliFMDSurveyToAlignObjs.cxx:10 AliFMDSurveyToAlignObjs.cxx:11 AliFMDSurveyToAlignObjs.cxx:12 AliFMDSurveyToAlignObjs.cxx:13 AliFMDSurveyToAlignObjs.cxx:14 AliFMDSurveyToAlignObjs.cxx:15 AliFMDSurveyToAlignObjs.cxx:16 AliFMDSurveyToAlignObjs.cxx:17 AliFMDSurveyToAlignObjs.cxx:18 AliFMDSurveyToAlignObjs.cxx:19 AliFMDSurveyToAlignObjs.cxx:20 AliFMDSurveyToAlignObjs.cxx:21 AliFMDSurveyToAlignObjs.cxx:22 AliFMDSurveyToAlignObjs.cxx:23 AliFMDSurveyToAlignObjs.cxx:24 AliFMDSurveyToAlignObjs.cxx:25 AliFMDSurveyToAlignObjs.cxx:26 AliFMDSurveyToAlignObjs.cxx:27 AliFMDSurveyToAlignObjs.cxx:28 AliFMDSurveyToAlignObjs.cxx:29 AliFMDSurveyToAlignObjs.cxx:30 AliFMDSurveyToAlignObjs.cxx:31 AliFMDSurveyToAlignObjs.cxx:32 AliFMDSurveyToAlignObjs.cxx:33 AliFMDSurveyToAlignObjs.cxx:34 AliFMDSurveyToAlignObjs.cxx:35 AliFMDSurveyToAlignObjs.cxx:36 AliFMDSurveyToAlignObjs.cxx:37 AliFMDSurveyToAlignObjs.cxx:38 AliFMDSurveyToAlignObjs.cxx:39 AliFMDSurveyToAlignObjs.cxx:40 AliFMDSurveyToAlignObjs.cxx:41 AliFMDSurveyToAlignObjs.cxx:42 AliFMDSurveyToAlignObjs.cxx:43 AliFMDSurveyToAlignObjs.cxx:44 AliFMDSurveyToAlignObjs.cxx:45 AliFMDSurveyToAlignObjs.cxx:46 AliFMDSurveyToAlignObjs.cxx:47 AliFMDSurveyToAlignObjs.cxx:48 AliFMDSurveyToAlignObjs.cxx:49 AliFMDSurveyToAlignObjs.cxx:50 AliFMDSurveyToAlignObjs.cxx:51 AliFMDSurveyToAlignObjs.cxx:52 AliFMDSurveyToAlignObjs.cxx:53 AliFMDSurveyToAlignObjs.cxx:54 AliFMDSurveyToAlignObjs.cxx:55 AliFMDSurveyToAlignObjs.cxx:56 AliFMDSurveyToAlignObjs.cxx:57 AliFMDSurveyToAlignObjs.cxx:58 AliFMDSurveyToAlignObjs.cxx:59 AliFMDSurveyToAlignObjs.cxx:60 AliFMDSurveyToAlignObjs.cxx:61 AliFMDSurveyToAlignObjs.cxx:62 AliFMDSurveyToAlignObjs.cxx:63 AliFMDSurveyToAlignObjs.cxx:64 AliFMDSurveyToAlignObjs.cxx:65 AliFMDSurveyToAlignObjs.cxx:66 AliFMDSurveyToAlignObjs.cxx:67 AliFMDSurveyToAlignObjs.cxx:68 AliFMDSurveyToAlignObjs.cxx:69 AliFMDSurveyToAlignObjs.cxx:70 AliFMDSurveyToAlignObjs.cxx:71 AliFMDSurveyToAlignObjs.cxx:72 AliFMDSurveyToAlignObjs.cxx:73 AliFMDSurveyToAlignObjs.cxx:74 AliFMDSurveyToAlignObjs.cxx:75 AliFMDSurveyToAlignObjs.cxx:76 AliFMDSurveyToAlignObjs.cxx:77 AliFMDSurveyToAlignObjs.cxx:78 AliFMDSurveyToAlignObjs.cxx:79 AliFMDSurveyToAlignObjs.cxx:80 AliFMDSurveyToAlignObjs.cxx:81 AliFMDSurveyToAlignObjs.cxx:82 AliFMDSurveyToAlignObjs.cxx:83 AliFMDSurveyToAlignObjs.cxx:84 AliFMDSurveyToAlignObjs.cxx:85 AliFMDSurveyToAlignObjs.cxx:86 AliFMDSurveyToAlignObjs.cxx:87 AliFMDSurveyToAlignObjs.cxx:88 AliFMDSurveyToAlignObjs.cxx:89 AliFMDSurveyToAlignObjs.cxx:90 AliFMDSurveyToAlignObjs.cxx:91 AliFMDSurveyToAlignObjs.cxx:92 AliFMDSurveyToAlignObjs.cxx:93 AliFMDSurveyToAlignObjs.cxx:94 AliFMDSurveyToAlignObjs.cxx:95 AliFMDSurveyToAlignObjs.cxx:96 AliFMDSurveyToAlignObjs.cxx:97 AliFMDSurveyToAlignObjs.cxx:98 AliFMDSurveyToAlignObjs.cxx:99 AliFMDSurveyToAlignObjs.cxx:100 AliFMDSurveyToAlignObjs.cxx:101 AliFMDSurveyToAlignObjs.cxx:102 AliFMDSurveyToAlignObjs.cxx:103 AliFMDSurveyToAlignObjs.cxx:104 AliFMDSurveyToAlignObjs.cxx:105 AliFMDSurveyToAlignObjs.cxx:106 AliFMDSurveyToAlignObjs.cxx:107 AliFMDSurveyToAlignObjs.cxx:108 AliFMDSurveyToAlignObjs.cxx:109 AliFMDSurveyToAlignObjs.cxx:110 AliFMDSurveyToAlignObjs.cxx:111 AliFMDSurveyToAlignObjs.cxx:112 AliFMDSurveyToAlignObjs.cxx:113 AliFMDSurveyToAlignObjs.cxx:114 AliFMDSurveyToAlignObjs.cxx:115 AliFMDSurveyToAlignObjs.cxx:116 AliFMDSurveyToAlignObjs.cxx:117 AliFMDSurveyToAlignObjs.cxx:118 AliFMDSurveyToAlignObjs.cxx:119 AliFMDSurveyToAlignObjs.cxx:120 AliFMDSurveyToAlignObjs.cxx:121 AliFMDSurveyToAlignObjs.cxx:122 AliFMDSurveyToAlignObjs.cxx:123 AliFMDSurveyToAlignObjs.cxx:124 AliFMDSurveyToAlignObjs.cxx:125 AliFMDSurveyToAlignObjs.cxx:126 AliFMDSurveyToAlignObjs.cxx:127 AliFMDSurveyToAlignObjs.cxx:128 AliFMDSurveyToAlignObjs.cxx:129 AliFMDSurveyToAlignObjs.cxx:130 AliFMDSurveyToAlignObjs.cxx:131 AliFMDSurveyToAlignObjs.cxx:132 AliFMDSurveyToAlignObjs.cxx:133 AliFMDSurveyToAlignObjs.cxx:134 AliFMDSurveyToAlignObjs.cxx:135 AliFMDSurveyToAlignObjs.cxx:136 AliFMDSurveyToAlignObjs.cxx:137 AliFMDSurveyToAlignObjs.cxx:138 AliFMDSurveyToAlignObjs.cxx:139 AliFMDSurveyToAlignObjs.cxx:140 AliFMDSurveyToAlignObjs.cxx:141 AliFMDSurveyToAlignObjs.cxx:142 AliFMDSurveyToAlignObjs.cxx:143 AliFMDSurveyToAlignObjs.cxx:144 AliFMDSurveyToAlignObjs.cxx:145 AliFMDSurveyToAlignObjs.cxx:146 AliFMDSurveyToAlignObjs.cxx:147 AliFMDSurveyToAlignObjs.cxx:148 AliFMDSurveyToAlignObjs.cxx:149 AliFMDSurveyToAlignObjs.cxx:150 AliFMDSurveyToAlignObjs.cxx:151 AliFMDSurveyToAlignObjs.cxx:152 AliFMDSurveyToAlignObjs.cxx:153 AliFMDSurveyToAlignObjs.cxx:154 AliFMDSurveyToAlignObjs.cxx:155 AliFMDSurveyToAlignObjs.cxx:156 AliFMDSurveyToAlignObjs.cxx:157 AliFMDSurveyToAlignObjs.cxx:158 AliFMDSurveyToAlignObjs.cxx:159 AliFMDSurveyToAlignObjs.cxx:160 AliFMDSurveyToAlignObjs.cxx:161 AliFMDSurveyToAlignObjs.cxx:162 AliFMDSurveyToAlignObjs.cxx:163 AliFMDSurveyToAlignObjs.cxx:164 AliFMDSurveyToAlignObjs.cxx:165 AliFMDSurveyToAlignObjs.cxx:166 AliFMDSurveyToAlignObjs.cxx:167 AliFMDSurveyToAlignObjs.cxx:168 AliFMDSurveyToAlignObjs.cxx:169 AliFMDSurveyToAlignObjs.cxx:170 AliFMDSurveyToAlignObjs.cxx:171 AliFMDSurveyToAlignObjs.cxx:172 AliFMDSurveyToAlignObjs.cxx:173 AliFMDSurveyToAlignObjs.cxx:174 AliFMDSurveyToAlignObjs.cxx:175 AliFMDSurveyToAlignObjs.cxx:176 AliFMDSurveyToAlignObjs.cxx:177 AliFMDSurveyToAlignObjs.cxx:178 AliFMDSurveyToAlignObjs.cxx:179 AliFMDSurveyToAlignObjs.cxx:180 AliFMDSurveyToAlignObjs.cxx:181 AliFMDSurveyToAlignObjs.cxx:182 AliFMDSurveyToAlignObjs.cxx:183 AliFMDSurveyToAlignObjs.cxx:184 AliFMDSurveyToAlignObjs.cxx:185 AliFMDSurveyToAlignObjs.cxx:186 AliFMDSurveyToAlignObjs.cxx:187 AliFMDSurveyToAlignObjs.cxx:188 AliFMDSurveyToAlignObjs.cxx:189 AliFMDSurveyToAlignObjs.cxx:190 AliFMDSurveyToAlignObjs.cxx:191 AliFMDSurveyToAlignObjs.cxx:192 AliFMDSurveyToAlignObjs.cxx:193 AliFMDSurveyToAlignObjs.cxx:194 AliFMDSurveyToAlignObjs.cxx:195 AliFMDSurveyToAlignObjs.cxx:196 AliFMDSurveyToAlignObjs.cxx:197 AliFMDSurveyToAlignObjs.cxx:198 AliFMDSurveyToAlignObjs.cxx:199 AliFMDSurveyToAlignObjs.cxx:200 AliFMDSurveyToAlignObjs.cxx:201 AliFMDSurveyToAlignObjs.cxx:202 AliFMDSurveyToAlignObjs.cxx:203 AliFMDSurveyToAlignObjs.cxx:204 AliFMDSurveyToAlignObjs.cxx:205 AliFMDSurveyToAlignObjs.cxx:206 AliFMDSurveyToAlignObjs.cxx:207 AliFMDSurveyToAlignObjs.cxx:208 AliFMDSurveyToAlignObjs.cxx:209 AliFMDSurveyToAlignObjs.cxx:210 AliFMDSurveyToAlignObjs.cxx:211 AliFMDSurveyToAlignObjs.cxx:212 AliFMDSurveyToAlignObjs.cxx:213 AliFMDSurveyToAlignObjs.cxx:214 AliFMDSurveyToAlignObjs.cxx:215 AliFMDSurveyToAlignObjs.cxx:216 AliFMDSurveyToAlignObjs.cxx:217 AliFMDSurveyToAlignObjs.cxx:218 AliFMDSurveyToAlignObjs.cxx:219 AliFMDSurveyToAlignObjs.cxx:220 AliFMDSurveyToAlignObjs.cxx:221 AliFMDSurveyToAlignObjs.cxx:222 AliFMDSurveyToAlignObjs.cxx:223 AliFMDSurveyToAlignObjs.cxx:224 AliFMDSurveyToAlignObjs.cxx:225 AliFMDSurveyToAlignObjs.cxx:226 AliFMDSurveyToAlignObjs.cxx:227 AliFMDSurveyToAlignObjs.cxx:228 AliFMDSurveyToAlignObjs.cxx:229 AliFMDSurveyToAlignObjs.cxx:230 AliFMDSurveyToAlignObjs.cxx:231 AliFMDSurveyToAlignObjs.cxx:232 AliFMDSurveyToAlignObjs.cxx:233 AliFMDSurveyToAlignObjs.cxx:234 AliFMDSurveyToAlignObjs.cxx:235 AliFMDSurveyToAlignObjs.cxx:236 AliFMDSurveyToAlignObjs.cxx:237 AliFMDSurveyToAlignObjs.cxx:238 AliFMDSurveyToAlignObjs.cxx:239 AliFMDSurveyToAlignObjs.cxx:240 AliFMDSurveyToAlignObjs.cxx:241 AliFMDSurveyToAlignObjs.cxx:242 AliFMDSurveyToAlignObjs.cxx:243 AliFMDSurveyToAlignObjs.cxx:244 AliFMDSurveyToAlignObjs.cxx:245 AliFMDSurveyToAlignObjs.cxx:246 AliFMDSurveyToAlignObjs.cxx:247 AliFMDSurveyToAlignObjs.cxx:248 AliFMDSurveyToAlignObjs.cxx:249 AliFMDSurveyToAlignObjs.cxx:250 AliFMDSurveyToAlignObjs.cxx:251 AliFMDSurveyToAlignObjs.cxx:252 AliFMDSurveyToAlignObjs.cxx:253 AliFMDSurveyToAlignObjs.cxx:254 AliFMDSurveyToAlignObjs.cxx:255 AliFMDSurveyToAlignObjs.cxx:256 AliFMDSurveyToAlignObjs.cxx:257 AliFMDSurveyToAlignObjs.cxx:258 AliFMDSurveyToAlignObjs.cxx:259 AliFMDSurveyToAlignObjs.cxx:260 AliFMDSurveyToAlignObjs.cxx:261 AliFMDSurveyToAlignObjs.cxx:262 AliFMDSurveyToAlignObjs.cxx:263 AliFMDSurveyToAlignObjs.cxx:264 AliFMDSurveyToAlignObjs.cxx:265 AliFMDSurveyToAlignObjs.cxx:266 AliFMDSurveyToAlignObjs.cxx:267 AliFMDSurveyToAlignObjs.cxx:268 AliFMDSurveyToAlignObjs.cxx:269 AliFMDSurveyToAlignObjs.cxx:270 AliFMDSurveyToAlignObjs.cxx:271 AliFMDSurveyToAlignObjs.cxx:272 AliFMDSurveyToAlignObjs.cxx:273 AliFMDSurveyToAlignObjs.cxx:274 AliFMDSurveyToAlignObjs.cxx:275 AliFMDSurveyToAlignObjs.cxx:276 AliFMDSurveyToAlignObjs.cxx:277 AliFMDSurveyToAlignObjs.cxx:278 AliFMDSurveyToAlignObjs.cxx:279 AliFMDSurveyToAlignObjs.cxx:280 AliFMDSurveyToAlignObjs.cxx:281 AliFMDSurveyToAlignObjs.cxx:282 AliFMDSurveyToAlignObjs.cxx:283 AliFMDSurveyToAlignObjs.cxx:284 AliFMDSurveyToAlignObjs.cxx:285 AliFMDSurveyToAlignObjs.cxx:286 AliFMDSurveyToAlignObjs.cxx:287 AliFMDSurveyToAlignObjs.cxx:288 AliFMDSurveyToAlignObjs.cxx:289 AliFMDSurveyToAlignObjs.cxx:290 AliFMDSurveyToAlignObjs.cxx:291 AliFMDSurveyToAlignObjs.cxx:292 AliFMDSurveyToAlignObjs.cxx:293 AliFMDSurveyToAlignObjs.cxx:294 AliFMDSurveyToAlignObjs.cxx:295 AliFMDSurveyToAlignObjs.cxx:296 AliFMDSurveyToAlignObjs.cxx:297 AliFMDSurveyToAlignObjs.cxx:298 AliFMDSurveyToAlignObjs.cxx:299 AliFMDSurveyToAlignObjs.cxx:300 AliFMDSurveyToAlignObjs.cxx:301 AliFMDSurveyToAlignObjs.cxx:302 AliFMDSurveyToAlignObjs.cxx:303 AliFMDSurveyToAlignObjs.cxx:304 AliFMDSurveyToAlignObjs.cxx:305 AliFMDSurveyToAlignObjs.cxx:306 AliFMDSurveyToAlignObjs.cxx:307 AliFMDSurveyToAlignObjs.cxx:308 AliFMDSurveyToAlignObjs.cxx:309 AliFMDSurveyToAlignObjs.cxx:310 AliFMDSurveyToAlignObjs.cxx:311 AliFMDSurveyToAlignObjs.cxx:312 AliFMDSurveyToAlignObjs.cxx:313 AliFMDSurveyToAlignObjs.cxx:314 AliFMDSurveyToAlignObjs.cxx:315 AliFMDSurveyToAlignObjs.cxx:316 AliFMDSurveyToAlignObjs.cxx:317 AliFMDSurveyToAlignObjs.cxx:318 AliFMDSurveyToAlignObjs.cxx:319 AliFMDSurveyToAlignObjs.cxx:320 AliFMDSurveyToAlignObjs.cxx:321 AliFMDSurveyToAlignObjs.cxx:322 AliFMDSurveyToAlignObjs.cxx:323 AliFMDSurveyToAlignObjs.cxx:324 AliFMDSurveyToAlignObjs.cxx:325 AliFMDSurveyToAlignObjs.cxx:326 AliFMDSurveyToAlignObjs.cxx:327 AliFMDSurveyToAlignObjs.cxx:328 AliFMDSurveyToAlignObjs.cxx:329 AliFMDSurveyToAlignObjs.cxx:330 AliFMDSurveyToAlignObjs.cxx:331 AliFMDSurveyToAlignObjs.cxx:332 AliFMDSurveyToAlignObjs.cxx:333 AliFMDSurveyToAlignObjs.cxx:334 AliFMDSurveyToAlignObjs.cxx:335 AliFMDSurveyToAlignObjs.cxx:336 AliFMDSurveyToAlignObjs.cxx:337 AliFMDSurveyToAlignObjs.cxx:338 AliFMDSurveyToAlignObjs.cxx:339 AliFMDSurveyToAlignObjs.cxx:340 AliFMDSurveyToAlignObjs.cxx:341 AliFMDSurveyToAlignObjs.cxx:342 AliFMDSurveyToAlignObjs.cxx:343 AliFMDSurveyToAlignObjs.cxx:344 AliFMDSurveyToAlignObjs.cxx:345 AliFMDSurveyToAlignObjs.cxx:346 AliFMDSurveyToAlignObjs.cxx:347 AliFMDSurveyToAlignObjs.cxx:348 AliFMDSurveyToAlignObjs.cxx:349 AliFMDSurveyToAlignObjs.cxx:350 AliFMDSurveyToAlignObjs.cxx:351 AliFMDSurveyToAlignObjs.cxx:352 AliFMDSurveyToAlignObjs.cxx:353 AliFMDSurveyToAlignObjs.cxx:354 AliFMDSurveyToAlignObjs.cxx:355 AliFMDSurveyToAlignObjs.cxx:356 AliFMDSurveyToAlignObjs.cxx:357 AliFMDSurveyToAlignObjs.cxx:358 AliFMDSurveyToAlignObjs.cxx:359 AliFMDSurveyToAlignObjs.cxx:360 AliFMDSurveyToAlignObjs.cxx:361 AliFMDSurveyToAlignObjs.cxx:362 AliFMDSurveyToAlignObjs.cxx:363 AliFMDSurveyToAlignObjs.cxx:364 AliFMDSurveyToAlignObjs.cxx:365 AliFMDSurveyToAlignObjs.cxx:366 AliFMDSurveyToAlignObjs.cxx:367 AliFMDSurveyToAlignObjs.cxx:368 AliFMDSurveyToAlignObjs.cxx:369 AliFMDSurveyToAlignObjs.cxx:370 AliFMDSurveyToAlignObjs.cxx:371 AliFMDSurveyToAlignObjs.cxx:372 AliFMDSurveyToAlignObjs.cxx:373 AliFMDSurveyToAlignObjs.cxx:374 AliFMDSurveyToAlignObjs.cxx:375 AliFMDSurveyToAlignObjs.cxx:376 AliFMDSurveyToAlignObjs.cxx:377 AliFMDSurveyToAlignObjs.cxx:378 AliFMDSurveyToAlignObjs.cxx:379 AliFMDSurveyToAlignObjs.cxx:380 AliFMDSurveyToAlignObjs.cxx:381 AliFMDSurveyToAlignObjs.cxx:382 AliFMDSurveyToAlignObjs.cxx:383 AliFMDSurveyToAlignObjs.cxx:384 AliFMDSurveyToAlignObjs.cxx:385 AliFMDSurveyToAlignObjs.cxx:386 AliFMDSurveyToAlignObjs.cxx:387 AliFMDSurveyToAlignObjs.cxx:388 AliFMDSurveyToAlignObjs.cxx:389 AliFMDSurveyToAlignObjs.cxx:390 AliFMDSurveyToAlignObjs.cxx:391 AliFMDSurveyToAlignObjs.cxx:392 AliFMDSurveyToAlignObjs.cxx:393 AliFMDSurveyToAlignObjs.cxx:394 AliFMDSurveyToAlignObjs.cxx:395 AliFMDSurveyToAlignObjs.cxx:396 AliFMDSurveyToAlignObjs.cxx:397 AliFMDSurveyToAlignObjs.cxx:398 AliFMDSurveyToAlignObjs.cxx:399 AliFMDSurveyToAlignObjs.cxx:400 AliFMDSurveyToAlignObjs.cxx:401 AliFMDSurveyToAlignObjs.cxx:402 AliFMDSurveyToAlignObjs.cxx:403 AliFMDSurveyToAlignObjs.cxx:404 AliFMDSurveyToAlignObjs.cxx:405 AliFMDSurveyToAlignObjs.cxx:406 AliFMDSurveyToAlignObjs.cxx:407 AliFMDSurveyToAlignObjs.cxx:408 AliFMDSurveyToAlignObjs.cxx:409 AliFMDSurveyToAlignObjs.cxx:410 AliFMDSurveyToAlignObjs.cxx:411 AliFMDSurveyToAlignObjs.cxx:412 AliFMDSurveyToAlignObjs.cxx:413 AliFMDSurveyToAlignObjs.cxx:414 AliFMDSurveyToAlignObjs.cxx:415 AliFMDSurveyToAlignObjs.cxx:416 AliFMDSurveyToAlignObjs.cxx:417 AliFMDSurveyToAlignObjs.cxx:418 AliFMDSurveyToAlignObjs.cxx:419 AliFMDSurveyToAlignObjs.cxx:420 AliFMDSurveyToAlignObjs.cxx:421 AliFMDSurveyToAlignObjs.cxx:422 AliFMDSurveyToAlignObjs.cxx:423 AliFMDSurveyToAlignObjs.cxx:424 AliFMDSurveyToAlignObjs.cxx:425 AliFMDSurveyToAlignObjs.cxx:426 AliFMDSurveyToAlignObjs.cxx:427 AliFMDSurveyToAlignObjs.cxx:428 AliFMDSurveyToAlignObjs.cxx:429 AliFMDSurveyToAlignObjs.cxx:430 AliFMDSurveyToAlignObjs.cxx:431 AliFMDSurveyToAlignObjs.cxx:432 AliFMDSurveyToAlignObjs.cxx:433 AliFMDSurveyToAlignObjs.cxx:434 AliFMDSurveyToAlignObjs.cxx:435 AliFMDSurveyToAlignObjs.cxx:436 AliFMDSurveyToAlignObjs.cxx:437 AliFMDSurveyToAlignObjs.cxx:438 AliFMDSurveyToAlignObjs.cxx:439 AliFMDSurveyToAlignObjs.cxx:440 AliFMDSurveyToAlignObjs.cxx:441 AliFMDSurveyToAlignObjs.cxx:442 AliFMDSurveyToAlignObjs.cxx:443 AliFMDSurveyToAlignObjs.cxx:444 AliFMDSurveyToAlignObjs.cxx:445 AliFMDSurveyToAlignObjs.cxx:446 AliFMDSurveyToAlignObjs.cxx:447 AliFMDSurveyToAlignObjs.cxx:448 AliFMDSurveyToAlignObjs.cxx:449 AliFMDSurveyToAlignObjs.cxx:450 AliFMDSurveyToAlignObjs.cxx:451 AliFMDSurveyToAlignObjs.cxx:452 AliFMDSurveyToAlignObjs.cxx:453 AliFMDSurveyToAlignObjs.cxx:454 AliFMDSurveyToAlignObjs.cxx:455 AliFMDSurveyToAlignObjs.cxx:456 AliFMDSurveyToAlignObjs.cxx:457 AliFMDSurveyToAlignObjs.cxx:458 AliFMDSurveyToAlignObjs.cxx:459 AliFMDSurveyToAlignObjs.cxx:460 AliFMDSurveyToAlignObjs.cxx:461 AliFMDSurveyToAlignObjs.cxx:462 AliFMDSurveyToAlignObjs.cxx:463 AliFMDSurveyToAlignObjs.cxx:464 AliFMDSurveyToAlignObjs.cxx:465 AliFMDSurveyToAlignObjs.cxx:466 AliFMDSurveyToAlignObjs.cxx:467 AliFMDSurveyToAlignObjs.cxx:468 AliFMDSurveyToAlignObjs.cxx:469 AliFMDSurveyToAlignObjs.cxx:470 AliFMDSurveyToAlignObjs.cxx:471 AliFMDSurveyToAlignObjs.cxx:472 AliFMDSurveyToAlignObjs.cxx:473 AliFMDSurveyToAlignObjs.cxx:474 AliFMDSurveyToAlignObjs.cxx:475 AliFMDSurveyToAlignObjs.cxx:476 AliFMDSurveyToAlignObjs.cxx:477 AliFMDSurveyToAlignObjs.cxx:478 AliFMDSurveyToAlignObjs.cxx:479 AliFMDSurveyToAlignObjs.cxx:480 AliFMDSurveyToAlignObjs.cxx:481 AliFMDSurveyToAlignObjs.cxx:482 AliFMDSurveyToAlignObjs.cxx:483 AliFMDSurveyToAlignObjs.cxx:484 AliFMDSurveyToAlignObjs.cxx:485 AliFMDSurveyToAlignObjs.cxx:486 AliFMDSurveyToAlignObjs.cxx:487 AliFMDSurveyToAlignObjs.cxx:488 AliFMDSurveyToAlignObjs.cxx:489 AliFMDSurveyToAlignObjs.cxx:490 AliFMDSurveyToAlignObjs.cxx:491 AliFMDSurveyToAlignObjs.cxx:492 AliFMDSurveyToAlignObjs.cxx:493 AliFMDSurveyToAlignObjs.cxx:494 AliFMDSurveyToAlignObjs.cxx:495 AliFMDSurveyToAlignObjs.cxx:496 AliFMDSurveyToAlignObjs.cxx:497 AliFMDSurveyToAlignObjs.cxx:498 AliFMDSurveyToAlignObjs.cxx:499 AliFMDSurveyToAlignObjs.cxx:500 AliFMDSurveyToAlignObjs.cxx:501 AliFMDSurveyToAlignObjs.cxx:502 AliFMDSurveyToAlignObjs.cxx:503 AliFMDSurveyToAlignObjs.cxx:504 AliFMDSurveyToAlignObjs.cxx:505 AliFMDSurveyToAlignObjs.cxx:506 AliFMDSurveyToAlignObjs.cxx:507 AliFMDSurveyToAlignObjs.cxx:508 AliFMDSurveyToAlignObjs.cxx:509 AliFMDSurveyToAlignObjs.cxx:510 AliFMDSurveyToAlignObjs.cxx:511 AliFMDSurveyToAlignObjs.cxx:512 AliFMDSurveyToAlignObjs.cxx:513 AliFMDSurveyToAlignObjs.cxx:514 AliFMDSurveyToAlignObjs.cxx:515 AliFMDSurveyToAlignObjs.cxx:516 AliFMDSurveyToAlignObjs.cxx:517 AliFMDSurveyToAlignObjs.cxx:518 AliFMDSurveyToAlignObjs.cxx:519 AliFMDSurveyToAlignObjs.cxx:520 AliFMDSurveyToAlignObjs.cxx:521 AliFMDSurveyToAlignObjs.cxx:522 AliFMDSurveyToAlignObjs.cxx:523 AliFMDSurveyToAlignObjs.cxx:524 AliFMDSurveyToAlignObjs.cxx:525 AliFMDSurveyToAlignObjs.cxx:526 AliFMDSurveyToAlignObjs.cxx:527 AliFMDSurveyToAlignObjs.cxx:528 AliFMDSurveyToAlignObjs.cxx:529 AliFMDSurveyToAlignObjs.cxx:530 AliFMDSurveyToAlignObjs.cxx:531 AliFMDSurveyToAlignObjs.cxx:532 AliFMDSurveyToAlignObjs.cxx:533 AliFMDSurveyToAlignObjs.cxx:534 AliFMDSurveyToAlignObjs.cxx:535 AliFMDSurveyToAlignObjs.cxx:536 AliFMDSurveyToAlignObjs.cxx:537 AliFMDSurveyToAlignObjs.cxx:538 AliFMDSurveyToAlignObjs.cxx:539 AliFMDSurveyToAlignObjs.cxx:540 AliFMDSurveyToAlignObjs.cxx:541 AliFMDSurveyToAlignObjs.cxx:542 AliFMDSurveyToAlignObjs.cxx:543 AliFMDSurveyToAlignObjs.cxx:544 AliFMDSurveyToAlignObjs.cxx:545 AliFMDSurveyToAlignObjs.cxx:546 AliFMDSurveyToAlignObjs.cxx:547 AliFMDSurveyToAlignObjs.cxx:548 AliFMDSurveyToAlignObjs.cxx:549 AliFMDSurveyToAlignObjs.cxx:550 AliFMDSurveyToAlignObjs.cxx:551 AliFMDSurveyToAlignObjs.cxx:552 AliFMDSurveyToAlignObjs.cxx:553 AliFMDSurveyToAlignObjs.cxx:554 AliFMDSurveyToAlignObjs.cxx:555 AliFMDSurveyToAlignObjs.cxx:556 AliFMDSurveyToAlignObjs.cxx:557 AliFMDSurveyToAlignObjs.cxx:558 AliFMDSurveyToAlignObjs.cxx:559 AliFMDSurveyToAlignObjs.cxx:560 AliFMDSurveyToAlignObjs.cxx:561 AliFMDSurveyToAlignObjs.cxx:562 AliFMDSurveyToAlignObjs.cxx:563 AliFMDSurveyToAlignObjs.cxx:564 AliFMDSurveyToAlignObjs.cxx:565 AliFMDSurveyToAlignObjs.cxx:566 AliFMDSurveyToAlignObjs.cxx:567 AliFMDSurveyToAlignObjs.cxx:568 AliFMDSurveyToAlignObjs.cxx:569 AliFMDSurveyToAlignObjs.cxx:570 AliFMDSurveyToAlignObjs.cxx:571 AliFMDSurveyToAlignObjs.cxx:572 AliFMDSurveyToAlignObjs.cxx:573 AliFMDSurveyToAlignObjs.cxx:574 AliFMDSurveyToAlignObjs.cxx:575 AliFMDSurveyToAlignObjs.cxx:576 AliFMDSurveyToAlignObjs.cxx:577 AliFMDSurveyToAlignObjs.cxx:578 AliFMDSurveyToAlignObjs.cxx:579 AliFMDSurveyToAlignObjs.cxx:580 AliFMDSurveyToAlignObjs.cxx:581 AliFMDSurveyToAlignObjs.cxx:582 AliFMDSurveyToAlignObjs.cxx:583 AliFMDSurveyToAlignObjs.cxx:584 AliFMDSurveyToAlignObjs.cxx:585 AliFMDSurveyToAlignObjs.cxx:586 AliFMDSurveyToAlignObjs.cxx:587 AliFMDSurveyToAlignObjs.cxx:588 AliFMDSurveyToAlignObjs.cxx:589 AliFMDSurveyToAlignObjs.cxx:590 AliFMDSurveyToAlignObjs.cxx:591 AliFMDSurveyToAlignObjs.cxx:592 AliFMDSurveyToAlignObjs.cxx:593 AliFMDSurveyToAlignObjs.cxx:594 AliFMDSurveyToAlignObjs.cxx:595 AliFMDSurveyToAlignObjs.cxx:596 AliFMDSurveyToAlignObjs.cxx:597 AliFMDSurveyToAlignObjs.cxx:598 AliFMDSurveyToAlignObjs.cxx:599 AliFMDSurveyToAlignObjs.cxx:600 AliFMDSurveyToAlignObjs.cxx:601 AliFMDSurveyToAlignObjs.cxx:602 AliFMDSurveyToAlignObjs.cxx:603 AliFMDSurveyToAlignObjs.cxx:604 AliFMDSurveyToAlignObjs.cxx:605 AliFMDSurveyToAlignObjs.cxx:606 AliFMDSurveyToAlignObjs.cxx:607 AliFMDSurveyToAlignObjs.cxx:608 AliFMDSurveyToAlignObjs.cxx:609 AliFMDSurveyToAlignObjs.cxx:610 AliFMDSurveyToAlignObjs.cxx:611 AliFMDSurveyToAlignObjs.cxx:612 AliFMDSurveyToAlignObjs.cxx:613 AliFMDSurveyToAlignObjs.cxx:614 AliFMDSurveyToAlignObjs.cxx:615 AliFMDSurveyToAlignObjs.cxx:616 AliFMDSurveyToAlignObjs.cxx:617 AliFMDSurveyToAlignObjs.cxx:618 AliFMDSurveyToAlignObjs.cxx:619 AliFMDSurveyToAlignObjs.cxx:620 AliFMDSurveyToAlignObjs.cxx:621 AliFMDSurveyToAlignObjs.cxx:622 AliFMDSurveyToAlignObjs.cxx:623 AliFMDSurveyToAlignObjs.cxx:624 AliFMDSurveyToAlignObjs.cxx:625 AliFMDSurveyToAlignObjs.cxx:626 AliFMDSurveyToAlignObjs.cxx:627 AliFMDSurveyToAlignObjs.cxx:628 AliFMDSurveyToAlignObjs.cxx:629 AliFMDSurveyToAlignObjs.cxx:630 AliFMDSurveyToAlignObjs.cxx:631 AliFMDSurveyToAlignObjs.cxx:632 AliFMDSurveyToAlignObjs.cxx:633 AliFMDSurveyToAlignObjs.cxx:634 AliFMDSurveyToAlignObjs.cxx:635 AliFMDSurveyToAlignObjs.cxx:636 AliFMDSurveyToAlignObjs.cxx:637 AliFMDSurveyToAlignObjs.cxx:638 AliFMDSurveyToAlignObjs.cxx:639 AliFMDSurveyToAlignObjs.cxx:640 AliFMDSurveyToAlignObjs.cxx:641 AliFMDSurveyToAlignObjs.cxx:642 AliFMDSurveyToAlignObjs.cxx:643 AliFMDSurveyToAlignObjs.cxx:644 AliFMDSurveyToAlignObjs.cxx:645 AliFMDSurveyToAlignObjs.cxx:646 AliFMDSurveyToAlignObjs.cxx:647 AliFMDSurveyToAlignObjs.cxx:648 AliFMDSurveyToAlignObjs.cxx:649 AliFMDSurveyToAlignObjs.cxx:650 AliFMDSurveyToAlignObjs.cxx:651 AliFMDSurveyToAlignObjs.cxx:652 AliFMDSurveyToAlignObjs.cxx:653 AliFMDSurveyToAlignObjs.cxx:654 AliFMDSurveyToAlignObjs.cxx:655 AliFMDSurveyToAlignObjs.cxx:656 AliFMDSurveyToAlignObjs.cxx:657 AliFMDSurveyToAlignObjs.cxx:658 AliFMDSurveyToAlignObjs.cxx:659 AliFMDSurveyToAlignObjs.cxx:660 AliFMDSurveyToAlignObjs.cxx:661 AliFMDSurveyToAlignObjs.cxx:662 AliFMDSurveyToAlignObjs.cxx:663 AliFMDSurveyToAlignObjs.cxx:664 AliFMDSurveyToAlignObjs.cxx:665 AliFMDSurveyToAlignObjs.cxx:666 AliFMDSurveyToAlignObjs.cxx:667 AliFMDSurveyToAlignObjs.cxx:668 AliFMDSurveyToAlignObjs.cxx:669 AliFMDSurveyToAlignObjs.cxx:670 AliFMDSurveyToAlignObjs.cxx:671 AliFMDSurveyToAlignObjs.cxx:672 AliFMDSurveyToAlignObjs.cxx:673 AliFMDSurveyToAlignObjs.cxx:674 AliFMDSurveyToAlignObjs.cxx:675 AliFMDSurveyToAlignObjs.cxx:676 AliFMDSurveyToAlignObjs.cxx:677 AliFMDSurveyToAlignObjs.cxx:678 AliFMDSurveyToAlignObjs.cxx:679 AliFMDSurveyToAlignObjs.cxx:680 AliFMDSurveyToAlignObjs.cxx:681 AliFMDSurveyToAlignObjs.cxx:682 AliFMDSurveyToAlignObjs.cxx:683 AliFMDSurveyToAlignObjs.cxx:684 AliFMDSurveyToAlignObjs.cxx:685 AliFMDSurveyToAlignObjs.cxx:686 AliFMDSurveyToAlignObjs.cxx:687 AliFMDSurveyToAlignObjs.cxx:688 AliFMDSurveyToAlignObjs.cxx:689 AliFMDSurveyToAlignObjs.cxx:690 AliFMDSurveyToAlignObjs.cxx:691 AliFMDSurveyToAlignObjs.cxx:692 AliFMDSurveyToAlignObjs.cxx:693 AliFMDSurveyToAlignObjs.cxx:694 AliFMDSurveyToAlignObjs.cxx:695 AliFMDSurveyToAlignObjs.cxx:696 AliFMDSurveyToAlignObjs.cxx:697 AliFMDSurveyToAlignObjs.cxx:698 AliFMDSurveyToAlignObjs.cxx:699 AliFMDSurveyToAlignObjs.cxx:700 AliFMDSurveyToAlignObjs.cxx:701 AliFMDSurveyToAlignObjs.cxx:702 AliFMDSurveyToAlignObjs.cxx:703 AliFMDSurveyToAlignObjs.cxx:704 AliFMDSurveyToAlignObjs.cxx:705 AliFMDSurveyToAlignObjs.cxx:706 AliFMDSurveyToAlignObjs.cxx:707 AliFMDSurveyToAlignObjs.cxx:708 AliFMDSurveyToAlignObjs.cxx:709 AliFMDSurveyToAlignObjs.cxx:710 AliFMDSurveyToAlignObjs.cxx:711 AliFMDSurveyToAlignObjs.cxx:712 AliFMDSurveyToAlignObjs.cxx:713 AliFMDSurveyToAlignObjs.cxx:714 AliFMDSurveyToAlignObjs.cxx:715 AliFMDSurveyToAlignObjs.cxx:716 AliFMDSurveyToAlignObjs.cxx:717 AliFMDSurveyToAlignObjs.cxx:718 AliFMDSurveyToAlignObjs.cxx:719 AliFMDSurveyToAlignObjs.cxx:720 AliFMDSurveyToAlignObjs.cxx:721 AliFMDSurveyToAlignObjs.cxx:722 AliFMDSurveyToAlignObjs.cxx:723 AliFMDSurveyToAlignObjs.cxx:724 AliFMDSurveyToAlignObjs.cxx:725 AliFMDSurveyToAlignObjs.cxx:726 AliFMDSurveyToAlignObjs.cxx:727 AliFMDSurveyToAlignObjs.cxx:728 AliFMDSurveyToAlignObjs.cxx:729 AliFMDSurveyToAlignObjs.cxx:730 AliFMDSurveyToAlignObjs.cxx:731 AliFMDSurveyToAlignObjs.cxx:732 AliFMDSurveyToAlignObjs.cxx:733 AliFMDSurveyToAlignObjs.cxx:734 AliFMDSurveyToAlignObjs.cxx:735 AliFMDSurveyToAlignObjs.cxx:736 AliFMDSurveyToAlignObjs.cxx:737 AliFMDSurveyToAlignObjs.cxx:738 AliFMDSurveyToAlignObjs.cxx:739 AliFMDSurveyToAlignObjs.cxx:740 AliFMDSurveyToAlignObjs.cxx:741 AliFMDSurveyToAlignObjs.cxx:742 AliFMDSurveyToAlignObjs.cxx:743 AliFMDSurveyToAlignObjs.cxx:744 AliFMDSurveyToAlignObjs.cxx:745 AliFMDSurveyToAlignObjs.cxx:746 AliFMDSurveyToAlignObjs.cxx:747 AliFMDSurveyToAlignObjs.cxx:748 AliFMDSurveyToAlignObjs.cxx:749 AliFMDSurveyToAlignObjs.cxx:750 AliFMDSurveyToAlignObjs.cxx:751 AliFMDSurveyToAlignObjs.cxx:752 AliFMDSurveyToAlignObjs.cxx:753 AliFMDSurveyToAlignObjs.cxx:754 AliFMDSurveyToAlignObjs.cxx:755 AliFMDSurveyToAlignObjs.cxx:756 AliFMDSurveyToAlignObjs.cxx:757 AliFMDSurveyToAlignObjs.cxx:758 AliFMDSurveyToAlignObjs.cxx:759 AliFMDSurveyToAlignObjs.cxx:760 AliFMDSurveyToAlignObjs.cxx:761 AliFMDSurveyToAlignObjs.cxx:762 AliFMDSurveyToAlignObjs.cxx:763 AliFMDSurveyToAlignObjs.cxx:764 AliFMDSurveyToAlignObjs.cxx:765 AliFMDSurveyToAlignObjs.cxx:766 AliFMDSurveyToAlignObjs.cxx:767 AliFMDSurveyToAlignObjs.cxx:768 AliFMDSurveyToAlignObjs.cxx:769 AliFMDSurveyToAlignObjs.cxx:770 AliFMDSurveyToAlignObjs.cxx:771 AliFMDSurveyToAlignObjs.cxx:772 AliFMDSurveyToAlignObjs.cxx:773 AliFMDSurveyToAlignObjs.cxx:774 AliFMDSurveyToAlignObjs.cxx:775 AliFMDSurveyToAlignObjs.cxx:776 AliFMDSurveyToAlignObjs.cxx:777 AliFMDSurveyToAlignObjs.cxx:778 AliFMDSurveyToAlignObjs.cxx:779 AliFMDSurveyToAlignObjs.cxx:780 AliFMDSurveyToAlignObjs.cxx:781