Geant4_10
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 
42  if (!pathName)
43  setPath();
44  setDefault();
45  readFile();
46 }
47 
49  visFile=file;
50  return readFile();
51 }
52 
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 
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 
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 }
static void setPath()
bool openGeomFile(std::ifstream &is, const G4String &pathname, const G4String &filename)
Definition: CCalutils.cc:116
std::istream & jump(std::istream &)
Definition: CCalutils.cc:95
const char * visEnvName
TFile * file
function g(Y1, Y2, PT2)
Definition: hijing1.383.f:5205
tuple b
Definition: test.py:12
std::ifstream & readName(std::ifstream &, G4String &)
Definition: CCalutils.cc:53
G4GLOB_DLL std::ostream G4cout
std::ostream & tab(std::ostream &)
Definition: CCalutils.cc:89
void setColor(visType v, double r, double g, double b)
tuple v
Definition: test.py:18
jump r
Definition: plot.C:36
#define G4endl
Definition: G4ios.hh:61
CCalVisualisable(G4String file)
G4GLOB_DLL std::ostream G4cerr