source: trunk/examples/advanced/composite_calorimeter/src/CCalutils.cc@ 964

Last change on this file since 964 was 807, checked in by garnier, 17 years ago

update

File size: 3.7 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: CCalutils.cc
28// Description: General utilities.
29///////////////////////////////////////////////////////////////////////////////
30#include "CCalutils.hh"
31#include "G4ios.hh"
32#include "G4UnitsTable.hh"
33
34#include <sstream>
35
36
37G4String operator+(const G4String& str, const int i) {
38 std::ostringstream os;
39 os << str << i <<'\0';
40 G4String back = os.str();
41 return back;
42}
43
44
45G4String operator+(const G4String& str, const double i) {
46 std::ostringstream os;
47 os << str << i <<'\0';
48 G4String back = os.str();
49 return back;
50}
51
52
53std::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
72std::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
89std::ostream& tab(std::ostream& os) {
90 os << '\t';
91 return os;
92}
93
94
95std::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
116bool 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}
Note: See TracBrowser for help on using the repository browser.