]> git.uio.no Git - u/mrichter/AliRoot.git/blob - AliGeant4/AliSingleModuleConstruction.h
New&delete used for array with variable size
[u/mrichter/AliRoot.git] / AliGeant4 / AliSingleModuleConstruction.h
1 // $Id$
2 // Category: geometry
3 //
4 // Class for geometry construction of a standalone
5 // module (AliModule). 
6
7 #ifndef ALI_SINGLE_MODULE_CONSTRUCTION_H
8 #define ALI_SINGLE_MODULE_CONSTRUCTION_H
9
10 #include "AliModuleConstruction.h"
11 #include "AliModuleType.h"
12
13 #include <globals.hh>
14
15 class AliSingleModuleConstructionMessenger;
16 class AliSDManager;
17 class AliFiles;
18
19 class G4VPhysicalVolume;
20 class G4LogicalVolume;
21
22 class AliSingleModuleConstruction : public AliModuleConstruction
23 {  
24   public:
25     AliSingleModuleConstruction(G4String moduleName, G4int version,
26                                 AliModuleType moduleType = kDetector);
27     AliSingleModuleConstruction(const AliSingleModuleConstruction& right);
28     // --> protected
29     // AliSingleModuleConstruction();
30     virtual ~AliSingleModuleConstruction();
31     
32     // operators
33     AliSingleModuleConstruction& operator=(
34                                 const AliSingleModuleConstruction &right);
35
36     // static set/get methods 
37     static void SetWorld(G4VPhysicalVolume* world);
38     static G4VPhysicalVolume* GetWorld();
39
40     // methods
41     void Configure(const AliFiles& files);    
42     virtual void Construct();
43
44     // set methods
45     void SetProcessConfig(G4bool processConfig);
46     void SetAllLVSensitive(G4bool allLVSensitive);
47     void SetModuleFrameName(G4String moduleFrameName);
48     void SetModuleType(AliModuleType type);
49
50     // get methods
51     G4int  GetVersion() const;
52     AliModuleType GetType() const;
53     G4bool GetAllLVSensitive() const;
54     G4bool GetProcessConfig() const;
55     
56   protected:
57     AliSingleModuleConstruction();
58
59   private:
60     // methods
61     void CreateSensitiveDetectors();
62     void CreateSensitiveDetectors1();
63     void CreateSensitiveDetectors2();
64     
65     // static data members
66     static G4VPhysicalVolume* fgWorld;       //top (world) physical volume
67
68     // data members
69     AliSDManager*   fSDManager;      //AliSDManager
70     G4int           fVersion;        //module version
71     AliModuleType   fType;           //module type (detector/structure)
72     G4bool          fAllLVSensitive; //control for setting sensitive detectors
73     G4bool          fProcessConfig;  //control for processing Config.C
74     AliSingleModuleConstructionMessenger*  fMessenger; //messenger
75 };             
76
77 // inline methods
78
79 inline G4VPhysicalVolume* AliSingleModuleConstruction::GetWorld()
80 { return fgWorld; }
81
82 inline void AliSingleModuleConstruction::SetWorld(G4VPhysicalVolume* world)
83 { fgWorld = world; }
84
85 inline void AliSingleModuleConstruction::SetProcessConfig(G4bool processConfig)
86 { fProcessConfig = processConfig; }
87
88 inline void AliSingleModuleConstruction::SetAllLVSensitive(G4bool allLVSensitive)
89 { fAllLVSensitive = allLVSensitive; }
90
91 inline void AliSingleModuleConstruction::SetModuleFrameName(G4String name)
92 { fModuleFrameName = name; }
93
94 inline void AliSingleModuleConstruction::SetModuleType(AliModuleType type)
95 { fType = type; }
96
97 inline G4int AliSingleModuleConstruction::GetVersion() const
98 { return fVersion; }
99
100 inline AliModuleType AliSingleModuleConstruction::GetType() const
101 { return fType; }
102
103 inline G4bool AliSingleModuleConstruction::GetAllLVSensitive() const
104 { return fAllLVSensitive; }
105
106 inline G4bool AliSingleModuleConstruction::GetProcessConfig() const
107 { return fProcessConfig; }
108
109 #endif //ALI_SINGLE_MODULE_CONSTRUCTION_H