]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - AliGeant4/AliMoreModulesConstruction.cxx
Rewriting and cleaning up
[u/mrichter/AliRoot.git] / AliGeant4 / AliMoreModulesConstruction.cxx
index c1f85977c78986516eb64cbaa6679a1b5482388d..b54503fc50a1ef20bd11ae608720fc8bc8a8acfe 100644 (file)
@@ -1,50 +1,38 @@
 // $Id$
 // Category: geometry
 //
+// Author: I. Hrivnacova
+//
+// Class AliMoreModulesConstruction
+// --------------------------------
 // See the class description in the header file.
 
 #include "AliMoreModulesConstruction.h"
 #include "AliSingleModuleConstruction.h"
-#include "AliSDManager.h"
-#include "AliSensitiveDetector.h"
 #include "AliModule.h"
-#include "AliRun.h"
 #include "AliGlobals.h"
+#include "AliFiles.h"
 
 #include "TG4GeometryManager.h"
 
-#include <G4SDManager.hh>
 #include <G4LogicalVolume.hh>
 #include <G4LogicalVolumeStore.hh>
 
-#include <TROOT.h> 
-#include <TCint.h> 
-
+//_____________________________________________________________________________
 AliMoreModulesConstruction::AliMoreModulesConstruction() {
 //
-  fSDManager = AliSDManager::Instance();
 }
 
+//_____________________________________________________________________________
 AliMoreModulesConstruction::AliMoreModulesConstruction(
                                const AliMoreModulesConstruction& right)
 {
-  // delete current module constructions
-  fModuleConstructionVector.erase(
-    fModuleConstructionVector.begin(), fModuleConstructionVector.end());
-    
-  // create new module constructions   
-  G4int nofModules = right.fModuleConstructionVector.size();
-  for (G4int i=0; i<nofModules; i++) {
-    G4String name = right.fModuleConstructionVector[i]->GetDetName();
-    G4int version = right.fModuleConstructionVector[i]->GetVersion();
-    AliModuleType type = right.fModuleConstructionVector[i]->GetType();
-    AddModule(name, version, type);
-  }  
-  
-  fSDManager = right.fSDManager;
+  // copy stuff
+  *this = right;
 }  
                               
 
+//_____________________________________________________________________________
 AliMoreModulesConstruction::~AliMoreModulesConstruction()
 {
   // delete module constructions
@@ -54,6 +42,7 @@ AliMoreModulesConstruction::~AliMoreModulesConstruction()
 
 // operators
 
+//_____________________________________________________________________________
 AliMoreModulesConstruction& 
 AliMoreModulesConstruction::operator=(const AliMoreModulesConstruction& right)
 {
@@ -72,70 +61,13 @@ AliMoreModulesConstruction::operator=(const AliMoreModulesConstruction& right)
     AliModuleType type = right.fModuleConstructionVector[i]->GetType();
     AddModule(name, version, type);
   }  
-  
-  fSDManager = right.fSDManager;
 
   return *this;  
 }    
           
-// private methods
-
-void AliMoreModulesConstruction::CreateSensitiveDetectors(
-                                   G4bool allLVSensitive)
-{
-// Creates sensitive detectors.
-// ---
-
-  if (allLVSensitive)
-    CreateSensitiveDetectors1();
-  else
-    CreateSensitiveDetectors2();
-
-  // set static number of logical volumes already processed
-  G4LogicalVolumeStore* pLVStore = G4LogicalVolumeStore::GetInstance();
-  fSDManager->SetNofLVWithSD(pLVStore->entries());  
-}    
-
-void AliMoreModulesConstruction::CreateSensitiveDetectors1()
-{ 
-// Creates sensitive detectors.
-// Sensitive detectors are set to all logical volumes
-// ---
-
-  G4LogicalVolumeStore* pLVStore = G4LogicalVolumeStore::GetInstance();
-  G4int nofLV = pLVStore->entries();
-  
-  G4int nofLVWithSD = fSDManager->GetNofLVWithSD();
-  for (G4int i=nofLVWithSD; i<nofLV; i++) {
-    G4LogicalVolume* lv = (*pLVStore)[i];
-    AliModule* module = fSDManager->FindAliModule(lv);
-    fSDManager->CreateSD(lv, module);
-  }
-}
-
-void AliMoreModulesConstruction::CreateSensitiveDetectors2()
-{ 
-// Creates sensitive detectors.
-// Sensitive detectors are set only to logical volumes
-// in G3SensVolVector.
-// ---
-
-  TG4GeometryManager* pGeometryManager = TG4GeometryManager::Instance();
-
-  G3SensVolVector pSVVector
-    = pGeometryManager->GetG3SensVolVector();
-
-  G4int nofSV = pSVVector.entries();
-  if (nofSV>0)
-    for (G4int isv=0; isv<nofSV; isv++) {
-      G4LogicalVolume* lv = pSVVector[isv];
-      AliModule* module = fSDManager->FindAliModule(lv);    
-      fSDManager->CreateSD(lv, module);
-    } 
-}
-
 // public methods
 
+//_____________________________________________________________________________
 void AliMoreModulesConstruction::AddModule(G4String moduleName, G4int version,
                                            AliModuleType moduleType)
 {                                         
@@ -150,7 +82,8 @@ void AliMoreModulesConstruction::AddModule(G4String moduleName, G4int version,
   fModuleConstructionVector.push_back(moduleConstruction);
 }  
                                           
-void AliMoreModulesConstruction::Configure()
+//_____________________________________________________________________________
+void AliMoreModulesConstruction::Configure(const AliFiles& files)
 { 
 // Executes the detectors setup Root macros
 // (extracted from AliRoot Config.C) and
@@ -166,9 +99,10 @@ void AliMoreModulesConstruction::Configure()
   }
   else 
     for (G4int i=0; i<nofModules; i++) 
-      fModuleConstructionVector[i]->Configure();
+      fModuleConstructionVector[i]->Configure(files);
 }      
 
+//_____________________________________________________________________________
 void AliMoreModulesConstruction::Construct()
 { 
 // Constructs geometry.
@@ -186,11 +120,10 @@ void AliMoreModulesConstruction::Construct()
     // get geometry manager
     TG4GeometryManager* pGeometryManager = TG4GeometryManager::Instance();
 
-    G4bool allLVSensitive = false;    
     G4int i;
     for (i=0; i<nofModules; i++) {
 
-      // fModuleConstructionVector[i]->Configure();
+      // fModuleConstructionVector[i]->Configure(files);
     
       // register module name in the name map
       AliModule* module = fModuleConstructionVector[i]->GetAliModule();
@@ -230,11 +163,6 @@ void AliMoreModulesConstruction::Construct()
         if (writeGeometry) 
           pGeometryManager->CloseOutFile();
       }        
-
-      // all logical volumes will be made sensitive if any
-      // module requires this
-      if (fModuleConstructionVector[i]->GetAllLVSensitive()) 
-         allLVSensitive = true;
     }  
   
     // construct G4 geometry
@@ -242,28 +170,18 @@ void AliMoreModulesConstruction::Construct()
 
     // print name map
     // pGeometryManager->PrintNameMap();
-    
-    // create sensitive detectors
-    CreateSensitiveDetectors(allLVSensitive);
-  
+
     for (i=0; i<nofModules; i++) {
       // set the detector frame (envelope)
       // (without warning output if enevelope is not defined)
       fModuleConstructionVector[i]->SetDetFrame(false);
 
-      // build sensitive detectors table
-      fModuleConstructionVector[i]->GetAliModule()->Init();
-
       // construct geometry for display
       fModuleConstructionVector[i]->GetAliModule()->BuildGeometry();
-    }  
+    }
 
     // reset TG4GeometryManager 
     pGeometryManager->ClearG3Tables();
-  
-    // print current total number of logical volumes
-    G4cout << "Current total number of sensitive volumes: "
-           << pGeometryManager->NofVolumes() << G4endl;
 
 #ifdef ALICE_VISUALIZE
     // set visualization attributes