CMS 3D CMS Logo

QIE10Task.cc
Go to the documentation of this file.
1 
3 #include <map>
4 
5 using namespace hcaldqm;
6 using namespace hcaldqm::constants;
8  DQTask(ps)
9 {
10 
11  // tags
13  edm::InputTag("hcalDigis"));
15  edm::InputTag("hcalDigis"));
16  _tokQIE10 = consumes<QIE10DigiCollection>(_tagQIE10);
17  _tokHF = consumes<HFDigiCollection>(_tagHF);
18 
19  // cuts
20  _cut = ps.getUntrackedParameter<double>("cut", 50.0);
21  _ped = ps.getUntrackedParameter<int>("ped", 4);
22 }
24  edm::Run const& r, edm::EventSetup const& es)
25 {
26  if (_ptype==fLocal)
27  if (r.runAuxiliary().run()==1)
28  return;
29 
30  DQTask::bookHistograms(ib, r, es);
31 
32  // GET WHAT YOU NEED
34  es.get<HcalDbRecord>().get(dbs);
35  _emap = dbs->getHcalMapping();
36  std::vector<uint32_t> vhashC36;
37  vhashC36.push_back(HcalElectronicsId(36, 3,
38  FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
40  vhashC36);
41 
42  // create a Dual Anode filter
43  std::vector<uint32_t> vhashDA;
44  for (int depth=1; depth<=2; depth++)
45  for (int ieta=29; ieta<=41; ieta++)
46  vhashDA.push_back(HcalDetId(HcalForward, ieta, 39, depth));
48  vhashDA);
49 
50  // INITIALIZE what you need
56  "ShapeCut",
59  _cLETDCvsADC.initialize(_name, "LETDCvsADC",
63  _cTETDCvsADC.initialize(_name, "TETDCvsADC",
67  _cLETDC.initialize(_name, "LETDC",
70  _cADC.initialize(_name, "ADC",
77 
78  // QIE8 vs 10 and 10 vs 10
79  _cADCCorrelation10vs8.initialize(_name, "ADCCorrelation10vs8TS2",
83  _cADCCorrelation10vs10.initialize(_name, "ADCCorrelation10vs10",
87  _cfCCorrelation10vs8.initialize(_name, "fCorrelation10vs8TS2",
91  _cfCCorrelation10vs10.initialize(_name, "fCCorrelation10vs10",
95  _cLETDCCorrelation10vs10.initialize(_name, "LETDCCorrelation",
99 
100  unsigned int nTS = _ptype==fLocal ? 10 : 6;
101  for (unsigned int j=0; j<nTS; j++)
102  {
104  "LETDCvsADC", hcaldqm::hashfunctions::fEChannel,
109  "TETDCvsADC", hcaldqm::hashfunctions::fEChannel,
121 
122  _cADCCorrelation10vs8_DChannel[j].initialize(_name, "ADCCorrelation10vs8TS2",
127  _cfCCorrelation10vs8_DChannel[j].initialize(_name, "fCCorrelation10vs8TS2",
132 
134  "ADCCorrelation10vs10_ieta30",
139  "ADCCorrelation10vs10_ieta34",
144  "fCCorrelation10vs10_ieta30",
149  "fCCorrelation10vs10_ieta34",
153  _cLETDCCorrelation10vs10_ieta30[j].initialize(_name, "LETDCCorrelation_ieta30",
157  _cLETDCCorrelation10vs10_ieta34[j].initialize(_name, "LETDCCorrelation_ieta34",
161  }
162 
167  _cLETDC.book(ib, _subsystem);
168  _cADC.book(ib, _subsystem);
174  for (unsigned int i=0; i<nTS; i++)
175  {
176  char aux[10];
177  sprintf(aux, "TS%d", i);
182 
191  }
192 
194 }
195 
197  edm::EventSetup const& es)
198 {
199 
200  // finish
201  DQTask::endLuminosityBlock(lb, es);
202 }
203 
204 /* virtual */ void QIE10Task::_process(edm::Event const& e,
205  edm::EventSetup const&)
206 {
209  if (!e.getByToken(_tokQIE10, cqie10))
210  return;
211  if (!e.getByToken(_tokHF, chf))
212  _logger.dqmthrow("Collection HFDigiCollection isn't available"
213  + _tagHF.label() + " " + _tagHF.instance());
214 
215  std::map<uint32_t, QIE10DataFrame> mqie10;
216  for (uint32_t i=0; i<cqie10->size(); i++)
217  {
218  QIE10DataFrame frame = static_cast<QIE10DataFrame>((*cqie10)[i]);
219  HcalDetId did = frame.detid();
221 
222  // compute the signal, ped subracted
223  double q = hcaldqm::utilities::sumQ_v10<QIE10DataFrame>(frame,
224  constants::adc2fC[_ped], 0, frame.samples()-1);
225 
226  // iterate thru all TS and fill
227  for (int j=0; j<frame.samples(); j++)
228  {
229  // shapes are after the cut
230  if (q>_cut)
231  {
232  _cShapeCut_EChannel.fill(eid, j,
233  constants::adc2fC[frame[j].adc()]);
234  _cShapeCut.fill(j, constants::adc2fC[frame[j].adc()]);
235  }
236 
237  // w/o a cut
238  _cLETDCvsADC_EChannel[j].fill(eid, frame[j].adc(),
239  frame[j].le_tdc());
240  _cLETDCvsADC.fill(frame[j].adc(), frame[j].le_tdc());
241  _cTETDCvsADC_EChannel[j].fill(eid, frame[j].adc(),
242  frame[j].te_tdc());
243  _cTETDCvsADC.fill(frame[j].adc(), frame[j].te_tdc());
244  _cLETDC_EChannel[j].fill(eid, frame[j].le_tdc());
245  _cLETDC.fill(frame[j].le_tdc());
246  _cADC_EChannel[j].fill(eid, frame[j].adc());
247  _cADC.fill(frame[j].adc());
248  }
249 
250  // Correlation histograms
251  mqie10[did.rawId()] = frame;
252  }
253 
254  // Collect HF Digis
255  std::map<uint32_t, HFDataFrame> mqie8;
256  for (HFDigiCollection::const_iterator it=chf->begin(); it!=chf->end();
257  ++it)
258  {
259  // we only need iphi 39
260  if (!(it->id().iphi()==39 && it->id().ieta()>0))
261  continue;
262 
263  mqie8[it->id().rawId()] = *it;
264  }
265 
266  // Now, we iterate thru qie10s and fill the correlation plots
267  for (std::map<uint32_t, QIE10DataFrame>::const_iterator it=mqie10.begin();
268  it!=mqie10.end(); ++it)
269  {
270  uint32_t rawid = it->first;
271  // 1 is QIE10
272  HcalDetId did1 = HcalDetId(rawid);
273  QIE10DataFrame frame1_10 = it->second;
274  if ((did1.ieta()==30 || did1.ieta()==34) &&
275  (did1.depth()==2 || did1.depth()==4)) // select the dualqie10 ro
276  {
277  if (did1.depth()==4) continue; // skip depth4, they are treated for depth2
278 
279  // 2 is QIE10
280  HcalDetId did2 = HcalDetId(HcalForward, did1.ieta(), did1.iphi(),
281  did1.depth()+2);
282  QIE10DataFrame frame2_10 = mqie10[did2.rawId()];
283 
284  // fill
285  for (int j=0; j<frame1_10.samples(); j++)
286  {
287  _cADCCorrelation10vs10.fill(frame2_10[j].adc(),
288  frame1_10[j].adc());
290  constants::adc2fC[frame1_10[j].adc()]);
291  _cLETDCCorrelation10vs10.fill(frame2_10[j].le_tdc(),
292  frame1_10[j].le_tdc());
293 
294  if (did2.ieta()==30)
295  {
297  frame2_10[j].adc(),
298  frame1_10[j].adc());
300  constants::adc2fC[frame2_10[j].adc()],
301  constants::adc2fC[frame1_10[j].adc()]);
302  _cLETDCCorrelation10vs10_ieta30[j].fill(frame2_10[j].le_tdc(),
303  frame1_10[j].le_tdc());
304  }
305  else if (did2.ieta()==34)
306  {
308  constants::adc2fC[frame2_10[j].adc()],
309  constants::adc2fC[frame1_10[j].adc()]);
311  frame2_10[j].adc(),
312  frame1_10[j].adc());
313  _cLETDCCorrelation10vs10_ieta34[j].fill(frame2_10[j].le_tdc(),
314  frame1_10[j].le_tdc());
315  }
316  }
317  }
318  else
319  {
320  // 2 is QIE8
321  HcalDetId did2 = HcalDetId(HcalForward, did1.ieta(), did1.iphi(),
322  did1.depth()-2);
323  HFDataFrame frame2_8 = mqie8[did2.rawId()];
324 
325  // fill
326  for (int f10_itr=0; f10_itr<frame1_10.samples(); f10_itr++)
327  {
328  // compare QIE8 second TS VS each time slice for QIE10
329  int qie8_frame = 2;
330 
331  _cADCCorrelation10vs8.fill(frame2_8[qie8_frame].adc(),
332  frame1_10[f10_itr].adc());
333  _cADCCorrelation10vs8_DChannel[f10_itr].fill(did2,
334  frame2_8[qie8_frame].adc(), frame1_10[f10_itr].adc());
335  _cfCCorrelation10vs8.fill(constants::adc2fC[frame2_8[qie8_frame].adc()],
336  constants::adc2fC[frame1_10[f10_itr].adc()]);
337  _cfCCorrelation10vs8_DChannel[f10_itr].fill(did2,
338  constants::adc2fC[frame2_8[qie8_frame].adc()],
339  constants::adc2fC[frame1_10[f10_itr].adc()]);
340  }
341  }
342 
343 
344  }
345 }
346 
348 {
349 }
350 
int adc(sample_type sample)
get the ADC sample (12 bits)
int samples() const
total number of samples in the digi
edm::InputTag _tagHF
Definition: QIE10Task.h:39
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< QIE10DigiCollection > _tokQIE10
Definition: QIE10Task.h:40
virtual void initialize(std::string const &folder, hashfunctions::HashType, Quantity *, Quantity *qy=new ValueQuantity(quantity::fN), int debug=0)
Definition: Container1D.cc:40
hcaldqm::electronicsmap::ElectronicsMap _ehashmap
Definition: QIE10Task.h:53
virtual void initialize(std::string const &folder, Quantity *, Quantity *qy=new ValueQuantity(quantity::fN), int debug=0)
virtual void book(DQMStore::IBooker &, std::string subsystem="Hcal", std::string aux="")
hcaldqm::ContainerSingleProf1D _cShapeCut
Definition: QIE10Task.h:81
hcaldqm::ContainerProf1D _cShapeCut_EChannel
Definition: QIE10Task.h:56
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:457
virtual void initialize(std::string const &folder, Quantity *, Quantity *qy=new ValueQuantity(quantity::fN), int debug=0)
hcaldqm::ContainerSingle2D _cADCCorrelation10vs10_ieta34[10]
Definition: QIE10Task.h:71
void initialize(HcalElectronicsMap const *, ElectronicsMapType etype=fHcalElectronicsMap)
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
hcaldqm::ContainerSingle2D _cTETDCvsADC
Definition: QIE10Task.h:83
hcaldqm::ContainerSingle1D _cLETDC
Definition: QIE10Task.h:84
hcaldqm::Container2D _cADCCorrelation10vs8_DChannel[10]
Definition: QIE10Task.h:64
hcaldqm::Container2D _cfCCorrelation10vs8_DChannel[10]
Definition: QIE10Task.h:66
UpdateFreq
Definition: DQTask.h:17
virtual void _resetMonitors(hcaldqm::UpdateFreq)
Definition: QIE10Task.cc:347
std::vector< HFDataFrame >::const_iterator const_iterator
edm::EDGetTokenT< HFDigiCollection > _tokHF
Definition: QIE10Task.h:41
hcaldqm::filter::HashFilter _filter_DA
Definition: QIE10Task.h:49
hcaldqm::ContainerSingle2D _cLETDCvsADC
Definition: QIE10Task.h:82
hcaldqm::Container2D _cTETDCvsADC_EChannel[10]
Definition: QIE10Task.h:58
edm::InputTag _tagQIE10
Definition: QIE10Task.h:38
hcaldqm::Container1D _cLETDC_EChannel[10]
Definition: QIE10Task.h:59
void bookHistograms(fwlite::EventContainer &eventCont)
int _ped
Definition: QIE10Task.h:45
hcaldqm::Container2D _cLETDCvsADC_EChannel[10]
Definition: QIE10Task.h:57
int const FIBERCH_MIN
Definition: Constants.h:108
virtual void book(DQMStore::IBooker &, std::string subsystem="Hcal", std::string aux="")
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
hcaldqm::ContainerSingle2D _cADCCorrelation10vs10_ieta30[10]
Definition: QIE10Task.h:70
virtual void _process(edm::Event const &, edm::EventSetup const &)
Definition: QIE10Task.cc:204
int depth() const
get the tower depth
Definition: HcalDetId.cc:108
ProcessingType _ptype
Definition: DQModule.h:59
virtual void fill(uint32_t)
Definition: Container1D.cc:82
virtual void initialize(std::string const &folder, hashfunctions::HashType, Quantity *, Quantity *, int debug=0)
void dqmthrow(std::string const &msg) const
Definition: Logger.h:15
hcaldqm::ContainerSingle2D _cADCCorrelation10vs8
Definition: QIE10Task.h:65
int ieta() const
get the cell ieta
Definition: HcalDetId.h:56
hcaldqm::filter::HashFilter _filter_C36
Definition: QIE10Task.h:48
HcalElectronicsMap const * _emap
Definition: QIE10Task.h:52
virtual void initialize(std::string const &folder, hashfunctions::HashType, Quantity *, Quantity *, Quantity *qz=new ValueQuantity(quantity::fN), int debug=0)
Definition: Container2D.cc:32
int const FIBER_uTCA_MIN1
Definition: Constants.h:101
DetId detid() const
Get the detector id.
Logger _logger
Definition: DQModule.h:70
hcaldqm::Container2D _cOccupancy_depth
Definition: QIE10Task.h:61
std::string _name
Definition: DQModule.h:57
hcaldqm::ContainerSingle2D _cLETDCCorrelation10vs10
Definition: QIE10Task.h:75
virtual void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="")
hcaldqm::ContainerSingle2D _cADCCorrelation10vs10
Definition: QIE10Task.h:74
virtual void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &)
Definition: QIE10Task.cc:196
hcaldqm::ContainerSingle2D _cfCCorrelation10vs10_ieta30[10]
Definition: QIE10Task.h:76
const_iterator end() const
double const adc2fC[256]
Definition: Constants.h:229
int iphi() const
get the cell iphi
Definition: HcalDetId.cc:103
virtual void initialize(std::string const &folder, Quantity *, Quantity *, Quantity *qz=new ValueQuantity(quantity::fN), int debug=0)
virtual void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="")
Definition: Container1D.cc:957
const T & get() const
Definition: EventSetup.h:56
QIE10Task(edm::ParameterSet const &)
Definition: QIE10Task.cc:7
RunAuxiliary const & runAuxiliary() const
Definition: Run.h:59
std::string const & label() const
Definition: InputTag.h:36
hcaldqm::ContainerSingle2D _cfCCorrelation10vs10_ieta34[10]
Definition: QIE10Task.h:77
hcaldqm::ContainerSingle2D _cfCCorrelation10vs10
Definition: QIE10Task.h:78
hcaldqm::ContainerSingle2D _cLETDCCorrelation10vs10_ieta30[10]
Definition: QIE10Task.h:72
double _cut
Definition: QIE10Task.h:44
virtual void fill(HcalDetId const &) override
Definition: Container2D.cc:59
const HcalElectronicsMap * getHcalMapping() const
std::string _subsystem
Definition: DQModule.h:64
virtual void fill(int, int)
virtual void initialize(FilterType ftype, HashType htype, std::vector< uint32_t > const &)
Definition: HashFilter.cc:26
virtual void book(DQMStore::IBooker &, std::string subsystem="Hcal", std::string aux="")
virtual void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="") override
Definition: Container2D.cc:895
hcaldqm::ContainerSingle1D _cADC
Definition: QIE10Task.h:85
hcaldqm::ContainerSingle2D _cfCCorrelation10vs8
Definition: QIE10Task.h:67
virtual void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &)
Definition: QIE10Task.cc:23
hcaldqm::Container1D _cADC_EChannel[10]
Definition: QIE10Task.h:60
Readout chain identification for Hcal.
std::string const & instance() const
Definition: InputTag.h:37
hcaldqm::ContainerSingle2D _cLETDCCorrelation10vs10_ieta34[10]
Definition: QIE10Task.h:73
RunNumber_t run() const
Definition: RunAuxiliary.h:41
const_iterator begin() const
Definition: Run.h:42
ib
Definition: cuy.py:660