CMS 3D CMS Logo

GlobalDigisProducer.cc
Go to the documentation of this file.
1 
11 
13  : fName(""),
14  verbosity(0),
15  frequency(0),
16  label(""),
17  getAllProvenances(false),
18  printProvenanceInfo(false),
19  theCSCStripPedestalSum(0),
20  theCSCStripPedestalCount(0),
21  count(0) {
22  std::string MsgLoggerCat = "GlobalDigisProducer_GlobalDigisProducer";
23 
24  // get information from parameter set
25  fName = iPSet.getUntrackedParameter<std::string>("Name");
26  verbosity = iPSet.getUntrackedParameter<int>("Verbosity");
27  frequency = iPSet.getUntrackedParameter<int>("Frequency");
28  label = iPSet.getParameter<std::string>("Label");
29  edm::ParameterSet m_Prov = iPSet.getParameter<edm::ParameterSet>("ProvenanceLookup");
30  getAllProvenances = m_Prov.getUntrackedParameter<bool>("GetAllProvenances");
31  printProvenanceInfo = m_Prov.getUntrackedParameter<bool>("PrintProvenanceInfo");
32 
33  // get Labels to use to extract information
34  ECalEBSrc_ = iPSet.getParameter<edm::InputTag>("ECalEBSrc");
35  ECalEESrc_ = iPSet.getParameter<edm::InputTag>("ECalEESrc");
36  ECalESSrc_ = iPSet.getParameter<edm::InputTag>("ECalESSrc");
37  HCalSrc_ = iPSet.getParameter<edm::InputTag>("HCalSrc");
38  HCalDigi_ = iPSet.getParameter<edm::InputTag>("HCalDigi");
39  SiStripSrc_ = iPSet.getParameter<edm::InputTag>("SiStripSrc");
40  SiPxlSrc_ = iPSet.getParameter<edm::InputTag>("SiPxlSrc");
41  MuDTSrc_ = iPSet.getParameter<edm::InputTag>("MuDTSrc");
42  MuCSCStripSrc_ = iPSet.getParameter<edm::InputTag>("MuCSCStripSrc");
43  MuCSCWireSrc_ = iPSet.getParameter<edm::InputTag>("MuCSCWireSrc");
44  // fix for consumes
45  ECalEBSrc_Token_ = consumes<EBDigiCollection>(iPSet.getParameter<edm::InputTag>("ECalEBSrc"));
46  ECalEESrc_Token_ = consumes<EEDigiCollection>(iPSet.getParameter<edm::InputTag>("ECalEESrc"));
47  ECalESSrc_Token_ = consumes<ESDigiCollection>(iPSet.getParameter<edm::InputTag>("ECalESSrc"));
48  HCalSrc_Token_ = consumes<edm::PCaloHitContainer>(iPSet.getParameter<edm::InputTag>("HCalSrc"));
49  HBHEDigi_Token_ = consumes<edm::SortedCollection<HBHEDataFrame>>(iPSet.getParameter<edm::InputTag>("HCalDigi"));
50  HODigi_Token_ = consumes<edm::SortedCollection<HODataFrame>>(iPSet.getParameter<edm::InputTag>("HCalDigi"));
51  HFDigi_Token_ = consumes<edm::SortedCollection<HFDataFrame>>(iPSet.getParameter<edm::InputTag>("HCalDigi"));
52  SiStripSrc_Token_ = consumes<edm::DetSetVector<SiStripDigi>>(iPSet.getParameter<edm::InputTag>("SiStripSrc"));
53  SiPxlSrc_Token_ = consumes<edm::DetSetVector<PixelDigi>>(iPSet.getParameter<edm::InputTag>("SiPxlSrc"));
54  MuDTSrc_Token_ = consumes<DTDigiCollection>(iPSet.getParameter<edm::InputTag>("MuDTSrc"));
55  MuCSCStripSrc_Token_ = consumes<CSCStripDigiCollection>(iPSet.getParameter<edm::InputTag>("MuCSCStripSrc"));
56  MuCSCWireSrc_Token_ = consumes<CSCWireDigiCollection>(iPSet.getParameter<edm::InputTag>("MuCSCWireSrc"));
57  //
58  const std::string barrelHitsName("EcalHitsEB");
59  const std::string endcapHitsName("EcalHitsEE");
60  const std::string preshowerHitsName("EcalHitsES");
61  EBHits_Token_ = consumes<CrossingFrame<PCaloHit>>(edm::InputTag(std::string("mix"), std::string("barrelHitsName")));
62  EEHits_Token_ = consumes<CrossingFrame<PCaloHit>>(edm::InputTag(std::string("mix"), std::string("endcapHitsName")));
64  consumes<CrossingFrame<PCaloHit>>(edm::InputTag(std::string("mix"), std::string("preshowerHitsName")));
65 
66  // use value of first digit to determine default output level (inclusive)
67  // 0 is none, 1 is basic, 2 is fill output, 3 is gather output
68  verbosity %= 10;
69 
70  // create persistent object
71  produces<PGlobalDigi>(label);
72 
73  // print out Parameter Set information being used
74  if (verbosity >= 0) {
75  edm::LogInfo(MsgLoggerCat) << "\n===============================\n"
76  << "Initialized as EDProducer with parameter values:\n"
77  << " Name = " << fName << "\n"
78  << " Verbosity = " << verbosity << "\n"
79  << " Frequency = " << frequency << "\n"
80  << " Label = " << label << "\n"
81  << " GetProv = " << getAllProvenances << "\n"
82  << " PrintProv = " << printProvenanceInfo << "\n"
83  << " ECalEBSrc = " << ECalEBSrc_.label() << ":" << ECalEBSrc_.instance() << "\n"
84  << " ECalEESrc = " << ECalEESrc_.label() << ":" << ECalEESrc_.instance() << "\n"
85  << " ECalESSrc = " << ECalESSrc_.label() << ":" << ECalESSrc_.instance() << "\n"
86  << " HCalSrc = " << HCalSrc_.label() << ":" << HCalSrc_.instance() << "\n"
87  << " HCalDigi = " << HCalDigi_.label() << ":" << HCalDigi_.instance() << "\n"
88  << " SiStripSrc = " << SiStripSrc_.label() << ":" << SiStripSrc_.instance() << "\n"
89  << " SiPixelSrc = " << SiPxlSrc_.label() << ":" << SiPxlSrc_.instance() << "\n"
90  << " MuDTSrc = " << MuDTSrc_.label() << ":" << MuDTSrc_.instance() << "\n"
91  << " MuCSCStripSrc = " << MuCSCStripSrc_.label() << ":" << MuCSCStripSrc_.instance()
92  << "\n"
93  << " MuCSCWireSrc = " << MuCSCWireSrc_.label() << ":" << MuCSCWireSrc_.instance()
94  << "\n"
95  << "===============================\n";
96  }
97 
98  // set default constants
99  // ECal
100  ECalgainConv_[0] = 0.;
101  ECalgainConv_[1] = 1.;
102  ECalgainConv_[2] = 2.;
103  ECalgainConv_[3] = 12.;
104  ECalbarrelADCtoGeV_ = 0.035;
105  ECalendcapADCtoGeV_ = 0.06;
106 }
107 
109 
111  std::string MsgLoggerCat = "GlobalDigisProducer_beginJob";
112 
113  // // setup calorimeter constants from service
114  // edm::ESHandle<EcalADCToGeVConstant> pAgc;
115  // iSetup.get<EcalADCToGeVConstantRcd>().get(pAgc);
116  // const EcalADCToGeVConstant* agc = pAgc.product();
117 
118  EcalMGPAGainRatio *defaultRatios = new EcalMGPAGainRatio();
119 
120  ECalgainConv_[0] = 0.;
121  ECalgainConv_[1] = 1.;
122  ECalgainConv_[2] = defaultRatios->gain12Over6();
123  ECalgainConv_[3] = ECalgainConv_[2] * (defaultRatios->gain6Over1());
124 
125  delete defaultRatios;
126 
127  // ECalbarrelADCtoGeV_ = agc->getEBValue();
128  // ECalendcapADCtoGeV_ = agc->getEEValue();
129 
130  if (verbosity >= 0) {
131  edm::LogInfo(MsgLoggerCat) << "Modified Calorimeter gain constants: g0 = " << ECalgainConv_[0]
132  << ", g1 = " << ECalgainConv_[1] << ", g2 = " << ECalgainConv_[2]
133  << ", g3 = " << ECalgainConv_[3];
134  // edm::LogInfo(MsgLoggerCat)
135  // << "Modified Calorimeter ADCtoGeV constants: barrel = "
136  // << ECalbarrelADCtoGeV_ << ", endcap = " << ECalendcapADCtoGeV_;
137  }
138 
139  // clear storage vectors
140  clear();
141  return;
142 }
143 
145  std::string MsgLoggerCat = "GlobalDigisProducer_endJob";
146  if (verbosity >= 0)
147  edm::LogInfo(MsgLoggerCat) << "Terminating having processed " << count << " events.";
148  return;
149 }
150 
152  std::string MsgLoggerCat = "GlobalDigisProducer_produce";
153 
154  // keep track of number of events processed
155  ++count;
156 
157  // THIS BLOCK MIGRATED HERE FROM beginJob:
158  // setup calorimeter constants from service
160  iSetup.get<EcalADCToGeVConstantRcd>().get(pAgc);
161  const EcalADCToGeVConstant *agc = pAgc.product();
164  if (verbosity >= 0) {
165  edm::LogInfo(MsgLoggerCat) << "Modified Calorimeter ADCtoGeV constants: barrel = " << ECalbarrelADCtoGeV_
166  << ", endcap = " << ECalendcapADCtoGeV_;
167  }
168 
169  // get event id information
170  edm::RunNumber_t nrun = iEvent.id().run();
171  edm::EventNumber_t nevt = iEvent.id().event();
172 
173  if (verbosity > 0) {
174  edm::LogInfo(MsgLoggerCat) << "Processing run " << nrun << ", event " << nevt << " (" << count << " events total)";
175  } else if (verbosity == 0) {
176  if (nevt % frequency == 0 || nevt == 1) {
177  edm::LogInfo(MsgLoggerCat) << "Processing run " << nrun << ", event " << nevt << " (" << count
178  << " events total)";
179  }
180  }
181 
182  // clear event holders
183  clear();
184 
185  // look at information available in the event
186  if (getAllProvenances) {
187  std::vector<const edm::StableProvenance *> AllProv;
188  iEvent.getAllStableProvenance(AllProv);
189 
190  if (verbosity >= 0)
191  edm::LogInfo(MsgLoggerCat) << "Number of Provenances = " << AllProv.size();
192 
193  if (printProvenanceInfo && (verbosity >= 0)) {
194  TString eventout("\nProvenance info:\n");
195 
196  for (unsigned int i = 0; i < AllProv.size(); ++i) {
197  eventout += "\n ******************************";
198  eventout += "\n Module : ";
199  // eventout += (AllProv[i]->product).moduleLabel();
200  eventout += AllProv[i]->moduleLabel();
201  eventout += "\n ProductID : ";
202  // eventout += (AllProv[i]->product).productID_.id_;
203  eventout += AllProv[i]->productID().id();
204  eventout += "\n ClassName : ";
205  // eventout += (AllProv[i]->product).fullClassName_;
206  eventout += AllProv[i]->className();
207  eventout += "\n InstanceName : ";
208  // eventout += (AllProv[i]->product).productInstanceName_;
209  eventout += AllProv[i]->productInstanceName();
210  eventout += "\n BranchName : ";
211  // eventout += (AllProv[i]->product).branchName_;
212  eventout += AllProv[i]->branchName();
213  }
214  eventout += "\n ******************************\n";
215  edm::LogInfo(MsgLoggerCat) << eventout << "\n";
216  printProvenanceInfo = false;
217  }
218  getAllProvenances = false;
219  }
220 
221  // call fill functions
222  // gather Ecal information from event
223  fillECal(iEvent, iSetup);
224  // gather Hcal information from event
225  fillHCal(iEvent, iSetup);
226  // gather Track information from event
227  fillTrk(iEvent, iSetup);
228  // gather Muon information from event
229  fillMuon(iEvent, iSetup);
230 
231  if (verbosity > 0)
232  edm::LogInfo(MsgLoggerCat) << "Done gathering data from event.";
233 
234  // produce object to put into event
235  std::unique_ptr<PGlobalDigi> pOut(new PGlobalDigi);
236 
237  if (verbosity > 2)
238  edm::LogInfo(MsgLoggerCat) << "Saving event contents:";
239 
240  // call store functions
241  // store ECal information in produce
242  storeECal(*pOut);
243  // store HCal information in produce
244  storeHCal(*pOut);
245  // store Track information in produce
246  storeTrk(*pOut);
247  // store Muon information in produce
248  storeMuon(*pOut);
249 
250  // store information in event
251  iEvent.put(std::move(pOut), label);
252 
253  return;
254 }
255 
257  std::string MsgLoggerCat = "GlobalDigisProducer_fillECal";
258 
259  TString eventout;
260  if (verbosity > 0)
261  eventout = "\nGathering info:";
262 
263  // extract crossing frame from event
264  // edm::Handle<CrossingFrame> crossingFrame;
266  // iEvent.getByType(crossingFrame);
267  // if (!crossingFrame.isValid()) {
268  // edm::LogWarning(MsgLoggerCat)
269  // << "Unable to crossingFrame in event!";
270  // return;
271  //}
272 
274  // extract EB information
276  bool isBarrel = true;
278  iEvent.getByToken(ECalEBSrc_Token_, EcalDigiEB);
279  if (!EcalDigiEB.isValid()) {
280  edm::LogWarning(MsgLoggerCat) << "Unable to find EcalDigiEB in event!";
281  return;
282  }
283  if (EcalDigiEB->empty())
284  isBarrel = false;
285 
286  if (isBarrel) {
287  // loop over simhits
288  iEvent.getByToken(EBHits_Token_, crossingFrame);
289  if (!crossingFrame.isValid()) {
290  edm::LogWarning(MsgLoggerCat) << "Unable to find cal barrel crossingFrame in event!";
291  return;
292  }
293  // std::unique_ptr<MixCollection<PCaloHit> >
294  // barrelHits(new MixCollection<PCaloHit>
295  // (crossingFrame.product(), barrelHitsName));
296  std::unique_ptr<MixCollection<PCaloHit>> barrelHits(new MixCollection<PCaloHit>(crossingFrame.product()));
297 
298  // keep track of sum of simhit energy in each crystal
299  MapType ebSimMap;
300  for (MixCollection<PCaloHit>::MixItr hitItr = barrelHits->begin(); hitItr != barrelHits->end(); ++hitItr) {
301  EBDetId ebid = EBDetId(hitItr->id());
302 
303  uint32_t crystid = ebid.rawId();
304  ebSimMap[crystid] += hitItr->energy();
305  }
306 
307  // loop over digis
308  const EBDigiCollection *barrelDigi = EcalDigiEB.product();
309 
310  std::vector<double> ebAnalogSignal;
311  std::vector<double> ebADCCounts;
312  std::vector<double> ebADCGains;
313  ebAnalogSignal.reserve(EBDataFrame::MAXSAMPLES);
314  ebADCCounts.reserve(EBDataFrame::MAXSAMPLES);
315  ebADCGains.reserve(EBDataFrame::MAXSAMPLES);
316 
317  int i = 0;
318  for (unsigned int digis = 0; digis < EcalDigiEB->size(); ++digis) {
319  // for (std::vector<EBDataFrame>::const_iterator digis =
320  // barrelDigi->begin();
321  // digis != barrelDigi->end();
322  // ++digis) {
323 
324  ++i;
325 
326  EBDataFrame ebdf = (*barrelDigi)[digis];
327  int nrSamples = ebdf.size();
328 
329  EBDetId ebid = ebdf.id();
330  // EBDetId ebid = digis->id();
331 
332  double Emax = 0;
333  int Pmax = 0;
334  double pedestalPreSample = 0.;
335  double pedestalPreSampleAnalog = 0.;
336 
337  for (int sample = 0; sample < nrSamples; ++sample) {
338  // for (int sample = 0; sample < digis->size(); ++sample) {
339  ebAnalogSignal[sample] = 0.;
340  ebADCCounts[sample] = 0.;
341  ebADCGains[sample] = -1.;
342  }
343 
344  // calculate maximum energy and pedestal
345  for (int sample = 0; sample < nrSamples; ++sample) {
346  // for (int sample = 0; sample < digis->size(); ++sample) {
347 
348  EcalMGPASample thisSample = ebdf[sample];
349  ebADCCounts[sample] = (thisSample.adc());
350  ebADCGains[sample] = (thisSample.gainId());
351  ebAnalogSignal[sample] = (ebADCCounts[sample] * ECalgainConv_[(int)ebADCGains[sample]] * ECalbarrelADCtoGeV_);
352  if (Emax < ebAnalogSignal[sample]) {
353  Emax = ebAnalogSignal[sample];
354  Pmax = sample;
355  }
356  if (sample < 3) {
357  pedestalPreSample += ebADCCounts[sample];
358  pedestalPreSampleAnalog += ebADCCounts[sample] * ECalgainConv_[(int)ebADCGains[sample]] * ECalbarrelADCtoGeV_;
359  }
360  }
361  pedestalPreSample /= 3.;
362  pedestalPreSampleAnalog /= 3.;
363 
364  // calculate pedestal subtracted digi energy in the crystal
365  double Erec = Emax - pedestalPreSampleAnalog * ECalgainConv_[(int)ebADCGains[Pmax]];
366 
367  // gather necessary information
368  EBCalAEE.push_back(Erec);
369  EBCalSHE.push_back(ebSimMap[ebid.rawId()]);
370  EBCalmaxPos.push_back(Pmax);
371  }
372 
373  if (verbosity > 1) {
374  eventout += "\n Number of EBDigis collected:.............. ";
375  eventout += i;
376  }
377  }
378 
380  // extract EE information
382  bool isEndCap = true;
384  iEvent.getByToken(ECalEESrc_Token_, EcalDigiEE);
385  if (!EcalDigiEE.isValid()) {
386  edm::LogWarning(MsgLoggerCat) << "Unable to find EcalDigiEE in event!";
387  return;
388  }
389  if (EcalDigiEE->empty())
390  isEndCap = false;
391 
392  if (isEndCap) {
393  // loop over simhits
394  iEvent.getByToken(EEHits_Token_, crossingFrame);
395  if (!crossingFrame.isValid()) {
396  edm::LogWarning(MsgLoggerCat) << "Unable to find cal endcap crossingFrame in event!";
397  return;
398  }
399  // std::unique_ptr<MixCollection<PCaloHit> >
400  // endcapHits(new MixCollection<PCaloHit>
401  // (crossingFrame.product(), endcapHitsName));
402  std::unique_ptr<MixCollection<PCaloHit>> endcapHits(new MixCollection<PCaloHit>(crossingFrame.product()));
403 
404  // keep track of sum of simhit energy in each crystal
405  MapType eeSimMap;
406  for (MixCollection<PCaloHit>::MixItr hitItr = endcapHits->begin(); hitItr != endcapHits->end(); ++hitItr) {
407  EEDetId eeid = EEDetId(hitItr->id());
408 
409  uint32_t crystid = eeid.rawId();
410  eeSimMap[crystid] += hitItr->energy();
411  }
412 
413  // loop over digis
414  const EEDigiCollection *endcapDigi = EcalDigiEE.product();
415 
416  std::vector<double> eeAnalogSignal;
417  std::vector<double> eeADCCounts;
418  std::vector<double> eeADCGains;
419  eeAnalogSignal.reserve(EEDataFrame::MAXSAMPLES);
420  eeADCCounts.reserve(EEDataFrame::MAXSAMPLES);
421  eeADCGains.reserve(EEDataFrame::MAXSAMPLES);
422 
423  int i = 0;
424  // for (std::vector<EEDataFrame>::const_iterator digis =
425  // endcapDigi->begin();
426  // digis != endcapDigi->end();
427  // ++digis) {
428  for (unsigned int digis = 0; digis < EcalDigiEE->size(); ++digis) {
429  ++i;
430 
431  EEDataFrame eedf = (*endcapDigi)[digis];
432  int nrSamples = eedf.size();
433 
434  EEDetId eeid = eedf.id();
435  // EEDetId eeid = digis->id();
436 
437  double Emax = 0;
438  int Pmax = 0;
439  double pedestalPreSample = 0.;
440  double pedestalPreSampleAnalog = 0.;
441 
442  for (int sample = 0; sample < nrSamples; ++sample) {
443  // for (int sample = 0; sample < digis->size(); ++sample) {
444  eeAnalogSignal[sample] = 0.;
445  eeADCCounts[sample] = 0.;
446  eeADCGains[sample] = -1.;
447  }
448 
449  // calculate maximum enery and pedestal
450  for (int sample = 0; sample < nrSamples; ++sample) {
451  // for (int sample = 0; sample < digis->size(); ++sample) {
452 
453  EcalMGPASample thisSample = eedf[sample];
454 
455  eeADCCounts[sample] = (thisSample.adc());
456  eeADCGains[sample] = (thisSample.gainId());
457  eeAnalogSignal[sample] = (eeADCCounts[sample] * ECalgainConv_[(int)eeADCGains[sample]] * ECalbarrelADCtoGeV_);
458  if (Emax < eeAnalogSignal[sample]) {
459  Emax = eeAnalogSignal[sample];
460  Pmax = sample;
461  }
462  if (sample < 3) {
463  pedestalPreSample += eeADCCounts[sample];
464  pedestalPreSampleAnalog += eeADCCounts[sample] * ECalgainConv_[(int)eeADCGains[sample]] * ECalbarrelADCtoGeV_;
465  }
466  }
467  pedestalPreSample /= 3.;
468  pedestalPreSampleAnalog /= 3.;
469 
470  // calculate pedestal subtracted digi energy in the crystal
471  double Erec = Emax - pedestalPreSampleAnalog * ECalgainConv_[(int)eeADCGains[Pmax]];
472 
473  // gather necessary information
474  EECalAEE.push_back(Erec);
475  EECalSHE.push_back(eeSimMap[eeid.rawId()]);
476  EECalmaxPos.push_back(Pmax);
477  }
478 
479  if (verbosity > 1) {
480  eventout += "\n Number of EEDigis collected:.............. ";
481  eventout += i;
482  }
483  }
484 
486  // extract ES information
488  bool isPreshower = true;
490  iEvent.getByToken(ECalESSrc_Token_, EcalDigiES);
491  if (!EcalDigiES.isValid()) {
492  edm::LogWarning(MsgLoggerCat) << "Unable to find EcalDigiES in event!";
493  return;
494  }
495  if (EcalDigiES->empty())
496  isPreshower = false;
497 
498  if (isPreshower) {
499  // loop over simhits
500  iEvent.getByToken(ESHits_Token_, crossingFrame);
501  if (!crossingFrame.isValid()) {
502  edm::LogWarning(MsgLoggerCat) << "Unable to find cal preshower crossingFrame in event!";
503  return;
504  }
505  // std::unique_ptr<MixCollection<PCaloHit> >
506  // preshowerHits(new MixCollection<PCaloHit>
507  // (crossingFrame.product(), preshowerHitsName));
508  std::unique_ptr<MixCollection<PCaloHit>> preshowerHits(new MixCollection<PCaloHit>(crossingFrame.product()));
509 
510  // keep track of sum of simhit energy in each crystal
511  MapType esSimMap;
512  for (MixCollection<PCaloHit>::MixItr hitItr = preshowerHits->begin(); hitItr != preshowerHits->end(); ++hitItr) {
513  ESDetId esid = ESDetId(hitItr->id());
514 
515  uint32_t crystid = esid.rawId();
516  esSimMap[crystid] += hitItr->energy();
517  }
518 
519  // loop over digis
520  const ESDigiCollection *preshowerDigi = EcalDigiES.product();
521 
522  std::vector<double> esADCCounts;
523  esADCCounts.reserve(ESDataFrame::MAXSAMPLES);
524 
525  int i = 0;
526  for (unsigned int digis = 0; digis < EcalDigiES->size(); ++digis) {
527  // for (std::vector<ESDataFrame>::const_iterator digis =
528  // preshowerDigi->begin();
529  // digis != preshowerDigi->end();
530  // ++digis) {
531 
532  ++i;
533 
534  ESDataFrame esdf = (*preshowerDigi)[digis];
535  int nrSamples = esdf.size();
536 
537  ESDetId esid = esdf.id();
538  // ESDetId esid = digis->id();
539 
540  for (int sample = 0; sample < nrSamples; ++sample) {
541  // for (int sample = 0; sample < digis->size(); ++sample) {
542  esADCCounts[sample] = 0.;
543  }
544 
545  // gether ADC counts
546  for (int sample = 0; sample < nrSamples; ++sample) {
547  ESSample thisSample = esdf[sample];
548  // for (int sample = 0; sample < digis->size(); ++sample) {
549  esADCCounts[sample] = (thisSample.adc());
550  }
551 
552  ESCalADC0.push_back(esADCCounts[0]);
553  ESCalADC1.push_back(esADCCounts[1]);
554  ESCalADC2.push_back(esADCCounts[2]);
555  ESCalSHE.push_back(esSimMap[esid.rawId()]);
556  }
557 
558  if (verbosity > 1) {
559  eventout += "\n Number of ESDigis collected:.............. ";
560  eventout += i;
561  }
562  }
563 
564  if (verbosity > 0)
565  edm::LogInfo(MsgLoggerCat) << eventout << "\n";
566 
567  return;
568 }
569 
571  std::string MsgLoggerCat = "GlobalDigisProducer_storeECal";
572 
573  if (verbosity > 2) {
574  TString eventout("\n nEBDigis = ");
575  eventout += EBCalmaxPos.size();
576  for (unsigned int i = 0; i < EBCalmaxPos.size(); ++i) {
577  eventout += "\n (maxPos, AEE, SHE) = (";
578  eventout += EBCalmaxPos[i];
579  eventout += ", ";
580  eventout += EBCalAEE[i];
581  eventout += ", ";
582  eventout += EBCalSHE[i];
583  eventout += ")";
584  }
585  eventout += "\n nEEDigis = ";
586  eventout += EECalmaxPos.size();
587  for (unsigned int i = 0; i < EECalmaxPos.size(); ++i) {
588  eventout += "\n (maxPos, AEE, SHE) = (";
589  eventout += EECalmaxPos[i];
590  eventout += ", ";
591  eventout += EECalAEE[i];
592  eventout += ", ";
593  eventout += EECalSHE[i];
594  eventout += ")";
595  }
596  eventout += "\n nESDigis = ";
597  eventout += ESCalADC0.size();
598  for (unsigned int i = 0; i < ESCalADC0.size(); ++i) {
599  eventout += "\n (ADC0, ADC1, ADC2, SHE) = (";
600  eventout += ESCalADC0[i];
601  eventout += ", ";
602  eventout += ESCalADC1[i];
603  eventout += ", ";
604  eventout += ESCalADC2[i];
605  eventout += ", ";
606  eventout += ESCalSHE[i];
607  eventout += ")";
608  }
609  edm::LogInfo(MsgLoggerCat) << eventout << "\n";
610  }
611 
615 
616  return;
617 }
618 
620  std::string MsgLoggerCat = "GlobalDigisProducer_fillHCal";
621 
622  TString eventout;
623  if (verbosity > 0)
624  eventout = "\nGathering info:";
625 
626  // get calibration info
627  edm::ESHandle<HcalDbService> HCalconditions;
628  iSetup.get<HcalDbRecord>().get(HCalconditions);
629  if (!HCalconditions.isValid()) {
630  edm::LogWarning(MsgLoggerCat) << "Unable to find HCalconditions in event!";
631  return;
632  }
633  // HcalCalibrations calibrations;
634  CaloSamples tool;
635 
637  // extract simhit info
640  iEvent.getByToken(HCalSrc_Token_, hcalHits);
641  if (!hcalHits.isValid()) {
642  edm::LogWarning(MsgLoggerCat) << "Unable to find hcalHits in event!";
643  return;
644  }
645  const edm::PCaloHitContainer *simhitResult = hcalHits.product();
646 
647  MapType fHBEnergySimHits;
648  MapType fHEEnergySimHits;
649  MapType fHOEnergySimHits;
650  MapType fHFEnergySimHits;
651  for (std::vector<PCaloHit>::const_iterator simhits = simhitResult->begin(); simhits != simhitResult->end();
652  ++simhits) {
653  HcalDetId detId(simhits->id());
654  uint32_t cellid = detId.rawId();
655 
656  if (detId.subdet() == sdHcalBrl) {
657  fHBEnergySimHits[cellid] += simhits->energy();
658  }
659  if (detId.subdet() == sdHcalEC) {
660  fHEEnergySimHits[cellid] += simhits->energy();
661  }
662  if (detId.subdet() == sdHcalOut) {
663  fHOEnergySimHits[cellid] += simhits->energy();
664  }
665  if (detId.subdet() == sdHcalFwd) {
666  fHFEnergySimHits[cellid] += simhits->energy();
667  }
668  }
669 
671  // get HBHE information
674  iEvent.getByToken(HBHEDigi_Token_, hbhe);
675  if (!hbhe.isValid()) {
676  edm::LogWarning(MsgLoggerCat) << "Unable to find HBHEDataFrame in event!";
677  return;
678  }
680 
681  int iHB = 0;
682  int iHE = 0;
683  for (ihbhe = hbhe->begin(); ihbhe != hbhe->end(); ++ihbhe) {
684  HcalDetId cell(ihbhe->id());
685 
686  if ((cell.subdet() == sdHcalBrl) || (cell.subdet() == sdHcalEC)) {
687  // HCalconditions->makeHcalCalibration(cell, &calibrations);
688  const HcalCalibrations &calibrations = HCalconditions->getHcalCalibrations(cell);
689  const HcalQIECoder *channelCoder = HCalconditions->getHcalCoder(cell);
690  const HcalQIEShape *shape = HCalconditions->getHcalShape(channelCoder);
691 
692  HcalCoderDb coder(*channelCoder, *shape);
693  coder.adc2fC(*ihbhe, tool);
694 
695  // get HB info
696  if (cell.subdet() == sdHcalBrl) {
697  ++iHB;
698  float fDigiSum = 0.0;
699  for (int ii = 0; ii < tool.size(); ++ii) {
700  // default ped is 4.5
701  int capid = (*ihbhe)[ii].capid();
702  fDigiSum += (tool[ii] - calibrations.pedestal(capid));
703  }
704 
705  HBCalAEE.push_back(fDigiSum);
706  HBCalSHE.push_back(fHBEnergySimHits[cell.rawId()]);
707  }
708 
709  // get HE info
710  if (cell.subdet() == sdHcalEC) {
711  ++iHE;
712  float fDigiSum = 0.0;
713  for (int ii = 0; ii < tool.size(); ++ii) {
714  int capid = (*ihbhe)[ii].capid();
715  fDigiSum += (tool[ii] - calibrations.pedestal(capid));
716  }
717 
718  HECalAEE.push_back(fDigiSum);
719  HECalSHE.push_back(fHEEnergySimHits[cell.rawId()]);
720  }
721  }
722  }
723 
724  if (verbosity > 1) {
725  eventout += "\n Number of HBDigis collected:.............. ";
726  eventout += iHB;
727  }
728 
729  if (verbosity > 1) {
730  eventout += "\n Number of HEDigis collected:.............. ";
731  eventout += iHE;
732  }
733 
735  // get HO information
738  iEvent.getByToken(HODigi_Token_, ho);
739  if (!ho.isValid()) {
740  edm::LogWarning(MsgLoggerCat) << "Unable to find HODataFrame in event!";
741  return;
742  }
744 
745  int iHO = 0;
746  for (iho = ho->begin(); iho != ho->end(); ++iho) {
747  HcalDetId cell(iho->id());
748 
749  if (cell.subdet() == sdHcalOut) {
750  // HCalconditions->makeHcalCalibration(cell, &calibrations);
751  const HcalCalibrations &calibrations = HCalconditions->getHcalCalibrations(cell);
752  const HcalQIECoder *channelCoder = HCalconditions->getHcalCoder(cell);
753  const HcalQIEShape *shape = HCalconditions->getHcalShape(channelCoder);
754 
755  HcalCoderDb coder(*channelCoder, *shape);
756  coder.adc2fC(*iho, tool);
757 
758  ++iHO;
759  float fDigiSum = 0.0;
760  for (int ii = 0; ii < tool.size(); ++ii) {
761  // default ped is 4.5
762  int capid = (*iho)[ii].capid();
763  fDigiSum += (tool[ii] - calibrations.pedestal(capid));
764  }
765 
766  HOCalAEE.push_back(fDigiSum);
767  HOCalSHE.push_back(fHOEnergySimHits[cell.rawId()]);
768  }
769  }
770 
771  if (verbosity > 1) {
772  eventout += "\n Number of HODigis collected:.............. ";
773  eventout += iHO;
774  }
775 
777  // get HF information
780  iEvent.getByToken(HFDigi_Token_, hf);
781  if (!hf.isValid()) {
782  edm::LogWarning(MsgLoggerCat) << "Unable to find HFDataFrame in event!";
783  return;
784  }
786 
787  int iHF = 0;
788  for (ihf = hf->begin(); ihf != hf->end(); ++ihf) {
789  HcalDetId cell(ihf->id());
790 
791  if (cell.subdet() == sdHcalFwd) {
792  // HCalconditions->makeHcalCalibration(cell, &calibrations);
793  const HcalCalibrations &calibrations = HCalconditions->getHcalCalibrations(cell);
794  const HcalQIECoder *channelCoder = HCalconditions->getHcalCoder(cell);
795  const HcalQIEShape *shape = HCalconditions->getHcalShape(channelCoder);
796 
797  HcalCoderDb coder(*channelCoder, *shape);
798  coder.adc2fC(*ihf, tool);
799 
800  ++iHF;
801  float fDigiSum = 0.0;
802  for (int ii = 0; ii < tool.size(); ++ii) {
803  // default ped is 1.73077
804  int capid = (*ihf)[ii].capid();
805  fDigiSum += (tool[ii] - calibrations.pedestal(capid));
806  }
807 
808  HFCalAEE.push_back(fDigiSum);
809  HFCalSHE.push_back(fHFEnergySimHits[cell.rawId()]);
810  }
811  }
812 
813  if (verbosity > 1) {
814  eventout += "\n Number of HFDigis collected:.............. ";
815  eventout += iHF;
816  }
817 
818  if (verbosity > 0)
819  edm::LogInfo(MsgLoggerCat) << eventout << "\n";
820 
821  return;
822 }
823 
825  std::string MsgLoggerCat = "GlobalDigisProducer_storeHCal";
826 
827  if (verbosity > 2) {
828  TString eventout("\n nHBDigis = ");
829  eventout += HBCalAEE.size();
830  for (unsigned int i = 0; i < HBCalAEE.size(); ++i) {
831  eventout += "\n (AEE, SHE) = (";
832  eventout += HBCalAEE[i];
833  eventout += ", ";
834  eventout += HBCalSHE[i];
835  eventout += ")";
836  }
837  eventout += "\n nHEDigis = ";
838  eventout += HECalAEE.size();
839  for (unsigned int i = 0; i < HECalAEE.size(); ++i) {
840  eventout += "\n (AEE, SHE) = (";
841  eventout += HECalAEE[i];
842  eventout += ", ";
843  eventout += HECalSHE[i];
844  eventout += ")";
845  }
846  eventout += "\n nHODigis = ";
847  eventout += HOCalAEE.size();
848  for (unsigned int i = 0; i < HOCalAEE.size(); ++i) {
849  eventout += "\n (AEE, SHE) = (";
850  eventout += HOCalAEE[i];
851  eventout += ", ";
852  eventout += HOCalSHE[i];
853  eventout += ")";
854  }
855  eventout += "\n nHFDigis = ";
856  eventout += HFCalAEE.size();
857  for (unsigned int i = 0; i < HFCalAEE.size(); ++i) {
858  eventout += "\n (AEE, SHE) = (";
859  eventout += HFCalAEE[i];
860  eventout += ", ";
861  eventout += HFCalSHE[i];
862  eventout += ")";
863  }
864 
865  edm::LogInfo(MsgLoggerCat) << eventout << "\n";
866  }
867 
868  product.putHBCalDigis(HBCalAEE, HBCalSHE);
869  product.putHECalDigis(HECalAEE, HECalSHE);
870  product.putHOCalDigis(HOCalAEE, HOCalSHE);
871  product.putHFCalDigis(HFCalAEE, HFCalSHE);
872 
873  return;
874 }
875 
877  // Retrieve tracker topology from geometry
878  edm::ESHandle<TrackerTopology> tTopoHandle;
879  iSetup.get<TrackerTopologyRcd>().get(tTopoHandle);
880  const TrackerTopology *const tTopo = tTopoHandle.product();
881 
882  std::string MsgLoggerCat = "GlobalDigisProducer_fillTrk";
883 
884  TString eventout;
885  if (verbosity > 0)
886  eventout = "\nGathering info:";
887 
888  // get strip information
890  iEvent.getByToken(SiStripSrc_Token_, stripDigis);
891  if (!stripDigis.isValid()) {
892  edm::LogWarning(MsgLoggerCat) << "Unable to find stripDigis in event!";
893  return;
894  }
895 
896  int nStripBrl = 0, nStripFwd = 0;
898  for (DSViter = stripDigis->begin(); DSViter != stripDigis->end(); ++DSViter) {
899  unsigned int id = DSViter->id;
900  DetId detId(id);
904 
905  // get TIB
906  if (detId.subdetId() == sdSiTIB) {
907  for (iter = begin; iter != end; ++iter) {
908  ++nStripBrl;
909  if (tTopo->tibLayer(id) == 1) {
910  TIBL1ADC.push_back((*iter).adc());
911  TIBL1Strip.push_back((*iter).strip());
912  }
913  if (tTopo->tibLayer(id) == 2) {
914  TIBL2ADC.push_back((*iter).adc());
915  TIBL2Strip.push_back((*iter).strip());
916  }
917  if (tTopo->tibLayer(id) == 3) {
918  TIBL3ADC.push_back((*iter).adc());
919  TIBL3Strip.push_back((*iter).strip());
920  }
921  if (tTopo->tibLayer(id) == 4) {
922  TIBL4ADC.push_back((*iter).adc());
923  TIBL4Strip.push_back((*iter).strip());
924  }
925  }
926  }
927 
928  // get TOB
929  if (detId.subdetId() == sdSiTOB) {
930  for (iter = begin; iter != end; ++iter) {
931  ++nStripBrl;
932  if (tTopo->tobLayer(id) == 1) {
933  TOBL1ADC.push_back((*iter).adc());
934  TOBL1Strip.push_back((*iter).strip());
935  }
936  if (tTopo->tobLayer(id) == 2) {
937  TOBL2ADC.push_back((*iter).adc());
938  TOBL2Strip.push_back((*iter).strip());
939  }
940  if (tTopo->tobLayer(id) == 3) {
941  TOBL3ADC.push_back((*iter).adc());
942  TOBL3Strip.push_back((*iter).strip());
943  }
944  if (tTopo->tobLayer(id) == 4) {
945  TOBL4ADC.push_back((*iter).adc());
946  TOBL4Strip.push_back((*iter).strip());
947  }
948  }
949  }
950 
951  // get TID
952  if (detId.subdetId() == sdSiTID) {
953  for (iter = begin; iter != end; ++iter) {
954  ++nStripFwd;
955  if (tTopo->tidWheel(id) == 1) {
956  TIDW1ADC.push_back((*iter).adc());
957  TIDW1Strip.push_back((*iter).strip());
958  }
959  if (tTopo->tidWheel(id) == 2) {
960  TIDW2ADC.push_back((*iter).adc());
961  TIDW2Strip.push_back((*iter).strip());
962  }
963  if (tTopo->tidWheel(id) == 3) {
964  TIDW3ADC.push_back((*iter).adc());
965  TIDW3Strip.push_back((*iter).strip());
966  }
967  }
968  }
969 
970  // get TEC
971  if (detId.subdetId() == sdSiTEC) {
972  for (iter = begin; iter != end; ++iter) {
973  ++nStripFwd;
974  if (tTopo->tecWheel(id) == 1) {
975  TECW1ADC.push_back((*iter).adc());
976  TECW1Strip.push_back((*iter).strip());
977  }
978  if (tTopo->tecWheel(id) == 2) {
979  TECW2ADC.push_back((*iter).adc());
980  TECW2Strip.push_back((*iter).strip());
981  }
982  if (tTopo->tecWheel(id) == 3) {
983  TECW3ADC.push_back((*iter).adc());
984  TECW3Strip.push_back((*iter).strip());
985  }
986  if (tTopo->tecWheel(id) == 4) {
987  TECW4ADC.push_back((*iter).adc());
988  TECW4Strip.push_back((*iter).strip());
989  }
990  if (tTopo->tecWheel(id) == 5) {
991  TECW5ADC.push_back((*iter).adc());
992  TECW5Strip.push_back((*iter).strip());
993  }
994  if (tTopo->tecWheel(id) == 6) {
995  TECW6ADC.push_back((*iter).adc());
996  TECW6Strip.push_back((*iter).strip());
997  }
998  if (tTopo->tecWheel(id) == 7) {
999  TECW7ADC.push_back((*iter).adc());
1000  TECW7Strip.push_back((*iter).strip());
1001  }
1002  if (tTopo->tecWheel(id) == 8) {
1003  TECW8ADC.push_back((*iter).adc());
1004  TECW8Strip.push_back((*iter).strip());
1005  }
1006  }
1007  }
1008  } // end loop over DataSetVector
1009 
1010  if (verbosity > 1) {
1011  eventout += "\n Number of BrlStripDigis collected:........ ";
1012  eventout += nStripBrl;
1013  }
1014 
1015  if (verbosity > 1) {
1016  eventout += "\n Number of FrwdStripDigis collected:....... ";
1017  eventout += nStripFwd;
1018  }
1019 
1020  // get pixel information
1022  iEvent.getByToken(SiPxlSrc_Token_, pixelDigis);
1023  if (!pixelDigis.isValid()) {
1024  edm::LogWarning(MsgLoggerCat) << "Unable to find pixelDigis in event!";
1025  return;
1026  }
1027 
1028  int nPxlBrl = 0, nPxlFwd = 0;
1030  for (DPViter = pixelDigis->begin(); DPViter != pixelDigis->end(); ++DPViter) {
1031  unsigned int id = DPViter->id;
1032  DetId detId(id);
1036 
1037  // get Barrel pixels
1038  if (detId.subdetId() == sdPxlBrl) {
1039  for (iter = begin; iter != end; ++iter) {
1040  ++nPxlBrl;
1041  if (tTopo->pxbLayer(id) == 1) {
1042  BRL1ADC.push_back((*iter).adc());
1043  BRL1Row.push_back((*iter).row());
1044  BRL1Col.push_back((*iter).column());
1045  }
1046  if (tTopo->pxbLayer(id) == 2) {
1047  BRL2ADC.push_back((*iter).adc());
1048  BRL2Row.push_back((*iter).row());
1049  BRL2Col.push_back((*iter).column());
1050  }
1051  if (tTopo->pxbLayer(id) == 3) {
1052  BRL3ADC.push_back((*iter).adc());
1053  BRL3Row.push_back((*iter).row());
1054  BRL3Col.push_back((*iter).column());
1055  }
1056  }
1057  }
1058 
1059  // get Forward pixels
1060  if (detId.subdetId() == sdPxlFwd) {
1061  for (iter = begin; iter != end; ++iter) {
1062  ++nPxlFwd;
1063  if (tTopo->pxfDisk(id) == 1) {
1064  if (tTopo->pxfSide(id) == 1) {
1065  FWD1nADC.push_back((*iter).adc());
1066  FWD1nRow.push_back((*iter).row());
1067  FWD1nCol.push_back((*iter).column());
1068  }
1069  if (tTopo->pxfSide(id) == 2) {
1070  FWD1pADC.push_back((*iter).adc());
1071  FWD1pRow.push_back((*iter).row());
1072  FWD1pCol.push_back((*iter).column());
1073  }
1074  }
1075  if (tTopo->pxfDisk(id) == 2) {
1076  if (tTopo->pxfSide(id) == 1) {
1077  FWD2nADC.push_back((*iter).adc());
1078  FWD2nRow.push_back((*iter).row());
1079  FWD2nCol.push_back((*iter).column());
1080  }
1081  if (tTopo->pxfSide(id) == 2) {
1082  FWD2pADC.push_back((*iter).adc());
1083  FWD2pRow.push_back((*iter).row());
1084  FWD2pCol.push_back((*iter).column());
1085  }
1086  }
1087  }
1088  }
1089  }
1090 
1091  if (verbosity > 1) {
1092  eventout += "\n Number of BrlPixelDigis collected:........ ";
1093  eventout += nPxlBrl;
1094  }
1095 
1096  if (verbosity > 1) {
1097  eventout += "\n Number of FrwdPixelDigis collected:....... ";
1098  eventout += nPxlFwd;
1099  }
1100 
1101  if (verbosity > 0)
1102  edm::LogInfo(MsgLoggerCat) << eventout << "\n";
1103 
1104  return;
1105 }
1106 
1108  std::string MsgLoggerCat = "GlobalDigisProducer_storeTrk";
1109 
1110  if (verbosity > 2) {
1111  // strip output
1112  TString eventout("\n nTIBL1 = ");
1113  eventout += TIBL1ADC.size();
1114  for (unsigned int i = 0; i < TIBL1ADC.size(); ++i) {
1115  eventout += "\n (ADC, strip) = (";
1116  eventout += TIBL1ADC[i];
1117  eventout += ", ";
1118  eventout += TIBL1Strip[i];
1119  eventout += ")";
1120  }
1121  eventout += "\n nTIBL2 = ";
1122  eventout += TIBL2ADC.size();
1123  for (unsigned int i = 0; i < TIBL2ADC.size(); ++i) {
1124  eventout += "\n (ADC, strip) = (";
1125  eventout += TIBL2ADC[i];
1126  eventout += ", ";
1127  eventout += TIBL2Strip[i];
1128  eventout += ")";
1129  }
1130  eventout += "\n nTIBL3 = ";
1131  eventout += TIBL3ADC.size();
1132  for (unsigned int i = 0; i < TIBL3ADC.size(); ++i) {
1133  eventout += "\n (ADC, strip) = (";
1134  eventout += TIBL3ADC[i];
1135  eventout += ", ";
1136  eventout += TIBL3Strip[i];
1137  eventout += ")";
1138  }
1139  eventout += "\n nTIBL4 = ";
1140  eventout += TIBL4ADC.size();
1141  for (unsigned int i = 0; i < TIBL4ADC.size(); ++i) {
1142  eventout += "\n (ADC, strip) = (";
1143  eventout += TIBL4ADC[i];
1144  eventout += ", ";
1145  eventout += TIBL4Strip[i];
1146  eventout += ")";
1147  }
1148  eventout += "\n nTOBL1 = ";
1149  eventout += TOBL1ADC.size();
1150  for (unsigned int i = 0; i < TOBL1ADC.size(); ++i) {
1151  eventout += "\n (ADC, strip) = (";
1152  eventout += TOBL1ADC[i];
1153  eventout += ", ";
1154  eventout += TOBL1Strip[i];
1155  eventout += ")";
1156  }
1157  eventout += "\n nTOBL2 = ";
1158  eventout += TOBL2ADC.size();
1159  for (unsigned int i = 0; i < TOBL2ADC.size(); ++i) {
1160  eventout += "\n (ADC, strip) = (";
1161  eventout += TOBL2ADC[i];
1162  eventout += ", ";
1163  eventout += TOBL2Strip[i];
1164  eventout += ")";
1165  }
1166  eventout += "\n nTOBL3 = ";
1167  eventout += TOBL3ADC.size();
1168  for (unsigned int i = 0; i < TOBL3ADC.size(); ++i) {
1169  eventout += "\n (ADC, strip) = (";
1170  eventout += TOBL3ADC[i];
1171  eventout += ", ";
1172  eventout += TOBL3Strip[i];
1173  eventout += ")";
1174  }
1175  eventout += "\n nTOBL4 = ";
1176  eventout += TOBL4ADC.size();
1177  for (unsigned int i = 0; i < TOBL4ADC.size(); ++i) {
1178  eventout += "\n (ADC, strip) = (";
1179  eventout += TOBL4ADC[i];
1180  eventout += ", ";
1181  eventout += TOBL4Strip[i];
1182  eventout += ")";
1183  }
1184  eventout += "\n nTIDW1 = ";
1185  eventout += TIDW1ADC.size();
1186  for (unsigned int i = 0; i < TIDW1ADC.size(); ++i) {
1187  eventout += "\n (ADC, strip) = (";
1188  eventout += TIDW1ADC[i];
1189  eventout += ", ";
1190  eventout += TIDW1Strip[i];
1191  eventout += ")";
1192  }
1193  eventout += "\n nTIDW2 = ";
1194  eventout += TIDW2ADC.size();
1195  for (unsigned int i = 0; i < TIDW2ADC.size(); ++i) {
1196  eventout += "\n (ADC, strip) = (";
1197  eventout += TIDW2ADC[i];
1198  eventout += ", ";
1199  eventout += TIDW2Strip[i];
1200  eventout += ")";
1201  }
1202  eventout += "\n nTIDW3 = ";
1203  eventout += TIDW3ADC.size();
1204  for (unsigned int i = 0; i < TIDW3ADC.size(); ++i) {
1205  eventout += "\n (ADC, strip) = (";
1206  eventout += TIDW3ADC[i];
1207  eventout += ", ";
1208  eventout += TIDW3Strip[i];
1209  eventout += ")";
1210  }
1211  eventout += "\n nTECW1 = ";
1212  eventout += TECW1ADC.size();
1213  for (unsigned int i = 0; i < TECW1ADC.size(); ++i) {
1214  eventout += "\n (ADC, strip) = (";
1215  eventout += TECW1ADC[i];
1216  eventout += ", ";
1217  eventout += TECW1Strip[i];
1218  eventout += ")";
1219  }
1220  eventout += "\n nTECW2 = ";
1221  eventout += TECW2ADC.size();
1222  for (unsigned int i = 0; i < TECW2ADC.size(); ++i) {
1223  eventout += "\n (ADC, strip) = (";
1224  eventout += TECW2ADC[i];
1225  eventout += ", ";
1226  eventout += TECW2Strip[i];
1227  eventout += ")";
1228  }
1229  eventout += "\n nTECW3 = ";
1230  eventout += TECW3ADC.size();
1231  for (unsigned int i = 0; i < TECW3ADC.size(); ++i) {
1232  eventout += "\n (ADC, strip) = (";
1233  eventout += TECW3ADC[i];
1234  eventout += ", ";
1235  eventout += TECW3Strip[i];
1236  eventout += ")";
1237  }
1238  eventout += "\n nTECW4 = ";
1239  eventout += TECW4ADC.size();
1240  for (unsigned int i = 0; i < TECW4ADC.size(); ++i) {
1241  eventout += "\n (ADC, strip) = (";
1242  eventout += TECW4ADC[i];
1243  eventout += ", ";
1244  eventout += TECW4Strip[i];
1245  eventout += ")";
1246  }
1247  eventout += "\n nTECW5 = ";
1248  eventout += TECW5ADC.size();
1249  for (unsigned int i = 0; i < TECW5ADC.size(); ++i) {
1250  eventout += "\n (ADC, strip) = (";
1251  eventout += TECW5ADC[i];
1252  eventout += ", ";
1253  eventout += TECW5Strip[i];
1254  eventout += ")";
1255  }
1256  eventout += "\n nTECW6 = ";
1257  eventout += TECW6ADC.size();
1258  for (unsigned int i = 0; i < TECW6ADC.size(); ++i) {
1259  eventout += "\n (ADC, strip) = (";
1260  eventout += TECW6ADC[i];
1261  eventout += ", ";
1262  eventout += TECW6Strip[i];
1263  eventout += ")";
1264  }
1265  eventout += "\n nTECW7 = ";
1266  eventout += TECW7ADC.size();
1267  for (unsigned int i = 0; i < TECW7ADC.size(); ++i) {
1268  eventout += "\n (ADC, strip) = (";
1269  eventout += TECW7ADC[i];
1270  eventout += ", ";
1271  eventout += TECW7Strip[i];
1272  eventout += ")";
1273  }
1274  eventout += "\n nTECW8 = ";
1275  eventout += TECW8ADC.size();
1276  for (unsigned int i = 0; i < TECW8ADC.size(); ++i) {
1277  eventout += "\n (ADC, strip) = (";
1278  eventout += TECW8ADC[i];
1279  eventout += ", ";
1280  eventout += TECW8Strip[i];
1281  eventout += ")";
1282  }
1283 
1284  // pixel output
1285  eventout += "\n nBRL1 = ";
1286  eventout += BRL1ADC.size();
1287  for (unsigned int i = 0; i < BRL1ADC.size(); ++i) {
1288  eventout += "\n (ADC, row, column) = (";
1289  eventout += BRL1ADC[i];
1290  eventout += ", ";
1291  eventout += BRL1Row[i];
1292  eventout += ", ";
1293  eventout += BRL1Col[i];
1294  eventout += ")";
1295  }
1296  eventout += "\n nBRL2 = ";
1297  eventout += BRL2ADC.size();
1298  for (unsigned int i = 0; i < BRL2ADC.size(); ++i) {
1299  eventout += "\n (ADC, row, column) = (";
1300  eventout += BRL2ADC[i];
1301  eventout += ", ";
1302  eventout += BRL2Row[i];
1303  eventout += ", ";
1304  eventout += BRL2Col[i];
1305  eventout += ")";
1306  }
1307  eventout += "\n nBRL3 = ";
1308  eventout += BRL3ADC.size();
1309  for (unsigned int i = 0; i < BRL3ADC.size(); ++i) {
1310  eventout += "\n (ADC, row, column) = (";
1311  eventout += BRL3ADC[i];
1312  eventout += ", ";
1313  eventout += BRL3Row[i];
1314  eventout += ", ";
1315  eventout += BRL3Col[i];
1316  eventout += ")";
1317  }
1318  eventout += "\n nFWD1p = ";
1319  eventout += FWD1pADC.size();
1320  for (unsigned int i = 0; i < FWD1pADC.size(); ++i) {
1321  eventout += "\n (ADC, row, column) = (";
1322  eventout += FWD1pADC[i];
1323  eventout += ", ";
1324  eventout += FWD1pRow[i];
1325  eventout += ", ";
1326  eventout += FWD1pCol[i];
1327  eventout += ")";
1328  }
1329  eventout += "\n nFWD1p = ";
1330  eventout += FWD1nADC.size();
1331  for (unsigned int i = 0; i < FWD1nADC.size(); ++i) {
1332  eventout += "\n (ADC, row, column) = (";
1333  eventout += FWD1nADC[i];
1334  eventout += ", ";
1335  eventout += FWD1nRow[i];
1336  eventout += ", ";
1337  eventout += FWD1nCol[i];
1338  eventout += ")";
1339  }
1340  eventout += "\n nFWD1p = ";
1341  eventout += FWD2pADC.size();
1342  for (unsigned int i = 0; i < FWD2pADC.size(); ++i) {
1343  eventout += "\n (ADC, row, column) = (";
1344  eventout += FWD2pADC[i];
1345  eventout += ", ";
1346  eventout += FWD2pRow[i];
1347  eventout += ", ";
1348  eventout += FWD2pCol[i];
1349  eventout += ")";
1350  }
1351  eventout += "\n nFWD2p = ";
1352  eventout += FWD2nADC.size();
1353  for (unsigned int i = 0; i < FWD2nADC.size(); ++i) {
1354  eventout += "\n (ADC, row, column) = (";
1355  eventout += FWD2nADC[i];
1356  eventout += ", ";
1357  eventout += FWD2nRow[i];
1358  eventout += ", ";
1359  eventout += FWD2nCol[i];
1360  eventout += ")";
1361  }
1362 
1363  edm::LogInfo(MsgLoggerCat) << eventout << "\n";
1364  }
1365 
1366  // strip output
1367  product.putTIBL1Digis(TIBL1ADC, TIBL1Strip);
1368  product.putTIBL2Digis(TIBL2ADC, TIBL2Strip);
1369  product.putTIBL3Digis(TIBL3ADC, TIBL3Strip);
1370  product.putTIBL4Digis(TIBL4ADC, TIBL4Strip);
1371  product.putTOBL1Digis(TOBL1ADC, TOBL1Strip);
1372  product.putTOBL2Digis(TOBL2ADC, TOBL2Strip);
1373  product.putTOBL3Digis(TOBL3ADC, TOBL3Strip);
1374  product.putTOBL4Digis(TOBL4ADC, TOBL4Strip);
1375  product.putTIDW1Digis(TIDW1ADC, TIDW1Strip);
1376  product.putTIDW2Digis(TIDW2ADC, TIDW2Strip);
1377  product.putTIDW3Digis(TIDW3ADC, TIDW3Strip);
1378  product.putTECW1Digis(TECW1ADC, TECW1Strip);
1379  product.putTECW2Digis(TECW2ADC, TECW2Strip);
1380  product.putTECW3Digis(TECW3ADC, TECW3Strip);
1381  product.putTECW4Digis(TECW4ADC, TECW4Strip);
1382  product.putTECW5Digis(TECW5ADC, TECW5Strip);
1383  product.putTECW6Digis(TECW6ADC, TECW6Strip);
1384  product.putTECW7Digis(TECW7ADC, TECW7Strip);
1385  product.putTECW8Digis(TECW8ADC, TECW8Strip);
1386 
1387  // pixel output
1388  product.putBRL1Digis(BRL1ADC, BRL1Row, BRL1Col);
1389  product.putBRL2Digis(BRL2ADC, BRL2Row, BRL2Col);
1390  product.putBRL3Digis(BRL3ADC, BRL3Row, BRL3Col);
1395 
1396  return;
1397 }
1398 
1400  std::string MsgLoggerCat = "GlobalDigisProducer_fillMuon";
1401 
1402  TString eventout;
1403  if (verbosity > 0)
1404  eventout = "\nGathering info:";
1405 
1406  // get DT information
1408  iEvent.getByToken(MuDTSrc_Token_, dtDigis);
1409  if (!dtDigis.isValid()) {
1410  edm::LogWarning(MsgLoggerCat) << "Unable to find dtDigis in event!";
1411  return;
1412  }
1413 
1414  int nDt = 0;
1416  for (detUnitIt = dtDigis->begin(); detUnitIt != dtDigis->end(); ++detUnitIt) {
1417  const DTLayerId &id = (*detUnitIt).first;
1418  const DTDigiCollection::Range &range = (*detUnitIt).second;
1419 
1420  for (DTDigiCollection::const_iterator digiIt = range.first; digiIt != range.second; ++digiIt) {
1421  ++nDt;
1422 
1423  DTWireId wireId(id, (*digiIt).wire());
1424  if (wireId.station() == 1) {
1425  MB1SLayer.push_back(id.superlayer());
1426  MB1Time.push_back((*digiIt).time());
1427  MB1Layer.push_back(id.layer());
1428  }
1429  if (wireId.station() == 2) {
1430  MB2SLayer.push_back(id.superlayer());
1431  MB2Time.push_back((*digiIt).time());
1432  MB2Layer.push_back(id.layer());
1433  }
1434  if (wireId.station() == 3) {
1435  MB3SLayer.push_back(id.superlayer());
1436  MB3Time.push_back((*digiIt).time());
1437  MB3Layer.push_back(id.layer());
1438  }
1439  if (wireId.station() == 4) {
1440  MB4SLayer.push_back(id.superlayer());
1441  MB4Time.push_back((*digiIt).time());
1442  MB4Layer.push_back(id.layer());
1443  }
1444  }
1445  }
1446 
1447  if (verbosity > 1) {
1448  eventout += "\n Number of DtMuonDigis collected:.......... ";
1449  eventout += nDt;
1450  }
1451 
1452  // get CSC Strip information
1454  iEvent.getByToken(MuCSCStripSrc_Token_, strips);
1455  if (!strips.isValid()) {
1456  edm::LogWarning(MsgLoggerCat) << "Unable to find muon strips in event!";
1457  return;
1458  }
1459 
1460  int nStrips = 0;
1461  for (CSCStripDigiCollection::DigiRangeIterator j = strips->begin(); j != strips->end(); ++j) {
1462  std::vector<CSCStripDigi>::const_iterator digiItr = (*j).second.first;
1463  std::vector<CSCStripDigi>::const_iterator last = (*j).second.second;
1464 
1465  for (; digiItr != last; ++digiItr) {
1466  ++nStrips;
1467 
1468  // average pedestals
1469  std::vector<int> adcCounts = digiItr->getADCCounts();
1470  theCSCStripPedestalSum += adcCounts[0];
1471  theCSCStripPedestalSum += adcCounts[1];
1473 
1474  // if there are enough pedestal statistics
1475  if (theCSCStripPedestalCount > 100) {
1477  if (adcCounts[5] > (pedestal + 100))
1478  CSCStripADC.push_back(adcCounts[4] - pedestal);
1479  }
1480  }
1481  }
1482 
1483  if (verbosity > 1) {
1484  eventout += "\n Number of CSCStripDigis collected:........ ";
1485  eventout += nStrips;
1486  }
1487 
1488  // get CSC Wire information
1490  iEvent.getByToken(MuCSCWireSrc_Token_, wires);
1491  if (!wires.isValid()) {
1492  edm::LogWarning(MsgLoggerCat) << "Unable to find muon wires in event!";
1493  return;
1494  }
1495 
1496  int nWires = 0;
1497  for (CSCWireDigiCollection::DigiRangeIterator j = wires->begin(); j != wires->end(); ++j) {
1498  std::vector<CSCWireDigi>::const_iterator digiItr = (*j).second.first;
1499  std::vector<CSCWireDigi>::const_iterator endDigi = (*j).second.second;
1500 
1501  for (; digiItr != endDigi; ++digiItr) {
1502  ++nWires;
1503 
1504  CSCWireTime.push_back(digiItr->getTimeBin());
1505  }
1506  }
1507 
1508  if (verbosity > 1) {
1509  eventout += "\n Number of CSCWireDigis collected:......... ";
1510  eventout += nWires;
1511  }
1512 
1513  if (verbosity > 0)
1514  edm::LogInfo(MsgLoggerCat) << eventout << "\n";
1515 
1516  return;
1517 }
1518 
1520  std::string MsgLoggerCat = "GlobalDigisProducer_storeMuon";
1521 
1522  if (verbosity > 2) {
1523  // dt output
1524  TString eventout("\n nMB1 = ");
1525  eventout += MB1SLayer.size();
1526  for (unsigned int i = 0; i < MB1SLayer.size(); ++i) {
1527  eventout += "\n (slayer, time, layer) = (";
1528  eventout += MB1SLayer[i];
1529  eventout += ", ";
1530  eventout += MB1Time[i];
1531  eventout += ", ";
1532  eventout += MB1Layer[i];
1533  eventout += ")";
1534  }
1535  eventout += "\n nMB2 = ";
1536  eventout += MB2SLayer.size();
1537  for (unsigned int i = 0; i < MB2SLayer.size(); ++i) {
1538  eventout += "\n (slayer, time, layer) = (";
1539  eventout += MB2SLayer[i];
1540  eventout += ", ";
1541  eventout += MB2Time[i];
1542  eventout += ", ";
1543  eventout += MB2Layer[i];
1544  eventout += ")";
1545  }
1546  eventout += "\n nMB3 = ";
1547  eventout += MB3SLayer.size();
1548  for (unsigned int i = 0; i < MB3SLayer.size(); ++i) {
1549  eventout += "\n (slayer, time, layer) = (";
1550  eventout += MB3SLayer[i];
1551  eventout += ", ";
1552  eventout += MB3Time[i];
1553  eventout += ", ";
1554  eventout += MB3Layer[i];
1555  eventout += ")";
1556  }
1557  eventout += "\n nMB2 = ";
1558  eventout += MB4SLayer.size();
1559  for (unsigned int i = 0; i < MB4SLayer.size(); ++i) {
1560  eventout += "\n (slayer, time, layer) = (";
1561  eventout += MB4SLayer[i];
1562  eventout += ", ";
1563  eventout += MB4Time[i];
1564  eventout += ", ";
1565  eventout += MB4Layer[i];
1566  eventout += ")";
1567  }
1568 
1569  // CSC Strip
1570  eventout += "\n nCSCStrip = ";
1571  eventout += CSCStripADC.size();
1572  for (unsigned int i = 0; i < CSCStripADC.size(); ++i) {
1573  eventout += "\n (adc) = (";
1574  eventout += CSCStripADC[i];
1575  eventout += ")";
1576  }
1577 
1578  // CSC Wire
1579  eventout += "\n nCSCWire = ";
1580  eventout += CSCWireTime.size();
1581  for (unsigned int i = 0; i < CSCWireTime.size(); ++i) {
1582  eventout += "\n (time) = (";
1583  eventout += CSCWireTime[i];
1584  eventout += ")";
1585  }
1586 
1587  edm::LogInfo(MsgLoggerCat) << eventout << "\n";
1588  }
1589 
1594 
1595  product.putCSCstripDigis(CSCStripADC);
1596 
1597  product.putCSCwireDigis(CSCWireTime);
1598 
1599  return;
1600 }
1601 
1603  std::string MsgLoggerCat = "GlobalDigisProducer_clear";
1604 
1605  if (verbosity > 0)
1606  edm::LogInfo(MsgLoggerCat) << "Clearing event holders";
1607 
1608  // reset electromagnetic info
1609  // EE info
1610  EECalmaxPos.clear();
1611  EECalAEE.clear();
1612  EECalSHE.clear();
1613  // EB info
1614  EBCalmaxPos.clear();
1615  EBCalAEE.clear();
1616  EBCalSHE.clear();
1617  // ES info
1618  ESCalADC0.clear();
1619  ESCalADC1.clear();
1620  ESCalADC2.clear();
1621  ESCalSHE.clear();
1622 
1623  // reset HCal Info
1624  HBCalAEE.clear();
1625  HBCalSHE.clear();
1626  HECalAEE.clear();
1627  HECalSHE.clear();
1628  HOCalAEE.clear();
1629  HOCalSHE.clear();
1630  HFCalAEE.clear();
1631  HFCalSHE.clear();
1632 
1633  // reset Track Info
1634  TIBL1ADC.clear();
1635  TIBL2ADC.clear();
1636  TIBL3ADC.clear();
1637  TIBL4ADC.clear();
1638  TIBL1Strip.clear();
1639  TIBL2Strip.clear();
1640  TIBL3Strip.clear();
1641  TIBL4Strip.clear();
1642 
1643  TOBL1ADC.clear();
1644  TOBL2ADC.clear();
1645  TOBL3ADC.clear();
1646  TOBL4ADC.clear();
1647  TOBL1Strip.clear();
1648  TOBL2Strip.clear();
1649  TOBL3Strip.clear();
1650  TOBL4Strip.clear();
1651 
1652  TIDW1ADC.clear();
1653  TIDW2ADC.clear();
1654  TIDW3ADC.clear();
1655  TIDW1Strip.clear();
1656  TIDW2Strip.clear();
1657  TIDW3Strip.clear();
1658 
1659  TECW1ADC.clear();
1660  TECW2ADC.clear();
1661  TECW3ADC.clear();
1662  TECW4ADC.clear();
1663  TECW5ADC.clear();
1664  TECW6ADC.clear();
1665  TECW7ADC.clear();
1666  TECW8ADC.clear();
1667  TECW1Strip.clear();
1668  TECW2Strip.clear();
1669  TECW3Strip.clear();
1670  TECW4Strip.clear();
1671  TECW5Strip.clear();
1672  TECW6Strip.clear();
1673  TECW7Strip.clear();
1674  TECW8Strip.clear();
1675 
1676  BRL1ADC.clear();
1677  BRL1Row.clear();
1678  BRL1Col.clear();
1679  BRL2ADC.clear();
1680  BRL2Row.clear();
1681  BRL2Col.clear();
1682  BRL3ADC.clear();
1683  BRL3Row.clear();
1684  BRL3Col.clear();
1685 
1686  FWD1pADC.clear();
1687  FWD1pRow.clear();
1688  FWD1pCol.clear();
1689  FWD1nADC.clear();
1690  FWD1nRow.clear();
1691  FWD1nCol.clear();
1692  FWD2pADC.clear();
1693  FWD2pRow.clear();
1694  FWD2pCol.clear();
1695  FWD2nADC.clear();
1696  FWD2nRow.clear();
1697  FWD2nCol.clear();
1698 
1699  // muon clear
1700  MB1SLayer.clear();
1701  MB1Time.clear();
1702  MB1Layer.clear();
1703  MB2SLayer.clear();
1704  MB2Time.clear();
1705  MB2Layer.clear();
1706  MB3SLayer.clear();
1707  MB3Time.clear();
1708  MB3Layer.clear();
1709  MB4SLayer.clear();
1710  MB4Time.clear();
1711  MB4Layer.clear();
1712 
1713  CSCStripADC.clear();
1714 
1715  CSCWireTime.clear();
1716 
1717  return;
1718 }
1719 
1720 // define this as a plug-in
1721 // DEFINE_FWK_MODULE(GlobalDigisProducer);
RunNumber_t run() const
Definition: EventID.h:38
void putTECW7Digis(const std::vector< float > &adc, const std::vector< int > &strip)
void putTOBL4Digis(const std::vector< float > &adc, const std::vector< int > &strip)
T getParameter(std::string const &) const
EventNumber_t event() const
Definition: EventID.h:40
T getUntrackedParameter(std::string const &, T const &) const
void putFWD2pDigis(const std::vector< float > &adc, const std::vector< int > &row, const std::vector< int > &column)
void putTOBL1Digis(const std::vector< float > &adc, const std::vector< int > &strip)
std::vector< PCaloHit > PCaloHitContainer
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:131
key_type id() const
Definition: EBDataFrame.h:28
int ihf
unsigned int tibLayer(const DetId &id) const
edm::EDGetTokenT< CSCStripDigiCollection > MuCSCStripSrc_Token_
edm::EDGetTokenT< CrossingFrame< PCaloHit > > EEHits_Token_
void putBRL3Digis(const std::vector< float > &adc, const std::vector< int > &row, const std::vector< int > &column)
static const int sdHcalOut
edm::InputTag MuCSCStripSrc_
edm::EDGetTokenT< edm::SortedCollection< HBHEDataFrame > > HBHEDigi_Token_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
const ESDetId & id() const
Definition: ESDataFrame.h:19
unsigned int pxfDisk(const DetId &id) const
static const int sdSiTID
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
void putMB1Digis(const std::vector< int > &slayer, const std::vector< float > &time, const std::vector< int > &layer)
std::vector< T >::const_iterator const_iterator
unsigned long long EventNumber_t
unsigned int tidWheel(const DetId &id) const
std::map< uint32_t, float, std::less< uint32_t > > MapType
void fillTrk(edm::Event &, const edm::EventSetup &)
void putHOCalDigis(const std::vector< float > &aee, const std::vector< float > &she)
edm::EDGetTokenT< edm::DetSetVector< SiStripDigi > > SiStripSrc_Token_
int size() const
Definition: ESDataFrame.h:21
edm::EDGetTokenT< edm::PCaloHitContainer > HCalSrc_Token_
void putFWD2nDigis(const std::vector< float > &adc, const std::vector< int > &row, const std::vector< int > &column)
void storeECal(PGlobalDigi &)
edm::EDGetTokenT< EEDigiCollection > ECalEESrc_Token_
void putFWD1nDigis(const std::vector< float > &adc, const std::vector< int > &row, const std::vector< int > &column)
int gainId() const
get the gainId (2 bits)
void putTECW8Digis(const std::vector< float > &adc, const std::vector< int > &strip)
void putFWD1pDigis(const std::vector< float > &adc, const std::vector< int > &row, const std::vector< int > &column)
int size() const
Definition: EcalDataFrame.h:26
nStrips
1.2 is to make the matching window safely the two nearest strips 0.35 is the size of an ME0 chamber i...
void putTIDW3Digis(const std::vector< float > &adc, const std::vector< int > &strip)
void putTECW3Digis(const std::vector< float > &adc, const std::vector< int > &strip)
void putBRL1Digis(const std::vector< float > &adc, const std::vector< int > &row, const std::vector< int > &column)
void fillMuon(edm::Event &, const edm::EventSetup &)
char const * label
GlobalDigisProducer(const edm::ParameterSet &)
void putTECW6Digis(const std::vector< float > &adc, const std::vector< int > &strip)
void adc2fC(const HBHEDataFrame &df, CaloSamples &lf) const override
Definition: HcalCoderDb.cc:73
int iEvent
Definition: GenABIO.cc:224
edm::EDGetTokenT< DTDigiCollection > MuDTSrc_Token_
void putHBCalDigis(const std::vector< float > &aee, const std::vector< float > &she)
void putTECW2Digis(const std::vector< float > &adc, const std::vector< int > &strip)
static const int sdSiTIB
void putEBCalDigis(const std::vector< int > &maxpos, const std::vector< double > &aee, const std::vector< float > &she)
static const int sdPxlBrl
void putTECW1Digis(const std::vector< float > &adc, const std::vector< int > &strip)
edm::EDGetTokenT< edm::DetSetVector< PixelDigi > > SiPxlSrc_Token_
static const int MAXSAMPLES
Definition: ESDataFrame.h:30
void produce(edm::Event &, const edm::EventSetup &) override
void beginJob(void) override
void putHFCalDigis(const std::vector< float > &aee, const std::vector< float > &she)
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:48
void putTECW4Digis(const std::vector< float > &adc, const std::vector< int > &strip)
void putTOBL2Digis(const std::vector< float > &adc, const std::vector< int > &strip)
void storeTrk(PGlobalDigi &)
void storeHCal(PGlobalDigi &)
edm::EDGetTokenT< EBDigiCollection > ECalEBSrc_Token_
void putESCalDigis(const std::vector< float > &adc0, const std::vector< float > &adc1, const std::vector< float > &adc2, const std::vector< float > &she)
static const int sdSiTOB
float gain6Over1() const
edm::EDGetTokenT< edm::SortedCollection< HODataFrame > > HODigi_Token_
#define end
Definition: vmac.h:39
edm::EDGetTokenT< ESDigiCollection > ECalESSrc_Token_
bool isValid() const
Definition: HandleBase.h:70
void putTECW5Digis(const std::vector< float > &adc, const std::vector< int > &strip)
void putMB4Digis(const std::vector< int > &slayer, const std::vector< float > &time, const std::vector< int > &layer)
iterator end()
Return the off-the-end iterator.
Definition: DetSetVector.h:325
key_type id() const
Definition: EEDataFrame.h:24
edm::EDGetTokenT< CrossingFrame< PCaloHit > > ESHits_Token_
ii
Definition: cuy.py:590
void putBRL2Digis(const std::vector< float > &adc, const std::vector< int > &row, const std::vector< int > &column)
unsigned int pxbLayer(const DetId &id) const
void reserve(size_t isize)
edm::EDGetTokenT< edm::SortedCollection< HFDataFrame > > HFDigi_Token_
Definition: DetId.h:17
constexpr double pedestal(int fCapId) const
get pedestal for capid=0..3
std::map< int, double, std::less< int > > ECalgainConv_
void putHECalDigis(const std::vector< float > &aee, const std::vector< float > &she)
T const * product() const
Definition: Handle.h:69
int size() const
get the size
Definition: CaloSamples.h:24
std::pair< const_iterator, const_iterator > Range
void putEECalDigis(const std::vector< int > &maxpos, const std::vector< double > &aee, const std::vector< float > &she)
static const int sdHcalFwd
float gain12Over6() const
const HcalQIECoder * getHcalCoder(const HcalGenericDetId &fId) const
std::vector< DigiType >::const_iterator const_iterator
void putTIBL1Digis(const std::vector< float > &adc, const std::vector< int > &strip)
static const int sdHcalBrl
void putMB2Digis(const std::vector< int > &slayer, const std::vector< float > &time, const std::vector< int > &layer)
const HcalQIEShape * getHcalShape(const HcalGenericDetId &fId) const
std::string const & label() const
Definition: InputTag.h:36
edm::EventID id() const
Definition: EventBase.h:59
static const int sdSiTEC
#define begin
Definition: vmac.h:32
void putTIDW2Digis(const std::vector< float > &adc, const std::vector< int > &strip)
T get() const
Definition: EventSetup.h:73
void storeMuon(PGlobalDigi &)
void putMB3Digis(const std::vector< int > &slayer, const std::vector< float > &time, const std::vector< int > &layer)
unsigned int pxfSide(const DetId &id) const
strips
#turn off noise in all subdetectors simHcalUnsuppressedDigis.doNoise = False mix.digitizers.hcal.doNoise = False simEcalUnsuppressedDigis.doNoise = False mix.digitizers.ecal.doNoise = False simEcalUnsuppressedDigis.doESNoise = False simSiPixelDigis.AddNoise = False mix.digitizers.pixel.AddNoise = False simSiStripDigis.Noise = False mix.digitizers.strip.AddNoise = False
Definition: DigiDM_cff.py:32
int adc() const
get the ADC sample (singed 16 bits)
Definition: ESSample.h:16
void fillHCal(edm::Event &, const edm::EventSetup &)
iterator begin()
Return an iterator to the first DetSet.
Definition: DetSetVector.h:314
unsigned int RunNumber_t
static const int sdPxlFwd
static constexpr int MAXSAMPLES
Definition: EcalDataFrame.h:48
void fillECal(edm::Event &, const edm::EventSetup &)
void putCSCwireDigis(const std::vector< float > &time)
collection_type::const_iterator const_iterator
Definition: DetSet.h:32
bool isValid() const
Definition: ESHandle.h:44
const HcalCalibrations & getHcalCalibrations(const HcalGenericDetId &fId) const
collection_type::const_iterator const_iterator
Definition: DetSetVector.h:102
void putTIBL4Digis(const std::vector< float > &adc, const std::vector< int > &strip)
edm::EDGetTokenT< CSCWireDigiCollection > MuCSCWireSrc_Token_
void putTIBL2Digis(const std::vector< float > &adc, const std::vector< int > &strip)
void putTIBL3Digis(const std::vector< float > &adc, const std::vector< int > &strip)
unsigned int tecWheel(const DetId &id) const
edm::EDGetTokenT< CrossingFrame< PCaloHit > > EBHits_Token_
T const * product() const
Definition: ESHandle.h:86
std::string const & instance() const
Definition: InputTag.h:37
static const int sdHcalEC
void putTOBL3Digis(const std::vector< float > &adc, const std::vector< int > &strip)
def move(src, dest)
Definition: eostools.py:511
void putCSCstripDigis(const std::vector< float > &adc)
unsigned int tobLayer(const DetId &id) const
int adc() const
get the ADC sample (12 bits)
void getAllStableProvenance(std::vector< StableProvenance const * > &provenances) const
Definition: Event.cc:126
void putTIDW1Digis(const std::vector< float > &adc, const std::vector< int > &strip)