]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONGeometryBuilder.cxx
minor update in macro documentation
[u/mrichter/AliRoot.git] / MUON / AliMUONGeometryBuilder.cxx
index c09cb1191a0e0a6e2f6766aff400dfe950f86a0f..4da5cf4ee4bac0e28d3930e0962646c9533507e2 100644 (file)
  **************************************************************************/
 
 // $Id$
-//
-// ----------------------------
+
+//-----------------------------------------------------------------------------
 // Class AliMUONGeometryBuilder
 // ----------------------------
 // Manager class for geometry construction via geometry builders.
 // Author: Ivana Hrivnacova, IPN Orsay
+//-----------------------------------------------------------------------------
 
 #include "AliMUONGeometryBuilder.h"
 #include "AliMUONVGeometryBuilder.h"   
@@ -35,6 +36,7 @@
 #include "AliMpDEManager.h"
 
 #include "AliModule.h"
+#include "AliSimulation.h"
 #include "AliLog.h"
 #include "AliRun.h"
 
@@ -253,6 +255,7 @@ void AliMUONGeometryBuilder::CreateGeometryWithTGeo()
     // Create geometry + envelopes
     //
     builder->CreateGeometry();
+    builder->SetVolumes();
     if (!fAlign) builder->SetTransformations();
     
     // Place module volumes and envelopes
@@ -489,7 +492,7 @@ void AliMUONGeometryBuilder::CreateGeometryWithoutTGeo()
 }
 
 //_____________________________________________________________________________
-void AliMUONGeometryBuilder::SetAlign(AliMUONVGeometryBuilder* builder)
+void AliMUONGeometryBuilder::SetAlignToBuilder(AliMUONVGeometryBuilder* builder) const
 {
 /// Set align option to all geometry modules associated with the builder
 
@@ -520,7 +523,7 @@ void AliMUONGeometryBuilder::AddBuilder(AliMUONVGeometryBuilder* geomBuilder)
   if (geomBuilder->ApplyGlobalTransformation())
     geomBuilder->SetReferenceFrame(fGlobalTransformation);
   
-  SetAlign(geomBuilder);
+  SetAlignToBuilder(geomBuilder);
 }
 
 //______________________________________________________________________________
@@ -540,10 +543,11 @@ void AliMUONGeometryBuilder::CreateGeometry()
     // Get the builder
     AliMUONVGeometryBuilder* builder
       = (AliMUONVGeometryBuilder*)fGeometryBuilders->At(i);
-
-    // Create detection elements from built geometry
-    builder->CreateDetElements();
-  }  
+    // Update detection elements from built geometry
+    Bool_t create = ! fAlign;
+    builder->UpdateDetElements(create);
+  }
 }
 
 //_____________________________________________________________________________
@@ -568,7 +572,7 @@ void AliMUONGeometryBuilder::InitGeometry(const TString& svmapFileName)
 /// Initialize geometry
 
   // Load alignement data from geometry if geometry is read from Root file
-  if ( gAlice->IsRootGeometry() ) {
+  if ( AliSimulation::Instance()->IsGeometryFromFile() ) {
     fAlign = true;
     fGeometry->GetTransformer()->LoadGeometryData();
  }    
@@ -589,6 +593,15 @@ void AliMUONGeometryBuilder::InitGeometry(const TString& svmapFileName)
   }  
 }
 
+//________________________________________________________________
+void AliMUONGeometryBuilder::UpdateInternalGeometry()
+{
+/// Update geometry after applying mis-alignment:
+/// reload transformations in geometry builder.
+
+  fGeometry->GetTransformer()->LoadTransformations();
+}
+
 //______________________________________________________________________________
 void AliMUONGeometryBuilder::WriteSVMaps(const TString& fileName, 
                                          Bool_t rebuild, Bool_t writeEnvelopes)
@@ -622,7 +635,7 @@ void AliMUONGeometryBuilder::SetAlign(Bool_t align)
     AliMUONVGeometryBuilder* builder
       = (AliMUONVGeometryBuilder*)fGeometryBuilders->At(i);
     
-    SetAlign(builder); 
+    SetAlignToBuilder(builder); 
   }   
 }
 
@@ -639,6 +652,6 @@ void AliMUONGeometryBuilder::SetAlign(const TString& fileName, Bool_t align)
     AliMUONVGeometryBuilder* builder
       = (AliMUONVGeometryBuilder*)fGeometryBuilders->At(i);
     
-    SetAlign(builder); 
+    SetAlignToBuilder(builder); 
   }   
 }