]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TGeant4/TG4ProcessControlMap.h
removed fMessenger (moved to TG4PhysicsManager)
[u/mrichter/AliRoot.git] / TGeant4 / TG4ProcessControlMap.h
1 // $Id$
2 // Category: physics
3 //
4 // Author: I. Hrivnacova
5 //
6 // Class TG4ProcessControlMap
7 // --------------------------
8 // Singleton map container for associated pairs
9 // G4 process name and TG4G3Control.
10
11 #ifndef TG4_PROCESS_CONTROL_MAP_H
12 #define TG4_PROCESS_CONTROL_MAP_H
13
14 #include <g4std/map>
15 #include <globals.hh>
16
17 #include "TG4G3Control.h"
18
19 class G4VProcess;
20
21 class TG4ProcessControlMap
22 {
23   typedef G4std::map<G4String, TG4G3Control, G4std::less<G4String> >  Map;
24   typedef Map::iterator       MapIterator;
25   typedef Map::const_iterator MapConstIterator;
26
27   public:
28     TG4ProcessControlMap();
29     // --> protected
30     // TG4ProcessControlMap(const TG4ProcessControlMap& right);
31     virtual ~TG4ProcessControlMap();
32
33     // static access method
34     static TG4ProcessControlMap* Instance();
35
36     // methods
37     G4bool Add(G4VProcess* process,  TG4G3Control second);  
38     G4bool Add(G4String processName, TG4G3Control second);  
39     void PrintAll() const;
40     void Clear();
41
42     // get methods
43     TG4G3Control    GetControl(const G4VProcess* process);
44     TG4G3Control    GetControl(const G4String& processName);
45     const G4String& GetControlName(const G4VProcess* process);
46     const G4String& GetControlName(const G4String& processName);
47
48   protected:
49     TG4ProcessControlMap(const TG4ProcessControlMap& right);
50
51     // operators
52     TG4ProcessControlMap& operator=(const TG4ProcessControlMap& right);
53   
54   private:
55     // methods
56     G4bool IsDefined(const G4String& processName);
57
58     // static data members
59     static TG4ProcessControlMap*  fgInstance; //this instance
60
61     // data members
62     Map  fMap; //map container
63 };
64
65 // inline methods
66
67 inline TG4ProcessControlMap* TG4ProcessControlMap::Instance() 
68 { return fgInstance; }
69
70 #endif //TG4_PROCESS_CONTROL_MAP_H