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
G4ScoringManager.cc
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// $Id$
28//
29
30#include "G4ScoringManager.hh"
31#include "G4ScoringMessenger.hh"
33#include "G4VScoringMesh.hh"
34#include "G4THitsMap.hh"
35#include "G4VScoreColorMap.hh"
37#include "G4ScoreLogColorMap.hh"
38
39G4ScoringManager* G4ScoringManager::fSManager = 0;
40
41G4int G4ScoringManager::replicaLevel = 3;
42
44{
45 if(!fSManager)
46 {
47 fSManager = new G4ScoringManager;
48 }
49 return fSManager;
50}
51
53{ return fSManager; }
54
56 : verboseLevel(0),fCurrentMesh(0)
57{
58 fMessenger = new G4ScoringMessenger(this);
59 fQuantityMessenger = new G4ScoreQuantityMessenger(this);
60 fColorMapDict = new ColorMapDict();
61 fDefaultLinearColorMap = new G4DefaultLinearColorMap("defaultLinearColorMap");
62 (*fColorMapDict)[fDefaultLinearColorMap->GetName()] = fDefaultLinearColorMap;
63 G4VScoreColorMap * logColorMap = new G4ScoreLogColorMap("logColorMap");
64 (*fColorMapDict)[logColorMap->GetName()] = logColorMap;
65 writer = new G4VScoreWriter();
66}
67
69{
70 if (writer) { delete writer; }
71 delete fDefaultLinearColorMap;
72 delete fColorMapDict;
73 delete fQuantityMessenger;
74 delete fMessenger;
75 delete fSManager;
76}
77
79{ replicaLevel = lvl; }
81{ return replicaLevel; }
82
84{
85 G4String wName = map->GetSDname();
86 G4VScoringMesh* sm = FindMesh(wName);
87 if(sm == 0) return;
88 if(verboseLevel>9)
89 { G4cout << "G4ScoringManager::Accumulate() for " << map->GetSDname() << " / " << map->GetName() << G4endl;
90 G4cout << " is calling G4VScoringMesh::Accumulate() of " << sm->GetWorldName() << G4endl; }
91 sm->Accumulate(static_cast<G4THitsMap<double>*>(map));
92}
93
95{
96 G4VScoringMesh* sm = 0;
97 for(MeshVecItr itr = fMeshVec.begin(); itr != fMeshVec.end(); itr++) {
98 G4String smName = (*itr)->GetWorldName();
99 if(wName == smName) {
100 sm = *itr;
101 break;
102 }
103 }
104 if(!sm && verboseLevel>9)
105 { G4cout << "WARNING : G4ScoringManager::FindMesh() --- <" << wName << "> is not found. Null returned." << G4endl; }
106
107 return sm;
108}
109
111{
112 G4cout << "G4ScoringManager has " << GetNumberOfMesh() << " scoring meshes." << G4endl;
113 for(MeshVecConstItr itr = fMeshVec.begin(); itr != fMeshVec.end(); itr++) {
114 (*itr)->List();
115 }
116}
117
119{
120 for(MeshVecConstItr itr = fMeshVec.begin(); itr != fMeshVec.end(); itr++) {
121 (*itr)->Dump();
122 }
123}
124
126 const G4String& psName,
127 const G4String& colorMapName, G4int axflg)
128{
129 G4VScoringMesh* mesh = FindMesh(meshName);
130 if(mesh)
131 {
132 G4VScoreColorMap* colorMap = GetScoreColorMap(colorMapName);
133 if(!colorMap)
134 {
135 G4cerr << "WARNING : Score color map <" << colorMapName << "> is not found. Default linear color map is used." << G4endl;
136 colorMap = fDefaultLinearColorMap;
137 }
138 mesh->DrawMesh(psName,colorMap,axflg);
139 } else {
140 G4cerr << "ERROR : G4ScoringManager::DrawMesh() --- <"
141 << meshName << "> is not found. Nothing is done." << G4endl;
142 }
143}
144
146 const G4String& psName,
147 G4int idxPlane, G4int iColumn,
148 const G4String& colorMapName)
149{
150 G4VScoringMesh* mesh = FindMesh(meshName);
151 if(mesh)
152 {
153 G4VScoreColorMap* colorMap = GetScoreColorMap(colorMapName);
154 if(!colorMap)
155 {
156 G4cerr << "WARNING : Score color map <" << colorMapName << "> is not found. Default linear color map is used." << G4endl;
157 colorMap = fDefaultLinearColorMap;
158 }
159 mesh->DrawMesh(psName,idxPlane,iColumn,colorMap);
160 } else {
161 G4cerr << "ERROR : G4ScoringManager::DrawMesh() --- <"
162 << meshName << "> is not found. Nothing is done." << G4endl;
163 }
164}
165
167 const G4String& psName,
168 const G4String& fileName,
169 const G4String& option)
170{
171 G4VScoringMesh* mesh = FindMesh(meshName);
172 if(mesh) {
173 writer->SetScoringMesh(mesh);
174 writer->DumpQuantityToFile(psName, fileName, option);
175 } else {
176 G4cerr << "ERROR : G4ScoringManager::DrawQuantityToFile() --- <"
177 << meshName << "> is not found. Nothing is done." << G4endl;
178 }
179}
180
182 const G4String& fileName,
183 const G4String& option)
184{
185 G4VScoringMesh* mesh = FindMesh(meshName);
186 if(mesh) {
187 writer->SetScoringMesh(mesh);
188 writer->DumpAllQuantitiesToFile(fileName, option);
189 } else {
190 G4cerr << "ERROR : G4ScoringManager::DrawAllQuantitiesToFile() --- <"
191 << meshName << "> is not found. Nothing is done." << G4endl;
192 }
193}
194
196{
197 if(fColorMapDict->find(colorMap->GetName()) != fColorMapDict->end())
198 {
199 G4cerr << "ERROR : G4ScoringManager::RegisterScoreColorMap -- "
200 << colorMap->GetName() << " has already been registered. Method ignored." << G4endl;
201 }
202 else
203 {
204 (*fColorMapDict)[colorMap->GetName()] = colorMap;
205 }
206}
207
209{
210 ColorMapDictItr mItr = fColorMapDict->find(mapName);
211 if(mItr == fColorMapDict->end()) { return 0; }
212 return (mItr->second);
213}
214
216{
217 G4cout << "Registered Score Color Maps -------------------------------------------------------" << G4endl;
218 ColorMapDictItr mItr = fColorMapDict->begin();
219 for(;mItr!=fColorMapDict->end();mItr++)
220 { G4cout << " " << mItr->first; }
221 G4cout << G4endl;
222}
223
224
std::vector< G4VScoringMesh * >::const_iterator MeshVecConstItr
std::vector< G4VScoringMesh * >::iterator MeshVecItr
std::map< G4String, G4VScoreColorMap * >::iterator ColorMapDictItr
std::map< G4String, G4VScoreColorMap * > ColorMapDict
int G4int
Definition: G4Types.hh:66
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cerr
G4DLLIMPORT std::ostream G4cout
G4VScoringMesh * FindMesh(const G4String &)
static G4int GetReplicaLevel()
void Accumulate(G4VHitsCollection *map)
static void SetReplicaLevel(G4int)
size_t GetNumberOfMesh() const
G4VScoreColorMap * GetScoreColorMap(const G4String &mapName)
void DumpAllQuantitiesToFile(const G4String &meshName, const G4String &fileName, const G4String &option="")
static G4ScoringManager * GetScoringManager()
void RegisterScoreColorMap(G4VScoreColorMap *colorMap)
void DrawMesh(const G4String &meshName, const G4String &psName, const G4String &colorMapName, G4int axflg=111)
static G4ScoringManager * GetScoringManagerIfExist()
void DumpQuantityToFile(const G4String &meshName, const G4String &psName, const G4String &fileName, const G4String &option="")
G4String GetName() const
virtual void DumpQuantityToFile(const G4String &psName, const G4String &fileName, const G4String &option)
virtual void DumpAllQuantitiesToFile(const G4String &fileName, const G4String &option)
void SetScoringMesh(G4VScoringMesh *sm)
void DrawMesh(const G4String &psName, G4VScoreColorMap *colorMap, G4int axflg=111)