SimMuon
Neutron
src
AsciiNeutronReader.cc
Go to the documentation of this file.
1
#include "
SimMuon/Neutron/src/AsciiNeutronReader.h
"
2
#include "
FWCore/MessageLogger/interface/MessageLogger.h
"
3
#include "
FWCore/Utilities/interface/EDMException.h
"
4
#include "
FWCore/ParameterSet/interface/FileInPath.h
"
5
#include <sstream>
6
#include <iostream>
7
8
using namespace
std
;
9
10
AsciiNeutronReader::AsciiNeutronReader
(
string
fileNameBase)
11
: theFileNameBase(fileNameBase),
12
//theStreamPos(nChamberTypes+1, 0) //TODO WON"T WORK! replace with a map
13
theStreamPos(11, 0) {}
14
15
void
AsciiNeutronReader::readNextEvent
(
int
chamberType,
edm::PSimHitContainer
&
result
) {
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
}
HLT_FULL_cff.track
track
Definition:
HLT_FULL_cff.py:11713
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
phase1PixelTopology::layer
constexpr std::array< uint8_t, layerIndexSize > layer
Definition:
phase1PixelTopology.h:99
AsciiNeutronReader::theFileNameBase
std::string theFileNameBase
Definition:
AsciiNeutronReader.h:27
LogDebug
#define LogDebug(id)
Definition:
MessageLogger.h:233
type
type
Definition:
SiPixelVCal_PayloadInspector.cc:37
recoMuon::in
Definition:
RecoMuonEnumerators.h:6
gainCalibHelper::gainCalibPI::type
type
Definition:
SiPixelGainCalibHelper.h:40
DDAxes::phi
AsciiNeutronReader::read_nhits
int read_nhits(std::ifstream &fin, int chamberType)
Definition:
AsciiNeutronReader.cc:39
std
Definition:
JetResolutionObject.h:76
Exception
Definition:
hltDiff.cc:245
AsciiNeutronReader::resetStreampos
void resetStreampos(std::ifstream &fin, int chamberType)
Definition:
AsciiNeutronReader.cc:56
mps_fire.result
result
Definition:
mps_fire.py:311
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
Generated for CMSSW Reference Manual by
1.8.16