ECCE @ EIC Software
 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 
42  if (!pathName)
43  setPath();
44  setDefault();
45  readFile();
46 }
47 
49  visFile=file;
50  return readFile();
51 }
52 
60 }
61 
66 }
67 
69  pathName = std::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  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 
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 }