source: trunk/examples/advanced/composite_calorimeter/src/CCalGeometryConfiguration.cc @ 1303

Last change on this file since 1303 was 807, checked in by garnier, 16 years ago

update

File size: 4.2 KB
Line 
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//
26///////////////////////////////////////////////////////////////////////////////
27// File: CCalGeometryConfiguration.cc
28// Description: Handles geometry configuration to be constructed
29///////////////////////////////////////////////////////////////////////////////
30
31#include "CCalGeometryConfiguration.hh"
32
33#include <fstream>
34
35//Comment/Uncomment next line to hide/show debug information
36//#define debug
37
38
39CCalGeometryConfiguration * CCalGeometryConfiguration::instance = 0;
40
41CCalGeometryConfiguration* CCalGeometryConfiguration::getInstance(){
42  if (!instance) 
43    instance = new CCalGeometryConfiguration;
44  return instance;
45}
46
47
48int CCalGeometryConfiguration::getConstructFlag(const G4String& n) /*const*/ {
49  int flag = -1;
50  CCalGeometryConfIterator it = theConfiguration.find(n);
51
52  if (it != theConfiguration.end())
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
63G4String CCalGeometryConfiguration::getFileName(const G4String& n) /*const*/ {
64  G4String fn;
65  CCalGeometryConfIterator it = theConfiguration.find(n);
66
67  if (it != theConfiguration.end())
68    fn = (*it).second.FileName;
69  else {
70    G4cerr << "ERROR: In CCalGeometryConfiguration::getConstructFlag(const G4String& n)" 
71         << G4endl
72         << "       " << n << " not found in configuration file" << G4endl;
73  }
74
75  return fn;
76}
77
78CCalGeometryConfiguration::CCalGeometryConfiguration():
79  theConfiguration() {
80
81  ///////////////////////////////////////////////////////////////
82  // Open the file
83  G4String pathName = getenv("CCAL_CONFPATH");
84  G4String fileenv  = getenv("CCAL_GEOMETRYCONF");
85  if (!pathName || !fileenv) {
86    G4cerr << "ERROR: CCAL_GEOMETRYCONF and/or CCAL_CONFPATH not set" << G4endl
87         << "       Set them to the geometry configuration file/path" << G4endl;
88    exit(-2);
89  }
90
91  G4cout << " ==> Opening file " << fileenv << "..." << G4endl;
92  std::ifstream is;
93  bool ok = openGeomFile(is, pathName, fileenv);
94  if (!ok)
95    exit(-1);
96
97  G4String name;
98  GCInfo gcinfo;
99
100  while (is) {
101    readName(is, name);
102    readName(is, gcinfo.FileName);
103    is >> gcinfo.ConstructFlag >> jump;
104#ifdef debug
105    G4cout << "CCalGeometryConfiguration constructor: Read \"" << name
106         << "\" \"" << gcinfo.FileName << "\"" << tab << gcinfo.ConstructFlag
107         << G4endl;
108#endif
109    theConfiguration[name] = gcinfo;
110  }
111
112 
113
114  ///////////////////////////////////////////////////////////////
115  // Close the file 
116  is.close();
117  G4cout << " <== Closed file " << fileenv << G4endl;
118}
Note: See TracBrowser for help on using the repository browser.