Main Page
Namespaces
Classes
Package Documentation
RecoRomanPot
RecoFP420
plugins
ClusterizerFP420.cc
Go to the documentation of this file.
1
// File: ClusterizerFP420.cc
3
// Date: 12.2006
4
// Description: ClusterizerFP420 for FP420
5
// Modifications:
7
#include <memory>
8
#include <string>
9
10
#include "
FWCore/Framework/interface/Frameworkfwd.h
"
11
#include "
FWCore/Framework/interface/EDProducer.h
"
12
#include "
FWCore/ParameterSet/interface/ParameterSet.h
"
13
#include "
FWCore/Framework/interface/Event.h
"
14
#include "
FWCore/Framework/interface/MakerMacros.h
"
15
#include "
FWCore/Framework/interface/EventSetup.h
"
16
#include "
FWCore/Framework/interface/ESHandle.h
"
17
18
#include "
Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h
"
19
#include "
Geometry/CommonDetUnit/interface/GeomDetType.h
"
20
#include "
Geometry/Records/interface/TrackerDigiGeometryRecord.h
"
21
#include "
Geometry/TrackerNumberingBuilder/interface/GeometricDet.h
"
22
23
#include "
DataFormats/Common/interface/DetSetVector.h
"
24
//#include "SimGeneral/HepPDTRecord/interface/ParticleDataTable.h"
25
26
27
#include "
RecoRomanPot/RecoFP420/interface/ClusterizerFP420.h
"
28
#include "
DataFormats/FP420Digi/interface/DigiCollectionFP420.h
"
29
#include "
DataFormats/FP420Cluster/interface/ClusterCollectionFP420.h
"
30
#include "
RecoRomanPot/RecoFP420/interface/ClusterNoiseFP420.h
"
31
32
//Random Number
33
#include "
FWCore/ServiceRegistry/interface/Service.h
"
34
#include "
FWCore/Utilities/interface/RandomNumberGenerator.h
"
35
#include "
FWCore/Utilities/interface/Exception.h
"
36
#include "CLHEP/Random/RandomEngine.h"
37
38
#include <cstdlib>
39
#include <iostream>
40
using namespace
std
;
41
42
namespace
cms
43
{
44
ClusterizerFP420::ClusterizerFP420(
const
edm::ParameterSet
& conf):
45
conf_(conf) {
46
47
48
std::string
alias
( conf.
getParameter
<
std::string
>(
"@module_label"
) );
49
50
produces<ClusterCollectionFP420>().setBranchAlias( alias );
51
52
trackerContainers
.clear();
53
trackerContainers
= conf.
getParameter
<std::vector<std::string> >(
"ROUList"
);
54
55
verbosity
=
conf_
.
getUntrackedParameter
<
int
>(
"VerbosityLevel"
);
56
dn0
=
conf_
.
getParameter
<
int
>(
"NumberFP420Detectors"
);
57
sn0
=
conf_
.
getParameter
<
int
>(
"NumberFP420Stations"
);
58
pn0
=
conf_
.
getParameter
<
int
>(
"NumberFP420SPlanes"
);
59
rn0
= 7;
60
if
(verbosity > 0) {
61
std::cout
<<
"Creating a ClusterizerFP420"
<< std::endl;
62
std::cout
<<
"ClusterizerFP420: dn0="
<< dn0 <<
" sn0="
<< sn0 <<
" pn0="
<< pn0 <<
" rn0="
<< rn0 << std::endl;
63
}
64
65
sClusterizerFP420_
=
new
FP420ClusterMain
(
conf_
,dn0,sn0,pn0,rn0);
66
}
67
68
// Virtual destructor needed.
69
ClusterizerFP420::~ClusterizerFP420
() {
70
delete
sClusterizerFP420_
;
71
}
72
73
//Get at the beginning
74
void
ClusterizerFP420::beginJob
() {
75
if
(
verbosity
> 0) {
76
std::cout
<<
"BeginJob method "
<< std::endl;
77
}
78
//Getting Calibration data (Noises and BadElectrodes Flag)
79
// bool UseNoiseBadElectrodeFlagFromDB_=conf_.getParameter<bool>("UseNoiseBadElectrodeFlagFromDB");
80
// if (UseNoiseBadElectrodeFlagFromDB_==true){
81
// iSetup.get<ClusterNoiseFP420Rcd>().get(noise);// AZ: do corrections for noise here
82
//=========================================================
83
//
84
// Debug: show noise for DetIDs
85
// ElectrodNoiseMapIterator mapit = noise->m_noises.begin();
86
// for (;mapit!=noise->m_noises.end();mapit++)
87
// {
88
// unsigned int detid = (*mapit).first;
89
// std::cout << "detid " << detid << " # Electrode " << (*mapit).second.size()<<std::endl;
90
// //ElectrodNoiseVector theElectrodVector = (*mapit).second;
91
// const ElectrodNoiseVector theElectrodVector = noise->getElectrodNoiseVector(detid);
92
93
94
// int electrode=0;
95
// ElectrodNoiseVectorIterator iter=theElectrodVector.begin();
96
// //for(; iter!=theElectrodVector.end(); iter++)
97
// {
98
// std::cout << " electrode " << electrode++ << " =\t"
99
// << iter->getNoise() << " \t"
100
// << iter->getDisable() << " \t"
101
// << std::endl;
102
// }
103
// }
104
//===========================================================
105
// }
106
}
107
108
void
ClusterizerFP420::produce
(
edm::Event
&
iEvent
,
const
edm::EventSetup
& iSetup)
109
{
110
// beginJob;
111
// be lazy and include the appropriate namespaces
112
using namespace
edm
;
113
using namespace
std
;
114
if
(
verbosity
> 0) {
115
std::cout
<<
"ClusterizerFP420: produce"
<< std::endl;
116
}
117
118
// Get input
119
//A
120
// edm::Handle<DigiCollectionFP420> icf_simhit;
121
/*
122
Handle<DigiCollectionFP420> cf_simhit;
123
std::vector<const DigiCollectionFP420 *> cf_simhitvec;
124
for(uint32_t i = 0; i< trackerContainers.size();i++){
125
iEvent.getByLabel( trackerContainers[i], cf_simhit);
126
cf_simhitvec.push_back(cf_simhit.product()); }
127
std::auto_ptr<DigiCollectionFP420 > digis(new DigiCollectionFP420(cf_simhitvec));
128
129
std::vector<HDigiFP420> input;
130
DigiCollectionFP420::iterator isim;
131
for (isim=digis->begin(); isim!= digis->end();isim++) {
132
input.push_back(*isim);
133
}
134
*/
135
//B
136
137
Handle<DigiCollectionFP420>
input
;
138
try
{
139
// iEvent.getByLabel( "FP420Digi" , digis);
140
iEvent.
getByLabel
(
trackerContainers
[0] , input);
141
}
catch
(
const
Exception
&)
142
{
143
// in principal, should never happen, as it's taken care of by Framework
144
throw
cms::Exception
(
"InvalidReference"
)
145
<<
"Invalid reference to DigiCollectionFP420 \n"
;
146
}
147
148
if
(
verbosity
> 0) {
149
std::cout
<<
"ClusterizerFP420: OK1"
<< std::endl;
150
}
151
152
// Step C: create empty output collection
153
auto
soutput
= std::make_unique<ClusterCollectionFP420>();
155
/*
156
std::vector<SimVertex> input;
157
Handle<DigiCollectionFP420> digis;
158
iEvent.getByLabel("FP420Digi",digis);
159
input.insert(input.end(),digis->begin(),digis->end());
160
161
162
163
std::vector<HDigiFP420> input;
164
for(std::vector<HDigiFP420>::const_iterator vsim=digis->begin();
165
vsim!=digis->end(); ++vsim){
166
input.push_back(*vsim);
167
}
168
theSimTracks.insert(theSimTracks.end(),SimTk->begin(),SimTk->end());
169
*/
170
// std::vector<HDigiFP420> input;
171
// DigiCollectionFP420 input;
172
//input.push_back(digis);
173
// input.insert(input.end(), digis->begin(), digis->end());
174
175
/*
176
std::vector<HDigiFP420> input;
177
input.clear();
178
DigiCollectionFP420::ContainerIterator sort_begin = digis->begin();
179
DigiCollectionFP420::ContainerIterator sort_end = digis->end();
180
for ( ;sort_begin != sort_end; ++sort_begin ) {
181
input.push_back(*sort_begin);
182
} // for
183
*/
184
185
186
// put zero to container info from the beginning (important! because not any detID is updated with coming of new event !!!!!!
187
// clean info of container from previous event
188
for
(
int
det=1; det<
dn0
; det++) {
189
for
(
int
sector=1; sector<
sn0
; sector++) {
190
for
(
int
zmodule=1; zmodule<
pn0
; zmodule++) {
191
for
(
int
zside
=1;
zside
<
rn0
;
zside
++) {
192
// intindex is a continues numbering of FP420
193
unsigned
int
detID =
FP420NumberingScheme::packMYIndex
(rn0, pn0, sn0, det,
zside
, sector, zmodule);
194
std::vector<ClusterFP420> collector;
195
collector.clear();
196
ClusterCollectionFP420::Range
inputRange
;
197
inputRange.first = collector.begin();
198
inputRange.second = collector.end();
199
200
soutput
->
putclear
(inputRange,detID);
201
202
}
//for
203
}
//for
204
}
//for
205
}
//for
206
207
208
// !!!!!!
209
// if we want to keep Cluster container/Collection for one event ---> uncomment the line below and vice versa
210
soutput
->
clear
();
//container_.clear() --> start from the beginning of the container
211
212
// RUN now: !!!!!!
213
// sClusterizerFP420_.run(input, soutput, noise);
214
if
(
verbosity
> 0) {
215
std::cout
<<
"ClusterizerFP420: OK2"
<< std::endl;
216
}
217
sClusterizerFP420_
->
run
(input,
soutput
.
get
(),
noise
);
218
219
if
(
verbosity
> 0) {
220
std::cout
<<
"ClusterizerFP420: OK3"
<< std::endl;
221
}
222
223
// if(collectorZS.data.size()>0){
224
225
// std::cout <<"======= ClusterizerFP420: end of produce " << std::endl;
226
227
// Step D: write output to file
228
iEvent.
put
(
std::move
(
soutput
));
229
if
(
verbosity
> 0) {
230
std::cout
<<
"ClusterizerFP420: OK4"
<< std::endl;
231
}
232
}
//produce
233
234
}
// namespace cms
235
cms::ClusterizerFP420::produce
virtual void produce(edm::Event &e, const edm::EventSetup &c)
Definition:
ClusterizerFP420.cc:108
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
ClusterCollectionFP420.h
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
TrackerDigiGeometryRecord.h
FP420ClusterMain::run
void run(edm::Handle< DigiCollectionFP420 > &input, ClusterCollectionFP420 *soutput, std::vector< ClusterNoiseFP420 > &noise)
Runs the algorithm.
Definition:
FP420ClusterMain.cc:119
edm::Event::put
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition:
Event.h:122
Exception
Definition:
hltDiff.cc:291
RandomNumberGenerator.h
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition:
AlCaHLTBitMon_QueryRunRegistry.py:255
Event.h
MakerMacros.h
edm::Handle
Definition:
AssociativeIterator.h:47
EventSetup.h
std
Definition:
JetResolutionObject.h:76
ClusterizerFP420.h
cms::ClusterizerFP420::conf_
edm::ParameterSet conf_
Definition:
ClusterizerFP420.h:54
cms::ClusterizerFP420::verbosity
int verbosity
Definition:
ClusterizerFP420.h:64
Frameworkfwd.h
cms::ClusterizerFP420::dn0
int dn0
Definition:
ClusterizerFP420.h:63
cms::ClusterizerFP420::beginJob
virtual void beginJob()
Definition:
ClusterizerFP420.cc:74
ClusterCollectionFP420::clear
void clear()
Definition:
ClusterCollectionFP420.cc:101
cms::ClusterizerFP420::sn0
int sn0
Definition:
ClusterizerFP420.h:63
cms::ClusterizerFP420::~ClusterizerFP420
virtual ~ClusterizerFP420()
Definition:
ClusterizerFP420.cc:69
input
static std::string const input
Definition:
EdmProvDump.cc:44
DigiCollectionFP420.h
DetSetVector.h
ParameterSet.h
iEvent
int iEvent
Definition:
GenABIO.cc:230
GeometricDet.h
GeomDetType.h
FP420NumberingScheme::packMYIndex
static unsigned packMYIndex(int rn0, int pn0, int sn0, int det, int zside, int sector, int zmodule)
Definition:
FP420NumberingScheme.h:40
ESHandle.h
cms::ClusterizerFP420::pn0
int pn0
Definition:
ClusterizerFP420.h:63
Service.h
cms::ClusterizerFP420::rn0
int rn0
Definition:
ClusterizerFP420.h:63
edm::EventSetup
Definition:
EventSetup.h:45
FP420ClusterMain
Definition:
FP420ClusterMain.h:26
edm::Event::getByLabel
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition:
Event.h:413
cms::ClusterizerFP420::soutput
ClusterCollectionFP420 * soutput
Definition:
ClusterizerFP420.h:59
cms
Definition:
ProducerAnalyzer.cc:22
ClusterNoiseFP420.h
ClusterCollectionFP420::get
const Range get(unsigned int detID) const
Definition:
ClusterCollectionFP420.cc:71
EDProducer.h
HcalDigiParam_cfi.zside
zside
Definition:
HcalDigiParam_cfi.py:5
Exception.h
cms::ClusterizerFP420::sClusterizerFP420_
FP420ClusterMain * sClusterizerFP420_
Definition:
ClusterizerFP420.h:57
cms::Exception
Definition:
Exception.h:68
edm
HLT enums.
Definition:
AlignableModifier.h:17
estimatePileup.inputRange
inputRange
Get input source.
Definition:
estimatePileup.py:240
TrackerGeometry.h
edm::ParameterSet
Definition:
ParameterSet.h:36
gather_cfg.cout
cout
Definition:
gather_cfg.py:145
ClusterCollectionFP420::putclear
void putclear(Range input, unsigned int detID)
Definition:
ClusterCollectionFP420.cc:104
ClusterCollectionFP420::Range
std::pair< ContainerIterator, ContainerIterator > Range
Definition:
ClusterCollectionFP420.h:14
cms::ClusterizerFP420::trackerContainers
vstring trackerContainers
Definition:
ClusterizerFP420.h:55
edm::Event
Definition:
Event.h:66
eostools.move
def move(src, dest)
Definition:
eostools.py:510
egammaCTFFinalFitWithMaterial_cff.alias
alias
Definition:
egammaCTFFinalFitWithMaterial_cff.py:24
cms::ClusterizerFP420::noise
std::vector< ClusterNoiseFP420 > noise
Definition:
ClusterizerFP420.h:61
Generated for CMSSW Reference Manual by
1.8.11