GEMC  2.3
Geant4 Monte-Carlo Framework
mirrors_factory.h
Go to the documentation of this file.
1 #ifndef MIRRORS_FACTORY_H
2 #define MIRRORS_FACTORY_H
3 
4 // C++ headers
5 #include <map>
6 #include <iostream>
7 using namespace std;
8 
9 // gemc headers
10 #include "run_conditions.h"
11 #include "options.h"
12 
13 class mirror
14 {
15 
16  public:
17  mirror(){;}
18  mirror(string n){name = n;}
19  ~mirror(){;}
20 
21  string name;
22  string desc;
23  string type;
24  string finish;
25  string model;
26  string border;
27 
28  string maptOptProps;
29 
30  vector<double> photonEnergy;
31  vector<double> indexOfRefraction;
32  vector<double> reflectivity;
33  vector<double> efficiency;
34  vector<double> specularlobe;
35  vector<double> specularspike;
36  vector<double> backscatter;
37 
38  // load optical properties from DB entry
39  void opticalsFromString(string, string);
40 
42  friend ostream &operator<<(ostream &stream, mirror);
43 
44 };
45 
46 
47 class mirrors
48 {
49  public:
50  // Pure Virtual Method to initialize gemc mirrors
51  virtual map<string, mirror*> initMirrors(runConditions, goptions) = 0;
52  virtual ~mirrors(){}
53 };
54 
55 // Define mirrorFactory as a pointer to a function that returns a pointer
56 typedef mirrors *(*mirrorFactory)();
57 
58 // returns mirrorFactory Function from Factory Map
59 mirrors *getMirrorFactory(map<string, mirrorFactory> *, string);
60 
61 // Registers mirrorFactory in Factory Map
62 map<string, mirrorFactory> registerMirrorFactories();
63 
64 // build all mirrors from all factories
65 map<string, mirror*> buildMirrors(map<string, mirrorFactory> mirrorFactoryMap, goptions go, runConditions rc);
66 
67 void printMirrors(map<string, mirror*> mirMap);
68 
69 #endif
70 
vector< double > specularlobe
vector< double > reflectivity
vector< double > indexOfRefraction
ostream & operator<<(ostream &stream, detector Detector)
Definition: detector.cc:1119
vector< double > specularspike
STL namespace.
string desc
mirrors * getMirrorFactory(map< string, mirrorFactory > *, string)
virtual ~mirrors()
string model
string finish
void printMirrors(map< string, mirror * > mirMap)
vector< double > photonEnergy
map< string, mirrorFactory > registerMirrorFactories()
mirror(string n)
map< string, mirror * > buildMirrors(map< string, mirrorFactory > mirrorFactoryMap, goptions go, runConditions rc)
string type
vector< double > efficiency
string name
vector< double > backscatter
string border
string maptOptProps