CMS 3D CMS Logo

AsciiNeutronReader.cc
Go to the documentation of this file.
5 #include <sstream>
6 #include <iostream>
7 
8 using namespace std;
9 
11  : theFileNameBase(fileNameBase),
12  //theStreamPos(nChamberTypes+1, 0) //TODO WON"T WORK! replace with a map
13  theStreamPos(11, 0) {}
14 
16  stringstream fileName;
18  ifstream fin(fileName.str().c_str(), ios::in);
19  if (!fin.is_open()) {
20  throw cms::Exception("NeutronReader") << "Muon neutron noise file missing " << fileName.str();
21  }
22 
24  for (int ihit = 0; ihit < nhits; ++ihit) {
25  float entryX, entryY, entryZ, exitX, exitY, exitZ;
26  float p, tof, eloss, theta, phi;
27  int type, layer, track;
28 
29  fin >> entryX >> entryY >> entryZ >> exitX >> exitY >> exitZ >> p >> tof >> eloss >> type >> layer >> track >>
30  theta >> phi;
31  LocalPoint entry(entryX, entryY, entryZ);
32  LocalPoint exit(exitX, exitY, exitZ);
33  PSimHit phit(entry, exit, p, tof, eloss, type, layer, track, theta, phi);
34  result.push_back(phit);
35  }
36  theStreamPos[chamberType] = fin.tellg();
37 }
38 
40  int nhits = 0;
41  // go to the last saved place
43  if (fin.eof()) {
45  }
46  LogDebug("NeutronReader") << "starting from pos " << theStreamPos[chamberType] << " EOF " << fin.eof();
47  fin >> nhits;
48  if (fin.eof()) {
50  fin >> nhits;
51  }
52  LogDebug("NeutronReader") << "returning nhits " << nhits;
53  return nhits;
54 }
55 
57  LogDebug("NeutronReader") << "reached EOF, resetting streampos ";
59  fin.clear();
60  fin.seekg(0, ios::beg);
61 }
void readNextEvent(int chamberType, edm::PSimHitContainer &result) override
std::string theFileNameBase
std::vector< std::streampos > theStreamPos
AsciiNeutronReader(std::string fileNameBase)
std::vector< PSimHit > PSimHitContainer
int read_nhits(std::ifstream &fin, int chamberType)
void resetStreampos(std::ifstream &fin, int chamberType)
#define LogDebug(id)
def exit(msg="")