]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Added beam-tube tension boxes and wires.
authorcholm <cholm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 29 Jul 2008 07:42:54 +0000 (07:42 +0000)
committercholm <cholm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 29 Jul 2008 07:42:54 +0000 (07:42 +0000)
FMD/AliFMDGeometryBuilder.cxx
FMD/Config.C

index d35a37e0e3d03a4edeeb8bc78b41130f4c79b9a4..c5c32a41494d42989b581f5e746d9eb641174255 100644 (file)
@@ -1075,6 +1075,7 @@ AliFMDGeometryBuilder::FMD3Geometry(AliFMD3* fmd3,
   boltVolume->SetTitle("FMD3 steering bolt");
   
   //__________________________________________________________________
+  // Final cone
   TGeoCompositeShape* coneShape = new TGeoCompositeShape(coneComb.Data());
   coneShape->SetName("FMD3_cone");
   coneShape->SetTitle("FMD3 cone");
@@ -1082,6 +1083,62 @@ AliFMDGeometryBuilder::FMD3Geometry(AliFMD3* fmd3,
   coneVolume->SetLineColor(kRed);
   support->AddNode(coneVolume, 0, new TGeoTranslation(0, 0, 0));
 
+  //__________________________________________________________________
+  // Tension boxes. 
+  new TGeoBBox("FMD3_tension_outer", .5, 3, 5);
+  new TGeoBBox("FMD3_tension_inner", .51, 2.7, 4.3);
+  TString tensionExpr("FMD3_tension_outer-FMD3_tension_inner");
+  TGeoCompositeShape* tensionShape = new TGeoCompositeShape(tensionExpr.Data());
+  tensionShape->SetName("FMD3_tension_box");
+  tensionShape->SetTitle("FMD3 tension box");
+  TGeoVolume*      tensionFrame = new TGeoVolume("FMD3_tension_frame",
+                                                 tensionShape, fAl);
+  TGeoTube*        springShape  = new TGeoTube("FMD3_tension_spring", 
+                                              0, .3, 4.3/2);
+  TGeoVolume*      springVolume = new TGeoVolume("FMD3_tension_spring", 
+                                                springShape, fSteel);
+  TGeoVolume*      tensionBox   = new TGeoVolume("FMD3_tension_box", 
+                                                tensionShape, fAir);
+  tensionBox->AddNode(tensionFrame, 0);
+  tensionBox->AddNode(springVolume, 0, new TGeoTranslation(0,0,4.3/2));
+  
+  Double_t         tensionD     = 5*TMath::Cos(fmd3->GetConeOuterAngle());
+  Double_t         tensionZ     = r4->Z()-2*tensionD;
+  Double_t         tensionX     = (fmd3->ConeR(fmd3->GetInnerZ()
+                                              +fmd3->GetNoseZ() 
+                                              -tensionZ) + 
+                                  .5 * TMath::Sin(fmd3->GetConeOuterAngle())); 
+  TGeoRotation*    tensionRot   = new TGeoRotation();
+  tensionRot->RotateY(180/TMath::Pi()*fmd3->GetConeOuterAngle());
+  TGeoCombiTrans*  tensionBase  = new TGeoCombiTrans(tensionX, 0, tensionZ, 
+                                                    tensionRot);
+  
+  Double_t         wireR1       = fmd3->ConeR(fmd3->GetInnerZ()
+                                             +fmd3->GetNoseZ());
+  Double_t         wireR2       = fmd3->ConeR(fmd3->GetInnerZ()
+                                             +fmd3->GetNoseZ()-
+                                             tensionZ+tensionD);
+  Double_t         wireL        = TMath::Sqrt(TMath::Power(wireR1-wireR2,2)+ 
+                                             TMath::Power(tensionZ-
+                                                          tensionD,2));
+  Double_t         wireAngle    = TMath::ATan2(wireR2-wireR1,tensionZ-tensionD);
+  TGeoTube*        wireShape    = new TGeoTube("FMD3_wire", 0, .1, wireL/2);
+  TGeoVolume*      wireVolume   = new TGeoVolume("FMD3_wire", wireShape,fSteel);
+  TGeoRotation*    wireRot      = new TGeoRotation();
+  wireRot->RotateY(180/TMath::Pi()*wireAngle);
+  TGeoCombiTrans*  wireBase     = new TGeoCombiTrans((wireR2-wireR1)/2+wireR1,
+                                                    0, (tensionZ-tensionD)/2,
+                                                    wireRot);
+  for (Int_t i = 0; i < 2; i++) { 
+    Double_t        thisAngle = (i+.5) * 90;
+    TGeoCombiTrans* thisTrans = new TGeoCombiTrans(*tensionBase);
+    thisTrans->RotateZ(thisAngle);
+    support->AddNode(tensionBox, i, thisTrans);
+    thisTrans = new TGeoCombiTrans(*wireBase);
+    thisTrans->RotateZ(thisAngle);
+    support->AddNode(wireVolume, i, thisTrans);
+  }
+
   //__________________________________________________________________
   // Place support volumes in half-detector volumes 
   Double_t         z  = fmd3->GetInnerZ();
index bde0a54d813a06e09fb86c665050d0ac38599e13..23cce338be910d7e2647dad28d9ab66295b07fd4 100644 (file)
@@ -455,7 +455,7 @@ Config()
   // 
   // Used detectors 
   // 
-  Bool_t useABSO  = kTRUE; 
+  Bool_t useABSO  = kFALSE; 
   Bool_t useACORDE= kFALSE; 
   Bool_t useDIPO  = kFALSE; 
   Bool_t useFMD   = kTRUE; 
@@ -465,17 +465,17 @@ Config()
   Bool_t useMAG   = kFALSE; 
   Bool_t useMUON  = kFALSE; 
   Bool_t usePHOS  = kFALSE; 
-  Bool_t usePIPE  = kTRUE; 
+  Bool_t usePIPE  = kFALSE; 
   Bool_t usePMD   = kFALSE; 
   Bool_t useHMPID = kFALSE; 
   Bool_t useSHIL  = kFALSE; 
-  Bool_t useT0    = kTRUE; 
+  Bool_t useT0    = kFALSE; 
   Bool_t useTOF   = kFALSE; 
   Bool_t useTPC   = kFALSE;
   Bool_t useTRD   = kFALSE; 
   Bool_t useZDC   = kFALSE; 
   Bool_t useEMCAL = kFALSE; 
-  Bool_t useVZERO = kTRUE;
+  Bool_t useVZERO = kFALSE;
 
   cout << "\t* Creating the detectors ..." << endl;
   // ================= Alice BODY parameters =========================