]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - FMD/AliFMDGeometryBuilder.cxx
Added cut on # of contributors + vertex TPC
[u/mrichter/AliRoot.git] / FMD / AliFMDGeometryBuilder.cxx
index ecb994f64f5ff9a6d34ed6a59dd7cd5d8825960c..22d5a7d9eb75becf1f177ef15a109aec4f524212 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;
 }