]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONGeometryBuilder.cxx
Added protections
[u/mrichter/AliRoot.git] / MUON / AliMUONGeometryBuilder.cxx
index fb02b36a03f88f8ea7e7f635fada766465787a2e..aea1e7060426f61f0c1c59d85cbcb3f17d5a1b51 100644 (file)
  **************************************************************************/
 
 // $Id$
-//
-// ----------------------------
+
+//-----------------------------------------------------------------------------
 // Class AliMUONGeometryBuilder
 // ----------------------------
 // Manager class for geometry construction via geometry builders.
 // Author: Ivana Hrivnacova, IPN Orsay
+//-----------------------------------------------------------------------------
 
 #include "AliMUONGeometryBuilder.h"
 #include "AliMUONVGeometryBuilder.h"   
@@ -241,7 +242,7 @@ void AliMUONGeometryBuilder::CreateGeometryWithTGeo()
   if (fAlign) {
     // Read transformations from ASCII data file  
     fGeometry->GetTransformer()
-      ->ReadGeometryData(fgkDefaultVolPathsFileName, fTransformFileName);
+      ->LoadGeometryData(fTransformFileName);
   }    
  
   for (Int_t i=0; i<fGeometryBuilders->GetEntriesFast(); i++) {
@@ -253,6 +254,7 @@ void AliMUONGeometryBuilder::CreateGeometryWithTGeo()
     // Create geometry + envelopes
     //
     builder->CreateGeometry();
+    builder->SetVolumes();
     if (!fAlign) builder->SetTransformations();
     
     // Place module volumes and envelopes
@@ -349,8 +351,7 @@ void AliMUONGeometryBuilder::CreateGeometryWithoutTGeo()
 
   if (fAlign) {
     // Read transformations from ASCII data file  
-    fGeometry->GetTransformer()
-      ->ReadGeometryData(fgkDefaultVolPathsFileName, fTransformFileName);
+    fGeometry->GetTransformer()->LoadGeometryData(fTransformFileName);
   }     
 
   for (Int_t i=0; i<fGeometryBuilders->GetEntriesFast(); i++) {
@@ -529,13 +530,23 @@ void AliMUONGeometryBuilder::CreateGeometry()
 {
 /// Construct geometry using geometry builders.
 
-  if ( gMC->IsRootGeometrySupported() && 
-       TString(gMC->ClassName()) != "TGeant4" ) {
+  if ( gMC->IsRootGeometrySupported() ) {
        
    CreateGeometryWithTGeo();
   } 
   else
    CreateGeometryWithoutTGeo();
+
+  for (Int_t i=0; i<fGeometryBuilders->GetEntriesFast(); i++) {
+
+    // Get the builder
+    AliMUONVGeometryBuilder* builder
+      = (AliMUONVGeometryBuilder*)fGeometryBuilders->At(i);
+    // Update detection elements from built geometry
+    Bool_t create = ! fAlign;
+    builder->UpdateDetElements(create);
+  }
 }
 
 //_____________________________________________________________________________
@@ -562,10 +573,8 @@ void AliMUONGeometryBuilder::InitGeometry(const TString& svmapFileName)
   // Load alignement data from geometry if geometry is read from Root file
   if ( gAlice->IsRootGeometry() ) {
     fAlign = true;
-
-    fGeometry->GetTransformer()
-      ->ReadGeometryData(fgkDefaultVolPathsFileName, gGeoManager);
-  }    
+    fGeometry->GetTransformer()->LoadGeometryData();
+ }    
 
   // Read sensitive volume map from a file
   fGeometry->ReadSVMap(svmapFileName);
@@ -580,17 +589,21 @@ void AliMUONGeometryBuilder::InitGeometry(const TString& svmapFileName)
 
     // Set sensitive volumes with each builder
     builder->SetSensitiveVolumes();
-
-    if (!fAlign)  {
-      // Create detection elements from built geometry
-      builder->CreateDetElements();
-    }  
   }  
 }
 
+//________________________________________________________________
+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 rebuild, Bool_t writeEnvelopes)
 {
 /// Write sensitive volume maps into files per builder
 
@@ -602,10 +615,6 @@ void AliMUONGeometryBuilder::WriteSVMaps(const TString& fileName,
       AliMUONVGeometryBuilder* builder
         = (AliMUONVGeometryBuilder*)fGeometryBuilders->At(i);
 
-      Bool_t writeEnvelopes = false;
-      if ( gMC->IsRootGeometrySupported() &&
-           TString(gMC->ClassName()) != "TGeant4") writeEnvelopes = true;
-
       builder->RebuildSVMaps(writeEnvelopes);
     }