4 // Author: I. Hrivnacova
6 // Class AliModulesComposition
7 // ---------------------------
8 // Detector construction base class for building geometry
9 // composed from modules.
11 #ifndef ALI_MODULES_COMPOSITION_H
12 #define ALI_MODULES_COMPOSITION_H
14 #include "AliModulesCompositionMessenger.h"
15 #include "AliModuleType.h"
17 #include <G4VUserDetectorConstruction.hh>
19 #include <g4std/vector>
21 class AliModuleConstruction;
22 class AliMagneticField;
24 class G4VPhysicalVolume;
26 class AliModulesComposition : public G4VUserDetectorConstruction
28 typedef G4std::vector<AliModuleConstruction*> AliModuleConstructionVector;
31 AliModulesComposition();
33 // AliModulesComposition(const AliModulesComposition& right);
34 virtual ~AliModulesComposition();
37 virtual G4VPhysicalVolume* Construct() = 0;
38 virtual void GenerateXMLGeometry() const = 0;
39 virtual void PrintMaterials() const;
42 void SetMagField(G4double fieldValue);
43 void SetReadGeometry(G4bool readGeometry);
44 void SetWriteGeometry(G4bool writeGeometry);
47 AliModulesComposition(const AliModulesComposition& right);
50 AliModulesComposition& operator=(const AliModulesComposition& right);
53 void AddModule(const G4String& name,
55 AliModuleType moduleType = kDetector);
56 void ConstructModules();
57 void SetProcessConfigToModules(G4bool processConfig);
62 void CreateG4Geometry();
63 void SetReadGeometryToModules(G4bool readGeometry);
64 void SetWriteGeometryToModules(G4bool writeGeometry);
67 AliModulesCompositionMessenger fMessenger; //messenger
68 AliModuleConstructionVector fModuleConstructionVector; //..
69 //vector of AliModuleConstruction
70 AliMagneticField* fMagneticField; //magnetic field
71 G4bool fReadGeometry; //option applied to all modules
72 G4bool fWriteGeometry; //option applied to all modules
77 inline void AliModulesComposition::SetReadGeometry(G4bool readGeometry)
78 { fReadGeometry = readGeometry; }
80 inline void AliModulesComposition::SetWriteGeometry(G4bool writeGeometry)
81 { fWriteGeometry = writeGeometry; }
83 #endif //ALI_MODULES_COMPOSITION_H