]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - AliGeant4/AliModulesComposition.h
redesign of detector construction classes (see AliGeant4_geometry_History)
[u/mrichter/AliRoot.git] / AliGeant4 / AliModulesComposition.h
index 3867890785c5c19339a609a6b01e95d3c8f6e2d7..5914f7bbe6e064581c1bbc3d239d30072c3352ae 100644 (file)
@@ -6,8 +6,7 @@
 // Class AliModulesComposition
 // ---------------------------
 // Detector construction base class for building geometry
-// composed from independent modules with availability of interactive modules
-// setup.
+// composed from modules.
 
 #ifndef ALI_MODULES_COMPOSITION_H
 #define ALI_MODULES_COMPOSITION_H
 #include <globals.hh>
 #include <g4std/vector>
 
-class AliSingleModuleConstruction;
-class AliDetSwitch;
-class AliMoreModulesConstruction;
+class AliModuleConstruction;
 class AliMagneticField;
 
 class G4VPhysicalVolume;
 
 class AliModulesComposition : public G4VUserDetectorConstruction
 {
-  typedef G4std::vector<AliDetSwitch*>    DetSwitchVector;
-  typedef DetSwitchVector::iterator       DetSwitchIterator;
-  typedef DetSwitchVector::const_iterator DetSwitchConstIterator;
-
-  typedef G4std::vector<AliSingleModuleConstruction*> SingleModuleVector;
-  typedef SingleModuleVector::iterator                SingleModuleIterator;    
-
+  typedef G4std::vector<AliModuleConstruction*> AliModuleConstructionVector;
+  
   public:
     AliModulesComposition();
     // --> protected
@@ -43,27 +35,13 @@ class AliModulesComposition : public G4VUserDetectorConstruction
 
     // methods
     virtual G4VPhysicalVolume* Construct() = 0;
-    void SwitchDetOn(const G4String& moduleNameVer);
-    void SwitchDetOn(const G4String& moduleName, G4int version);
-    void SwitchDetOnDefault(const G4String& moduleName);
-    void SwitchDetOff(const G4String& moduleName);
-    void PrintSwitchedDets() const;
-    void PrintAvailableDets() const;
-    void PrintMaterials() const;
-    void GenerateXMLGeometry() const;
+    virtual void GenerateXMLGeometry() const = 0;
+    virtual void PrintMaterials() const;
 
     // set methods
     void SetMagField(G4double fieldValue);
     void SetReadGeometry(G4bool readGeometry);
     void SetWriteGeometry(G4bool writeGeometry);
-    void SetProcessConfigToModules(G4bool processConfig);
-    
-    // get methods
-    G4String GetSwitchedDetsList() const;
-    G4String GetAvailableDetsList() const;
-    G4String GetAvailableDetsListWithCommas() const;
-    G4String GetDetNamesList() const;
-    G4String GetDetNamesListWithCommas() const;
     
   protected:
     AliModulesComposition(const AliModulesComposition& right);
@@ -72,34 +50,26 @@ class AliModulesComposition : public G4VUserDetectorConstruction
     AliModulesComposition& operator=(const AliModulesComposition& right);
 
     // methods  
-    void AddDetSwitch(AliDetSwitch* detSwitch);
-    void AddSingleModuleConstruction(const G4String& name, G4int version,
-                                     AliModuleType moduleType = kDetector);
-    void AddMoreModuleConstruction(const G4String& name, G4int version,
-                                     AliModuleType moduleType = kDetector);
+    void AddModule(const G4String& name, 
+                   G4int version,
+                   AliModuleType moduleType = kDetector);
     void ConstructModules();
-
-    // get methods
-    AliDetSwitch* GetDetSwitch(const G4String& moduleName) const;
-
-    // data members
-    DetSwitchVector  fDetSwitchVector; //vector of AliDetSwitch
+    void SetProcessConfigToModules(G4bool processConfig);
     
   private:    
     // methods
+    void Configure();
+    void CreateG4Geometry();
     void SetReadGeometryToModules(G4bool readGeometry);
     void SetWriteGeometryToModules(G4bool writeGeometry);
 
     // data members
-    SingleModuleVector           fModuleConstructionVector; //vector of 
-                                         //single module constructions 
-    AliMoreModulesConstruction*  fMoreModulesConstruction;  //..
-                                          //dependent modules construction
-
-    AliMagneticField*               fMagneticField;  //magnetic field
     AliModulesCompositionMessenger  fMessenger;      //messenger
-    G4bool  fReadGeometry;        //option applied to all modules
-    G4bool  fWriteGeometry;       //option applied to all modules     
+    AliModuleConstructionVector     fModuleConstructionVector; //..
+                                        //vector of AliModuleConstruction
+    AliMagneticField*  fMagneticField;  //magnetic field
+    G4bool             fReadGeometry;   //option applied to all modules
+    G4bool             fWriteGeometry;  //option applied to all modules     
 };
 
 // inline methods