]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - FMD/AliFMDGeometryBuilder.cxx
a/ AliTRDCalibraFillHisto.cxx .h:
[u/mrichter/AliRoot.git] / FMD / AliFMDGeometryBuilder.cxx
index e383291d80cdd0253753dba9dfae6255b45122ed..7ed43562411a6e504061fa2fd2026cf53408a0f4 100644 (file)
@@ -654,9 +654,12 @@ AliFMDGeometryBuilder::FMD1Geometry(AliFMD1* fmd1,
   AliFMDRing* r             = fmd1->GetInner();
   Double_t    z             = fmd1->GetInnerZ();  
   
+  // `Top' or `Outside' master volume
   TGeoVolume* fmd1TopVolume = new TGeoVolumeAssembly(Form(fgkFMDName, 
                                                          fmd1->GetId(), 'T'));
   fmd1TopVolume->SetTitle("FMD1 top half");
+
+  // `Bottom' or `Inside' master volume
   TGeoVolume* fmd1BotVolume = new TGeoVolumeAssembly(Form(fgkFMDName, 
                                                          fmd1->GetId(), 'B'));
   fmd1BotVolume->SetTitle("FMD1 bottom half");
@@ -677,9 +680,10 @@ AliFMDGeometryBuilder::FMD1Geometry(AliFMD1* fmd1,
                         {  6.80, 24.50, 24.65 },
                         {  6.80, 24.50, 26.00 },
                         {  6.95, 24.50, 26.00 } };
-  TGeoPcon* lidBaseS = new TGeoPcon("FMD1_lid_base", 0, 180, 12);
+  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], lidP[i][1], lidP[i][2]);
+    lidBaseS->DefineSection(i, lidP[i][0] - lidZStart, lidP[i][1], lidP[i][2]);
   
   
   Double_t lidH[][2] = { {  7.84903, 24.15680  }, 
@@ -693,10 +697,10 @@ AliFMDGeometryBuilder::FMD1Geometry(AliFMD1* fmd1,
   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], 6.95-lidHL/2);
+    trans = new TGeoTranslation(-lidH[i][0], lidH[i][1], /*6.95*/-lidHL/2);
     trans->SetName(Form("FMD1_lid_hole_mat%d", 2*i+0));
     trans->RegisterYourself();
-    trans = new TGeoTranslation(+lidH[i][0], lidH[i][1], 6.95-lidHL/2);
+    trans = new TGeoTranslation(+lidH[i][0], lidH[i][1], /*6.95*/-lidHL/2);
     trans->SetName(Form("FMD1_lid_hole_mat%d", 2*i+1));
     trans->RegisterYourself();
     lidComp.Append(Form("FMD1_lid_hole:FMD1_lid_hole_mat%d+" 
@@ -709,7 +713,8 @@ AliFMDGeometryBuilder::FMD1Geometry(AliFMD1* fmd1,
   lidV->SetTransparency(63);
   
   // Place top cover
-  Double_t lidZ = -(3.3 - r->GetModuleDepth() - r->GetModuleSpacing() / 2);
+  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++) {
@@ -728,11 +733,57 @@ AliFMDGeometryBuilder::FMD1Geometry(AliFMD1* fmd1,
   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);
+
+
+  // Survey points on V0A (screw holes for the FMD) 
+  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;
 }
 
@@ -750,15 +801,16 @@ AliFMDGeometryBuilder::FMD2Geometry(AliFMD2* fmd2,
   // See also AliFMDGeometryBuilder::DetectorGeometry 
   // 
   if (!fmd2 || !innerTop || !innerBot || !outerTop || !outerBot) return 0;
-  AliFMDRing* r          = fmd2->GetOuter();
+  AliFMDRing* ring          = fmd2->GetOuter();
   Double_t    z             = fmd2->GetOuterZ();  
   Double_t    framelr       = 32.01;  // fmd2->GetOuterHoneyHighR()+0.5;
   Double_t    framehr       = 33.611; // fmd2->GetOuterHoneyHighR()+1.8;
   Double_t    framel        = 14.8; // framehz - framelz;
-  Double_t    backth        = 0.3;
+  // Double_t    backth        = 0.3;
+  Double_t    backth        = 0.03;
   Double_t    framelz       = -(2.38 
-                               - r->GetModuleDepth() 
-                               - r->GetModuleSpacing() / 2);
+                               - ring->GetModuleDepth() 
+                               - ring->GetModuleSpacing() / 2);
   // Double_t    framelz       = -0.8;
   // Double_t    framehz       = framelz + backth + framel;
   Double_t    coverlr       = 4.3; // fmd2->GetInner()->GetLowR()+1;