SimG4CMS
ShowerLibraryProducer
plugins
HcalForwardLibWriter.cc
Go to the documentation of this file.
1
#include "
SimG4CMS/ShowerLibraryProducer/interface/HcalForwardLibWriter.h
"
2
3
#include "TFile.h"
4
#include "TTree.h"
5
6
HcalForwardLibWriter::HcalForwardLibWriter
(
const
edm::ParameterSet
& iConfig) {
7
edm::ParameterSet
theParms = iConfig.
getParameter
<
edm::ParameterSet
>(
"HcalForwardLibWriterParameters"
);
8
edm::FileInPath
fp
= theParms.
getParameter
<
edm::FileInPath
>(
"FileName"
);
9
nbins
= theParms.
getParameter
<
int
>(
"Nbins"
);
10
nshowers
= theParms.
getParameter
<
int
>(
"Nshowers"
);
11
12
std::string
pName =
fp
.fullPath();
13
if
(pName.find(
'.'
) == 0)
14
pName.erase(0, 2);
15
theDataFile
= pName;
16
readUserData
();
17
18
int
bsize = 64000;
19
fs
->
file
().cd();
20
LibTree
=
new
TTree(
"HFSimHits"
,
"HFSimHits"
);
21
LibTree
->Branch(
"emParticles"
,
"HFShowerPhotons-emParticles"
, &
emColl
, bsize);
22
LibTree
->Branch(
"hadParticles"
,
"HFShowerPhotons-hadParticles"
, &
hadColl
, bsize);
23
}
24
25
HcalForwardLibWriter::~HcalForwardLibWriter
() {}
26
27
void
HcalForwardLibWriter::analyze
(
const
edm::Event
&
iEvent
,
const
edm::EventSetup
& iSetup) {
28
// Event info
29
std::vector<double> en;
30
double
momBin[16] = {2, 3, 5, 7, 10, 15, 20, 30, 50, 75, 100, 150, 250, 350, 500, 1000};
31
en.reserve(
nbins
);
32
for
(
int
i
= 0;
i
<
nbins
; ++
i
)
33
en.push_back(momBin[
i
]);
34
35
//shower photons
36
int
n
=
theFileHandle
.size();
37
// cycle over files ++++++++++++++++++++++++++++++++++++++++++++++++++++
38
for
(
int
i
= 0;
i
<
n
; ++
i
) {
39
std::string
fn
=
theFileHandle
[
i
].name;
40
std::string
particle =
theFileHandle
[
i
].id;
41
TFile*
theFile
=
new
TFile(
fn
.c_str(),
"READ"
);
42
TTree*
theTree
= (TTree*)gDirectory->Get(
"g4SimHits/CherenkovPhotons"
);
43
int
nphot = 0;
44
float
x
[10000];
45
float
y
[10000];
46
float
z
[10000];
47
float
t
[10000];
48
float
lambda[10000];
49
int
fiberId[10000];
50
for
(
int
kk
= 0;
kk
< 10000; ++
kk
) {
51
x
[
kk
] = 0.;
52
y
[
kk
] = 0.;
53
z
[
kk
] = 0.;
54
t
[
kk
] = 0.;
55
lambda[
kk
] = 0.;
56
fiberId[
kk
] = 0;
57
}
58
theTree
->SetBranchAddress(
"nphot"
, &nphot);
59
theTree
->SetBranchAddress(
"x"
, &
x
);
60
theTree
->SetBranchAddress(
"y"
, &
y
);
61
theTree
->SetBranchAddress(
"z"
, &
z
);
62
theTree
->SetBranchAddress(
"t"
, &
t
);
63
theTree
->SetBranchAddress(
"lambda"
, &lambda);
64
theTree
->SetBranchAddress(
"fiberId"
, &fiberId);
65
int
nentries =
int
(
theTree
->GetEntries());
66
if
(nentries > 5000)
67
nentries = 5000;
68
int
nbytes = 0;
69
// cycle over showers ====================================================
70
for
(
int
iev = 0; iev < nentries; iev++) {
71
nbytes +=
theTree
->GetEntry(iev);
72
if
(particle ==
"electron"
) {
73
emColl
.clear();
74
}
else
{
75
hadColl
.clear();
76
}
77
float
nphot_long = 0;
78
float
nphot_short = 0;
79
// cycle over photons in shower -------------------------------------------
80
for
(
int
iph = 0; iph < nphot; ++iph) {
81
if
(fiberId[iph] == 1) {
82
nphot_long++;
83
}
else
{
84
nphot_short++;
85
z
[iph] = -
z
[iph];
86
}
87
88
HFShowerPhoton::Point
pos
(
x
[iph],
y
[iph],
z
[iph]);
89
HFShowerPhoton
aPhoton(
pos
,
t
[iph], lambda[iph]);
90
if
(particle ==
"electron"
) {
91
emColl
.push_back(aPhoton);
92
}
else
{
93
hadColl
.push_back(aPhoton);
94
}
95
}
96
// end of cycle over photons in shower -------------------------------------------
97
98
// if(iev>0) LibTree->SetBranchStatus("HFShowerLibInfo",0);
99
if
(particle ==
"electron"
) {
100
LibTree
->SetBranchStatus(
"hadParticles"
,
false
);
101
}
else
{
102
LibTree
->SetBranchStatus(
"emParticles"
,
false
);
103
}
104
LibTree
->Fill();
105
if
(particle ==
"electron"
) {
106
emColl
.clear();
107
}
else
{
108
hadColl
.clear();
109
}
110
}
111
// end of cycle over showers ====================================================
112
theFile
->Close();
113
}
114
// end of cycle over files ++++++++++++++++++++++++++++++++++++++++++++++++++++
115
}
116
117
void
HcalForwardLibWriter::beginJob
() {}
118
119
void
HcalForwardLibWriter::endJob
() {
120
fs
->
file
().cd();
121
LibTree
->Write();
122
LibTree
->Print();
123
}
124
125
int
HcalForwardLibWriter::readUserData
(
void
) {
126
std::ifstream
input
(
theDataFile
.c_str());
127
if
(
input
.fail()) {
128
return
0;
129
}
130
std::string
theFileName, thePID;
131
int
mom;
132
int
k
= 0;
133
while
(!
input
.eof()) {
134
input
>> theFileName >> thePID >> mom;
135
if
(!
input
.fail()) {
136
FileHandle
aFile;
137
aFile.
name
= theFileName;
138
aFile.
id
= thePID;
139
aFile.
momentum
= mom;
140
theFileHandle
.push_back(aFile);
141
++
k
;
142
}
else
{
143
input
.clear();
144
}
145
input
.ignore(999,
'\n'
);
146
}
147
return
k
;
148
}
149
//define this as a plug-in
150
DEFINE_FWK_MODULE
(
HcalForwardLibWriter
);
DDAxes::y
mps_fire.i
i
Definition:
mps_fire.py:428
input
static const std::string input
Definition:
EdmProvDump.cc:48
dqmiodumpmetadata.n
n
Definition:
dqmiodumpmetadata.py:28
HcalForwardLibWriter::hadColl
HFShowerPhotonCollection hadColl
Definition:
HcalForwardLibWriter.h:56
HcalForwardLibWriter::analyze
void analyze(const edm::Event &, const edm::EventSetup &) override
Definition:
HcalForwardLibWriter.cc:27
HcalForwardLibWriter::HcalForwardLibWriter
HcalForwardLibWriter(const edm::ParameterSet &)
Definition:
HcalForwardLibWriter.cc:6
TFileService::file
TFile & file() const
return opened TFile
Definition:
TFileService.h:37
pos
Definition:
PixelAliasList.h:18
personalPlayback.fp
fp
Definition:
personalPlayback.py:523
HcalForwardLibWriter::endJob
void endJob() override
Definition:
HcalForwardLibWriter.cc:119
DDAxes::x
HcalForwardLibWriter::theFile
TFile * theFile
Definition:
HcalForwardLibWriter.h:45
HcalForwardLibWriter::theTree
TTree * theTree
Definition:
HcalForwardLibWriter.h:46
edm::FileInPath
Definition:
FileInPath.h:64
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition:
MakerMacros.h:16
DDAxes::z
HcalForwardLibWriter::theFileHandle
std::vector< FileHandle > theFileHandle
Definition:
HcalForwardLibWriter.h:52
GetRecoTauVFromDQM_MC_cff.kk
kk
Definition:
GetRecoTauVFromDQM_MC_cff.py:84
dqmdumpme.k
k
Definition:
dqmdumpme.py:60
HcalForwardLibWriter::LibTree
TTree * LibTree
Definition:
HcalForwardLibWriter.h:48
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition:
AlCaHLTBitMon_QueryRunRegistry.py:256
HcalForwardLibWriter
Definition:
HcalForwardLibWriter.h:27
HFShowerPhoton::Point
math::XYZPointF Point
point in the space
Definition:
HFShowerPhoton.h:16
edm::ParameterSet
Definition:
ParameterSet.h:47
HcalForwardLibWriter::FileHandle::name
std::string name
Definition:
HcalForwardLibWriter.h:30
HcalForwardLibWriter::FileHandle::momentum
int momentum
Definition:
HcalForwardLibWriter.h:32
createfilelist.int
int
Definition:
createfilelist.py:10
iEvent
int iEvent
Definition:
GenABIO.cc:224
edm::EventSetup
Definition:
EventSetup.h:57
HcalForwardLibWriter::nbins
int nbins
Definition:
HcalForwardLibWriter.h:42
HcalForwardLibWriter.h
HcalForwardLibWriter::theDataFile
std::string theDataFile
Definition:
HcalForwardLibWriter.h:51
HcalForwardLibWriter::~HcalForwardLibWriter
~HcalForwardLibWriter() override
Definition:
HcalForwardLibWriter.cc:25
HcalForwardLibWriter::readUserData
int readUserData()
Definition:
HcalForwardLibWriter.cc:125
HFShowerPhoton
Definition:
HFShowerPhoton.h:13
HcalForwardLibWriter::beginJob
void beginJob() override
Definition:
HcalForwardLibWriter.cc:117
personalPlayback.fn
fn
Definition:
personalPlayback.py:515
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition:
ParameterSet.h:303
HcalForwardLibWriter::FileHandle
Definition:
HcalForwardLibWriter.h:29
HcalForwardLibWriter::emColl
HFShowerPhotonCollection emColl
Definition:
HcalForwardLibWriter.h:55
HcalForwardLibWriter::fs
edm::Service< TFileService > fs
Definition:
HcalForwardLibWriter.h:50
edm::Event
Definition:
Event.h:73
HcalForwardLibWriter::FileHandle::id
std::string id
Definition:
HcalForwardLibWriter.h:31
submitPVValidationJobs.t
string t
Definition:
submitPVValidationJobs.py:644
HcalForwardLibWriter::nshowers
int nshowers
Definition:
HcalForwardLibWriter.h:43
Generated for CMSSW Reference Manual by
1.8.16