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;
17  fileName << theFileNameBase << chamberType;
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 
23  int nhits = read_nhits(fin, chamberType);
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 
39 int AsciiNeutronReader::read_nhits(ifstream& fin, int chamberType) {
40  int nhits = 0;
41  // go to the last saved place
42  fin.seekg(theStreamPos[chamberType]);
43  if (fin.eof()) {
44  resetStreampos(fin, chamberType);
45  }
46  LogDebug("NeutronReader") << "starting from pos " << theStreamPos[chamberType] << " EOF " << fin.eof();
47  fin >> nhits;
48  if (fin.eof()) {
49  resetStreampos(fin, chamberType);
50  fin >> nhits;
51  }
52  LogDebug("NeutronReader") << "returning nhits " << nhits;
53  return nhits;
54 }
55 
56 void AsciiNeutronReader::resetStreampos(ifstream& fin, int chamberType) {
57  LogDebug("NeutronReader") << "reached EOF, resetting streampos ";
58  theStreamPos[chamberType] = 0;
59  fin.clear();
60  fin.seekg(0, ios::beg);
61 }
MessageLogger.h
mps_splice.entry
entry
Definition: mps_splice.py:68
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
AsciiNeutronReader::AsciiNeutronReader
AsciiNeutronReader(std::string fileNameBase)
Definition: AsciiNeutronReader.cc:10
AsciiNeutronReader::readNextEvent
void readNextEvent(int chamberType, edm::PSimHitContainer &result) override
Definition: AsciiNeutronReader.cc:15
MillePedeFileConverter_cfg.fileName
fileName
Definition: MillePedeFileConverter_cfg.py:32
AsciiNeutronReader::theStreamPos
std::vector< std::streampos > theStreamPos
Definition: AsciiNeutronReader.h:28
FileInPath.h
EDMException.h
groupFilesInBlocks.fin
fin
Definition: groupFilesInBlocks.py:94
theta
Geom::Theta< T > theta() const
Definition: Basic3DVectorLD.h:150
Point3DBase< float, LocalTag >
nhits
Definition: HIMultiTrackSelector.h:42
AsciiNeutronReader::theFileNameBase
std::string theFileNameBase
Definition: AsciiNeutronReader.h:27
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:670
recoMuon::in
Definition: RecoMuonEnumerators.h:6
DDAxes::phi
type
type
Definition: HCALResponse.h:21
AsciiNeutronReader::read_nhits
int read_nhits(std::ifstream &fin, int chamberType)
Definition: AsciiNeutronReader.cc:39
std
Definition: JetResolutionObject.h:76
Exception
Definition: hltDiff.cc:246
AsciiNeutronReader::resetStreampos
void resetStreampos(std::ifstream &fin, int chamberType)
Definition: AsciiNeutronReader.cc:56
HLT_2018_cff.track
track
Definition: HLT_2018_cff.py:10352
mps_fire.result
result
Definition: mps_fire.py:303
edm::PSimHitContainer
std::vector< PSimHit > PSimHitContainer
Definition: PSimHitContainer.h:11
beamvalidation.exit
def exit(msg="")
Definition: beamvalidation.py:53
PSimHit
Definition: PSimHit.h:15
AsciiNeutronReader.h