]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TGeant4/TG4GeometryServices.h
Updated class description: added class name title, author;
[u/mrichter/AliRoot.git] / TGeant4 / TG4GeometryServices.h
1 // $Id$
2 // Category: geometry
3 //
4 // Geometry services
5 // The class provides service methods for accessing to Geant4 geometry,
6 // namely using AliMC volumes and materials identifiers. 
7
8 #ifndef TG4_GEOMETRY_SERVICES_H
9 #define TG4_GEOMETRY_SERVICES_H
10
11 #include "TG4NameMap.h"
12 #include "TG4Globals.h"
13
14 #include <globals.hh>
15
16 #include <Rtypes.h>
17
18 class TG4CutVector;
19 class TG4FlagVector;
20 class TG4GeometryOutputManager;
21
22 class G4Material;
23 class G4VPhysicalVolume;
24 class G4LogicalVolume;
25 class G4UserLimits;
26
27 class TG4GeometryServices
28 {
29   public:
30     TG4GeometryServices(TG4intVector* mediumIdVector, TG4NameMap* nameMap);
31     // --> protected
32     // TG4GeometryServices();
33     // TG4GeometryServices(const TG4GeometryServices& right);
34     virtual ~TG4GeometryServices();
35
36     // static access method
37     static TG4GeometryServices* Instance();
38
39     // methods
40     G4double* CreateG4doubleArray(Float_t* array, G4int size) const;
41     G4String  CutName(const char* name) const;
42     void G4ToG3VolumeName(G4String& name) const;
43     G4int SetUserLimits(G4UserLimits* userLimits, G4LogicalVolume* lv);              
44     G4Material* MixMaterials(G4String name, G4double density,
45                      TG4StringVector* matNames, TG4doubleVector* matWeights);
46
47     // get methods
48     Int_t NofG3Volumes() const; 
49     Int_t NofG4LogicalVolumes() const; 
50     Int_t NofG4PhysicalVolumes() const; 
51
52     G4bool IsG3Volume(const G4String& lvName) const;
53     const G4String& GetMapSecond(const G4String& name);
54
55           // materials
56     G4int GetMediumId(G4Material* material) const;    
57     G4double GetEffA(G4Material* material) const;
58     G4double GetEffZ(G4Material* material) const;
59
60   protected:
61     TG4GeometryServices();
62     TG4GeometryServices(const TG4GeometryServices& right);
63
64     // operators
65     TG4GeometryServices& operator=(const TG4GeometryServices& right);
66
67   private:        
68     // static data members
69     static TG4GeometryServices*  fgInstance;    //this instance
70
71     // data members
72     TG4intVector*  fMediumIdVector;  //vector of second indexes for materials
73     TG4NameMap*    fNameMap;         //map of volumes names to modules names
74 };
75
76 // inline methods
77 inline TG4GeometryServices* TG4GeometryServices::Instance()
78 { return fgInstance; }
79
80 #endif //TG4_GEOMETRY_SERVICES_H
81