Main Page
Namespaces
Classes
Package Documentation
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
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
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:112
edm::Event::put
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition:
Event.h:133
Exception
Definition:
hltDiff.cc:245
RandomNumberGenerator.h
cms::ClusterizerFP420::beginJob
void beginJob() override
Definition:
ClusterizerFP420.cc:66
HLT_FULL_cff.alias
tuple alias
Definition:
HLT_FULL_cff.py:9825
Event.h
MakerMacros.h
edm::Handle
Definition:
AssociativeIterator.h:50
EventSetup.h
ClusterizerFP420.h
cms::ClusterizerFP420::conf_
edm::ParameterSet conf_
Definition:
ClusterizerFP420.h:45
ecaldqm::zside
int zside(DetId const &)
Definition:
EcalDQMCommonUtils.cc:189
cms::ClusterizerFP420::verbosity
int verbosity
Definition:
ClusterizerFP420.h:55
Frameworkfwd.h
cms::ClusterizerFP420::dn0
int dn0
Definition:
ClusterizerFP420.h:54
ClusterCollectionFP420::clear
void clear()
Definition:
ClusterCollectionFP420.cc:97
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition:
AlCaHLTBitMon_QueryRunRegistry.py:256
cms::ClusterizerFP420::sn0
int sn0
Definition:
ClusterizerFP420.h:54
input
static std::string const input
Definition:
EdmProvDump.cc:47
DigiCollectionFP420.h
DetSetVector.h
ParameterSet.h
iEvent
int iEvent
Definition:
GenABIO.cc:224
GeomDetType.h
FP420NumberingScheme::packMYIndex
static unsigned packMYIndex(int rn0, int pn0, int sn0, int det, int zside, int sector, int zmodule)
Definition:
FP420NumberingScheme.h:37
eostools.move
def move
Definition:
eostools.py:511
ESHandle.h
cms::ClusterizerFP420::pn0
int pn0
Definition:
ClusterizerFP420.h:54
Service.h
cms::ClusterizerFP420::rn0
int rn0
Definition:
ClusterizerFP420.h:54
edm::EventSetup
Definition:
EventSetup.h:59
FP420ClusterMain
Definition:
FP420ClusterMain.h:25
edm::Event::getByLabel
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition:
Event.h:500
cms::ClusterizerFP420::soutput
ClusterCollectionFP420 * soutput
Definition:
ClusterizerFP420.h:50
ClusterNoiseFP420.h
ClusterCollectionFP420::get
const Range get(unsigned int detID) const
Definition:
ClusterCollectionFP420.cc:69
EDProducer.h
Exception.h
cms::ClusterizerFP420::sClusterizerFP420_
FP420ClusterMain * sClusterizerFP420_
Definition:
ClusterizerFP420.h:48
cms::ClusterizerFP420::produce
void produce(edm::Event &e, const edm::EventSetup &c) override
Definition:
ClusterizerFP420.cc:99
cms::Exception
Definition:
Exception.h:70
pileupCalc.inputRange
tuple inputRange
Definition:
pileupCalc.py:168
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition:
ParameterSet.h:303
TrackerGeometry.h
edm::ParameterSet
Definition:
ParameterSet.h:47
gather_cfg.cout
tuple cout
Definition:
gather_cfg.py:144
ClusterCollectionFP420::putclear
void putclear(Range input, unsigned int detID)
Definition:
ClusterCollectionFP420.cc:98
cms::ClusterizerFP420::~ClusterizerFP420
~ClusterizerFP420() override
Definition:
ClusterizerFP420.cc:63
ClusterCollectionFP420::Range
std::pair< ContainerIterator, ContainerIterator > Range
Definition:
ClusterCollectionFP420.h:12
cms::ClusterizerFP420::trackerContainers
vstring trackerContainers
Definition:
ClusterizerFP420.h:46
edm::Event
Definition:
Event.h:73
cms::ClusterizerFP420::noise
std::vector< ClusterNoiseFP420 > noise
Definition:
ClusterizerFP420.h:52
Generated for CMSSW Reference Manual by
1.8.5