Geant4  v4-10.4-release
 모두 클래스 네임스페이스들 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 Friends 매크로 그룹들 페이지들
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 
42  if (!pathName)
43  setPath();
44  setDefault();
45  readFile();
46 }
47 
49  visFile=file;
50  return readFile();
51 }
52 
60 }
61 
62 void CCalVisualisable::setColor(visType v, double r, double g, double b){
63  theParameters[v].rColor=r;
65  theParameters[v].bColor=b;
66 }
67 
69  pathName = getenv(visEnvName);
70  if (!pathName) {
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 
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  bool 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  int isvisible, wireframe;
132  double 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 double CCalVisualisable::checkColorRange(double 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 }
visParameters theParameters[TotalVisTypes]
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:45
#define G4endl
Definition: G4ios.hh:61
double checkColorRange(double color, char type) const
void setColor(visType v, double r, double g, double b)
CCalVisualisable(G4String file)
std::ifstream & readName(std::ifstream &, G4String &)
Definition: CCalutils.cc:53
static constexpr double g
Definition: G4SIunits.hh:183
bool openGeomFile(std::ifstream &is, const G4String &pathname, const G4String &filename)
Definition: CCalutils.cc:116
static const char * pathName
G4GLOB_DLL std::ostream G4cerr
std::ostream & tab(std::ostream &)
Definition: CCalutils.cc:89
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.hh:65
std::istream & jump(std::istream &)
Definition: CCalutils.cc:95
TFile * file
const char * visEnvName
G4GLOB_DLL std::ostream G4cout
static void setPath()