Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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// $Id$
27//
28// Generic variable->G4Colour map, where "variable" is the template
29// parameter.
30//
31// Jane Tinslay March 2006
32
33#ifndef G4MODELCOLOURMAP_HH
34#define G4MODELCOLOURMAP_HH
35
36#include "G4Colour.hh"
37#include "G4String.hh"
38#include <map>
39
40template <typename T>
42
43public: // With description
44
46
48
49 // Configuration functions
50 void Set(const T&, const G4Colour&);
51 void Set(const T&, const G4String&);
52 G4Colour& operator[](const T& quantity);
53
54 // Access functions
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>
104bool
105G4ModelColourMap<T>::GetColour(const T& quantity, G4Colour& colour) const
106{
107 typename std::map<T, G4Colour>::const_iterator iter = fMap.find(quantity);
108
109 if (iter != fMap.end()) {
110 colour = iter->second;
111 return true;
112 }
113
114 return false;
115}
116
117template <typename T>
118void
119G4ModelColourMap<T>::Print(std::ostream& ostr) const
120{
121 typename std::map<T, G4Colour>::const_iterator iter = fMap.begin();
122
123 while (iter != fMap.end()) {
124 ostr<< iter->first <<" : "<< iter->second <<G4endl;
125 iter++;
126 }
127}
128#endif
@ JustWarning
#define G4endl
Definition: G4ios.hh:52
static G4bool GetColour(const G4String &key, G4Colour &result)
Definition: G4Colour.cc:123
G4Colour & operator[](const T &quantity)
bool GetColour(const T &, G4Colour &) const
void Print(std::ostream &ostr) const
void Set(const T &, const G4String &)
virtual ~G4ModelColourMap()
void Set(const T &, const G4Colour &)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76