5 // The class provides service methods for accessing to Geant4 geometry,
6 // namely using AliMC volumes and materials identifiers.
8 #ifndef TG4_GEOMETRY_SERVICES_H
9 #define TG4_GEOMETRY_SERVICES_H
11 #include "TG4NameMap.h"
12 #include "TG4Globals.h"
20 class TG4GeometryOutputManager;
23 class G4VPhysicalVolume;
24 class G4LogicalVolume;
27 class TG4GeometryServices
30 TG4GeometryServices(TG4intVector* mediumIdVector, TG4NameMap* nameMap);
32 // TG4GeometryServices();
33 // TG4GeometryServices(const TG4GeometryServices& right);
34 virtual ~TG4GeometryServices();
36 // static access method
37 static TG4GeometryServices* Instance();
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);
48 Int_t NofG3Volumes() const;
49 Int_t NofG4LogicalVolumes() const;
50 Int_t NofG4PhysicalVolumes() const;
52 G4bool IsG3Volume(const G4String& lvName) const;
53 const G4String& GetMapSecond(const G4String& name);
56 G4int GetMediumId(G4Material* material) const;
57 G4double GetEffA(G4Material* material) const;
58 G4double GetEffZ(G4Material* material) const;
61 TG4GeometryServices();
62 TG4GeometryServices(const TG4GeometryServices& right);
65 TG4GeometryServices& operator=(const TG4GeometryServices& right);
68 // static data members
69 static TG4GeometryServices* fgInstance; //this instance
72 TG4intVector* fMediumIdVector; //vector of second indexes for materials
73 TG4NameMap* fNameMap; //map of volumes names to modules names
77 inline TG4GeometryServices* TG4GeometryServices::Instance()
78 { return fgInstance; }
80 #endif //TG4_GEOMETRY_SERVICES_H