GEMC  2.3
Geant4 Monte-Carlo Framework
material_factory.h
Go to the documentation of this file.
1 #ifndef MATERIAL_FACTORY_H
2 #define MATERIAL_FACTORY_H
3 
4 // G4 headers
5 #include "G4Material.hh"
6 
7 // C++ headers
8 #include <map>
9 #include <iostream>
10 using namespace std;
11 
12 // gemc headers
13 #include "run_conditions.h"
14 #include "options.h"
15 
16 class material
17 {
18 
19  public:
20  material(){;}
21  material(string n){name = n;}
22  ~material(){;}
23 
24  string name;
25  string desc;
26  double density;
28 
29  vector<string> components;
30  vector<double> fracs;
31 
32  vector<double> photonEnergy;
33  vector<double> indexOfRefraction;
34  vector<double> absorptionLength;
35  vector<double> reflectivity;
36  vector<double> efficiency;
37 
38  // scintillation
39  vector<double> fastcomponent;
40  vector<double> slowcomponent;
45  double yieldratio;
46  vector<double> rayleigh;
47 
48 
49  // load material components from DB entry
50  void componentsFromString(string);
51 
52  // load optical properties from DB entry
53  void opticalsFromString(string, string);
54 
55 };
56 
57 
58 class materials
59 {
60  public:
61  // Pure Virtual Method to initialize G4 Materials
62  virtual map<string, G4Material*> initMaterials(runConditions, goptions) = 0;
63  map<string, G4Material*> materialsFromMap(map<string, material>);
64  virtual ~materials(){}
65 };
66 
67 typedef materials *(*materialFactory)(); // Define materialFactory as a pointer to a function that returns a pointer
68 
69 materials *getMaterialFactory(map<string, materialFactory> *, string); // returns materialFactory Function from Factory Map
70 
71 map<string, materialFactory> registerMaterialFactories(); // Registers materialFactory in Factory Map
72 
73 map<string, G4Material*> buildMaterials(map<string, materialFactory> materialFactoryMap, goptions go, runConditions rc);
74 
75 // build material with standard isotopes.
76 map<string, G4Material*> materialsWithIsotopes();
77 
78 void printMaterials(map<string, G4Material*> matMap);
79 
80 #endif
81 
vector< double > rayleigh
vector< double > slowcomponent
vector< double > reflectivity
double slowtimeconstant
double fasttimeconstant
vector< double > photonEnergy
STL namespace.
materials * getMaterialFactory(map< string, materialFactory > *, string)
void printMaterials(map< string, G4Material * > matMap)
virtual ~materials()
vector< double > efficiency
double density
double scintillationyield
vector< double > fastcomponent
vector< string > components
double resolutionscale
vector< double > absorptionLength
map< string, G4Material * > materialsWithIsotopes()
vector< double > fracs
map< string, materialFactory > registerMaterialFactories()
vector< double > indexOfRefraction
map< string, G4Material * > buildMaterials(map< string, materialFactory > materialFactoryMap, goptions go, runConditions rc)
double yieldratio
material(string n)