]> git.uio.no Git - u/mrichter/AliRoot.git/blame - AliGeant4/AliModulesComposition.h
Merging the VirtualMC branch to the main development branch (HEAD)
[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
b9d0a01d 18#include <TG4MagneticFieldType.h>
19
676fb573 20#include <G4VUserDetectorConstruction.hh>
21#include <globals.hh>
ad42298e 22#include <g4std/vector>
676fb573 23
80ed9a99 24class AliModuleConstruction;
b9d0a01d 25class G4MagneticField;
676fb573 26
27class G4VPhysicalVolume;
28
e980662a 29class AliModulesComposition : public G4VUserDetectorConstruction,
30 public AliVerbose
676fb573 31{
80ed9a99 32 typedef G4std::vector<AliModuleConstruction*> AliModuleConstructionVector;
33
676fb573 34 public:
35 AliModulesComposition();
36 // --> protected
37 // AliModulesComposition(const AliModulesComposition& right);
38 virtual ~AliModulesComposition();
39
40 // methods
41 virtual G4VPhysicalVolume* Construct() = 0;
80ed9a99 42 virtual void GenerateXMLGeometry() const = 0;
43 virtual void PrintMaterials() const;
676fb573 44
45 // set methods
b9d0a01d 46 void SetFieldType(TG4MagneticFieldType fieldType);
47 void SetUniformFieldValue(G4double fieldValue);
676fb573 48 void SetReadGeometry(G4bool readGeometry);
49 void SetWriteGeometry(G4bool writeGeometry);
676fb573 50
51 protected:
52 AliModulesComposition(const AliModulesComposition& right);
53
54 // operators
55 AliModulesComposition& operator=(const AliModulesComposition& right);
56
57 // methods
80ed9a99 58 void AddModule(const G4String& name,
59 G4int version,
60 AliModuleType moduleType = kDetector);
676fb573 61 void ConstructModules();
80ed9a99 62 void SetProcessConfigToModules(G4bool processConfig);
886f0b7c 63
676fb573 64 private:
65 // methods
b9d0a01d 66 void CreateMagneticField();
80ed9a99 67 void Configure();
68 void CreateG4Geometry();
676fb573 69 void SetReadGeometryToModules(G4bool readGeometry);
70 void SetWriteGeometryToModules(G4bool writeGeometry);
676fb573 71
72 // data members
ad42298e 73 AliModulesCompositionMessenger fMessenger; //messenger
80ed9a99 74 AliModuleConstructionVector fModuleConstructionVector; //..
75 //vector of AliModuleConstruction
b9d0a01d 76 TG4MagneticFieldType fMagneticFieldType;//magnetic field type
77 G4MagneticField* fMagneticField; //magnetic field
80ed9a99 78 G4bool fReadGeometry; //option applied to all modules
79 G4bool fWriteGeometry; //option applied to all modules
676fb573 80};
81
82// inline methods
83
676fb573 84inline void AliModulesComposition::SetReadGeometry(G4bool readGeometry)
85{ fReadGeometry = readGeometry; }
86
87inline void AliModulesComposition::SetWriteGeometry(G4bool writeGeometry)
88{ fWriteGeometry = writeGeometry; }
89
90#endif //ALI_MODULES_COMPOSITION_H
91