CMS 3D CMS Logo

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 
17 
21 
23 //#include "SimGeneral/HepPDTRecord/interface/ParticleDataTable.h"
24 
29 
30 //Random Number
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 
60  }
61 
62  // Virtual destructor needed.
64 
65  //Get at the beginning
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 
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 
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();
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  }
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:218
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
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
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
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