]> git.uio.no Git - u/mrichter/AliRoot.git/blame - AliGeant4/AliModulesComposition.h
Some more comments.
[u/mrichter/AliRoot.git] / AliGeant4 / AliModulesComposition.h
CommitLineData
676fb573 1// $Id$
2// Category: geometry
3//
ad42298e 4// Author: I. Hrivnacova
5//
6// Class AliModulesComposition
7// ---------------------------
676fb573 8// Detector construction base class for building geometry
80ed9a99 9// composed from modules.
676fb573 10
11#ifndef ALI_MODULES_COMPOSITION_H
12#define ALI_MODULES_COMPOSITION_H
13
ad42298e 14#include "AliModulesCompositionMessenger.h"
676fb573 15#include "AliModuleType.h"
e980662a 16#include "AliVerbose.h"
676fb573 17
18#include <G4VUserDetectorConstruction.hh>
19#include <globals.hh>
ad42298e 20#include <g4std/vector>
676fb573 21
80ed9a99 22class AliModuleConstruction;
676fb573 23class AliMagneticField;
24
25class G4VPhysicalVolume;
26
e980662a 27class AliModulesComposition : public G4VUserDetectorConstruction,
28 public AliVerbose
676fb573 29{
80ed9a99 30 typedef G4std::vector<AliModuleConstruction*> AliModuleConstructionVector;
31
676fb573 32 public:
33 AliModulesComposition();
34 // --> protected
35 // AliModulesComposition(const AliModulesComposition& right);
36 virtual ~AliModulesComposition();
37
38 // methods
39 virtual G4VPhysicalVolume* Construct() = 0;
80ed9a99 40 virtual void GenerateXMLGeometry() const = 0;
41 virtual void PrintMaterials() const;
676fb573 42
43 // set methods
44 void SetMagField(G4double fieldValue);
676fb573 45 void SetReadGeometry(G4bool readGeometry);
46 void SetWriteGeometry(G4bool writeGeometry);
676fb573 47
48 protected:
49 AliModulesComposition(const AliModulesComposition& right);
50
51 // operators
52 AliModulesComposition& operator=(const AliModulesComposition& right);
53
54 // methods
80ed9a99 55 void AddModule(const G4String& name,
56 G4int version,
57 AliModuleType moduleType = kDetector);
676fb573 58 void ConstructModules();
80ed9a99 59 void SetProcessConfigToModules(G4bool processConfig);
886f0b7c 60
676fb573 61 private:
62 // methods
80ed9a99 63 void Configure();
64 void CreateG4Geometry();
676fb573 65 void SetReadGeometryToModules(G4bool readGeometry);
66 void SetWriteGeometryToModules(G4bool writeGeometry);
676fb573 67
68 // data members
ad42298e 69 AliModulesCompositionMessenger fMessenger; //messenger
80ed9a99 70 AliModuleConstructionVector fModuleConstructionVector; //..
71 //vector of AliModuleConstruction
72 AliMagneticField* fMagneticField; //magnetic field
73 G4bool fReadGeometry; //option applied to all modules
74 G4bool fWriteGeometry; //option applied to all modules
676fb573 75};
76
77// inline methods
78
676fb573 79inline void AliModulesComposition::SetReadGeometry(G4bool readGeometry)
80{ fReadGeometry = readGeometry; }
81
82inline void AliModulesComposition::SetWriteGeometry(G4bool writeGeometry)
83{ fWriteGeometry = writeGeometry; }
84
85#endif //ALI_MODULES_COMPOSITION_H
86