Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4ModelColourMap.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27// Generic variable->G4Colour map, where "variable" is the template
28// parameter.
29//
30// Jane Tinslay March 2006
31
32#ifndef G4MODELCOLOURMAP_HH
33#define G4MODELCOLOURMAP_HH
34
35#include "G4Colour.hh"
36#include "G4String.hh"
37#include <map>
38
39template <typename T>
41
42public: // With description
43
45
47
48 // Configuration functions
49 void Set(const T&, const G4Colour&);
50 void Set(const T&, const G4String&);
51 G4Colour& operator[](const T& quantity);
52
53 // Access functions
54 const std::map<T, G4Colour>& GetBasicMap() const;
55 bool GetColour(const T&, G4Colour&) const;
56 void Print(std::ostream& ostr) const;
57
58private:
59
60 // Data member
61 std::map<T, G4Colour> fMap;
62
63};
64
65template <typename T>
67G4ModelColourMap<T>::operator[](const T& quantity) {return fMap[quantity];}
68
69template <typename T>
71
72template <typename T>
74
75template <typename T>
76void
77G4ModelColourMap<T>::Set(const T& quantity, const G4String& colour)
78{
79 G4Colour myColour;
80
81 // Will not setup the map if colour key does not exist
82 if (!G4Colour::GetColour(colour, myColour)) {
84 ed << "G4Colour with key "<<colour<<" does not exist ";
86 ("G4ColourMap::Set(Charge charge, const G4String& colour)",
87 "modeling0108", JustWarning, ed);
88 return;
89 }
90
91
92 // Will not modify myColour if colour key does not exist
93 Set(quantity, myColour);
94}
95
96template <typename T>
97void
98G4ModelColourMap<T>::Set(const T& quantity, const G4Colour& colour)
99{
100 fMap[quantity] = colour;
101}
102
103template <typename T>
104const std::map<T, G4Colour>& G4ModelColourMap<T>::GetBasicMap() const
105{ return fMap; }
106
107template <typename T>
108bool
109G4ModelColourMap<T>::GetColour(const T& quantity, G4Colour& colour) const
110{
111 typename std::map<T, G4Colour>::const_iterator iter = fMap.find(quantity);
112
113 if (iter != fMap.end()) {
114 colour = iter->second;
115 return true;
116 }
117
118 return false;
119}
120
121template <typename T>
122void
123G4ModelColourMap<T>::Print(std::ostream& ostr) const
124{
125 typename std::map<T, G4Colour>::const_iterator iter = fMap.begin();
126
127 while (iter != fMap.end()) {
128 ostr<< iter->first <<" : "<< iter->second <<G4endl;
129 iter++;
130 }
131}
132#endif
@ JustWarning
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:59
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:40
#define G4endl
Definition: G4ios.hh:57
static G4bool GetColour(const G4String &key, G4Colour &result)
Definition: G4Colour.cc:155
G4Colour & operator[](const T &quantity)
bool GetColour(const T &, G4Colour &) const
void Print(std::ostream &ostr) const
const std::map< T, G4Colour > & GetBasicMap() const
void Set(const T &, const G4String &)
virtual ~G4ModelColourMap()
void Set(const T &, const G4Colour &)