]> git.uio.no Git - u/mrichter/AliRoot.git/blame - Flugg/FGeometryInit.hh
cluster information
[u/mrichter/AliRoot.git] / Flugg / FGeometryInit.hh
CommitLineData
26911512 1
2// Flugg tag
3
4// modified 10/IX/99 for including preStepPoint
5// modified 28/IX/99 for delating allocated memory
6// modified 4/X/99 function FreeMemory
7// modified 2/III/00 base class G4TransportationManager included
8// modified 20/III/00 PrintHistories() included
9
10
11#ifndef FGeometryInit_h
12#define FGeometryInit_h 1
13
14//#include "g4std/fstream"
15//#include "g4std/iomanip"
16//#include "g4rw/cstring.h"
17#include "globals.hh"
18
19#include "G4LogicalVolume.hh"
20#include "G4PhysicalVolumeStore.hh"
21#include "G4VPhysicalVolume.hh"
22#include "G4Material.hh"
23#include "G4MaterialTable.hh"
24#include "G4Isotope.hh"
25#include "G4VUserDetectorConstruction.hh"
26#include "G4TouchableHistory.hh"
27#include "G4GeometryManager.hh"
28#include "G4FieldManager.hh"
29#include "G4UniformMagField.hh"
30#include "G4TransportationManager.hh"
31
32
26d97e06 33#include <map>
34
26911512 35class FluggNavigator;
26d97e06 36class FlukaMaterial;
37class FlukaCompound;
38
39class FGeometryInit : public G4TransportationManager {
40
41public:
42 ~FGeometryInit(); //destructor
43 static FGeometryInit *GetInstance();
44 inline FluggNavigator *getNavigatorForTracking();
45 inline G4FieldManager * getFieldManager();
46 inline void setDetConstruction(G4VUserDetectorConstruction* detector);
47 inline void setDetector();
48 inline void setMotherVolume();
49 void createFlukaMatFile();
50 void closeGeometry();
51
52 void PrintHistories();
53 void InitHistories();
54 void DeleteHistories();
55 void UpdateHistories(const G4NavigationHistory *, G4int);
56 inline G4TouchableHistory * GetTouchableHistory();
57 inline G4TouchableHistory * GetOldNavHist();
58 inline G4TouchableHistory * GetTempNavHist();
59
60 void InitHistArray();
61 inline void DelHistArray();
62 inline G4int * GetHistArray();
63
64 void InitJrLtGeantArray();
65 inline G4int * GetJrLtGeantArray();
66 inline G4int GetLttcFlagGeant();
67 void SetLttcFlagGeant(G4int);
bf547b2f 68 void PrintJrLtGeant();
69
70 //Map access methods
1617d9fa 71 void BuildMediaMap();
6a53de92 72 void SetMediumFromName(const char* volName, int med, int volid);
1617d9fa 73 //G4int GetRegionFromName(const char* volName) const;
74 G4int GetMedium(int) const;
6a53de92 75 int CurrentVolID(int ir, int& copyNo);
76 int CurrentVolOffID(int ir, int off, int& copyNo);
dc37cac6 77 void Gmtod(double* xm, double* xd, int iflag);
78 void Gdtom(double* xd, double* xm, int iflag);
26d97e06 79
80protected:
81 void BuildRegionsMap();
82 void PrintRegionsMap(G4std::ostream& os);
83 void BuildMaterialTables();
84 FlukaMaterial* BuildFlukaMaterialFromElement(const G4Element* element,
85 G4double matDensity);
86 FlukaMaterial* BuildFlukaMaterialFromIsotope(const G4Isotope* isotope,
87 G4double matDensity);
88 FlukaCompound* BuildFlukaCompoundFromMaterial(const G4Material* material);
89 FlukaCompound* BuildFlukaCompoundFromElement(const G4Element* element,
90 G4double matDensity);
91 void PrintMaterialTables(G4std::ostream& os);
92 void PrintAssignmat(G4std::ostream& os);
93 void PrintMagneticField(G4std::ostream& os);
26911512 94
26d97e06 95private:
96 FGeometryInit(); //costructor
97
98private:
99 G4VUserDetectorConstruction * fDetector;
100 G4FieldManager * fFieldManager;
101 G4TransportationManager * fTransportationManager;
102 static FGeometryInit *flagInstance;
103 G4VPhysicalVolume * myTopNode;
104 G4GeometryManager * ptrGeoMan;
105 G4int * ptrArray;
106 G4TouchableHistory * ptrTouchHist;
107 G4TouchableHistory * ptrOldNavHist;
108 G4TouchableHistory * ptrTempNavHist;
109 G4int * ptrJrLtGeant;
110 G4int flagLttcGeant;
1617d9fa 111 G4int fNRegions;
112 int* fRegionMediumMap;
113
26d97e06 114 G4std::map<G4VPhysicalVolume*, int, G4std::less<G4VPhysicalVolume*> > fRegionVolumeMap;
1617d9fa 115 G4std::map<G4VPhysicalVolume*, int, G4std::less<G4VPhysicalVolume*> > fMediumVolumeMap;
6a53de92 116 G4std::map<G4VPhysicalVolume*, int, G4std::less<G4VPhysicalVolume*> > fVolIdVolumeMap;
1617d9fa 117
26d97e06 118 G4std::map<G4Material*, FlukaMaterial*, G4std::less<G4Material*> > G4FlukaMaterialMap;
119 G4std::map<G4Material*, FlukaCompound*, G4std::less<G4Material*> > G4FlukaCompoundMap;
120 //G4int NOfMaterials;
26911512 121};
122
bf547b2f 123typedef G4std::map<G4VPhysicalVolume*, int, G4std::less<G4VPhysicalVolume*> >::const_iterator RegionIterator;
26d97e06 124typedef G4std::vector<G4Material*>::const_iterator MatTableIterator;
125
26911512 126
127//Include the file with the inline methods
128#include "FGeometryInit.icc"
129
130#endif