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