ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CCalutils.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file CCalutils.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: CCalutils.cc
28 // Description: General utilities.
30 #include "CCalutils.hh"
31 #include "G4ios.hh"
32 #include "G4UnitsTable.hh"
33 
34 #include <sstream>
35 
36 
37 G4String operator+(const G4String& str, const G4int i) {
38  std::ostringstream os;
39  os << str << i <<'\0';
40  G4String back = os.str();
41  return back;
42 }
43 
44 
45 G4String operator+(const G4String& str, const G4double i) {
46  std::ostringstream os;
47  os << str << i <<'\0';
48  G4String back = os.str();
49  return back;
50 }
51 
52 
53 std::ifstream& readName(std::ifstream& is, G4String& name){
54  is >> name;
55  if ( name != "*ENDDO" ) {
56  while ( name.find("#.") != G4String::npos ) { // It is a comment. Skip line.
57  is.ignore(999,'\n');
58  is >> name;
59  };
60  while ( name.rfind('\"') != name.length()-1 ) {
61  G4String other;
62  is >> other;
63  name += " ";
64  name += other;
65  };
66  name = name.strip(G4String::both, '\"');
67  }
68  return is;
69 }
70 
71 
72 std::ifstream& findDO(std::ifstream& is, const G4String& str){
73  // Loop until *DO str is found
74  G4String firstwd, dowhat;
75  dowhat = "";
76  while (dowhat != str && is) {
77  is >> firstwd;
78  while (firstwd != "*DO" && is) {
79  is.ignore(999,'\n');
80  is >> firstwd;
81  };
82  is >> dowhat;
83  };
84  is.ignore(999,'\n');
85  return is;
86 }
87 
88 
89 std::ostream& tab(std::ostream& os) {
90  os << '\t';
91  return os;
92 }
93 
94 
95 std::istream& jump(std::istream& is) {
96  char first = ' ';
97  char second = ' ';
98  is.ignore(999,'\n');
99  do {
100  is.get(first);
101  second = is.peek();
102  if (first == '#' && second =='.') {
103  is.ignore(999,'\n');
104  }
105  else if (first == '\n'); //it was already picked
106  else {
107  is.putback(first);
108  return is;
109  }
110  }
111  while (is);
112  return is;
113 }
114 
115 
116 G4bool openGeomFile(std::ifstream& is,
117  const G4String& pathname, const G4String& filename) {
118  G4String fullname = pathname+"/"+filename;
119  is.open( fullname.c_str() );
120  if (!is) {
121  G4cerr << "ERROR: Could not open file " << filename << G4endl;
122  return false;
123  }
124  return true;
125 }