Geant4
9.6.p02
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
geant4_9_6_p02
examples
advanced
composite_calorimeter
src
CCalVisualisable.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
//
27
// File: CCalVisualisable.cc
28
// Description: Sets visualisable attributes from .vis files
30
#include "
CCalVisualisable.hh
"
31
32
#include <fstream>
33
#include "
CCalutils.hh
"
34
35
//Comment/Uncomment next line to unset/set debug information printing
36
//#define debug
37
38
const
char
*
visEnvName
=
"CCAL_VISPATH"
;
39
const
char
* CCalVisualisable::pathName=0;
40
41
CCalVisualisable::CCalVisualisable
(
G4String
file
):visFile(file) {
42
if
(!pathName)
43
setPath
();
44
setDefault
();
45
readFile
();
46
}
47
48
bool
CCalVisualisable::readFile
(
G4String
file
) {
49
visFile=
file
;
50
return
readFile
();
51
}
52
53
void
CCalVisualisable::setDefault
(){
54
theParameters[
Sensitive
] = visParameters(
true
);
55
theParameters[
Electronics
] = visParameters(
false
);
56
theParameters[
Support
] = visParameters(
false
);
57
theParameters[
Cable
] = visParameters(
false
);
58
theParameters[
OtherServices
] = visParameters(
false
);
59
theParameters[
PseudoVolumes
] = visParameters(
false
);
60
}
61
62
void
CCalVisualisable::setColor
(
visType
v
,
double
r
,
double
g
,
double
b
){
63
theParameters[
v
].rColor=
r
;
64
theParameters[
v
].gColor=
g
;
65
theParameters[
v
].bColor=
b
;
66
}
67
68
void
CCalVisualisable::setPath
() {
69
pathName = getenv(
visEnvName
);
70
if
(!pathName) {
71
G4cerr
<<
"ERROR: "
<<
visEnvName
<<
" environmental variable not set!"
72
<<
G4endl
;
73
G4cerr
<<
" Set it and restart."
<<
G4endl
;
74
exit(-333);
75
}
76
}
77
78
bool
CCalVisualisable::readFile
() {
79
if
(visFile==
""
) {
80
G4cerr
<<
"ERROR: No file was specified from which to read Visualisation parameters"
81
<<
G4endl
;
82
return
false
;
83
}
84
86
//Let's open the file
87
G4cout
<<
" ==> Opening file "
<< visFile
88
<<
" to read visualisation parameters..."
89
<<
G4endl
;
90
91
G4String
pathname(pathName);
92
std::ifstream is;
93
#ifdef debug
94
G4cout
<<
"Viualisable : Path "
<< pathname <<
" FIle "
<< visFile <<
G4endl
;
95
#endif
96
bool
ok =
openGeomFile
(is, pathname, visFile);
97
if
(!ok) {
98
G4cout
<<
"WARNING: Could not read "
<< visFile <<
G4endl
;
99
G4cout
<<
" Default visualization parameters will be used."
<<
G4endl
;
100
return
false
;
101
}
102
103
while
(is) {
104
G4String
viewvol;
105
readName
(is,viewvol);
106
107
visType
vt =
Undefined
;
108
if
(viewvol==
"Sensitive"
)
109
vt=
Sensitive
;
110
else
if
(viewvol==
"Electronics"
)
111
vt=
Electronics
;
112
else
if
(viewvol==
"Support"
)
113
vt=
Support
;
114
else
if
(viewvol==
"Absorber"
)
115
vt=
Absorber
;
116
else
if
(viewvol==
"Cable"
)
117
vt=
Cable
;
118
else
if
(viewvol==
"OtherServices"
)
119
vt=
OtherServices
;
120
else
if
(viewvol==
"PseudoVolumes"
)
121
vt=
PseudoVolumes
;
122
else
{
123
vt=
Undefined
;
124
G4cerr
<<
"WARNING: Unknown type of visualisable object \""
<< viewvol
125
<<
"\"."
<<
G4endl
;
126
}
127
128
129
int
isvisible, wireframe;
130
double
r
,
g
,
b
;
131
132
is >> isvisible >> r >> g >> b >> wireframe >>
jump
;
133
134
r=checkColorRange(r,
'R'
);
135
g=checkColorRange(g,
'G'
);
136
b=checkColorRange(b,
'B'
);
137
138
if
(vt!=
Undefined
) {
139
#ifdef debug
140
G4cout
<<
tab
<< viewvol <<
tab
<< isvisible <<
tab
141
<< r <<
" "
<< g <<
" "
<< b <<
tab
142
<< wireframe <<
G4endl
;
143
#endif
144
theParameters[vt]=visParameters(isvisible, r, g, b, wireframe);
145
}
146
147
}
148
150
// Close the file
151
G4cout
<<
" ==> Closing file "
<< visFile <<
G4endl
;
152
is.close();
153
154
return
true
;
155
}
156
157
double
CCalVisualisable::checkColorRange(
double
cvalue,
char
ctype)
const
{
158
if
(cvalue>1) {
159
G4cerr
<<
"ERROR: In "
<< visFile <<
". Color "
<< ctype <<
"="
160
<< cvalue <<
" > 1"
<<
G4endl
;
161
G4cerr
<<
" It will be reset to 1."
<<
G4endl
;
162
return
1.;
163
}
164
if
(cvalue<0) {
165
G4cerr
<<
"ERROR: In "
<< visFile <<
". Color "
<< ctype <<
"="
166
<< cvalue <<
" < 0"
<<
G4endl
;
167
G4cerr
<<
" It will be reset to 0."
<<
G4endl
;
168
return
0.;
169
}
170
return
cvalue;
171
}
Generated on Sat May 25 2013 14:32:07 for Geant4 by
1.8.4