#include <TArrayD.h> // ROOT_TArrayD
#include <TGeoManager.h> // ROOT_TGeoManager
#include <TGeoMatrix.h> // ROOT_TGeoMatrix
#include <TGeoTube.h> // ROOT_TGeoTube
#include <TGeoTrd1.h> // ROOT_TGeoTrd1
#include <TGeoCone.h> // ROOT_TGeoTrd1
#include <TGeoVolume.h> // ROOT_TGeoVolume
#include <TGeoXtru.h> // ROOT_TGeoXtru
#include <TGeoPcon.h> // ROOT_TGeoPcon
#include <TGeoTorus.h> // ROOT_TGeoTorus
#include <TGeoCompositeShape.h>
#include <TMath.h>
#include <TVector2.h> // ROOT_TVector2
#include <TVector3.h> // ROOT_TVector3
#include "AliFMDGeometryBuilder.h"
#include "AliFMDGeometry.h"
#include "AliFMDDetector.h"
#include "AliFMDRing.h"
#include "AliFMD1.h"
#include "AliFMD2.h"
#include "AliFMD3.h"
#include "AliFMDDebug.h"
#include <iostream>
ClassImp(AliFMDGeometryBuilder)
#if 0
;
#endif
const Char_t* AliFMDGeometryBuilder::fgkActiveName = "F%cAC";
const Char_t* AliFMDGeometryBuilder::fgkSectorName = "F%cSC";
const Char_t* AliFMDGeometryBuilder::fgkStripName = "F%cST";
const Char_t* AliFMDGeometryBuilder::fgkSensorName = "F%cSE";
const Char_t* AliFMDGeometryBuilder::fgkPCBName = "F%cPB";
const Char_t* AliFMDGeometryBuilder::fgkCuName = "F%cCU";
const Char_t* AliFMDGeometryBuilder::fgkChipName = "F%cCH";
const Char_t* AliFMDGeometryBuilder::fgkLongLegName = "F%cLL";
const Char_t* AliFMDGeometryBuilder::fgkShortLegName = "F%cSL";
const Char_t* AliFMDGeometryBuilder::fgkFrontVName = "F%cFH";
const Char_t* AliFMDGeometryBuilder::fgkBackVName = "F%cBH";
const Char_t* AliFMDGeometryBuilder::fgkRingTopName = "F%cTV";
const Char_t* AliFMDGeometryBuilder::fgkRingBotName = "F%cBV";
const Char_t* AliFMDGeometryBuilder::fgkHCName = "F%dH%c";
const Char_t* AliFMDGeometryBuilder::fgkIHCName = "F%dI%c";
const Char_t* AliFMDGeometryBuilder::fgkNoseName = "F3SN";
const Char_t* AliFMDGeometryBuilder::fgkBackName = "F%dSB";
const Char_t* AliFMDGeometryBuilder::fgkTopName = "F%dSU";
const Char_t* AliFMDGeometryBuilder::fgkBeamName = "F%dSL";
const Char_t* AliFMDGeometryBuilder::fgkFlangeName = "F%dSF";
const Char_t* AliFMDGeometryBuilder::fgkFMDDCuName = "F%cDC";
const Char_t* AliFMDGeometryBuilder::fgkFMDDPCBName = "F%cDP";
const Char_t* AliFMDGeometryBuilder::fgkFMDDChipName = "F%cDI";
const Char_t* AliFMDGeometryBuilder::fgkFMDDName = "F%cDD";
const Char_t* AliFMDGeometryBuilder::fgkFMDName = "F%dM%c";
AliFMDGeometryBuilder::AliFMDGeometryBuilder()
: TTask("FMD", "Geomtry builder"),
fActiveId(0),
fDetailed(kTRUE),
fUseAssembly(kTRUE),
fSectorOff(0),
fModuleOff(0),
fRingOff(0),
fDetectorOff(0),
fSi(0),
fC(0),
fAl(0),
fPCB(0),
fChip(0),
fAir(0),
fPlastic(0),
fCopper(0),
fSteel(0)
{
fActiveId.Set(2);
}
AliFMDGeometryBuilder::AliFMDGeometryBuilder(Bool_t detailed)
: TTask("FMD", "Geometry builder"),
fActiveId(0),
fDetailed(detailed),
fUseAssembly(kTRUE),
fSectorOff(0),
fModuleOff(0),
fRingOff(0),
fDetectorOff(0),
fSi(0),
fC(0),
fAl(0),
fPCB(0),
fChip(0),
fAir(0),
fPlastic(0),
fCopper(0),
fSteel(0)
{
fActiveId.Set(2);
}
TGeoShape*
AliFMDGeometryBuilder::MakeXTRU(const TObjArray& verticies,
Double_t thick) const
{
TArrayD xs(6);
TArrayD ys(6);
for (Int_t i = 0; i < 3; i++) {
TVector2* v = static_cast<TVector2*>(verticies.At(i+1));
xs[i] = v->Y();
ys[i] = -v->X();
xs[6-1-i] = v->Y();
ys[6-1-i] = v->X();
}
TGeoXtru* shape = new TGeoXtru(2);
shape->DefinePolygon(xs.fN, xs.fArray, ys.fArray);
shape->DefineSection(0, -thick/2);
shape->DefineSection(1, +thick/2);
return shape;
}
TGeoVolume*
AliFMDGeometryBuilder::RingGeometry(const AliFMDRing* r)
{
if (!r) {
AliError("Didn't get a ring object");
return 0;
}
Char_t id = r->GetId();
Char_t rng = toupper(id);
const Char_t* lName = (rng == 'I' ? "inner" : "outer");
Double_t siThick = r->GetSiThickness();
Double_t pcbThick = r->GetPrintboardThickness();
Double_t cuThick = r->GetCopperThickness();
Double_t chipThick= r->GetChipThickness();
Double_t modSpace = r->GetModuleSpacing();
Double_t theta = r->GetTheta();
TGeoShape* sensorShape = MakeXTRU(r->GetSensorVerticies(), siThick);
sensorShape->SetName(Form("FMD%c_physical_sensor", id));
sensorShape->SetTitle(Form("FMD %s physical sensor", lName));
TString sensorName = TString::Format(fgkSensorName, id);
TGeoVolume* sensorVolume = new TGeoVolume(sensorName, sensorShape, fSi);
sensorVolume->SetTitle(Form("FMD %s Sensor", lName));
sensorVolume->VisibleDaughters(kFALSE);
Int_t sid = sensorVolume->GetNumber();
fSectorOff = -1;
fModuleOff = 1;
fRingOff = 2;
fDetectorOff = 3;
if (fDetailed) {
fSectorOff = 1;
fModuleOff = 4;
fRingOff = 5;
fDetectorOff = 6;
TGeoTubeSeg* activeShape = new TGeoTubeSeg(r->GetLowR(),
r->GetHighR(),
siThick / 2,
- theta,
+ theta);
activeShape->SetName(Form(fgkActiveName, id));
activeShape->SetTitle(Form("FMD %s active area", lName));
TString activeName = TString::Format(fgkActiveName, id);
TGeoVolume* activeVolume = new TGeoVolume(activeName,activeShape,fSi);
activeVolume->SetTitle(Form("FMD %s active area", lName));
TString sectorName = TString::Format(fgkSectorName,id);
TGeoVolume* sectorVolume = activeVolume->Divide(sectorName, 2, 2, -theta,
0,0,"N");
Int_t ns = r->GetNStrips();
Double_t stripoff = r->GetLowR();
Double_t dstrip = (r->GetHighR() - stripoff) / ns;
sectorVolume->SetTitle(Form("FMD %s sector", lName));
TString stripName = TString::Format(fgkStripName, id);
TGeoVolume* stripVolume = sectorVolume->Divide(stripName,
1, ns, stripoff, dstrip,
0, "SX");
stripVolume->SetTitle(Form("FMD %s strip", lName));
sid = stripVolume->GetNumber();
sensorVolume->AddNodeOverlap(activeVolume, 0);
}
switch (rng) {
case 'I': fActiveId[0] = sid; break;
case 'O': fActiveId[1] = sid; break;
}
TGeoShape* pcbShape = MakeXTRU(r->GetHybridVerticies(), pcbThick);
pcbShape->SetName(Form("FMD%c_hybrid_pcb", id));
pcbShape->SetTitle(Form("FMD %s hybrid PCB", lName));
TString pcbName = TString::Format(fgkPCBName, id);
TGeoVolume* pcbVolume = new TGeoVolume(pcbName, pcbShape, fPCB);
pcbVolume->SetTitle(Form("FMD %s hybrid PCB", lName));
TGeoShape* cuShape = MakeXTRU(r->GetHybridVerticies(), cuThick);
cuShape->SetName(Form("FMD%c_hybrid_copper", id));
cuShape->SetTitle(Form("FMD %s hybrid copper", lName));
TString cuName = TString::Format(fgkCuName,id);
TGeoVolume* cuVolume = new TGeoVolume(cuName,cuShape,fCopper);
cuVolume->SetTitle(Form("FMD %s hybrid copper", lName));
TGeoShape* chipShape = MakeXTRU(r->GetHybridVerticies(), chipThick);
chipShape->SetName(Form("FMD%c_hybrid_chip", id));
chipShape->SetTitle(Form("FMD %s hybrid chip", lName));
TString chipName = TString::Format(fgkChipName,id);
TGeoVolume* chipVolume = new TGeoVolume(chipName,chipShape,fChip);
chipVolume->SetTitle(Form("FMD %s hybrid chip", lName));
Double_t legr = r->GetLegRadius();
Double_t legl = r->GetLegLength();
Double_t lege = .05;
TGeoTube* shortLegShape = new TGeoTube(0, legr, (legl-lege) / 2);
shortLegShape->SetName(Form(fgkShortLegName, id));
shortLegShape->SetTitle(Form("FMD %s short support foot", lName));
TString shortLegName = TString::Format(fgkShortLegName, id);
TGeoVolume* shortLegVolume = new TGeoVolume(shortLegName,
shortLegShape, fCopper);
shortLegVolume->SetTitle(Form("FMD %s short support foot", lName));
TGeoTube* longLegShape = new TGeoTube(0, legr,
(legl - lege + modSpace) / 2);
longLegShape->SetName(Form(fgkLongLegName, id));
longLegShape->SetTitle(Form("FMD %s long support foot", lName));
TString longLegName = TString::Format(fgkLongLegName, id);
TGeoVolume* longLegVolume = new TGeoVolume(longLegName,
longLegShape, fCopper);
longLegVolume->SetTitle(Form("FMD %s long support foot", lName));
TArrayD xfs(3);
TArrayD yfs(3);
for (Int_t i = 0; i < 3; i++) {
TVector2* vv = r->GetFootPosition(i);
xfs[i] = vv->Y();
yfs[i] = vv->X();
}
TGeoVolume* backVolume = new TGeoVolumeAssembly(Form(fgkBackVName, id));
backVolume->SetTitle(Form("FMD %s back module", lName));
TGeoVolume* frontVolume = new TGeoVolumeAssembly(Form(fgkFrontVName, id));
frontVolume->SetTitle(Form("FMD %s front module", lName));
Double_t space = r->GetSpacing();
Double_t x = 0;
Double_t y = 0;
Double_t zb = siThick / 2;
Double_t zf = siThick / 2;
backVolume->AddNode(sensorVolume, 0, new TGeoTranslation(x, y, zb));
frontVolume->AddNode(sensorVolume, 0, new TGeoTranslation(x, y, zf));
zb += siThick / 2 + space + pcbThick / 2;
zf += siThick / 2 + space + pcbThick / 2;
backVolume->AddNode(pcbVolume, 0, new TGeoTranslation(x, y, zb));
frontVolume->AddNode(pcbVolume, 0, new TGeoTranslation(x, y, zf));
zb += (pcbThick + cuThick) / 2;
zf += (pcbThick + cuThick) / 2;
backVolume->AddNode(cuVolume, 0, new TGeoTranslation(0, 0, zf));
frontVolume->AddNode(cuVolume, 0, new TGeoTranslation(0, 0, zb));
zb += (cuThick + chipThick) / 2;
zf += (cuThick + chipThick) / 2;
backVolume->AddNode(chipVolume, 0, new TGeoTranslation(0, 0, zb));
frontVolume->AddNode(chipVolume, 0, new TGeoTranslation(0, 0, zf));
zb += pcbThick / 2 + (legl)/ 2 - lege;
zf += pcbThick / 2 + (legl + modSpace)/ 2 - lege;
for (Int_t i = 0; i < 3; i++) {
x = xfs[i];
y = yfs[i];
backVolume->AddNode(shortLegVolume, i, new TGeoTranslation(x,y,zb));
frontVolume->AddNode(longLegVolume, i, new TGeoTranslation(x,y,zf));
}
Double_t ddlr = r->GetFMDDLowR();
Double_t ddhr = r->GetFMDDHighR();
Double_t ddpt = r->GetFMDDPrintboardThickness();
Double_t ddct = r->GetFMDDCopperThickness();
Double_t ddit = r->GetFMDDChipThickness();
Double_t ddt = ddpt + ddct + ddit;
TString pcbdName(Form(fgkFMDDPCBName, id));
TString cudName(Form(fgkFMDDCuName, id));
TString chipdName(Form(fgkFMDDChipName, id));
new TGeoTubeSeg(Form("%s_inner", pcbdName.Data()), ddlr, ddhr, ddpt/2,0,180);
new TGeoTubeSeg(Form("%s_inner", cudName.Data()), ddlr, ddhr, ddct/2,0,180);
new TGeoTubeSeg(Form("%s_inner", chipdName.Data()), ddlr, ddhr, ddit/2,0,180);
Double_t clipWX = 0;
Double_t clipWY = 0;
Double_t clipY = 1;
if (rng == 'I') {
clipWX = ddhr;
clipWY = ddhr/2;
}
else {
clipWX = ddlr+3;
clipWY = ddhr/2;
}
new TGeoBBox(Form("%s_clip", pcbdName.Data()), clipWX, clipWY, ddpt);
new TGeoBBox(Form("%s_clip", cudName.Data()), clipWX, clipWY, ddct);
new TGeoBBox(Form("%s_clip", chipdName.Data()),clipWX, clipWY, ddit);
TGeoTranslation* trans = new TGeoTranslation(Form("%s_trans",
pcbdName.Data()),
0, clipWY+clipY, 0);
trans->RegisterYourself();
TGeoShape* fmddPcbShape =
new TGeoCompositeShape(pcbdName.Data(),
Form("%s_inner*%s_clip:%s_trans",
pcbdName.Data(),
pcbdName.Data(),
pcbdName.Data()));
TGeoShape* fmddCuShape =
new TGeoCompositeShape(cudName.Data(),
Form("%s_inner*%s_clip:%s_trans",
cudName.Data(),
cudName.Data(),
pcbdName.Data()));
TGeoShape* fmddChipShape =
new TGeoCompositeShape(chipdName.Data(),
Form("%s_inner*%s_clip:%s_trans",
chipdName.Data(),
chipdName.Data(),
pcbdName.Data()));
fmddPcbShape->SetTitle(Form("FMD %s digitiser PCB", lName));
fmddCuShape->SetTitle(Form("FMD %s digitiser copper", lName));
fmddChipShape->SetTitle(Form("FMD %s digitiser chip", lName));
TString fmddPcbName = TString::Format(fgkFMDDPCBName, id);
TGeoVolume* fmddPcbVolume = new TGeoVolume(fmddPcbName,
fmddPcbShape, fPCB);
TString fmddCuName = TString::Format(fgkFMDDCuName, id);
TGeoVolume* fmddCuVolume = new TGeoVolume(fmddCuName,
fmddCuShape, fCopper);
TString fmddChipName = TString::Format(fgkFMDDChipName, id);
TGeoVolume* fmddChipVolume = new TGeoVolume(fmddChipName,
fmddChipShape, fChip);
fmddPcbVolume->SetTitle(Form("FMD %s digitiser PCB", lName));
fmddCuVolume->SetTitle(Form("FMD %s digitiser copper", lName));
fmddChipVolume->SetTitle(Form("FMD %s digitiser chip", lName));
TGeoVolume* ringTopVolume = new TGeoVolumeAssembly(Form(fgkRingTopName,id));
TGeoVolume* ringBotVolume = new TGeoVolumeAssembly(Form(fgkRingBotName,id));
TGeoVolume* halfRing = ringTopVolume;
ringTopVolume->SetTitle(Form("FMD %s top half-ring", lName));
ringBotVolume->SetTitle(Form("FMD %s bottom half-ring", lName));
Int_t nmod = r->GetNModules();
AliFMDDebug(10, ("making %d modules in ring %c", nmod, id));
for (Int_t i = 0; i < nmod; i++) {
if (i == nmod / 2) halfRing = ringBotVolume;
Bool_t front = (i % 2 == (rng == 'I' ? 1 : 0));
TGeoVolume* vol = (front ? frontVolume : backVolume);
Double_t z1 = (front ? -1 : 1) * modSpace / 2;
Double_t th = (2 * i + 1) * theta;
TGeoMatrix* mat1 = new TGeoCombiTrans(0,0,z1,0);
mat1->RotateZ(th);
mat1->SetName(Form("FMD%c_module_%02d", id, i));
mat1->SetTitle(Form("FMD %s module %2d matrix", lName, i));
halfRing->AddNode(vol, i, mat1);
}
Double_t zi = r->GetFullDepth() - ddt;
Int_t n = 2;
for (Int_t i = 0; i < n; i++) {
halfRing = (i == 0 ? ringTopVolume : ringBotVolume);
Double_t phi = 360. / n * i;
TGeoRotation* rot = new TGeoRotation(Form("FMDD%c rotation %d", id, i));
rot->RotateZ(phi);
rot->SetTitle(Form("FMD %s digitiser rotation %2d", lName, i));
Double_t z = zi + ddpt / 2;
halfRing->AddNode(fmddPcbVolume, i, new TGeoCombiTrans(0,0,z,rot));
z += (ddpt + ddct) / 2;
halfRing->AddNode(fmddCuVolume, i, new TGeoCombiTrans(0,0,z,rot));
z += (ddct + ddit) / 2;
halfRing->AddNode(fmddChipVolume, i, new TGeoCombiTrans(0,0,z,rot));
}
return 0;
}
TGeoShape*
AliFMDGeometryBuilder::HoneycombShape(Int_t id, Char_t ring,
double r1, double r2,
double w, double t, double c)
{
TString form = Form("FMD%d%c_%%c_%%c", id, ring);
double a1 = TMath::ATan2(c, r1) * 180 / TMath::Pi();
TString fn = Form(form.Data(),'F','1');
TString bn = Form(form.Data(),'B','1');
TString cn = Form(form.Data(),'C','O');
TString in = Form(form.Data(),'R','I');
TString on = Form(form.Data(),'R','O');
TString en = Form(form.Data(),'E','X');
double y = c;
double x = r1 * TMath::Cos(TMath::Pi()*a1/180);
new TGeoTubeSeg(fn.Data(),r1,r2,t/2,0,180);
new TGeoTubeSeg(bn.Data(),r1,r2,t/2,0,180);
new TGeoBBox(cn.Data(),(r2-r1)/2,t/2,w/2);
new TGeoTubeSeg(in.Data(),r1,r1+t,w/2,0,180);
new TGeoTubeSeg(on.Data(),r2-t,r2,w/2,0,180);
new TGeoBBox(en.Data(),r2+.005,c/2+.005,w/2+.005);
TString ftn = Form(form.Data(),'F','T');
TString btn = Form(form.Data(),'F','B');
TString ltn = Form(form.Data(),'C','L');
TString rtn = Form(form.Data(),'C','R');
TString etn = Form(form.Data(),'E','X');
(new TGeoTranslation(ftn.Data(),0,0,+w/2-t/2))->RegisterYourself();
(new TGeoTranslation(btn.Data(),0,0,-w/2+t/2))->RegisterYourself();
(new TGeoTranslation(ltn.Data(),-(x+(r2-r1)/2), y+t/2,0))->RegisterYourself();
(new TGeoTranslation(rtn.Data(),(x+(r2-r1)/2), y+t/2,0))->RegisterYourself();
(new TGeoTranslation(etn.Data(),0, c/2,0))->RegisterYourself();
TString comp(Form("(%s:%s+%s:%s+%s+%s+%s:%s+%s:%s)-%s:%s",
fn.Data(),ftn.Data(),
bn.Data(),btn.Data(),
in.Data(),on.Data(),
cn.Data(),ltn.Data(),
cn.Data(),rtn.Data(),
en.Data(),etn.Data()));
TGeoCompositeShape* shape = new TGeoCompositeShape(comp.Data());
shape->SetName(Form(fgkHCName,id,ring));
shape->SetTitle(Form("FMD%d%c Honeycomb shape", id, ring));
return shape;
}
TGeoVolume*
AliFMDGeometryBuilder::TensionBox()
{
static TGeoVolumeAssembly* tensionBox = 0;
if (tensionBox) return tensionBox;
TGeoBBox* tensionEndS = new TGeoBBox("FMD_tension_end", .6, 3, .25);
TGeoBBox* tensionTopS = new TGeoBBox("FMD_tension_top", .1, .5, 3.5);
TGeoVolume* tensionEndV = new TGeoVolume("FMD_tension_end", tensionEndS,fAl);
TGeoVolume* tensionTopV = new TGeoVolume("FMD_tension_top", tensionTopS,fAl);
tensionBox = new TGeoVolumeAssembly("FMD_tension_box");
tensionBox->AddNode(tensionEndV, 1, new TGeoTranslation(.6, 0, -3.75));
tensionBox->AddNode(tensionEndV, 2, new TGeoTranslation(.6, 0, +3.75));
tensionBox->AddNode(tensionTopV, 1, new TGeoTranslation(0.1, +2.5, 0));
tensionBox->AddNode(tensionTopV, 2, new TGeoTranslation(0.1, -2.5, 0));
tensionBox->AddNode(tensionTopV, 3, new TGeoTranslation(1.1, +2.5, 0));
tensionBox->AddNode(tensionTopV, 4, new TGeoTranslation(1.1, -2.5, 0));
return tensionBox;
}
TGeoVolume*
AliFMDGeometryBuilder::DetectorGeometry(const AliFMDDetector* d,
TGeoVolume* topMother,
TGeoVolume* botMother,
Double_t zMother,
TGeoVolume* innerTop,
TGeoVolume* innerBot,
TGeoVolume* outerTop,
TGeoVolume* outerBot)
{
if (!d) return 0;
for (int i = 0; i < 2; i++) {
AliFMDRing* r = 0;
Double_t lowr = 0;
Double_t highr = 0;
Double_t rz = 0;
TGeoVolume* tvol = 0;
TGeoVolume* bvol = 0;
switch (i) {
case 0:
r = d->GetInner();
lowr = d->GetInnerHoneyLowR();
highr = d->GetInnerHoneyHighR();
rz = d->GetInnerZ();
tvol = innerTop;
bvol = innerBot;
break;
case 1:
r = d->GetOuter();
lowr = d->GetOuterHoneyLowR();
highr = d->GetOuterHoneyHighR();
rz = d->GetOuterZ();
tvol = outerTop;
bvol = outerBot;
break;
}
if (!r) continue;
Char_t c = r->GetId();
Int_t id = d->GetId();
Double_t hcThick = r->GetHoneycombThickness();
Double_t alThick = r->GetAlThickness();
Double_t z = TMath::Abs(rz - zMother);
AliFMDDebug(2, ("Placing volumes %s and %s in %s and %s at z=%f",
tvol->GetName(), bvol->GetName(),
topMother->GetName(), botMother->GetName(), z));
topMother->AddNode(tvol, Int_t(c), new TGeoTranslation(0,0,z));
botMother->AddNode(bvol, Int_t(c), new TGeoTranslation(0,0,z));
TGeoShape* hcSha = HoneycombShape(id, c, lowr, highr, hcThick, alThick);
TGeoVolume* hcVol = new TGeoVolume(Form(fgkHCName,id,c),hcSha,fAl);
hcVol->SetTitle(Form("FMD%d%c honeycomb shell", id, c));
z += (r->GetModuleDepth()
+ r->GetModuleSpacing() / 2
+ r->GetHoneycombThickness() / 2);
AliFMDDebug(15, ("Placing a copy of %s in %s and %s at z=%f",
hcVol->GetName(), topMother->GetName(),
botMother->GetName(), z));
topMother->AddNode(hcVol, 0, new TGeoTranslation(0, 0, z));
TGeoMatrix* bhcMatrix = new TGeoCombiTrans(0,0,z,0);
bhcMatrix->SetName(Form("FMD%d%c_honeycomp", id, c));
bhcMatrix->SetTitle(Form("FMD%d%c honeycomp", id, c));
bhcMatrix->RotateZ(180);
botMother->AddNode(hcVol, 1, bhcMatrix);
}
return 0;
}
TGeoVolume*
AliFMDGeometryBuilder::FMD1Geometry(const AliFMD1* fmd1,
TGeoVolume* innerTop,
TGeoVolume* innerBot)
{
if (!fmd1 || !innerTop || !innerBot) return 0;
AliFMDRing* r = fmd1->GetInner();
Double_t z = fmd1->GetInnerZ();
TString fmd1TopName = TString::Format(fgkFMDName, fmd1->GetId(), 'T');
TGeoVolume* fmd1TopVolume = new TGeoVolumeAssembly(fmd1TopName);
fmd1TopVolume->SetTitle("FMD1 top half");
TString fmd1BotName = TString::Format(fgkFMDName, fmd1->GetId(), 'B');
TGeoVolume* fmd1BotVolume = new TGeoVolumeAssembly(fmd1BotName);
fmd1BotVolume->SetTitle("FMD1 bottom half");
DetectorGeometry(fmd1, fmd1TopVolume, fmd1BotVolume, z,
innerTop, innerBot, 0, 0);
Double_t lidP[][3] = { { 0.00, 4.20, 20.95 },
{ 0.15, 4.20, 20.95 },
{ 0.15, 20.80, 20.95 },
{ 3.00, 20.80, 20.95 },
{ 3.00, 20.80, 22.30 },
{ 3.15, 20.80, 22.30 },
{ 3.15, 20.95, 24.65 },
{ 3.30, 20.95, 24.65 },
{ 3.30, 24.50, 24.65 },
{ 6.80, 24.50, 24.65 },
{ 6.80, 24.50, 26.00 },
{ 6.95, 24.50, 26.00 } };
Double_t lidZStart = lidP[11][0];
TGeoPcon* lidBaseS = new TGeoPcon("FMD1_lid_base", 0, 180, 12);
for (size_t i = 0; i < 12; i++)
lidBaseS->DefineSection(i, lidP[i][0] - lidZStart, lidP[i][1], lidP[i][2]);
Double_t lidH[][2] = { { 7.84903, 24.15680 },
{ 20.54900, 14.92970 },
{ 21.99700, 12.70000 },
{ 25.26090, 2.65502 } };
Double_t lidHR = .53 / 2;
Double_t lidHL = 0.16;
new TGeoTube("FMD1_lid_hole", 0, lidHR, lidHL/2);
TString lidComp("FMD1_lid_base-(");
TGeoTranslation* trans = 0;
for (size_t i = 0; i < 4; i++) {
trans = new TGeoTranslation(-lidH[i][0], lidH[i][1], -lidHL/2);
trans->SetName(Form("FMD1_lid_hole_mat%d", int(2*i+0)));
trans->RegisterYourself();
trans = new TGeoTranslation(+lidH[i][0], lidH[i][1], -lidHL/2);
trans->SetName(Form("FMD1_lid_hole_mat%d", int(2*i+1)));
trans->RegisterYourself();
lidComp.Append(Form("FMD1_lid_hole:FMD1_lid_hole_mat%d+"
"FMD1_lid_hole:FMD1_lid_hole_mat%d%c",
int(2 * i), int(2 * i + 1), int(i == 3 ? ')' : '+')));
}
TGeoCompositeShape* lidS = new TGeoCompositeShape(lidComp.Data());
lidS->SetName("FMD1_lid");
TGeoVolume* lidV = new TGeoVolume("FMD1_lid", lidS, fC);
lidV->SetTransparency(63);
Double_t lidZ = (lidZStart -
(3.3 - r->GetModuleDepth() - r->GetModuleSpacing() / 2));
AliFMDDebug(1, ("FMD1 lid offset in Z=%f", lidZ));
for (Int_t i = 0; i < 2; i++) {
TGeoVolume* mother = (i == 0 ? fmd1TopVolume : fmd1BotVolume);
Double_t phi = 360. / 2 * i;
TGeoRotation* rot = new TGeoRotation(Form("FMD1_lid_rot%d",i));
rot->RotateZ(phi);
TGeoMatrix* matrix = new TGeoCombiTrans(Form("FMD1_lid_mat%d", i),
0, 0, lidZ, rot);
mother->AddNode(lidV, i, matrix);
}
TGeoVolume* top = gGeoManager->GetVolume("ALIC");
TGeoRotation* rot = new TGeoRotation("FMD1 rotatation");
rot->RotateZ(90);
TGeoMatrix* matrix = new TGeoCombiTrans("FMD1 trans", 0, 0, z, rot);
AliFMDDebug(5, ("Placing volumes %s and %s in ALIC at z=%f",
fmd1TopVolume->GetName(), fmd1BotVolume->GetName(), z));
top->AddNode(fmd1TopVolume, fmd1->GetId(), matrix);
top->AddNode(fmd1BotVolume, fmd1->GetId(), matrix);
const Double_t icb[] = { +12.700, -21.997, 324.670 };
const Double_t ict[] = { +12.700, +21.997, 324.670 };
const Double_t ocb[] = { -12.700, -21.997, 324.670 };
const Double_t oct[] = { -12.700, +21.997, 324.670 };
TGeoTube* surveyShape = new TGeoTube("FMD1_survey_marker",
0, .2, .001);
TGeoMatrix* outMat = matrix;
#if 0
if (gGeoManager->cd("/ALIC_1/F1MT_1"))
outMat = gGeoManager->GetCurrentMatrix();
else
AliWarning("Couldn't cd to /ALIC_1/F1MT_1");
#endif
Double_t loct[3], locb[3];
outMat->MasterToLocal(oct, loct);
outMat->MasterToLocal(ocb, locb);
TGeoVolume* vOct = new TGeoVolume("V0L_OCT", surveyShape, fPlastic);
TGeoVolume* vOcb = new TGeoVolume("V0L_OCB", surveyShape, fPlastic);
fmd1TopVolume->AddNode(vOct, 1, new TGeoTranslation(loct[0],loct[1],loct[2]));
fmd1TopVolume->AddNode(vOcb, 1, new TGeoTranslation(locb[0],locb[1],locb[2]));
TGeoMatrix* inMat = matrix;
#if 0
if (gGeoManager->cd("/ALIC_1/F1MT_1"))
inMat = gGeoManager->GetCurrentMatrix();
else
AliWarning("Couldn't cd to /ALIC_1/F1MT_1");
#endif
Double_t lict[3], licb[3];
inMat->MasterToLocal(ict, lict);
inMat->MasterToLocal(icb, licb);
TGeoVolume* vIct = new TGeoVolume("V0L_ICT", surveyShape, fPlastic);
TGeoVolume* vIcb = new TGeoVolume("V0L_ICB", surveyShape, fPlastic);
fmd1BotVolume->AddNode(vIct, 1, new TGeoTranslation(lict[0],lict[1],lict[2]));
fmd1BotVolume->AddNode(vIcb, 1, new TGeoTranslation(licb[0],licb[1],licb[2]));
return 0;
}
TGeoVolume*
AliFMDGeometryBuilder::FMD2Geometry(const AliFMD2* fmd2,
TGeoVolume* innerTop,
TGeoVolume* innerBot,
TGeoVolume* outerTop,
TGeoVolume* outerBot)
{
if (!fmd2 || !innerTop || !innerBot || !outerTop || !outerBot) return 0;
AliFMDRing* ring = fmd2->GetOuter();
Double_t z = fmd2->GetOuterZ();
Double_t framelr = 32.01;
Double_t framehr = 33.611;
Double_t framel = 14.8;
Double_t backth = 0.03;
Double_t framelz = -(2.38
- ring->GetModuleDepth()
- ring->GetModuleSpacing() / 2);
Double_t coverlr = 4.3;
Double_t coverhr = framehr;
TString fmd2TopName = TString::Format(fgkFMDName, fmd2->GetId(), 'T');
TGeoVolume* fmd2TopVolume = new TGeoVolumeAssembly(fmd2TopName);
TString fmd2BotName = TString::Format(fgkFMDName, fmd2->GetId(), 'B');
TGeoVolume* fmd2BotVolume = new TGeoVolumeAssembly(fmd2BotName);
fmd2TopVolume->SetTitle("FMD2 top half");
fmd2BotVolume->SetTitle("FMD2 bottom half");
DetectorGeometry(fmd2, fmd2TopVolume, fmd2BotVolume, z,
innerTop, innerBot, outerTop, outerBot);
TGeoVolumeAssembly* support = new TGeoVolumeAssembly("FMD2_support");
TGeoShape* cylinderShape = new TGeoTubeSeg(framelr,framehr,framel/2,0,180);
TGeoVolume* cylinderVolume = new TGeoVolume(Form(fgkBackName, fmd2->GetId()),
cylinderShape, fC);
TGeoShape* coverShape = new TGeoTubeSeg(coverlr,coverhr,backth/2,0,180);
TGeoVolume* coverVolume = new TGeoVolume(Form(fgkTopName, fmd2->GetId()),
coverShape, fC);
cylinderShape->SetName(Form(fgkBackName, fmd2->GetId()));
cylinderShape->SetTitle("FMD2 cylinder");
cylinderVolume->SetTitle("FMD2 cylinder");
cylinderVolume->SetTransparency(63);
coverShape->SetName(Form(fgkTopName, fmd2->GetId()));
coverShape->SetTitle("FMD2 cover");
coverVolume->SetTitle("FMD2 cover");
coverVolume->SetTransparency(63);
TGeoTranslation* trans = 0;
support->AddNode(coverVolume,1, new TGeoTranslation(0,0,backth/2));
support->AddNode(cylinderVolume, 1, new TGeoTranslation(0,0,backth+framel/2));
Double_t f1l = 15.6085;
Double_t f1w = 6;
Double_t f1d = 1;
Int_t nFiducialHoles = 4;
Double_t precHoles[][2] = { { 32.4948, 29.6663 },
{ 33.9104, 31.0819 },
{ 34.8177, 33.4035 },
{ 35.5028, 32.6744 } };
Double_t precRadius = .25;
Double_t flangeA = TMath::Pi()/4;
new TGeoBBox("FMD2_flange_base", f1l/2, f1w/2, f1d/2);
new TGeoTube("FMD2_fiducial_hole", 0, precRadius, f1d/2+.1);
Double_t flangeX = framehr + f1l/2;
TVector2 flangeC(flangeX * TMath::Cos(flangeA),
flangeX * TMath::Sin(flangeA));
TString flangeComb("FMD2_flange_base-(");
new TGeoBBox("FMD2_flange_slit", 7./2, 1.5/2, f1d/2+.1);
trans = new TGeoTranslation(-f1l/2+1+7./2, +.5+1.5/2, 0);
trans->SetName("FMD2_flange_slit_mat1");
trans->RegisterYourself();
trans = new TGeoTranslation(-f1l/2+1+7./2, -.5-1.5/2, 0);
trans->SetName("FMD2_flange_slit_mat2");
trans->RegisterYourself();
flangeComb.Append("FMD2_flange_slit:FMD2_flange_slit_mat1+"
"FMD2_flange_slit:FMD2_flange_slit_mat2+");
for (Int_t i = 0; i < nFiducialHoles; i++) {
TVector2 v(precHoles[i][0], precHoles[i][1]);
v -= flangeC;
TVector2 r = v.Rotate(-flangeA);
TGeoTranslation* t1 = new TGeoTranslation(r.X(), r.Y(), 0);
TGeoTranslation* t2 = new TGeoTranslation(r.X(), -r.Y(), 0);
t1->SetName(Form("FMD2_fiducial_hole_rot%d", 2*i+0));
t2->SetName(Form("FMD2_fiducial_hole_rot%d", 2*i+1));
t1->RegisterYourself();
t2->RegisterYourself();
flangeComb.Append(Form("FMD2_fiducial_hole:FMD2_fiducial_hole_rot%d+"
"FMD2_fiducial_hole:FMD2_fiducial_hole_rot%d%c",
2*i+0, 2*i+1, (i == nFiducialHoles-1 ? ')' : '+')));
}
TGeoCompositeShape* flangeS = new TGeoCompositeShape(flangeComb.Data());
flangeS->SetName("FMD2_flange");
TGeoVolume* flangeV = new TGeoVolume("FMD2_flange", flangeS, fAl);
Double_t f2l = 7;
Double_t f2d = 12.5;
Double_t f2w = 1;
new TGeoBBox("FMD2_flange_spacer_base", f2l/2, f2w/2, f2d/2);
new TGeoTube("FMD2_flange_spacer_hole", 0, 2.5, f2w/2+.1);
TGeoRotation* holeRot = new TGeoRotation();
holeRot->RotateY(90);
holeRot->RotateZ(90);
TGeoCombiTrans* combo = 0;
combo = new TGeoCombiTrans(0, 0, f2d/2-.5-2.5, holeRot);
combo->SetName("FMD2_flange_spacer_hole_mat1");
combo->RegisterYourself();
combo = new TGeoCombiTrans(0, 0, -f2d/2+.5+2.5, holeRot);
combo->SetName("FMD2_flange_spacer_hole_mat2");
combo->RegisterYourself();
TString spacerComp("FMD2_flange_spacer_base-("
"FMD2_flange_spacer_hole:FMD2_flange_spacer_hole_mat1+"
"FMD2_flange_spacer_hole:FMD2_flange_spacer_hole_mat2)");
TGeoCompositeShape* spacerS = new TGeoCompositeShape(spacerComp.Data());
TGeoVolume* spacerV = new TGeoVolume("FMD2_flange_spacer",
spacerS, fAl);
Double_t extraL = framehr-framelr;
TGeoBBox* extraS = new TGeoBBox("FMD2_flange_extra",
extraL/2, f1w/2, f1d/2);
TGeoVolume* extraV = new TGeoVolume("FMD2_flange_extra", extraS,fAl);
TGeoVolumeAssembly* wingV = new TGeoVolumeAssembly("FMD2_wing");
TGeoVolume* tension = TensionBox();
TGeoTube* wireS = new TGeoTube(0, .05, (framehr-coverlr)/2);
TGeoVolume* wireV = new TGeoVolume("FMD2_tension_wire",
wireS, fSteel);
wingV->AddNode(flangeV, 1, new TGeoTranslation(f1l/2, 0, f1d/2));
wingV->AddNode(flangeV, 2, new TGeoTranslation(f1l/2, 0, -f2d-f1d/2));
wingV->AddNode(extraV, 1, new TGeoCombiTrans(-extraL/2, 0, f1d/2, 0));
wingV->AddNode(spacerV, 1, new TGeoTranslation(1+f2l/2,-f2w/2+f1w/2,
-f2d/2));
wingV->AddNode(spacerV, 2, new TGeoTranslation(1+f2l/2,+f2w/2-f1w/2,
-f2d/2));
TGeoRotation* tensionR = new TGeoRotation;
tensionR->RotateY(90);
wingV->AddNode(tension, 1, new TGeoCombiTrans(4, 0, f1d+1.2, tensionR));
TGeoRotation* wireR = new TGeoRotation;
wireR->RotateY(90);
wingV->AddNode(wireV, 1, new TGeoCombiTrans(-(framehr-coverlr)/2, 0, f1d+1,
wireR));
TGeoCombiTrans* extraM1 = new TGeoCombiTrans(coverhr-extraL/2,0,0,0);
extraM1->RotateZ(45);
extraM1->RegisterYourself();
extraM1->SetName("FMD2_back_cover_slit1");
TGeoCombiTrans* extraM2 = new TGeoCombiTrans(coverhr-extraL/2,0,0,0);
extraM2->RotateZ(135);
extraM2->RegisterYourself();
extraM2->SetName("FMD2_back_cover_slit2");
TString coverComp(Form(fgkTopName, fmd2->GetId()));
coverComp.Append("-(FMD2_flange_extra:FMD2_back_cover_slit1"
"+FMD2_flange_extra:FMD2_back_cover_slit2)");
TGeoCompositeShape* cover2Shape = new TGeoCompositeShape(coverComp.Data());
cover2Shape->SetName("FMD2_back_cover");
TGeoVolume* cover2Volume = new TGeoVolume("FMD2_back_cover", cover2Shape,fC);
support->AddNode(cover2Volume,2,
new TGeoTranslation(0,0,backth+framel+backth/2));
TGeoCombiTrans* trans1 = new TGeoCombiTrans(framehr, 0, backth+framel, 0);
TGeoCombiTrans* trans2 = new TGeoCombiTrans(framehr, 0, backth+framel, 0);
trans1->RotateZ(45);
trans2->RotateZ(135);
support->AddNode(wingV, 1, trans1);
support->AddNode(wingV, 2, trans2);
AliFMDDebug(1, ("FMD2 support offset is %f", framelz));
for (Int_t i = 0; i < 2; i++) {
TGeoVolume* mother = (i < 1 ? fmd2TopVolume : fmd2BotVolume);
Double_t phi = 360. / 2 * i;
TGeoRotation* rot = new TGeoRotation(Form("FMD2 support rot %d",i));
rot->RotateZ(phi);
TGeoMatrix* matrix = new TGeoCombiTrans(0, 0, framelz, rot);
mother->AddNode(support, i, matrix);
}
TGeoVolume* top = gGeoManager->GetVolume("ALIC");
TGeoMatrix* matrix = new TGeoTranslation("FMD2 trans", 0, 0, z);
AliFMDDebug(5, ("Placing volumes %s and %s in ALIC at z=%f",
fmd2TopVolume->GetName(), fmd2BotVolume->GetName(), z));
top->AddNode(fmd2TopVolume, fmd2->GetId(), matrix);
top->AddNode(fmd2BotVolume, fmd2->GetId(), matrix);
return 0;
}
TGeoVolume*
AliFMDGeometryBuilder::FMD3Geometry(const AliFMD3* fmd3,
TGeoVolume* innerTop,
TGeoVolume* innerBot,
TGeoVolume* outerTop,
TGeoVolume* outerBot)
{
if (!fmd3 || !innerTop || !innerBot || !outerTop || !outerBot) return 0;
TString fmd3TopName = TString::Format(fgkFMDName, fmd3->GetId(), 'T');
TGeoVolume* fmd3TopVolume = new TGeoVolumeAssembly(fmd3TopName);
TString fmd3BotName = TString::Format(fgkFMDName, fmd3->GetId(), 'B');
TGeoVolume* fmd3BotVolume = new TGeoVolumeAssembly(fmd3BotName);
fmd3TopVolume->SetTitle("FMD3 top half");
fmd3BotVolume->SetTitle("FMD3 bottom half");
DetectorGeometry(fmd3, fmd3TopVolume, fmd3BotVolume, fmd3->GetInnerZ(),
innerTop, innerBot, outerTop, outerBot);
TGeoVolumeAssembly* support = new TGeoVolumeAssembly("F3SU");
support->SetTitle("FMD3 support");
const TObjArray& radii = fmd3->ConeRadii();
Int_t nRadii = radii.GetEntriesFast();
TGeoPcon* coneBase = new TGeoPcon("FMD3_cone_base", 0., 180., nRadii);
TVector3* r5 = 0;
TVector3* r4 = 0;
for (Int_t i = 0; i < nRadii; i++) {
TVector3* v = static_cast<TVector3*>(radii.At(i));
coneBase->DefineSection(i, v->X(), v->Y(), v->Z());
if (i == 5) r5 = v;
else if (i == 4) r4 = v;
}
TString coneComb("(FMD3_cone_base");
double flangeDepth = fmd3->GetFlangeDepth() / 2;
double flangeLength = fmd3->GetFlangeLength() / 2;
double flangeWidth = fmd3->GetFlangeWidth() / 2;
new TGeoBBox("FMD3_flange_base", flangeLength, flangeWidth, flangeDepth);
const TObjArray& fiducialHoles = fmd3->FiducialHoles();
double fiducialRadius = fmd3->GetFiducialRadius();
#if 0
TGeoTube* fiducialShape =
#endif
new TGeoTube("FMD3_fiducial_hole", 0, fiducialRadius, flangeDepth+.1);
Int_t nFiducialHoles = fiducialHoles.GetEntriesFast();
double flangeAngle = TMath::Pi() / 4;
double flangeX = r5->Y()+flangeLength;
TVector2 flangeC(flangeX * TMath::Cos(flangeAngle),
flangeX * TMath::Sin(flangeAngle));
TString flangeComb("FMD3_flange_base-(");
#if 0// For debugging geometry
TGeoVolume* fiducialVolume = new TGeoVolume("FMD3_fiducial", fiducialShape);
fiducialVolume->SetLineColor(kGreen);
#endif
for (Int_t i = 0; i < nFiducialHoles; i++) {
TVector2& v = *(static_cast<TVector2*>(fiducialHoles.At(i)));
v -= flangeC;
TVector2 r = v.Rotate(-flangeAngle);
TGeoTranslation* t1 = new TGeoTranslation(r.X(), r.Y(), 0);
TGeoTranslation* t2 = new TGeoTranslation(r.X(), -r.Y(), 0);
t1->SetName(Form("FMD3_fiducial_hole_rot%d", 2*i+0));
t2->SetName(Form("FMD3_fiducial_hole_rot%d", 2*i+1));
t1->RegisterYourself();
t2->RegisterYourself();
flangeComb.Append(Form("FMD3_fiducial_hole:FMD3_fiducial_hole_rot%d+"
"FMD3_fiducial_hole:FMD3_fiducial_hole_rot%d%c",
2*i+0, 2*i+1, (i == nFiducialHoles-1 ? ')' : '+')));
#if 0 // For debugging geometry
support->AddNode(fiducialVolume, 2*i+0, t1);
support->AddNode(fiducialVolume, 2*i+1, t2);
#endif
}
TGeoCompositeShape* flangeShape = new TGeoCompositeShape(flangeComb.Data());
flangeShape->SetName("FMD3_flange");
for (Int_t i = 0; i < 2; i++) {
TGeoRotation* rot = new TGeoRotation();
rot->RotateZ((i+.5)*90);
TVector2 v(flangeX, 0);
TVector2 w = v.Rotate((i+.5) * 2 * flangeAngle);
TGeoCombiTrans* trans = new TGeoCombiTrans(w.X(),w.Y(),
r4->X()+flangeDepth, rot);
trans->SetName(Form("FMD3_flange_matrix%d", i));
trans->RegisterYourself();
coneComb.Append(Form("+FMD3_flange:FMD3_flange_matrix%d", i));
}
coneComb.Append(")-(");
Double_t holeL = fmd3->GetHoleLength()/2;
Double_t holeD = fmd3->GetHoleDepth()/2;
Double_t holeLW = fmd3->GetHoleLowWidth()/2;
Double_t holeHW = fmd3->GetHoleHighWidth()/2;
Double_t holeA = fmd3->GetConeOuterAngle();
Double_t holeA2 = TMath::Pi() - fmd3->GetConeOuterAngle();
Double_t holeO = fmd3->GetHoleOffset();
Double_t holeZ = (holeO
+ holeL * TMath::Cos(holeA)
- holeD * TMath::Sin(holeA2));
Double_t holeX = (fmd3->ConeR(-holeZ + fmd3->GetInnerZ() + fmd3->GetNoseZ())
- holeD * TMath::Sin(holeA2));
new TGeoTrd1("FMD3_cone_hole", holeLW, holeHW, holeD, holeL);
TGeoTrd1* plateShape = new TGeoTrd1("FMD3_cooling_plate",
holeLW, holeHW, .033, holeL);
TGeoRotation* holeRot = new TGeoRotation();
holeRot->SetName("FMD3_cone_hole_rotation");
holeRot->RotateZ(90);
holeRot->RotateY(holeA*180/TMath::Pi());
TGeoCombiTrans* holeBaseTrans = new TGeoCombiTrans(holeX, 0, holeZ, holeRot);
holeBaseTrans->SetName("FMD3_cone_hole_base_matrix");
TGeoVolume* plateVolume = new TGeoVolume("FMD3_cooling_plate",
plateShape, fAl);
plateShape->SetTitle("FMD3 cooling plate");
plateVolume->SetTitle("FMD3 cooling plate");
for (Int_t i = 0; i < 4; i++) {
Double_t ang = 360. / 8 * (i + .5);
TGeoCombiTrans* trans = new TGeoCombiTrans(*holeBaseTrans);
trans->RotateZ(ang);
trans->SetName(Form("FMD3_cone_hole_matrix%d", i));
trans->RegisterYourself();
trans = new TGeoCombiTrans(*holeBaseTrans);
trans->RotateZ(ang);
trans->SetName(Form("FMD3_cooling_plate_matrix%d", i));
coneComb.Append(Form("FMD3_cone_hole:FMD3_cone_hole_matrix%d+", i));
support->AddNode(plateVolume, i, trans);
}
Double_t boltRadius = fmd3->GetBoltRadius();
Double_t boltLength = fmd3->GetBoltLength() / 2;
Double_t boltZ1 = fmd3->GetInnerZ()+fmd3->GetNoseZ()-10;
Double_t boltZ2 = fmd3->GetInnerZ()+fmd3->GetNoseZ()-20;
Double_t boltXE = 2*boltLength*TMath::Cos(fmd3->GetConeOuterAngle());
Double_t boltX1 = (fmd3->ConeR(boltZ1) - boltXE);
Double_t boltX2 = (fmd3->ConeR(boltZ2) - boltXE);
new TGeoTube("FMD3_bolt_hole", 0, boltRadius, boltLength+.2);
TGeoTube* boltShape = new TGeoTube("FMD3_bolt", 0, boltRadius, boltLength);
TGeoRotation* boltRot = new TGeoRotation();
boltRot->RotateY(-fmd3->GetConeOuterAngle()*180/TMath::Pi());
TGeoCombiTrans* boltTrans1 = new TGeoCombiTrans(boltX1, 0, 10, boltRot);
TGeoCombiTrans* boltTrans2 = new TGeoCombiTrans(boltX2, 0, 20, boltRot);
TGeoCombiTrans* boltTrans3 = new TGeoCombiTrans(*boltTrans1);
TGeoCombiTrans* boltTrans4 = new TGeoCombiTrans(*boltTrans2);
boltTrans3->RotateZ(180);
boltTrans4->RotateZ(180);
boltTrans1->SetName("FMD3_bolt_matrix1");
boltTrans2->SetName("FMD3_bolt_matrix2");
boltTrans3->SetName("FMD3_bolt_matrix3");
boltTrans4->SetName("FMD3_bolt_matrix4");
boltTrans1->RegisterYourself();
boltTrans2->RegisterYourself();
boltTrans3->RegisterYourself();
boltTrans4->RegisterYourself();
coneComb.Append("FMD3_bolt_hole:FMD3_bolt_matrix1"
"+FMD3_bolt_hole:FMD3_bolt_matrix2"
"+FMD3_bolt_hole:FMD3_bolt_matrix3"
"+FMD3_bolt_hole:FMD3_bolt_matrix4");
TGeoVolume* boltVolume = new TGeoVolume("FMD3_bolt", boltShape, fSteel);
support->AddNode(boltVolume, 1, boltTrans1);
support->AddNode(boltVolume, 2, boltTrans2);
boltShape->SetTitle("FMD3 steering bolt");
boltVolume->SetTitle("FMD3 steering bolt");
new TGeoBBox("FMD3_sheeve_hole", .55, .75, 1.16);
Double_t sheeveHoleZ = fmd3->GetInnerZ() + fmd3->GetNoseZ() - .75;
Double_t sheeveHoleR = fmd3->ConeR(sheeveHoleZ) - .55 + .2572222;
TGeoCombiTrans* sheeveMat1 = new TGeoCombiTrans(sheeveHoleR,0,1.15,0);
TGeoCombiTrans* sheeveMat2 = new TGeoCombiTrans(sheeveHoleR,0,1.15,0);
sheeveMat1->RotateZ(45);
sheeveMat2->RotateZ(135);
sheeveMat1->SetName("FMD3_sheeve_hole_matrix1");
sheeveMat2->SetName("FMD3_sheeve_hole_matrix2");
sheeveMat1->RegisterYourself();
sheeveMat2->RegisterYourself();
coneComb.Append("+FMD3_sheeve_hole:FMD3_sheeve_hole_matrix1"
"+FMD3_sheeve_hole:FMD3_sheeve_hole_matrix2)");
Double_t sheeveL = 1.15;
TGeoBBox* sheeveSideS = new TGeoBBox("FMD3_sheeve_side",
.55, .25, 1.15);
TGeoBBox* sheeveBackS = new TGeoBBox("FMD3_sheeve_back",
.55, .25, .15);
TGeoBBox* sheeveWingS = new TGeoBBox("FMD3_sheeve_wing",
.15, .15, 1.15);
TGeoPcon* sheeveWheelS = new TGeoPcon("FMD3_sheeve_wheel", 0, 360, 9);
Double_t sheeveInnerR = 0;
Double_t sheeveR = .875;
Double_t sheeveWheelZ = .95;
sheeveWheelS->DefineSection(0, -.25, sheeveInnerR, 1);
sheeveWheelS->DefineSection(1, -.125, sheeveInnerR, 1);
sheeveWheelS->DefineSection(2, -.125, sheeveInnerR, sheeveWheelZ);
sheeveWheelS->DefineSection(3, -.0625, sheeveInnerR, sheeveR+.02);
sheeveWheelS->DefineSection(4, 0.000, sheeveInnerR, sheeveR);
sheeveWheelS->DefineSection(5, +.0625, sheeveInnerR, sheeveR+.02);
sheeveWheelS->DefineSection(6, +.125, sheeveInnerR, sheeveWheelZ);
sheeveWheelS->DefineSection(7, +.125, sheeveInnerR, 1);
sheeveWheelS->DefineSection(8, +.25, sheeveInnerR, 1);
TGeoVolume* sheeveSideV = new TGeoVolume("FMD3_sheeve_side",
sheeveSideS, fPlastic);
TGeoVolume* sheeveBackV = new TGeoVolume("FMD3_sheeve_back",
sheeveBackS, fPlastic);
TGeoVolume* sheeveWingV = new TGeoVolume("FMD3_sheeve_wing",
sheeveWingS, fPlastic);
TGeoVolume* sheeveWheelV= new TGeoVolume("FMD3_sheeve_wheel",
sheeveWheelS, fPlastic);
TGeoVolumeAssembly* sheeveBox = new TGeoVolumeAssembly("FMD3_sheeve_box");
sheeveBox->AddNode(sheeveSideV, 1, new TGeoTranslation(0, -.5, 0));
sheeveBox->AddNode(sheeveSideV, 2, new TGeoTranslation(0, +.5, 0));
sheeveBox->AddNode(sheeveBackV, 1, new TGeoTranslation(0, 0, 2.0+.15-1.15));
sheeveBox->AddNode(sheeveWingV, 1, new TGeoTranslation(.55-.15, -.90, 0));
sheeveBox->AddNode(sheeveWingV, 2, new TGeoTranslation(.55-.15, +.90, 0));
TGeoRotation* sheeveWheelR = new TGeoRotation;
sheeveWheelR->RotateX(90);
TGeoCombiTrans* sheeveWheelM = new TGeoCombiTrans(0, 0, sheeveWheelZ-sheeveL,
sheeveWheelR);
sheeveBox->AddNode(sheeveWheelV, 1, sheeveWheelM);
support->AddNode(sheeveBox, 1, sheeveMat1);
support->AddNode(sheeveBox, 2, sheeveMat2);
TGeoCompositeShape* coneShape = new TGeoCompositeShape(coneComb.Data());
coneShape->SetName("FMD3_cone");
coneShape->SetTitle("FMD3 cone");
TGeoVolume* coneVolume = new TGeoVolume("FMD3_Cone", coneShape, fC);
coneVolume->SetLineColor(kRed);
support->AddNode(coneVolume, 0, new TGeoTranslation(0, 0, 0));
TGeoVolume* tensionBox = TensionBox();
Double_t tensionH = .6;
Double_t tensionL = 4;
Double_t tensionZ = 23.654;
Double_t tensionR = fmd3->ConeR(fmd3->GetInnerZ() + fmd3->GetNoseZ()
- tensionZ);
Double_t tensionAr = fmd3->GetConeOuterAngle();
Double_t tensionA = tensionAr * 180 / TMath::Pi();
TGeoRotation* tensionQ = new TGeoRotation;
tensionQ->RotateY(tensionA);
TGeoCombiTrans* tensionM1 = new TGeoCombiTrans(tensionR,0,tensionZ, tensionQ);
TGeoCombiTrans* tensionM2 = new TGeoCombiTrans(tensionR,0,tensionZ, tensionQ);
tensionM1->RotateZ(45);
tensionM2->RotateZ(135);
support->AddNode(tensionBox, 1, tensionM1);
support->AddNode(tensionBox, 2, tensionM2);
Double_t wireT = .1/2;
Double_t wireZ1 = (tensionZ
- tensionL * TMath::Cos(tensionAr)
- tensionH * TMath::Sin(tensionAr));
Double_t wireR1 = (tensionR
- tensionL * TMath::Sin(tensionAr)
+ tensionH * TMath::Cos(tensionAr));
AliFMDDebug(10, ("Wire Z1: %f=%f-%f*cos(%f)-%f*sin(%f)",
wireZ1, tensionZ, tensionL, tensionAr, tensionH, tensionAr));
AliFMDDebug(10, ("Wire R1: %f=%f-%f*sin(%f)-%f*cos(%f)",
wireR1, tensionR, tensionL, tensionAr, tensionH, tensionAr));
Double_t wireStartA = 42.3 * TMath::Pi() / 180;
Double_t wireZ2 = (sheeveWheelZ * (1 - TMath::Sin(wireStartA))
- wireT * TMath::Sin(wireStartA));
AliFMDDebug(10, ("wireZ2=%f=%f*(1-%f)", wireZ2, sheeveWheelZ,
TMath::Sin(wireStartA)));
Double_t wireR2 = (sheeveHoleR +
sheeveWheelZ * TMath::Cos(wireStartA) +
wireT * TMath::Cos(wireStartA));
Double_t wireDR = wireR1-wireR2;
Double_t wireDZ = wireZ1-wireZ2;
Double_t wireL = TMath::Sqrt(wireDR*wireDR+wireDZ*wireDZ)-.01;
Double_t wireAngle = TMath::ATan2(wireDR,wireDZ);
TGeoTube* wireShape = new TGeoTube("FMD3_wire", 0, wireT, wireL/2);
TGeoVolume* wireVolume = new TGeoVolume("FMD3_wire", wireShape,fSteel);
TGeoRotation* wireRot = new TGeoRotation();
wireRot->RotateY(180/TMath::Pi()*wireAngle);
Double_t wireR = wireR2 + wireDR / 2;
Double_t wireZ = wireZ2 + wireDZ / 2;
TGeoCombiTrans* wireM1 = new TGeoCombiTrans(wireR, 0,wireZ, wireRot);
TGeoCombiTrans* wireM2 = new TGeoCombiTrans(wireR, 0,wireZ, wireRot);
wireM1->RotateZ(45);
wireM2->RotateZ(135);
support->AddNode(wireVolume, 1, wireM1);
support->AddNode(wireVolume, 2, wireM2);
TGeoTorus* wireTS = new TGeoTorus(sheeveWheelZ+wireT, 0, wireT, 0,
90-wireStartA*180/TMath::Pi());
TGeoVolume* wireTV = new TGeoVolume("FMD3_bend_wire",wireTS,fSteel);
TGeoRotation* wireTR = new TGeoRotation;
wireTR->RotateY(90);
wireTR->RotateZ(-90);
Double_t wireTZ = sheeveWheelZ;
TGeoCombiTrans* wireTM1 = new TGeoCombiTrans(sheeveHoleR,0,wireTZ,wireTR);
TGeoCombiTrans* wireTM2 = new TGeoCombiTrans(sheeveHoleR,0,wireTZ,wireTR);
wireTM1->RotateZ(45);
wireTM2->RotateZ(135);
support->AddNode(wireTV, 1, wireTM1);
support->AddNode(wireTV, 2, wireTM2);
Double_t colarR = 4.05;
Double_t wireEL = sheeveHoleR - colarR;
TGeoTube* wireES = new TGeoTube("FMD3_end_wire", 0, wireT, wireEL/2);
TGeoVolume* wireEV = new TGeoVolume("FMD3_end_wire", wireES, fSteel);
TGeoRotation* wireER = new TGeoRotation;
wireER->RotateY(90);
TGeoCombiTrans* wireEM1 = new TGeoCombiTrans(colarR+wireEL/2,0,
-wireT,wireER);
TGeoCombiTrans* wireEM2 = new TGeoCombiTrans(colarR+wireEL/2,0,
-wireT,wireER);
wireEM1->RotateZ(45);
wireEM2->RotateZ(135);
support->AddNode(wireEV, 1, wireEM1);
support->AddNode(wireEV, 2, wireEM2);
Double_t z = fmd3->GetInnerZ();
AliFMDDebug(1, ("FMD3 support at z=%f", -fmd3->GetNoseZ()));
TGeoTranslation* t1 = new TGeoTranslation(0, 0, -fmd3->GetNoseZ());
fmd3TopVolume->AddNode(support, 1, t1);
TGeoCombiTrans* t2 = new TGeoCombiTrans(*t1);
t2->RotateZ(180);
fmd3BotVolume->AddNode(support, 2, t2);
TGeoRotation* rot = new TGeoRotation("FMD3 rotatation");
rot->RotateY(180);
TGeoVolume* top = gGeoManager->GetVolume("ALIC");
TGeoMatrix* mmatrix = new TGeoCombiTrans("FMD3 trans", 0, 0, z, rot);
AliFMDDebug(5, ("Placing volumes %s and %s in ALIC at z=%f",
fmd3TopVolume->GetName(), fmd3BotVolume->GetName(), z));
top->AddNode(fmd3TopVolume, fmd3->GetId(), mmatrix);
top->AddNode(fmd3BotVolume, fmd3->GetId(), mmatrix);
return 0;
}
void
AliFMDGeometryBuilder::Exec(Option_t*)
{
AliFMDDebug(1, ("\tGeometry options: %s",
(fDetailed ? "divided into strips" : "one volume")));
if (!gGeoManager) {
AliFatal("No TGeoManager defined");
return;
}
fSi = gGeoManager->GetMedium("FMD_Si$");
fC = gGeoManager->GetMedium("FMD_Carbon$");
fAl = gGeoManager->GetMedium("FMD_Aluminum$");
fChip = gGeoManager->GetMedium("FMD_Si Chip$");
fAir = gGeoManager->GetMedium("FMD_Air$");
fPCB = gGeoManager->GetMedium("FMD_PCB$");
fPlastic = gGeoManager->GetMedium("FMD_Plastic$");
fCopper = gGeoManager->GetMedium("FMD_Copper$");
fSteel = gGeoManager->GetMedium("FMD_Steel$");
if (!fSi||!fC||!fAl||!fChip||!fAir||!fPCB||!fPlastic||!fCopper||!fSteel) {
AliError("Failed to get some or all tracking mediums");
return;
}
AliFMDGeometry* fmd = AliFMDGeometry::Instance();
AliFMDRing* inner = fmd->GetInner();
AliFMDRing* outer = fmd->GetOuter();
RingGeometry(inner);
RingGeometry(outer);
TGeoVolume* innerTop = gGeoManager->GetVolume(Form(fgkRingTopName,
inner->GetId()));
TGeoVolume* innerBot = gGeoManager->GetVolume(Form(fgkRingBotName,
inner->GetId()));
TGeoVolume* outerTop = gGeoManager->GetVolume(Form(fgkRingTopName,
outer->GetId()));
TGeoVolume* outerBot = gGeoManager->GetVolume(Form(fgkRingBotName,
outer->GetId()));
FMD1Geometry(fmd->GetFMD1(), innerTop, innerBot);
FMD2Geometry(fmd->GetFMD2(), innerTop, innerBot, outerTop, outerBot);
FMD3Geometry(fmd->GetFMD3(), innerTop, innerBot, outerTop, outerBot);
#ifndef USE_PRE_MOVE
fmd->SetSectorOff(fSectorOff);
fmd->SetModuleOff(fModuleOff);
fmd->SetRingOff(fRingOff);
fmd->SetDetectorOff(fDetectorOff);
fmd->SetActive(fActiveId.fArray, fActiveId.fN);
#endif
}
AliFMDGeometryBuilder.cxx:1 AliFMDGeometryBuilder.cxx:2 AliFMDGeometryBuilder.cxx:3 AliFMDGeometryBuilder.cxx:4 AliFMDGeometryBuilder.cxx:5 AliFMDGeometryBuilder.cxx:6 AliFMDGeometryBuilder.cxx:7 AliFMDGeometryBuilder.cxx:8 AliFMDGeometryBuilder.cxx:9 AliFMDGeometryBuilder.cxx:10 AliFMDGeometryBuilder.cxx:11 AliFMDGeometryBuilder.cxx:12 AliFMDGeometryBuilder.cxx:13 AliFMDGeometryBuilder.cxx:14 AliFMDGeometryBuilder.cxx:15 AliFMDGeometryBuilder.cxx:16 AliFMDGeometryBuilder.cxx:17 AliFMDGeometryBuilder.cxx:18 AliFMDGeometryBuilder.cxx:19 AliFMDGeometryBuilder.cxx:20 AliFMDGeometryBuilder.cxx:21 AliFMDGeometryBuilder.cxx:22 AliFMDGeometryBuilder.cxx:23 AliFMDGeometryBuilder.cxx:24 AliFMDGeometryBuilder.cxx:25 AliFMDGeometryBuilder.cxx:26 AliFMDGeometryBuilder.cxx:27 AliFMDGeometryBuilder.cxx:28 AliFMDGeometryBuilder.cxx:29 AliFMDGeometryBuilder.cxx:30 AliFMDGeometryBuilder.cxx:31 AliFMDGeometryBuilder.cxx:32 AliFMDGeometryBuilder.cxx:33 AliFMDGeometryBuilder.cxx:34 AliFMDGeometryBuilder.cxx:35 AliFMDGeometryBuilder.cxx:36 AliFMDGeometryBuilder.cxx:37 AliFMDGeometryBuilder.cxx:38 AliFMDGeometryBuilder.cxx:39 AliFMDGeometryBuilder.cxx:40 AliFMDGeometryBuilder.cxx:41 AliFMDGeometryBuilder.cxx:42 AliFMDGeometryBuilder.cxx:43 AliFMDGeometryBuilder.cxx:44 AliFMDGeometryBuilder.cxx:45 AliFMDGeometryBuilder.cxx:46 AliFMDGeometryBuilder.cxx:47 AliFMDGeometryBuilder.cxx:48 AliFMDGeometryBuilder.cxx:49 AliFMDGeometryBuilder.cxx:50 AliFMDGeometryBuilder.cxx:51 AliFMDGeometryBuilder.cxx:52 AliFMDGeometryBuilder.cxx:53 AliFMDGeometryBuilder.cxx:54 AliFMDGeometryBuilder.cxx:55 AliFMDGeometryBuilder.cxx:56 AliFMDGeometryBuilder.cxx:57 AliFMDGeometryBuilder.cxx:58 AliFMDGeometryBuilder.cxx:59 AliFMDGeometryBuilder.cxx:60 AliFMDGeometryBuilder.cxx:61 AliFMDGeometryBuilder.cxx:62 AliFMDGeometryBuilder.cxx:63 AliFMDGeometryBuilder.cxx:64 AliFMDGeometryBuilder.cxx:65 AliFMDGeometryBuilder.cxx:66 AliFMDGeometryBuilder.cxx:67 AliFMDGeometryBuilder.cxx:68 AliFMDGeometryBuilder.cxx:69 AliFMDGeometryBuilder.cxx:70 AliFMDGeometryBuilder.cxx:71 AliFMDGeometryBuilder.cxx:72 AliFMDGeometryBuilder.cxx:73 AliFMDGeometryBuilder.cxx:74 AliFMDGeometryBuilder.cxx:75 AliFMDGeometryBuilder.cxx:76 AliFMDGeometryBuilder.cxx:77 AliFMDGeometryBuilder.cxx:78 AliFMDGeometryBuilder.cxx:79 AliFMDGeometryBuilder.cxx:80 AliFMDGeometryBuilder.cxx:81 AliFMDGeometryBuilder.cxx:82 AliFMDGeometryBuilder.cxx:83 AliFMDGeometryBuilder.cxx:84 AliFMDGeometryBuilder.cxx:85 AliFMDGeometryBuilder.cxx:86 AliFMDGeometryBuilder.cxx:87 AliFMDGeometryBuilder.cxx:88 AliFMDGeometryBuilder.cxx:89 AliFMDGeometryBuilder.cxx:90 AliFMDGeometryBuilder.cxx:91 AliFMDGeometryBuilder.cxx:92 AliFMDGeometryBuilder.cxx:93 AliFMDGeometryBuilder.cxx:94 AliFMDGeometryBuilder.cxx:95 AliFMDGeometryBuilder.cxx:96 AliFMDGeometryBuilder.cxx:97 AliFMDGeometryBuilder.cxx:98 AliFMDGeometryBuilder.cxx:99 AliFMDGeometryBuilder.cxx:100 AliFMDGeometryBuilder.cxx:101 AliFMDGeometryBuilder.cxx:102 AliFMDGeometryBuilder.cxx:103 AliFMDGeometryBuilder.cxx:104 AliFMDGeometryBuilder.cxx:105 AliFMDGeometryBuilder.cxx:106 AliFMDGeometryBuilder.cxx:107 AliFMDGeometryBuilder.cxx:108 AliFMDGeometryBuilder.cxx:109 AliFMDGeometryBuilder.cxx:110 AliFMDGeometryBuilder.cxx:111 AliFMDGeometryBuilder.cxx:112 AliFMDGeometryBuilder.cxx:113 AliFMDGeometryBuilder.cxx:114 AliFMDGeometryBuilder.cxx:115 AliFMDGeometryBuilder.cxx:116 AliFMDGeometryBuilder.cxx:117 AliFMDGeometryBuilder.cxx:118 AliFMDGeometryBuilder.cxx:119 AliFMDGeometryBuilder.cxx:120 AliFMDGeometryBuilder.cxx:121 AliFMDGeometryBuilder.cxx:122 AliFMDGeometryBuilder.cxx:123 AliFMDGeometryBuilder.cxx:124 AliFMDGeometryBuilder.cxx:125 AliFMDGeometryBuilder.cxx:126 AliFMDGeometryBuilder.cxx:127 AliFMDGeometryBuilder.cxx:128 AliFMDGeometryBuilder.cxx:129 AliFMDGeometryBuilder.cxx:130 AliFMDGeometryBuilder.cxx:131 AliFMDGeometryBuilder.cxx:132 AliFMDGeometryBuilder.cxx:133 AliFMDGeometryBuilder.cxx:134 AliFMDGeometryBuilder.cxx:135 AliFMDGeometryBuilder.cxx:136 AliFMDGeometryBuilder.cxx:137 AliFMDGeometryBuilder.cxx:138 AliFMDGeometryBuilder.cxx:139 AliFMDGeometryBuilder.cxx:140 AliFMDGeometryBuilder.cxx:141 AliFMDGeometryBuilder.cxx:142 AliFMDGeometryBuilder.cxx:143 AliFMDGeometryBuilder.cxx:144 AliFMDGeometryBuilder.cxx:145 AliFMDGeometryBuilder.cxx:146 AliFMDGeometryBuilder.cxx:147 AliFMDGeometryBuilder.cxx:148 AliFMDGeometryBuilder.cxx:149 AliFMDGeometryBuilder.cxx:150 AliFMDGeometryBuilder.cxx:151 AliFMDGeometryBuilder.cxx:152 AliFMDGeometryBuilder.cxx:153 AliFMDGeometryBuilder.cxx:154 AliFMDGeometryBuilder.cxx:155 AliFMDGeometryBuilder.cxx:156 AliFMDGeometryBuilder.cxx:157 AliFMDGeometryBuilder.cxx:158 AliFMDGeometryBuilder.cxx:159 AliFMDGeometryBuilder.cxx:160 AliFMDGeometryBuilder.cxx:161 AliFMDGeometryBuilder.cxx:162 AliFMDGeometryBuilder.cxx:163 AliFMDGeometryBuilder.cxx:164 AliFMDGeometryBuilder.cxx:165 AliFMDGeometryBuilder.cxx:166 AliFMDGeometryBuilder.cxx:167 AliFMDGeometryBuilder.cxx:168 AliFMDGeometryBuilder.cxx:169 AliFMDGeometryBuilder.cxx:170 AliFMDGeometryBuilder.cxx:171 AliFMDGeometryBuilder.cxx:172 AliFMDGeometryBuilder.cxx:173 AliFMDGeometryBuilder.cxx:174 AliFMDGeometryBuilder.cxx:175 AliFMDGeometryBuilder.cxx:176 AliFMDGeometryBuilder.cxx:177 AliFMDGeometryBuilder.cxx:178 AliFMDGeometryBuilder.cxx:179 AliFMDGeometryBuilder.cxx:180 AliFMDGeometryBuilder.cxx:181 AliFMDGeometryBuilder.cxx:182 AliFMDGeometryBuilder.cxx:183 AliFMDGeometryBuilder.cxx:184 AliFMDGeometryBuilder.cxx:185 AliFMDGeometryBuilder.cxx:186 AliFMDGeometryBuilder.cxx:187 AliFMDGeometryBuilder.cxx:188 AliFMDGeometryBuilder.cxx:189 AliFMDGeometryBuilder.cxx:190 AliFMDGeometryBuilder.cxx:191 AliFMDGeometryBuilder.cxx:192 AliFMDGeometryBuilder.cxx:193 AliFMDGeometryBuilder.cxx:194 AliFMDGeometryBuilder.cxx:195 AliFMDGeometryBuilder.cxx:196 AliFMDGeometryBuilder.cxx:197 AliFMDGeometryBuilder.cxx:198 AliFMDGeometryBuilder.cxx:199 AliFMDGeometryBuilder.cxx:200 AliFMDGeometryBuilder.cxx:201 AliFMDGeometryBuilder.cxx:202 AliFMDGeometryBuilder.cxx:203 AliFMDGeometryBuilder.cxx:204 AliFMDGeometryBuilder.cxx:205 AliFMDGeometryBuilder.cxx:206 AliFMDGeometryBuilder.cxx:207 AliFMDGeometryBuilder.cxx:208 AliFMDGeometryBuilder.cxx:209 AliFMDGeometryBuilder.cxx:210 AliFMDGeometryBuilder.cxx:211 AliFMDGeometryBuilder.cxx:212 AliFMDGeometryBuilder.cxx:213 AliFMDGeometryBuilder.cxx:214 AliFMDGeometryBuilder.cxx:215 AliFMDGeometryBuilder.cxx:216 AliFMDGeometryBuilder.cxx:217 AliFMDGeometryBuilder.cxx:218 AliFMDGeometryBuilder.cxx:219 AliFMDGeometryBuilder.cxx:220 AliFMDGeometryBuilder.cxx:221 AliFMDGeometryBuilder.cxx:222 AliFMDGeometryBuilder.cxx:223 AliFMDGeometryBuilder.cxx:224 AliFMDGeometryBuilder.cxx:225 AliFMDGeometryBuilder.cxx:226 AliFMDGeometryBuilder.cxx:227 AliFMDGeometryBuilder.cxx:228 AliFMDGeometryBuilder.cxx:229 AliFMDGeometryBuilder.cxx:230 AliFMDGeometryBuilder.cxx:231 AliFMDGeometryBuilder.cxx:232 AliFMDGeometryBuilder.cxx:233 AliFMDGeometryBuilder.cxx:234 AliFMDGeometryBuilder.cxx:235 AliFMDGeometryBuilder.cxx:236 AliFMDGeometryBuilder.cxx:237 AliFMDGeometryBuilder.cxx:238 AliFMDGeometryBuilder.cxx:239 AliFMDGeometryBuilder.cxx:240 AliFMDGeometryBuilder.cxx:241 AliFMDGeometryBuilder.cxx:242 AliFMDGeometryBuilder.cxx:243 AliFMDGeometryBuilder.cxx:244 AliFMDGeometryBuilder.cxx:245 AliFMDGeometryBuilder.cxx:246 AliFMDGeometryBuilder.cxx:247 AliFMDGeometryBuilder.cxx:248 AliFMDGeometryBuilder.cxx:249 AliFMDGeometryBuilder.cxx:250 AliFMDGeometryBuilder.cxx:251 AliFMDGeometryBuilder.cxx:252 AliFMDGeometryBuilder.cxx:253 AliFMDGeometryBuilder.cxx:254 AliFMDGeometryBuilder.cxx:255 AliFMDGeometryBuilder.cxx:256 AliFMDGeometryBuilder.cxx:257 AliFMDGeometryBuilder.cxx:258 AliFMDGeometryBuilder.cxx:259 AliFMDGeometryBuilder.cxx:260 AliFMDGeometryBuilder.cxx:261 AliFMDGeometryBuilder.cxx:262 AliFMDGeometryBuilder.cxx:263 AliFMDGeometryBuilder.cxx:264 AliFMDGeometryBuilder.cxx:265 AliFMDGeometryBuilder.cxx:266 AliFMDGeometryBuilder.cxx:267 AliFMDGeometryBuilder.cxx:268 AliFMDGeometryBuilder.cxx:269 AliFMDGeometryBuilder.cxx:270 AliFMDGeometryBuilder.cxx:271 AliFMDGeometryBuilder.cxx:272 AliFMDGeometryBuilder.cxx:273 AliFMDGeometryBuilder.cxx:274 AliFMDGeometryBuilder.cxx:275 AliFMDGeometryBuilder.cxx:276 AliFMDGeometryBuilder.cxx:277 AliFMDGeometryBuilder.cxx:278 AliFMDGeometryBuilder.cxx:279 AliFMDGeometryBuilder.cxx:280 AliFMDGeometryBuilder.cxx:281 AliFMDGeometryBuilder.cxx:282 AliFMDGeometryBuilder.cxx:283 AliFMDGeometryBuilder.cxx:284 AliFMDGeometryBuilder.cxx:285 AliFMDGeometryBuilder.cxx:286 AliFMDGeometryBuilder.cxx:287 AliFMDGeometryBuilder.cxx:288 AliFMDGeometryBuilder.cxx:289 AliFMDGeometryBuilder.cxx:290 AliFMDGeometryBuilder.cxx:291 AliFMDGeometryBuilder.cxx:292 AliFMDGeometryBuilder.cxx:293 AliFMDGeometryBuilder.cxx:294 AliFMDGeometryBuilder.cxx:295 AliFMDGeometryBuilder.cxx:296 AliFMDGeometryBuilder.cxx:297 AliFMDGeometryBuilder.cxx:298 AliFMDGeometryBuilder.cxx:299 AliFMDGeometryBuilder.cxx:300 AliFMDGeometryBuilder.cxx:301 AliFMDGeometryBuilder.cxx:302 AliFMDGeometryBuilder.cxx:303 AliFMDGeometryBuilder.cxx:304 AliFMDGeometryBuilder.cxx:305 AliFMDGeometryBuilder.cxx:306 AliFMDGeometryBuilder.cxx:307 AliFMDGeometryBuilder.cxx:308 AliFMDGeometryBuilder.cxx:309 AliFMDGeometryBuilder.cxx:310 AliFMDGeometryBuilder.cxx:311 AliFMDGeometryBuilder.cxx:312 AliFMDGeometryBuilder.cxx:313 AliFMDGeometryBuilder.cxx:314 AliFMDGeometryBuilder.cxx:315 AliFMDGeometryBuilder.cxx:316 AliFMDGeometryBuilder.cxx:317 AliFMDGeometryBuilder.cxx:318 AliFMDGeometryBuilder.cxx:319 AliFMDGeometryBuilder.cxx:320 AliFMDGeometryBuilder.cxx:321 AliFMDGeometryBuilder.cxx:322 AliFMDGeometryBuilder.cxx:323 AliFMDGeometryBuilder.cxx:324 AliFMDGeometryBuilder.cxx:325 AliFMDGeometryBuilder.cxx:326 AliFMDGeometryBuilder.cxx:327 AliFMDGeometryBuilder.cxx:328 AliFMDGeometryBuilder.cxx:329 AliFMDGeometryBuilder.cxx:330 AliFMDGeometryBuilder.cxx:331 AliFMDGeometryBuilder.cxx:332 AliFMDGeometryBuilder.cxx:333 AliFMDGeometryBuilder.cxx:334 AliFMDGeometryBuilder.cxx:335 AliFMDGeometryBuilder.cxx:336 AliFMDGeometryBuilder.cxx:337 AliFMDGeometryBuilder.cxx:338 AliFMDGeometryBuilder.cxx:339 AliFMDGeometryBuilder.cxx:340 AliFMDGeometryBuilder.cxx:341 AliFMDGeometryBuilder.cxx:342 AliFMDGeometryBuilder.cxx:343 AliFMDGeometryBuilder.cxx:344 AliFMDGeometryBuilder.cxx:345 AliFMDGeometryBuilder.cxx:346 AliFMDGeometryBuilder.cxx:347 AliFMDGeometryBuilder.cxx:348 AliFMDGeometryBuilder.cxx:349 AliFMDGeometryBuilder.cxx:350 AliFMDGeometryBuilder.cxx:351 AliFMDGeometryBuilder.cxx:352 AliFMDGeometryBuilder.cxx:353 AliFMDGeometryBuilder.cxx:354 AliFMDGeometryBuilder.cxx:355 AliFMDGeometryBuilder.cxx:356 AliFMDGeometryBuilder.cxx:357 AliFMDGeometryBuilder.cxx:358 AliFMDGeometryBuilder.cxx:359 AliFMDGeometryBuilder.cxx:360 AliFMDGeometryBuilder.cxx:361 AliFMDGeometryBuilder.cxx:362 AliFMDGeometryBuilder.cxx:363 AliFMDGeometryBuilder.cxx:364 AliFMDGeometryBuilder.cxx:365 AliFMDGeometryBuilder.cxx:366 AliFMDGeometryBuilder.cxx:367 AliFMDGeometryBuilder.cxx:368 AliFMDGeometryBuilder.cxx:369 AliFMDGeometryBuilder.cxx:370 AliFMDGeometryBuilder.cxx:371 AliFMDGeometryBuilder.cxx:372 AliFMDGeometryBuilder.cxx:373 AliFMDGeometryBuilder.cxx:374 AliFMDGeometryBuilder.cxx:375 AliFMDGeometryBuilder.cxx:376 AliFMDGeometryBuilder.cxx:377 AliFMDGeometryBuilder.cxx:378 AliFMDGeometryBuilder.cxx:379 AliFMDGeometryBuilder.cxx:380 AliFMDGeometryBuilder.cxx:381 AliFMDGeometryBuilder.cxx:382 AliFMDGeometryBuilder.cxx:383 AliFMDGeometryBuilder.cxx:384 AliFMDGeometryBuilder.cxx:385 AliFMDGeometryBuilder.cxx:386 AliFMDGeometryBuilder.cxx:387 AliFMDGeometryBuilder.cxx:388 AliFMDGeometryBuilder.cxx:389 AliFMDGeometryBuilder.cxx:390 AliFMDGeometryBuilder.cxx:391 AliFMDGeometryBuilder.cxx:392 AliFMDGeometryBuilder.cxx:393 AliFMDGeometryBuilder.cxx:394 AliFMDGeometryBuilder.cxx:395 AliFMDGeometryBuilder.cxx:396 AliFMDGeometryBuilder.cxx:397 AliFMDGeometryBuilder.cxx:398 AliFMDGeometryBuilder.cxx:399 AliFMDGeometryBuilder.cxx:400 AliFMDGeometryBuilder.cxx:401 AliFMDGeometryBuilder.cxx:402 AliFMDGeometryBuilder.cxx:403 AliFMDGeometryBuilder.cxx:404 AliFMDGeometryBuilder.cxx:405 AliFMDGeometryBuilder.cxx:406 AliFMDGeometryBuilder.cxx:407 AliFMDGeometryBuilder.cxx:408 AliFMDGeometryBuilder.cxx:409 AliFMDGeometryBuilder.cxx:410 AliFMDGeometryBuilder.cxx:411 AliFMDGeometryBuilder.cxx:412 AliFMDGeometryBuilder.cxx:413 AliFMDGeometryBuilder.cxx:414 AliFMDGeometryBuilder.cxx:415 AliFMDGeometryBuilder.cxx:416 AliFMDGeometryBuilder.cxx:417 AliFMDGeometryBuilder.cxx:418 AliFMDGeometryBuilder.cxx:419 AliFMDGeometryBuilder.cxx:420 AliFMDGeometryBuilder.cxx:421 AliFMDGeometryBuilder.cxx:422 AliFMDGeometryBuilder.cxx:423 AliFMDGeometryBuilder.cxx:424 AliFMDGeometryBuilder.cxx:425 AliFMDGeometryBuilder.cxx:426 AliFMDGeometryBuilder.cxx:427 AliFMDGeometryBuilder.cxx:428 AliFMDGeometryBuilder.cxx:429 AliFMDGeometryBuilder.cxx:430 AliFMDGeometryBuilder.cxx:431 AliFMDGeometryBuilder.cxx:432 AliFMDGeometryBuilder.cxx:433 AliFMDGeometryBuilder.cxx:434 AliFMDGeometryBuilder.cxx:435 AliFMDGeometryBuilder.cxx:436 AliFMDGeometryBuilder.cxx:437 AliFMDGeometryBuilder.cxx:438 AliFMDGeometryBuilder.cxx:439 AliFMDGeometryBuilder.cxx:440 AliFMDGeometryBuilder.cxx:441 AliFMDGeometryBuilder.cxx:442 AliFMDGeometryBuilder.cxx:443 AliFMDGeometryBuilder.cxx:444 AliFMDGeometryBuilder.cxx:445 AliFMDGeometryBuilder.cxx:446 AliFMDGeometryBuilder.cxx:447 AliFMDGeometryBuilder.cxx:448 AliFMDGeometryBuilder.cxx:449 AliFMDGeometryBuilder.cxx:450 AliFMDGeometryBuilder.cxx:451 AliFMDGeometryBuilder.cxx:452 AliFMDGeometryBuilder.cxx:453 AliFMDGeometryBuilder.cxx:454 AliFMDGeometryBuilder.cxx:455 AliFMDGeometryBuilder.cxx:456 AliFMDGeometryBuilder.cxx:457 AliFMDGeometryBuilder.cxx:458 AliFMDGeometryBuilder.cxx:459 AliFMDGeometryBuilder.cxx:460 AliFMDGeometryBuilder.cxx:461 AliFMDGeometryBuilder.cxx:462 AliFMDGeometryBuilder.cxx:463 AliFMDGeometryBuilder.cxx:464 AliFMDGeometryBuilder.cxx:465 AliFMDGeometryBuilder.cxx:466 AliFMDGeometryBuilder.cxx:467 AliFMDGeometryBuilder.cxx:468 AliFMDGeometryBuilder.cxx:469 AliFMDGeometryBuilder.cxx:470 AliFMDGeometryBuilder.cxx:471 AliFMDGeometryBuilder.cxx:472 AliFMDGeometryBuilder.cxx:473 AliFMDGeometryBuilder.cxx:474 AliFMDGeometryBuilder.cxx:475 AliFMDGeometryBuilder.cxx:476 AliFMDGeometryBuilder.cxx:477 AliFMDGeometryBuilder.cxx:478 AliFMDGeometryBuilder.cxx:479 AliFMDGeometryBuilder.cxx:480 AliFMDGeometryBuilder.cxx:481 AliFMDGeometryBuilder.cxx:482 AliFMDGeometryBuilder.cxx:483 AliFMDGeometryBuilder.cxx:484 AliFMDGeometryBuilder.cxx:485 AliFMDGeometryBuilder.cxx:486 AliFMDGeometryBuilder.cxx:487 AliFMDGeometryBuilder.cxx:488 AliFMDGeometryBuilder.cxx:489 AliFMDGeometryBuilder.cxx:490 AliFMDGeometryBuilder.cxx:491 AliFMDGeometryBuilder.cxx:492 AliFMDGeometryBuilder.cxx:493 AliFMDGeometryBuilder.cxx:494 AliFMDGeometryBuilder.cxx:495 AliFMDGeometryBuilder.cxx:496 AliFMDGeometryBuilder.cxx:497 AliFMDGeometryBuilder.cxx:498 AliFMDGeometryBuilder.cxx:499 AliFMDGeometryBuilder.cxx:500 AliFMDGeometryBuilder.cxx:501 AliFMDGeometryBuilder.cxx:502 AliFMDGeometryBuilder.cxx:503 AliFMDGeometryBuilder.cxx:504 AliFMDGeometryBuilder.cxx:505 AliFMDGeometryBuilder.cxx:506 AliFMDGeometryBuilder.cxx:507 AliFMDGeometryBuilder.cxx:508 AliFMDGeometryBuilder.cxx:509 AliFMDGeometryBuilder.cxx:510 AliFMDGeometryBuilder.cxx:511 AliFMDGeometryBuilder.cxx:512 AliFMDGeometryBuilder.cxx:513 AliFMDGeometryBuilder.cxx:514 AliFMDGeometryBuilder.cxx:515 AliFMDGeometryBuilder.cxx:516 AliFMDGeometryBuilder.cxx:517 AliFMDGeometryBuilder.cxx:518 AliFMDGeometryBuilder.cxx:519 AliFMDGeometryBuilder.cxx:520 AliFMDGeometryBuilder.cxx:521 AliFMDGeometryBuilder.cxx:522 AliFMDGeometryBuilder.cxx:523 AliFMDGeometryBuilder.cxx:524 AliFMDGeometryBuilder.cxx:525 AliFMDGeometryBuilder.cxx:526 AliFMDGeometryBuilder.cxx:527 AliFMDGeometryBuilder.cxx:528 AliFMDGeometryBuilder.cxx:529 AliFMDGeometryBuilder.cxx:530 AliFMDGeometryBuilder.cxx:531 AliFMDGeometryBuilder.cxx:532 AliFMDGeometryBuilder.cxx:533 AliFMDGeometryBuilder.cxx:534 AliFMDGeometryBuilder.cxx:535 AliFMDGeometryBuilder.cxx:536 AliFMDGeometryBuilder.cxx:537 AliFMDGeometryBuilder.cxx:538 AliFMDGeometryBuilder.cxx:539 AliFMDGeometryBuilder.cxx:540 AliFMDGeometryBuilder.cxx:541 AliFMDGeometryBuilder.cxx:542 AliFMDGeometryBuilder.cxx:543 AliFMDGeometryBuilder.cxx:544 AliFMDGeometryBuilder.cxx:545 AliFMDGeometryBuilder.cxx:546 AliFMDGeometryBuilder.cxx:547 AliFMDGeometryBuilder.cxx:548 AliFMDGeometryBuilder.cxx:549 AliFMDGeometryBuilder.cxx:550 AliFMDGeometryBuilder.cxx:551 AliFMDGeometryBuilder.cxx:552 AliFMDGeometryBuilder.cxx:553 AliFMDGeometryBuilder.cxx:554 AliFMDGeometryBuilder.cxx:555 AliFMDGeometryBuilder.cxx:556 AliFMDGeometryBuilder.cxx:557 AliFMDGeometryBuilder.cxx:558 AliFMDGeometryBuilder.cxx:559 AliFMDGeometryBuilder.cxx:560 AliFMDGeometryBuilder.cxx:561 AliFMDGeometryBuilder.cxx:562 AliFMDGeometryBuilder.cxx:563 AliFMDGeometryBuilder.cxx:564 AliFMDGeometryBuilder.cxx:565 AliFMDGeometryBuilder.cxx:566 AliFMDGeometryBuilder.cxx:567 AliFMDGeometryBuilder.cxx:568 AliFMDGeometryBuilder.cxx:569 AliFMDGeometryBuilder.cxx:570 AliFMDGeometryBuilder.cxx:571 AliFMDGeometryBuilder.cxx:572 AliFMDGeometryBuilder.cxx:573 AliFMDGeometryBuilder.cxx:574 AliFMDGeometryBuilder.cxx:575 AliFMDGeometryBuilder.cxx:576 AliFMDGeometryBuilder.cxx:577 AliFMDGeometryBuilder.cxx:578 AliFMDGeometryBuilder.cxx:579 AliFMDGeometryBuilder.cxx:580 AliFMDGeometryBuilder.cxx:581 AliFMDGeometryBuilder.cxx:582 AliFMDGeometryBuilder.cxx:583 AliFMDGeometryBuilder.cxx:584 AliFMDGeometryBuilder.cxx:585 AliFMDGeometryBuilder.cxx:586 AliFMDGeometryBuilder.cxx:587 AliFMDGeometryBuilder.cxx:588 AliFMDGeometryBuilder.cxx:589 AliFMDGeometryBuilder.cxx:590 AliFMDGeometryBuilder.cxx:591 AliFMDGeometryBuilder.cxx:592 AliFMDGeometryBuilder.cxx:593 AliFMDGeometryBuilder.cxx:594 AliFMDGeometryBuilder.cxx:595 AliFMDGeometryBuilder.cxx:596 AliFMDGeometryBuilder.cxx:597 AliFMDGeometryBuilder.cxx:598 AliFMDGeometryBuilder.cxx:599 AliFMDGeometryBuilder.cxx:600 AliFMDGeometryBuilder.cxx:601 AliFMDGeometryBuilder.cxx:602 AliFMDGeometryBuilder.cxx:603 AliFMDGeometryBuilder.cxx:604 AliFMDGeometryBuilder.cxx:605 AliFMDGeometryBuilder.cxx:606 AliFMDGeometryBuilder.cxx:607 AliFMDGeometryBuilder.cxx:608 AliFMDGeometryBuilder.cxx:609 AliFMDGeometryBuilder.cxx:610 AliFMDGeometryBuilder.cxx:611 AliFMDGeometryBuilder.cxx:612 AliFMDGeometryBuilder.cxx:613 AliFMDGeometryBuilder.cxx:614 AliFMDGeometryBuilder.cxx:615 AliFMDGeometryBuilder.cxx:616 AliFMDGeometryBuilder.cxx:617 AliFMDGeometryBuilder.cxx:618 AliFMDGeometryBuilder.cxx:619 AliFMDGeometryBuilder.cxx:620 AliFMDGeometryBuilder.cxx:621 AliFMDGeometryBuilder.cxx:622 AliFMDGeometryBuilder.cxx:623 AliFMDGeometryBuilder.cxx:624 AliFMDGeometryBuilder.cxx:625 AliFMDGeometryBuilder.cxx:626 AliFMDGeometryBuilder.cxx:627 AliFMDGeometryBuilder.cxx:628 AliFMDGeometryBuilder.cxx:629 AliFMDGeometryBuilder.cxx:630 AliFMDGeometryBuilder.cxx:631 AliFMDGeometryBuilder.cxx:632 AliFMDGeometryBuilder.cxx:633 AliFMDGeometryBuilder.cxx:634 AliFMDGeometryBuilder.cxx:635 AliFMDGeometryBuilder.cxx:636 AliFMDGeometryBuilder.cxx:637 AliFMDGeometryBuilder.cxx:638 AliFMDGeometryBuilder.cxx:639 AliFMDGeometryBuilder.cxx:640 AliFMDGeometryBuilder.cxx:641 AliFMDGeometryBuilder.cxx:642 AliFMDGeometryBuilder.cxx:643 AliFMDGeometryBuilder.cxx:644 AliFMDGeometryBuilder.cxx:645 AliFMDGeometryBuilder.cxx:646 AliFMDGeometryBuilder.cxx:647 AliFMDGeometryBuilder.cxx:648 AliFMDGeometryBuilder.cxx:649 AliFMDGeometryBuilder.cxx:650 AliFMDGeometryBuilder.cxx:651 AliFMDGeometryBuilder.cxx:652 AliFMDGeometryBuilder.cxx:653 AliFMDGeometryBuilder.cxx:654 AliFMDGeometryBuilder.cxx:655 AliFMDGeometryBuilder.cxx:656 AliFMDGeometryBuilder.cxx:657 AliFMDGeometryBuilder.cxx:658 AliFMDGeometryBuilder.cxx:659 AliFMDGeometryBuilder.cxx:660 AliFMDGeometryBuilder.cxx:661 AliFMDGeometryBuilder.cxx:662 AliFMDGeometryBuilder.cxx:663 AliFMDGeometryBuilder.cxx:664 AliFMDGeometryBuilder.cxx:665 AliFMDGeometryBuilder.cxx:666 AliFMDGeometryBuilder.cxx:667 AliFMDGeometryBuilder.cxx:668 AliFMDGeometryBuilder.cxx:669 AliFMDGeometryBuilder.cxx:670 AliFMDGeometryBuilder.cxx:671 AliFMDGeometryBuilder.cxx:672 AliFMDGeometryBuilder.cxx:673 AliFMDGeometryBuilder.cxx:674 AliFMDGeometryBuilder.cxx:675 AliFMDGeometryBuilder.cxx:676 AliFMDGeometryBuilder.cxx:677 AliFMDGeometryBuilder.cxx:678 AliFMDGeometryBuilder.cxx:679 AliFMDGeometryBuilder.cxx:680 AliFMDGeometryBuilder.cxx:681 AliFMDGeometryBuilder.cxx:682 AliFMDGeometryBuilder.cxx:683 AliFMDGeometryBuilder.cxx:684 AliFMDGeometryBuilder.cxx:685 AliFMDGeometryBuilder.cxx:686 AliFMDGeometryBuilder.cxx:687 AliFMDGeometryBuilder.cxx:688 AliFMDGeometryBuilder.cxx:689 AliFMDGeometryBuilder.cxx:690 AliFMDGeometryBuilder.cxx:691 AliFMDGeometryBuilder.cxx:692 AliFMDGeometryBuilder.cxx:693 AliFMDGeometryBuilder.cxx:694 AliFMDGeometryBuilder.cxx:695 AliFMDGeometryBuilder.cxx:696 AliFMDGeometryBuilder.cxx:697 AliFMDGeometryBuilder.cxx:698 AliFMDGeometryBuilder.cxx:699 AliFMDGeometryBuilder.cxx:700 AliFMDGeometryBuilder.cxx:701 AliFMDGeometryBuilder.cxx:702 AliFMDGeometryBuilder.cxx:703 AliFMDGeometryBuilder.cxx:704 AliFMDGeometryBuilder.cxx:705 AliFMDGeometryBuilder.cxx:706 AliFMDGeometryBuilder.cxx:707 AliFMDGeometryBuilder.cxx:708 AliFMDGeometryBuilder.cxx:709 AliFMDGeometryBuilder.cxx:710 AliFMDGeometryBuilder.cxx:711 AliFMDGeometryBuilder.cxx:712 AliFMDGeometryBuilder.cxx:713 AliFMDGeometryBuilder.cxx:714 AliFMDGeometryBuilder.cxx:715 AliFMDGeometryBuilder.cxx:716 AliFMDGeometryBuilder.cxx:717 AliFMDGeometryBuilder.cxx:718 AliFMDGeometryBuilder.cxx:719 AliFMDGeometryBuilder.cxx:720 AliFMDGeometryBuilder.cxx:721 AliFMDGeometryBuilder.cxx:722 AliFMDGeometryBuilder.cxx:723 AliFMDGeometryBuilder.cxx:724 AliFMDGeometryBuilder.cxx:725 AliFMDGeometryBuilder.cxx:726 AliFMDGeometryBuilder.cxx:727 AliFMDGeometryBuilder.cxx:728 AliFMDGeometryBuilder.cxx:729 AliFMDGeometryBuilder.cxx:730 AliFMDGeometryBuilder.cxx:731 AliFMDGeometryBuilder.cxx:732 AliFMDGeometryBuilder.cxx:733 AliFMDGeometryBuilder.cxx:734 AliFMDGeometryBuilder.cxx:735 AliFMDGeometryBuilder.cxx:736 AliFMDGeometryBuilder.cxx:737 AliFMDGeometryBuilder.cxx:738 AliFMDGeometryBuilder.cxx:739 AliFMDGeometryBuilder.cxx:740 AliFMDGeometryBuilder.cxx:741 AliFMDGeometryBuilder.cxx:742 AliFMDGeometryBuilder.cxx:743 AliFMDGeometryBuilder.cxx:744 AliFMDGeometryBuilder.cxx:745 AliFMDGeometryBuilder.cxx:746 AliFMDGeometryBuilder.cxx:747 AliFMDGeometryBuilder.cxx:748 AliFMDGeometryBuilder.cxx:749 AliFMDGeometryBuilder.cxx:750 AliFMDGeometryBuilder.cxx:751 AliFMDGeometryBuilder.cxx:752 AliFMDGeometryBuilder.cxx:753 AliFMDGeometryBuilder.cxx:754 AliFMDGeometryBuilder.cxx:755 AliFMDGeometryBuilder.cxx:756 AliFMDGeometryBuilder.cxx:757 AliFMDGeometryBuilder.cxx:758 AliFMDGeometryBuilder.cxx:759 AliFMDGeometryBuilder.cxx:760 AliFMDGeometryBuilder.cxx:761 AliFMDGeometryBuilder.cxx:762 AliFMDGeometryBuilder.cxx:763 AliFMDGeometryBuilder.cxx:764 AliFMDGeometryBuilder.cxx:765 AliFMDGeometryBuilder.cxx:766 AliFMDGeometryBuilder.cxx:767 AliFMDGeometryBuilder.cxx:768 AliFMDGeometryBuilder.cxx:769 AliFMDGeometryBuilder.cxx:770 AliFMDGeometryBuilder.cxx:771 AliFMDGeometryBuilder.cxx:772 AliFMDGeometryBuilder.cxx:773 AliFMDGeometryBuilder.cxx:774 AliFMDGeometryBuilder.cxx:775 AliFMDGeometryBuilder.cxx:776 AliFMDGeometryBuilder.cxx:777 AliFMDGeometryBuilder.cxx:778 AliFMDGeometryBuilder.cxx:779 AliFMDGeometryBuilder.cxx:780 AliFMDGeometryBuilder.cxx:781 AliFMDGeometryBuilder.cxx:782 AliFMDGeometryBuilder.cxx:783 AliFMDGeometryBuilder.cxx:784 AliFMDGeometryBuilder.cxx:785 AliFMDGeometryBuilder.cxx:786 AliFMDGeometryBuilder.cxx:787 AliFMDGeometryBuilder.cxx:788 AliFMDGeometryBuilder.cxx:789 AliFMDGeometryBuilder.cxx:790 AliFMDGeometryBuilder.cxx:791 AliFMDGeometryBuilder.cxx:792 AliFMDGeometryBuilder.cxx:793 AliFMDGeometryBuilder.cxx:794 AliFMDGeometryBuilder.cxx:795 AliFMDGeometryBuilder.cxx:796 AliFMDGeometryBuilder.cxx:797 AliFMDGeometryBuilder.cxx:798 AliFMDGeometryBuilder.cxx:799 AliFMDGeometryBuilder.cxx:800 AliFMDGeometryBuilder.cxx:801 AliFMDGeometryBuilder.cxx:802 AliFMDGeometryBuilder.cxx:803 AliFMDGeometryBuilder.cxx:804 AliFMDGeometryBuilder.cxx:805 AliFMDGeometryBuilder.cxx:806 AliFMDGeometryBuilder.cxx:807 AliFMDGeometryBuilder.cxx:808 AliFMDGeometryBuilder.cxx:809 AliFMDGeometryBuilder.cxx:810 AliFMDGeometryBuilder.cxx:811 AliFMDGeometryBuilder.cxx:812 AliFMDGeometryBuilder.cxx:813 AliFMDGeometryBuilder.cxx:814 AliFMDGeometryBuilder.cxx:815 AliFMDGeometryBuilder.cxx:816 AliFMDGeometryBuilder.cxx:817 AliFMDGeometryBuilder.cxx:818 AliFMDGeometryBuilder.cxx:819 AliFMDGeometryBuilder.cxx:820 AliFMDGeometryBuilder.cxx:821 AliFMDGeometryBuilder.cxx:822 AliFMDGeometryBuilder.cxx:823 AliFMDGeometryBuilder.cxx:824 AliFMDGeometryBuilder.cxx:825 AliFMDGeometryBuilder.cxx:826 AliFMDGeometryBuilder.cxx:827 AliFMDGeometryBuilder.cxx:828 AliFMDGeometryBuilder.cxx:829 AliFMDGeometryBuilder.cxx:830 AliFMDGeometryBuilder.cxx:831 AliFMDGeometryBuilder.cxx:832 AliFMDGeometryBuilder.cxx:833 AliFMDGeometryBuilder.cxx:834 AliFMDGeometryBuilder.cxx:835 AliFMDGeometryBuilder.cxx:836 AliFMDGeometryBuilder.cxx:837 AliFMDGeometryBuilder.cxx:838 AliFMDGeometryBuilder.cxx:839 AliFMDGeometryBuilder.cxx:840 AliFMDGeometryBuilder.cxx:841 AliFMDGeometryBuilder.cxx:842 AliFMDGeometryBuilder.cxx:843 AliFMDGeometryBuilder.cxx:844 AliFMDGeometryBuilder.cxx:845 AliFMDGeometryBuilder.cxx:846 AliFMDGeometryBuilder.cxx:847 AliFMDGeometryBuilder.cxx:848 AliFMDGeometryBuilder.cxx:849 AliFMDGeometryBuilder.cxx:850 AliFMDGeometryBuilder.cxx:851 AliFMDGeometryBuilder.cxx:852 AliFMDGeometryBuilder.cxx:853 AliFMDGeometryBuilder.cxx:854 AliFMDGeometryBuilder.cxx:855 AliFMDGeometryBuilder.cxx:856 AliFMDGeometryBuilder.cxx:857 AliFMDGeometryBuilder.cxx:858 AliFMDGeometryBuilder.cxx:859 AliFMDGeometryBuilder.cxx:860 AliFMDGeometryBuilder.cxx:861 AliFMDGeometryBuilder.cxx:862 AliFMDGeometryBuilder.cxx:863 AliFMDGeometryBuilder.cxx:864 AliFMDGeometryBuilder.cxx:865 AliFMDGeometryBuilder.cxx:866 AliFMDGeometryBuilder.cxx:867 AliFMDGeometryBuilder.cxx:868 AliFMDGeometryBuilder.cxx:869 AliFMDGeometryBuilder.cxx:870 AliFMDGeometryBuilder.cxx:871 AliFMDGeometryBuilder.cxx:872 AliFMDGeometryBuilder.cxx:873 AliFMDGeometryBuilder.cxx:874 AliFMDGeometryBuilder.cxx:875 AliFMDGeometryBuilder.cxx:876 AliFMDGeometryBuilder.cxx:877 AliFMDGeometryBuilder.cxx:878 AliFMDGeometryBuilder.cxx:879 AliFMDGeometryBuilder.cxx:880 AliFMDGeometryBuilder.cxx:881 AliFMDGeometryBuilder.cxx:882 AliFMDGeometryBuilder.cxx:883 AliFMDGeometryBuilder.cxx:884 AliFMDGeometryBuilder.cxx:885 AliFMDGeometryBuilder.cxx:886 AliFMDGeometryBuilder.cxx:887 AliFMDGeometryBuilder.cxx:888 AliFMDGeometryBuilder.cxx:889 AliFMDGeometryBuilder.cxx:890 AliFMDGeometryBuilder.cxx:891 AliFMDGeometryBuilder.cxx:892 AliFMDGeometryBuilder.cxx:893 AliFMDGeometryBuilder.cxx:894 AliFMDGeometryBuilder.cxx:895 AliFMDGeometryBuilder.cxx:896 AliFMDGeometryBuilder.cxx:897 AliFMDGeometryBuilder.cxx:898 AliFMDGeometryBuilder.cxx:899 AliFMDGeometryBuilder.cxx:900 AliFMDGeometryBuilder.cxx:901 AliFMDGeometryBuilder.cxx:902 AliFMDGeometryBuilder.cxx:903 AliFMDGeometryBuilder.cxx:904 AliFMDGeometryBuilder.cxx:905 AliFMDGeometryBuilder.cxx:906 AliFMDGeometryBuilder.cxx:907 AliFMDGeometryBuilder.cxx:908 AliFMDGeometryBuilder.cxx:909 AliFMDGeometryBuilder.cxx:910 AliFMDGeometryBuilder.cxx:911 AliFMDGeometryBuilder.cxx:912 AliFMDGeometryBuilder.cxx:913 AliFMDGeometryBuilder.cxx:914 AliFMDGeometryBuilder.cxx:915 AliFMDGeometryBuilder.cxx:916 AliFMDGeometryBuilder.cxx:917 AliFMDGeometryBuilder.cxx:918 AliFMDGeometryBuilder.cxx:919 AliFMDGeometryBuilder.cxx:920 AliFMDGeometryBuilder.cxx:921 AliFMDGeometryBuilder.cxx:922 AliFMDGeometryBuilder.cxx:923 AliFMDGeometryBuilder.cxx:924 AliFMDGeometryBuilder.cxx:925 AliFMDGeometryBuilder.cxx:926 AliFMDGeometryBuilder.cxx:927 AliFMDGeometryBuilder.cxx:928 AliFMDGeometryBuilder.cxx:929 AliFMDGeometryBuilder.cxx:930 AliFMDGeometryBuilder.cxx:931 AliFMDGeometryBuilder.cxx:932 AliFMDGeometryBuilder.cxx:933 AliFMDGeometryBuilder.cxx:934 AliFMDGeometryBuilder.cxx:935 AliFMDGeometryBuilder.cxx:936 AliFMDGeometryBuilder.cxx:937 AliFMDGeometryBuilder.cxx:938 AliFMDGeometryBuilder.cxx:939 AliFMDGeometryBuilder.cxx:940 AliFMDGeometryBuilder.cxx:941 AliFMDGeometryBuilder.cxx:942 AliFMDGeometryBuilder.cxx:943 AliFMDGeometryBuilder.cxx:944 AliFMDGeometryBuilder.cxx:945 AliFMDGeometryBuilder.cxx:946 AliFMDGeometryBuilder.cxx:947 AliFMDGeometryBuilder.cxx:948 AliFMDGeometryBuilder.cxx:949 AliFMDGeometryBuilder.cxx:950 AliFMDGeometryBuilder.cxx:951 AliFMDGeometryBuilder.cxx:952 AliFMDGeometryBuilder.cxx:953 AliFMDGeometryBuilder.cxx:954 AliFMDGeometryBuilder.cxx:955 AliFMDGeometryBuilder.cxx:956 AliFMDGeometryBuilder.cxx:957 AliFMDGeometryBuilder.cxx:958 AliFMDGeometryBuilder.cxx:959 AliFMDGeometryBuilder.cxx:960 AliFMDGeometryBuilder.cxx:961 AliFMDGeometryBuilder.cxx:962 AliFMDGeometryBuilder.cxx:963 AliFMDGeometryBuilder.cxx:964 AliFMDGeometryBuilder.cxx:965 AliFMDGeometryBuilder.cxx:966 AliFMDGeometryBuilder.cxx:967 AliFMDGeometryBuilder.cxx:968 AliFMDGeometryBuilder.cxx:969 AliFMDGeometryBuilder.cxx:970 AliFMDGeometryBuilder.cxx:971 AliFMDGeometryBuilder.cxx:972 AliFMDGeometryBuilder.cxx:973 AliFMDGeometryBuilder.cxx:974 AliFMDGeometryBuilder.cxx:975 AliFMDGeometryBuilder.cxx:976 AliFMDGeometryBuilder.cxx:977 AliFMDGeometryBuilder.cxx:978 AliFMDGeometryBuilder.cxx:979 AliFMDGeometryBuilder.cxx:980 AliFMDGeometryBuilder.cxx:981 AliFMDGeometryBuilder.cxx:982 AliFMDGeometryBuilder.cxx:983 AliFMDGeometryBuilder.cxx:984 AliFMDGeometryBuilder.cxx:985 AliFMDGeometryBuilder.cxx:986 AliFMDGeometryBuilder.cxx:987 AliFMDGeometryBuilder.cxx:988 AliFMDGeometryBuilder.cxx:989 AliFMDGeometryBuilder.cxx:990 AliFMDGeometryBuilder.cxx:991 AliFMDGeometryBuilder.cxx:992 AliFMDGeometryBuilder.cxx:993 AliFMDGeometryBuilder.cxx:994 AliFMDGeometryBuilder.cxx:995 AliFMDGeometryBuilder.cxx:996 AliFMDGeometryBuilder.cxx:997 AliFMDGeometryBuilder.cxx:998 AliFMDGeometryBuilder.cxx:999 AliFMDGeometryBuilder.cxx:1000 AliFMDGeometryBuilder.cxx:1001 AliFMDGeometryBuilder.cxx:1002 AliFMDGeometryBuilder.cxx:1003 AliFMDGeometryBuilder.cxx:1004 AliFMDGeometryBuilder.cxx:1005 AliFMDGeometryBuilder.cxx:1006 AliFMDGeometryBuilder.cxx:1007 AliFMDGeometryBuilder.cxx:1008 AliFMDGeometryBuilder.cxx:1009 AliFMDGeometryBuilder.cxx:1010 AliFMDGeometryBuilder.cxx:1011 AliFMDGeometryBuilder.cxx:1012 AliFMDGeometryBuilder.cxx:1013 AliFMDGeometryBuilder.cxx:1014 AliFMDGeometryBuilder.cxx:1015 AliFMDGeometryBuilder.cxx:1016 AliFMDGeometryBuilder.cxx:1017 AliFMDGeometryBuilder.cxx:1018 AliFMDGeometryBuilder.cxx:1019 AliFMDGeometryBuilder.cxx:1020 AliFMDGeometryBuilder.cxx:1021 AliFMDGeometryBuilder.cxx:1022 AliFMDGeometryBuilder.cxx:1023 AliFMDGeometryBuilder.cxx:1024 AliFMDGeometryBuilder.cxx:1025 AliFMDGeometryBuilder.cxx:1026 AliFMDGeometryBuilder.cxx:1027 AliFMDGeometryBuilder.cxx:1028 AliFMDGeometryBuilder.cxx:1029 AliFMDGeometryBuilder.cxx:1030 AliFMDGeometryBuilder.cxx:1031 AliFMDGeometryBuilder.cxx:1032 AliFMDGeometryBuilder.cxx:1033 AliFMDGeometryBuilder.cxx:1034 AliFMDGeometryBuilder.cxx:1035 AliFMDGeometryBuilder.cxx:1036 AliFMDGeometryBuilder.cxx:1037 AliFMDGeometryBuilder.cxx:1038 AliFMDGeometryBuilder.cxx:1039 AliFMDGeometryBuilder.cxx:1040 AliFMDGeometryBuilder.cxx:1041 AliFMDGeometryBuilder.cxx:1042 AliFMDGeometryBuilder.cxx:1043 AliFMDGeometryBuilder.cxx:1044 AliFMDGeometryBuilder.cxx:1045 AliFMDGeometryBuilder.cxx:1046 AliFMDGeometryBuilder.cxx:1047 AliFMDGeometryBuilder.cxx:1048 AliFMDGeometryBuilder.cxx:1049 AliFMDGeometryBuilder.cxx:1050 AliFMDGeometryBuilder.cxx:1051 AliFMDGeometryBuilder.cxx:1052 AliFMDGeometryBuilder.cxx:1053 AliFMDGeometryBuilder.cxx:1054 AliFMDGeometryBuilder.cxx:1055 AliFMDGeometryBuilder.cxx:1056 AliFMDGeometryBuilder.cxx:1057 AliFMDGeometryBuilder.cxx:1058 AliFMDGeometryBuilder.cxx:1059 AliFMDGeometryBuilder.cxx:1060 AliFMDGeometryBuilder.cxx:1061 AliFMDGeometryBuilder.cxx:1062 AliFMDGeometryBuilder.cxx:1063 AliFMDGeometryBuilder.cxx:1064 AliFMDGeometryBuilder.cxx:1065 AliFMDGeometryBuilder.cxx:1066 AliFMDGeometryBuilder.cxx:1067 AliFMDGeometryBuilder.cxx:1068 AliFMDGeometryBuilder.cxx:1069 AliFMDGeometryBuilder.cxx:1070 AliFMDGeometryBuilder.cxx:1071 AliFMDGeometryBuilder.cxx:1072 AliFMDGeometryBuilder.cxx:1073 AliFMDGeometryBuilder.cxx:1074 AliFMDGeometryBuilder.cxx:1075 AliFMDGeometryBuilder.cxx:1076 AliFMDGeometryBuilder.cxx:1077 AliFMDGeometryBuilder.cxx:1078 AliFMDGeometryBuilder.cxx:1079 AliFMDGeometryBuilder.cxx:1080 AliFMDGeometryBuilder.cxx:1081 AliFMDGeometryBuilder.cxx:1082 AliFMDGeometryBuilder.cxx:1083 AliFMDGeometryBuilder.cxx:1084 AliFMDGeometryBuilder.cxx:1085 AliFMDGeometryBuilder.cxx:1086 AliFMDGeometryBuilder.cxx:1087 AliFMDGeometryBuilder.cxx:1088 AliFMDGeometryBuilder.cxx:1089 AliFMDGeometryBuilder.cxx:1090 AliFMDGeometryBuilder.cxx:1091 AliFMDGeometryBuilder.cxx:1092 AliFMDGeometryBuilder.cxx:1093 AliFMDGeometryBuilder.cxx:1094 AliFMDGeometryBuilder.cxx:1095 AliFMDGeometryBuilder.cxx:1096 AliFMDGeometryBuilder.cxx:1097 AliFMDGeometryBuilder.cxx:1098 AliFMDGeometryBuilder.cxx:1099 AliFMDGeometryBuilder.cxx:1100 AliFMDGeometryBuilder.cxx:1101 AliFMDGeometryBuilder.cxx:1102 AliFMDGeometryBuilder.cxx:1103 AliFMDGeometryBuilder.cxx:1104 AliFMDGeometryBuilder.cxx:1105 AliFMDGeometryBuilder.cxx:1106 AliFMDGeometryBuilder.cxx:1107 AliFMDGeometryBuilder.cxx:1108 AliFMDGeometryBuilder.cxx:1109 AliFMDGeometryBuilder.cxx:1110 AliFMDGeometryBuilder.cxx:1111 AliFMDGeometryBuilder.cxx:1112 AliFMDGeometryBuilder.cxx:1113 AliFMDGeometryBuilder.cxx:1114 AliFMDGeometryBuilder.cxx:1115 AliFMDGeometryBuilder.cxx:1116 AliFMDGeometryBuilder.cxx:1117 AliFMDGeometryBuilder.cxx:1118 AliFMDGeometryBuilder.cxx:1119 AliFMDGeometryBuilder.cxx:1120 AliFMDGeometryBuilder.cxx:1121 AliFMDGeometryBuilder.cxx:1122 AliFMDGeometryBuilder.cxx:1123 AliFMDGeometryBuilder.cxx:1124 AliFMDGeometryBuilder.cxx:1125 AliFMDGeometryBuilder.cxx:1126 AliFMDGeometryBuilder.cxx:1127 AliFMDGeometryBuilder.cxx:1128 AliFMDGeometryBuilder.cxx:1129 AliFMDGeometryBuilder.cxx:1130 AliFMDGeometryBuilder.cxx:1131 AliFMDGeometryBuilder.cxx:1132 AliFMDGeometryBuilder.cxx:1133 AliFMDGeometryBuilder.cxx:1134 AliFMDGeometryBuilder.cxx:1135 AliFMDGeometryBuilder.cxx:1136 AliFMDGeometryBuilder.cxx:1137 AliFMDGeometryBuilder.cxx:1138 AliFMDGeometryBuilder.cxx:1139 AliFMDGeometryBuilder.cxx:1140 AliFMDGeometryBuilder.cxx:1141 AliFMDGeometryBuilder.cxx:1142 AliFMDGeometryBuilder.cxx:1143 AliFMDGeometryBuilder.cxx:1144 AliFMDGeometryBuilder.cxx:1145 AliFMDGeometryBuilder.cxx:1146 AliFMDGeometryBuilder.cxx:1147 AliFMDGeometryBuilder.cxx:1148 AliFMDGeometryBuilder.cxx:1149 AliFMDGeometryBuilder.cxx:1150 AliFMDGeometryBuilder.cxx:1151 AliFMDGeometryBuilder.cxx:1152 AliFMDGeometryBuilder.cxx:1153 AliFMDGeometryBuilder.cxx:1154 AliFMDGeometryBuilder.cxx:1155 AliFMDGeometryBuilder.cxx:1156 AliFMDGeometryBuilder.cxx:1157 AliFMDGeometryBuilder.cxx:1158 AliFMDGeometryBuilder.cxx:1159 AliFMDGeometryBuilder.cxx:1160 AliFMDGeometryBuilder.cxx:1161 AliFMDGeometryBuilder.cxx:1162 AliFMDGeometryBuilder.cxx:1163 AliFMDGeometryBuilder.cxx:1164 AliFMDGeometryBuilder.cxx:1165 AliFMDGeometryBuilder.cxx:1166 AliFMDGeometryBuilder.cxx:1167 AliFMDGeometryBuilder.cxx:1168 AliFMDGeometryBuilder.cxx:1169 AliFMDGeometryBuilder.cxx:1170 AliFMDGeometryBuilder.cxx:1171 AliFMDGeometryBuilder.cxx:1172 AliFMDGeometryBuilder.cxx:1173 AliFMDGeometryBuilder.cxx:1174 AliFMDGeometryBuilder.cxx:1175 AliFMDGeometryBuilder.cxx:1176 AliFMDGeometryBuilder.cxx:1177 AliFMDGeometryBuilder.cxx:1178 AliFMDGeometryBuilder.cxx:1179 AliFMDGeometryBuilder.cxx:1180 AliFMDGeometryBuilder.cxx:1181 AliFMDGeometryBuilder.cxx:1182 AliFMDGeometryBuilder.cxx:1183 AliFMDGeometryBuilder.cxx:1184 AliFMDGeometryBuilder.cxx:1185 AliFMDGeometryBuilder.cxx:1186 AliFMDGeometryBuilder.cxx:1187 AliFMDGeometryBuilder.cxx:1188 AliFMDGeometryBuilder.cxx:1189 AliFMDGeometryBuilder.cxx:1190 AliFMDGeometryBuilder.cxx:1191 AliFMDGeometryBuilder.cxx:1192 AliFMDGeometryBuilder.cxx:1193 AliFMDGeometryBuilder.cxx:1194 AliFMDGeometryBuilder.cxx:1195 AliFMDGeometryBuilder.cxx:1196 AliFMDGeometryBuilder.cxx:1197 AliFMDGeometryBuilder.cxx:1198 AliFMDGeometryBuilder.cxx:1199 AliFMDGeometryBuilder.cxx:1200 AliFMDGeometryBuilder.cxx:1201 AliFMDGeometryBuilder.cxx:1202 AliFMDGeometryBuilder.cxx:1203 AliFMDGeometryBuilder.cxx:1204 AliFMDGeometryBuilder.cxx:1205 AliFMDGeometryBuilder.cxx:1206 AliFMDGeometryBuilder.cxx:1207 AliFMDGeometryBuilder.cxx:1208 AliFMDGeometryBuilder.cxx:1209 AliFMDGeometryBuilder.cxx:1210 AliFMDGeometryBuilder.cxx:1211 AliFMDGeometryBuilder.cxx:1212 AliFMDGeometryBuilder.cxx:1213 AliFMDGeometryBuilder.cxx:1214 AliFMDGeometryBuilder.cxx:1215 AliFMDGeometryBuilder.cxx:1216 AliFMDGeometryBuilder.cxx:1217 AliFMDGeometryBuilder.cxx:1218 AliFMDGeometryBuilder.cxx:1219 AliFMDGeometryBuilder.cxx:1220 AliFMDGeometryBuilder.cxx:1221 AliFMDGeometryBuilder.cxx:1222 AliFMDGeometryBuilder.cxx:1223 AliFMDGeometryBuilder.cxx:1224 AliFMDGeometryBuilder.cxx:1225 AliFMDGeometryBuilder.cxx:1226 AliFMDGeometryBuilder.cxx:1227 AliFMDGeometryBuilder.cxx:1228 AliFMDGeometryBuilder.cxx:1229 AliFMDGeometryBuilder.cxx:1230 AliFMDGeometryBuilder.cxx:1231 AliFMDGeometryBuilder.cxx:1232 AliFMDGeometryBuilder.cxx:1233 AliFMDGeometryBuilder.cxx:1234 AliFMDGeometryBuilder.cxx:1235 AliFMDGeometryBuilder.cxx:1236 AliFMDGeometryBuilder.cxx:1237 AliFMDGeometryBuilder.cxx:1238 AliFMDGeometryBuilder.cxx:1239 AliFMDGeometryBuilder.cxx:1240 AliFMDGeometryBuilder.cxx:1241 AliFMDGeometryBuilder.cxx:1242 AliFMDGeometryBuilder.cxx:1243 AliFMDGeometryBuilder.cxx:1244 AliFMDGeometryBuilder.cxx:1245 AliFMDGeometryBuilder.cxx:1246 AliFMDGeometryBuilder.cxx:1247 AliFMDGeometryBuilder.cxx:1248 AliFMDGeometryBuilder.cxx:1249 AliFMDGeometryBuilder.cxx:1250 AliFMDGeometryBuilder.cxx:1251 AliFMDGeometryBuilder.cxx:1252 AliFMDGeometryBuilder.cxx:1253 AliFMDGeometryBuilder.cxx:1254 AliFMDGeometryBuilder.cxx:1255 AliFMDGeometryBuilder.cxx:1256 AliFMDGeometryBuilder.cxx:1257 AliFMDGeometryBuilder.cxx:1258 AliFMDGeometryBuilder.cxx:1259 AliFMDGeometryBuilder.cxx:1260 AliFMDGeometryBuilder.cxx:1261 AliFMDGeometryBuilder.cxx:1262 AliFMDGeometryBuilder.cxx:1263 AliFMDGeometryBuilder.cxx:1264 AliFMDGeometryBuilder.cxx:1265 AliFMDGeometryBuilder.cxx:1266 AliFMDGeometryBuilder.cxx:1267 AliFMDGeometryBuilder.cxx:1268 AliFMDGeometryBuilder.cxx:1269 AliFMDGeometryBuilder.cxx:1270 AliFMDGeometryBuilder.cxx:1271 AliFMDGeometryBuilder.cxx:1272 AliFMDGeometryBuilder.cxx:1273 AliFMDGeometryBuilder.cxx:1274 AliFMDGeometryBuilder.cxx:1275 AliFMDGeometryBuilder.cxx:1276 AliFMDGeometryBuilder.cxx:1277 AliFMDGeometryBuilder.cxx:1278 AliFMDGeometryBuilder.cxx:1279 AliFMDGeometryBuilder.cxx:1280 AliFMDGeometryBuilder.cxx:1281 AliFMDGeometryBuilder.cxx:1282 AliFMDGeometryBuilder.cxx:1283 AliFMDGeometryBuilder.cxx:1284 AliFMDGeometryBuilder.cxx:1285 AliFMDGeometryBuilder.cxx:1286 AliFMDGeometryBuilder.cxx:1287 AliFMDGeometryBuilder.cxx:1288 AliFMDGeometryBuilder.cxx:1289 AliFMDGeometryBuilder.cxx:1290 AliFMDGeometryBuilder.cxx:1291 AliFMDGeometryBuilder.cxx:1292 AliFMDGeometryBuilder.cxx:1293 AliFMDGeometryBuilder.cxx:1294 AliFMDGeometryBuilder.cxx:1295 AliFMDGeometryBuilder.cxx:1296 AliFMDGeometryBuilder.cxx:1297 AliFMDGeometryBuilder.cxx:1298 AliFMDGeometryBuilder.cxx:1299 AliFMDGeometryBuilder.cxx:1300 AliFMDGeometryBuilder.cxx:1301 AliFMDGeometryBuilder.cxx:1302 AliFMDGeometryBuilder.cxx:1303 AliFMDGeometryBuilder.cxx:1304 AliFMDGeometryBuilder.cxx:1305 AliFMDGeometryBuilder.cxx:1306 AliFMDGeometryBuilder.cxx:1307 AliFMDGeometryBuilder.cxx:1308 AliFMDGeometryBuilder.cxx:1309 AliFMDGeometryBuilder.cxx:1310 AliFMDGeometryBuilder.cxx:1311 AliFMDGeometryBuilder.cxx:1312 AliFMDGeometryBuilder.cxx:1313 AliFMDGeometryBuilder.cxx:1314 AliFMDGeometryBuilder.cxx:1315 AliFMDGeometryBuilder.cxx:1316 AliFMDGeometryBuilder.cxx:1317 AliFMDGeometryBuilder.cxx:1318 AliFMDGeometryBuilder.cxx:1319 AliFMDGeometryBuilder.cxx:1320 AliFMDGeometryBuilder.cxx:1321 AliFMDGeometryBuilder.cxx:1322 AliFMDGeometryBuilder.cxx:1323 AliFMDGeometryBuilder.cxx:1324 AliFMDGeometryBuilder.cxx:1325 AliFMDGeometryBuilder.cxx:1326 AliFMDGeometryBuilder.cxx:1327 AliFMDGeometryBuilder.cxx:1328 AliFMDGeometryBuilder.cxx:1329 AliFMDGeometryBuilder.cxx:1330 AliFMDGeometryBuilder.cxx:1331 AliFMDGeometryBuilder.cxx:1332 AliFMDGeometryBuilder.cxx:1333 AliFMDGeometryBuilder.cxx:1334 AliFMDGeometryBuilder.cxx:1335 AliFMDGeometryBuilder.cxx:1336 AliFMDGeometryBuilder.cxx:1337 AliFMDGeometryBuilder.cxx:1338 AliFMDGeometryBuilder.cxx:1339 AliFMDGeometryBuilder.cxx:1340 AliFMDGeometryBuilder.cxx:1341 AliFMDGeometryBuilder.cxx:1342 AliFMDGeometryBuilder.cxx:1343 AliFMDGeometryBuilder.cxx:1344 AliFMDGeometryBuilder.cxx:1345 AliFMDGeometryBuilder.cxx:1346 AliFMDGeometryBuilder.cxx:1347 AliFMDGeometryBuilder.cxx:1348 AliFMDGeometryBuilder.cxx:1349 AliFMDGeometryBuilder.cxx:1350 AliFMDGeometryBuilder.cxx:1351 AliFMDGeometryBuilder.cxx:1352 AliFMDGeometryBuilder.cxx:1353 AliFMDGeometryBuilder.cxx:1354 AliFMDGeometryBuilder.cxx:1355 AliFMDGeometryBuilder.cxx:1356 AliFMDGeometryBuilder.cxx:1357 AliFMDGeometryBuilder.cxx:1358 AliFMDGeometryBuilder.cxx:1359 AliFMDGeometryBuilder.cxx:1360 AliFMDGeometryBuilder.cxx:1361 AliFMDGeometryBuilder.cxx:1362 AliFMDGeometryBuilder.cxx:1363 AliFMDGeometryBuilder.cxx:1364 AliFMDGeometryBuilder.cxx:1365 AliFMDGeometryBuilder.cxx:1366 AliFMDGeometryBuilder.cxx:1367 AliFMDGeometryBuilder.cxx:1368 AliFMDGeometryBuilder.cxx:1369 AliFMDGeometryBuilder.cxx:1370 AliFMDGeometryBuilder.cxx:1371 AliFMDGeometryBuilder.cxx:1372 AliFMDGeometryBuilder.cxx:1373 AliFMDGeometryBuilder.cxx:1374 AliFMDGeometryBuilder.cxx:1375 AliFMDGeometryBuilder.cxx:1376 AliFMDGeometryBuilder.cxx:1377 AliFMDGeometryBuilder.cxx:1378 AliFMDGeometryBuilder.cxx:1379 AliFMDGeometryBuilder.cxx:1380 AliFMDGeometryBuilder.cxx:1381 AliFMDGeometryBuilder.cxx:1382 AliFMDGeometryBuilder.cxx:1383 AliFMDGeometryBuilder.cxx:1384 AliFMDGeometryBuilder.cxx:1385 AliFMDGeometryBuilder.cxx:1386 AliFMDGeometryBuilder.cxx:1387 AliFMDGeometryBuilder.cxx:1388 AliFMDGeometryBuilder.cxx:1389 AliFMDGeometryBuilder.cxx:1390 AliFMDGeometryBuilder.cxx:1391 AliFMDGeometryBuilder.cxx:1392 AliFMDGeometryBuilder.cxx:1393 AliFMDGeometryBuilder.cxx:1394 AliFMDGeometryBuilder.cxx:1395 AliFMDGeometryBuilder.cxx:1396 AliFMDGeometryBuilder.cxx:1397 AliFMDGeometryBuilder.cxx:1398 AliFMDGeometryBuilder.cxx:1399 AliFMDGeometryBuilder.cxx:1400 AliFMDGeometryBuilder.cxx:1401 AliFMDGeometryBuilder.cxx:1402 AliFMDGeometryBuilder.cxx:1403 AliFMDGeometryBuilder.cxx:1404 AliFMDGeometryBuilder.cxx:1405 AliFMDGeometryBuilder.cxx:1406 AliFMDGeometryBuilder.cxx:1407 AliFMDGeometryBuilder.cxx:1408 AliFMDGeometryBuilder.cxx:1409 AliFMDGeometryBuilder.cxx:1410 AliFMDGeometryBuilder.cxx:1411 AliFMDGeometryBuilder.cxx:1412 AliFMDGeometryBuilder.cxx:1413 AliFMDGeometryBuilder.cxx:1414 AliFMDGeometryBuilder.cxx:1415 AliFMDGeometryBuilder.cxx:1416 AliFMDGeometryBuilder.cxx:1417 AliFMDGeometryBuilder.cxx:1418 AliFMDGeometryBuilder.cxx:1419 AliFMDGeometryBuilder.cxx:1420 AliFMDGeometryBuilder.cxx:1421 AliFMDGeometryBuilder.cxx:1422 AliFMDGeometryBuilder.cxx:1423 AliFMDGeometryBuilder.cxx:1424 AliFMDGeometryBuilder.cxx:1425 AliFMDGeometryBuilder.cxx:1426 AliFMDGeometryBuilder.cxx:1427 AliFMDGeometryBuilder.cxx:1428 AliFMDGeometryBuilder.cxx:1429 AliFMDGeometryBuilder.cxx:1430 AliFMDGeometryBuilder.cxx:1431 AliFMDGeometryBuilder.cxx:1432 AliFMDGeometryBuilder.cxx:1433 AliFMDGeometryBuilder.cxx:1434 AliFMDGeometryBuilder.cxx:1435 AliFMDGeometryBuilder.cxx:1436 AliFMDGeometryBuilder.cxx:1437 AliFMDGeometryBuilder.cxx:1438 AliFMDGeometryBuilder.cxx:1439 AliFMDGeometryBuilder.cxx:1440 AliFMDGeometryBuilder.cxx:1441 AliFMDGeometryBuilder.cxx:1442 AliFMDGeometryBuilder.cxx:1443 AliFMDGeometryBuilder.cxx:1444 AliFMDGeometryBuilder.cxx:1445 AliFMDGeometryBuilder.cxx:1446 AliFMDGeometryBuilder.cxx:1447 AliFMDGeometryBuilder.cxx:1448 AliFMDGeometryBuilder.cxx:1449 AliFMDGeometryBuilder.cxx:1450 AliFMDGeometryBuilder.cxx:1451 AliFMDGeometryBuilder.cxx:1452