ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CCalGeometryConfiguration.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file CCalGeometryConfiguration.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: CCalGeometryConfiguration.cc
28 // Description: Handles geometry configuration to be constructed
30 
32 
33 #include <fstream>
34 
35 //Comment/Uncomment next line to hide/show debug information
36 //#define debug
37 
38 
40 
42  if (!instance)
44  return instance;
45 }
46 
47 
49  G4int flag = -1;
50  auto it = theConfiguration.find(n);
51 
52  if (it != theConfiguration.cend())
53  flag = (*it).second.ConstructFlag;
54  else {
55  G4cerr << "ERROR: In CCalGeometryConfiguration::getConstructFlag(const G4String& n)"
56  << G4endl
57  << " " << n << " not found in configuration file" << G4endl;
58  }
59 
60  return flag;
61 }
62 
64  G4String fn;
65  auto it = theConfiguration.find(n);
66 
67  if (it != theConfiguration.cend())
68  fn = (*it).second.FileName;
69  else {
70  G4cerr << "ERROR: In CCalGeometryConfiguration::getFileName(const G4String& n)"
71  << G4endl
72  << " " << n << " not found in configuration file" << G4endl;
73  }
74 
75  return fn;
76 }
77 
79  theConfiguration() {
80 
82  // Open the file
83  G4String pathName = std::getenv("CCAL_CONFPATH");
84  G4String fileenv = std::getenv("CCAL_GEOMETRYCONF");
85  if (!pathName || !fileenv) {
87  ed << "ERROR: CCAL_GEOMETRYCONF and/or CCAL_CONFPATH not set" << G4endl
88  << " Set them to the geometry configuration file/path" << G4endl;
89  G4Exception("CCalGeometryConfiguration::CCalGeometryConfiguration()",
90  "ccal003",
91  FatalException,ed);
92  }
93 
94  G4cout << " ==> Opening file " << fileenv << "..." << G4endl;
95  std::ifstream is;
96  G4bool ok = openGeomFile(is, pathName, fileenv);
97  if (!ok)
98  {
99  G4Exception("CCalGeometryConfiguration::CCalGeometryConfiguration()",
100  "ccal004",
101  FatalException,"Unable to open input data file");
102  }
103 
104 
105  G4String name;
106  GCInfo gcinfo;
107 
108  while (is) {
109  readName(is, name);
110  readName(is, gcinfo.FileName);
111  is >> gcinfo.ConstructFlag >> jump;
112 #ifdef debug
113  G4cout << "CCalGeometryConfiguration constructor: Read \"" << name
114  << " \"" << gcinfo.FileName << "\"" << tab << gcinfo.ConstructFlag
115  << G4endl;
116 #endif
117  theConfiguration[name] = gcinfo;
118  }
119 
120 
121 
123  // Close the file
124  is.close();
125  G4cout << " <== Closed file " << fileenv << G4endl;
126 }