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"
16 #include "AliVerbose.h"
18 #include <TG4MagneticFieldType.h>
20 #include <G4VUserDetectorConstruction.hh>
22 #include <g4std/vector>
24 class AliModuleConstruction;
25 class G4MagneticField;
27 class G4VPhysicalVolume;
29 class AliModulesComposition : public G4VUserDetectorConstruction,
32 typedef G4std::vector<AliModuleConstruction*> AliModuleConstructionVector;
35 AliModulesComposition();
37 // AliModulesComposition(const AliModulesComposition& right);
38 virtual ~AliModulesComposition();
41 virtual G4VPhysicalVolume* Construct() = 0;
42 virtual void GenerateXMLGeometry() const = 0;
43 virtual void PrintMaterials() const;
46 void SetFieldType(TG4MagneticFieldType fieldType);
47 void SetUniformFieldValue(G4double fieldValue);
48 void SetReadGeometry(G4bool readGeometry);
49 void SetWriteGeometry(G4bool writeGeometry);
52 AliModulesComposition(const AliModulesComposition& right);
55 AliModulesComposition& operator=(const AliModulesComposition& right);
58 void AddModule(const G4String& name,
60 AliModuleType moduleType = kDetector);
61 void ConstructModules();
62 void SetProcessConfigToModules(G4bool processConfig);
66 void CreateMagneticField();
68 void CreateG4Geometry();
69 void SetReadGeometryToModules(G4bool readGeometry);
70 void SetWriteGeometryToModules(G4bool writeGeometry);
73 AliModulesCompositionMessenger fMessenger; //messenger
74 AliModuleConstructionVector fModuleConstructionVector; //..
75 //vector of AliModuleConstruction
76 TG4MagneticFieldType fMagneticFieldType;//magnetic field type
77 G4MagneticField* fMagneticField; //magnetic field
78 G4bool fReadGeometry; //option applied to all modules
79 G4bool fWriteGeometry; //option applied to all modules
84 inline void AliModulesComposition::SetReadGeometry(G4bool readGeometry)
85 { fReadGeometry = readGeometry; }
87 inline void AliModulesComposition::SetWriteGeometry(G4bool writeGeometry)
88 { fWriteGeometry = writeGeometry; }
90 #endif //ALI_MODULES_COMPOSITION_H