ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
CCalVisualisable.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file CCalVisualisable.cc
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
G4bool
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
,
G4double
r
,
G4double
g
,
G4double
b
){
63
theParameters
[
v
].
rColor
=
r
;
64
theParameters
[
v
].
gColor
=
g
;
65
theParameters
[
v
].
bColor
=
b
;
66
}
67
68
void
CCalVisualisable::setPath
() {
69
pathName
= std::getenv(
visEnvName
);
70
if
(!
pathName
) {
71
G4ExceptionDescription
ed;
72
ed <<
"ERROR: "
<<
visEnvName
<<
" environmental variable not set!"
73
<<
G4endl
;
74
ed <<
" Set it and restart."
<<
G4endl
;
75
G4Exception
(
"CCalVisualisable::setPath()"
,
"ccal007"
,
76
FatalException
,ed);
77
}
78
}
79
80
G4bool
CCalVisualisable::readFile
() {
81
if
(
visFile
==
""
) {
82
G4cerr
<<
"ERROR: No file was specified from which to read Visualisation parameters"
83
<<
G4endl
;
84
return
false
;
85
}
86
88
//Let's open the file
89
G4cout
<<
" ==> Opening file "
<<
visFile
90
<<
" to read visualisation parameters..."
91
<<
G4endl
;
92
93
G4String
pathname(
pathName
);
94
std::ifstream is;
95
#ifdef debug
96
G4cout
<<
"Viualisable : Path "
<< pathname <<
" FIle "
<<
visFile
<<
G4endl
;
97
#endif
98
G4bool
ok =
openGeomFile
(is, pathname,
visFile
);
99
if
(!ok) {
100
G4cout
<<
"WARNING: Could not read "
<<
visFile
<<
G4endl
;
101
G4cout
<<
" Default visualization parameters will be used."
<<
G4endl
;
102
return
false
;
103
}
104
105
while
(is) {
106
G4String
viewvol;
107
readName
(is,viewvol);
108
109
visType
vt =
Undefined
;
110
if
(viewvol==
"Sensitive"
)
111
vt=
Sensitive
;
112
else
if
(viewvol==
"Electronics"
)
113
vt=
Electronics
;
114
else
if
(viewvol==
"Support"
)
115
vt=
Support
;
116
else
if
(viewvol==
"Absorber"
)
117
vt=
Absorber
;
118
else
if
(viewvol==
"Cable"
)
119
vt=
Cable
;
120
else
if
(viewvol==
"OtherServices"
)
121
vt=
OtherServices
;
122
else
if
(viewvol==
"PseudoVolumes"
)
123
vt=
PseudoVolumes
;
124
else
{
125
vt=
Undefined
;
126
G4cerr
<<
"WARNING: Unknown type of visualisable object \""
<< viewvol
127
<<
"\"."
<<
G4endl
;
128
}
129
130
131
G4int
isvisible,
wireframe
;
132
G4double
r
,
g
,
b
;
133
134
is >> isvisible >> r >> g >> b >> wireframe >>
jump
;
135
136
r=
checkColorRange
(r,
'R'
);
137
g=
checkColorRange
(g,
'G'
);
138
b=
checkColorRange
(b,
'B'
);
139
140
if
(vt!=
Undefined
) {
141
#ifdef debug
142
G4cout
<<
tab
<< viewvol <<
tab
<< isvisible <<
tab
143
<< r <<
" "
<< g <<
" "
<< b <<
tab
144
<< wireframe <<
G4endl
;
145
#endif
146
theParameters
[vt]=
visParameters
(isvisible, r, g, b, wireframe);
147
}
148
149
}
150
152
// Close the file
153
G4cout
<<
" ==> Closing file "
<<
visFile
<<
G4endl
;
154
is.close();
155
156
return
true
;
157
}
158
159
G4double
CCalVisualisable::checkColorRange
(
G4double
cvalue,
char
ctype)
const
{
160
if
(cvalue>1) {
161
G4cerr
<<
"ERROR: In "
<<
visFile
<<
". Color "
<< ctype <<
"="
162
<< cvalue <<
" > 1"
<<
G4endl
;
163
G4cerr
<<
" It will be reset to 1."
<<
G4endl
;
164
return
1.;
165
}
166
if
(cvalue<0) {
167
G4cerr
<<
"ERROR: In "
<<
visFile
<<
". Color "
<< ctype <<
"="
168
<< cvalue <<
" < 0"
<<
G4endl
;
169
G4cerr
<<
" It will be reset to 0."
<<
G4endl
;
170
return
0.;
171
}
172
return
cvalue;
173
}
geant4
tree
geant4-10.6-release
examples
advanced
composite_calorimeter
src
CCalVisualisable.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:24:57
using
1.8.2 with
ECCE GitHub integration