// 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
// 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);
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