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

Last change on this file since 1303 was 807, checked in by garnier, 16 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.