CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
EcalDisplaysByEvent.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: EcalDisplaysByEvent
4 // Class: EcalDisplaysByEvent
5 //
13 //
14 // Original Author: Seth COOPER
15 // Created: Th Aug 28 5:46:22 CEST 2007
16 // $Id: EcalDisplaysByEvent.cc,v 1.6 2011/10/10 09:05:21 eulisse Exp $
17 //
18 //
19 
22 #include "TLatex.h"
23 #include "TLine.h"
24 #include "TProfile2D.h"
25 #include <utility>
26 #include <string>
27 #include <vector>
28 using namespace edm;
29 using namespace std;
30 
31 //
32 // constants, enums and typedefs
33 //
34 
35 //
36 // static data member definitions
37 //
38 float EcalDisplaysByEvent::gainRatio[3] = { 1., 2. , 12. };
40 
41 //
42 // constructors and destructor
43 //
45  EBRecHitCollection_ (iConfig.getParameter<edm::InputTag>("EcalRecHitCollectionEB")),
46  EERecHitCollection_ (iConfig.getParameter<edm::InputTag>("EcalRecHitCollectionEE")),
47  EBDigis_ (iConfig.getParameter<edm::InputTag>("EBDigiCollection")),
48  EEDigis_ (iConfig.getParameter<edm::InputTag>("EEDigiCollection")),
49  headerProducer_ (iConfig.getParameter<edm::InputTag> ("headerProducer")),
50  runNum_(-1),
51  side_ (iConfig.getUntrackedParameter<int>("side", 3)),
52  threshold_ (iConfig.getUntrackedParameter<double>("amplitudeThreshold", 0.5)),
53  minTimingAmp_ (iConfig.getUntrackedParameter<double>("minimumTimingAmplitude", 0.100)),
54  makeDigiGraphs_ (iConfig.getUntrackedParameter<bool>("makeDigiGraphs", false)),
55  makeTimingHistos_ (iConfig.getUntrackedParameter<bool>("makeTimingHistos", true)),
56  makeEnergyHistos_ (iConfig.getUntrackedParameter<bool>("makeEnergyHistos", true)),
57  makeOccupancyHistos_ (iConfig.getUntrackedParameter<bool>("makeOccupancyHistos", true)),
58  histRangeMin_ (iConfig.getUntrackedParameter<double>("histogramMinRange",0.0)),
59  histRangeMax_ (iConfig.getUntrackedParameter<double>("histogramMaxRange",1.8)),
60  minTimingEnergyEB_ (iConfig.getUntrackedParameter<double>("minTimingEnergyEB",0.0)),
61  minTimingEnergyEE_ (iConfig.getUntrackedParameter<double>("minTimingEnergyEE",0.0))
62 {
63  vector<int> listDefaults;
64  listDefaults.push_back(-1);
65 
66  maskedChannels_ = iConfig.getUntrackedParameter<vector<int> >("maskedChannels", listDefaults);
67  maskedFEDs_ = iConfig.getUntrackedParameter<vector<int> >("maskedFEDs", listDefaults);
68  seedCrys_ = iConfig.getUntrackedParameter<vector<int> >("seedCrys",listDefaults);
69 
70  vector<string> defaultMaskedEBs;
71  defaultMaskedEBs.push_back("none");
72  maskedEBs_ = iConfig.getUntrackedParameter<vector<string> >("maskedEBs",defaultMaskedEBs);
73 
74  fedMap_ = new EcalFedMap();
75 
76  string title1 = "Jitter for all FEDs all events";
77  string name1 = "JitterAllFEDsAllEvents";
78  allFedsTimingHist_ = fileService->make<TH1F>(name1.c_str(),title1.c_str(),150,-7,7);
79 
80  // load up the maskedFED list with the proper FEDids
81  if(maskedFEDs_[0]==-1)
82  {
83  //if "actual" EB id given, then convert to FEDid and put in listFEDs_
84  if(maskedEBs_[0] != "none")
85  {
86  maskedFEDs_.clear();
87  for(vector<string>::const_iterator ebItr = maskedEBs_.begin(); ebItr != maskedEBs_.end(); ++ebItr)
88  {
89  maskedFEDs_.push_back(fedMap_->getFedFromSlice(*ebItr));
90  }
91  }
92  }
93 
94  for (int i=0; i<10; i++)
95  abscissa[i] = i;
96 
97  naiveEvtNum_ = 0;
98 
100 }
101 
102 
104 {
105 }
106 
107 
108 //
109 // member functions
110 //
111 
112 // ------------ method called once each job just before starting event loop ------------
113 void
115 {
117  c.get< EcalMappingRcd >().get(handle);
118  ecalElectronicsMap_ = handle.product();
119 }
120 
121 // ------------ method called to for each event ------------
122 void
124 {
125 
126  // get the headers
127  // (one header for each supermodule)
129  iEvent.getByLabel(headerProducer_, DCCHeaders);
130 
131  for (EcalRawDataCollection::const_iterator headerItr= DCCHeaders->begin();
132  headerItr != DCCHeaders->end ();
133  ++headerItr)
134  {
135  FEDsAndDCCHeaders_[headerItr->id()+600] = *headerItr;
136  }
137 
138  int ievt = iEvent.id().event();
139  naiveEvtNum_++;
140 
141  if(runNum_==-1)
142  {
143  runNum_ = iEvent.id().run();
144  canvasNames_ = fileService->make<TTree>("canvasNames","Names of written canvases");
145  names = new std::vector<string>();
146  canvasNames_->Branch("names","vector<string>",&names);
147 
148  histoCanvasNames_ = fileService->make<TTree>("histoCanvasNames","Names of written canvases with histos");
149  histoCanvasNamesVector = new std::vector<string>();
150  histoCanvasNames_->Branch("histoCanvasNamesVector","vector<string>",&histoCanvasNamesVector);
151  }
152 
153  //We only want the 3x3's for this event...
154  listEBChannels.clear();
155  listEEChannels.clear();
156 
157  //Get hits, digis, caloTopology from event/eventSetup
160  ESHandle<CaloTopology> caloTopo;
161  iSetup.get<CaloTopologyRecord>().get(caloTopo);
162  iEvent.getByLabel(EBRecHitCollection_, EBhits);
163  iEvent.getByLabel(EERecHitCollection_, EEhits);
166 
167  // Initialize histos for this event
169 
170  bool hasEBdigis = false;
171  bool hasEEdigis = false;
172  if(EBdigisHandle->size() > 0)
173  hasEBdigis = true;
174  if(EEdigisHandle->size() > 0)
175  hasEEdigis = true;
176 
177  // Produce the digi graphs
178  if(makeDigiGraphs_)
179  {
180  if(hasEBdigis) //if event has digis, it should have hits
181  selectHits(EBhits, ievt, caloTopo);
182  if(hasEEdigis)
183  selectHits(EEhits, ievt, caloTopo);
184  }
185 
186  // Produce the histos
187  if(hasEBdigis)
188  {
190  makeHistos(EBhits);
191  }
192  if(hasEEdigis)
193  {
195  makeHistos(EEhits);
196  }
197 
198  if(hasEBdigis || hasEEdigis)
199  drawHistos();
200 
202 }
203 
204 
206  int ievt, ESHandle<CaloTopology> caloTopo)
207 {
208  for (EcalRecHitCollection::const_iterator hitItr = hits->begin(); hitItr != hits->end(); ++hitItr)
209  {
210  EcalRecHit hit = (*hitItr);
211  DetId det = hit.id();
213  int FEDid = 600+elecId.dccId();
214  bool isBarrel = true;
215  if(FEDid < 610 || FEDid > 645)
216  isBarrel = false;
217  int cryIndex = isBarrel ? ((EBDetId)det).hashedIndex() : getEEIndex(elecId);
218  int ic = isBarrel ? ((EBDetId)det).ic() : getEEIndex(elecId);
219 
220  float ampli = hit.energy();
221 
222  vector<int>::iterator result;
223  result = find(maskedFEDs_.begin(), maskedFEDs_.end(), FEDid);
224  if(result != maskedFEDs_.end())
225  {
226  //LogWarning("EcalDisplaysByEvent") << "skipping uncalRecHit for FED " << FEDid << " ; amplitude " << ampli;
227  continue;
228  }
229  result = find(maskedChannels_.begin(), maskedChannels_.end(), cryIndex);
230  if (result != maskedChannels_.end())
231  {
232  //LogWarning("EcalDisplaysByEvent") << "skipping uncalRecHit for channel: " << cryIndex << " in fed: " << FEDid << " with amplitude " << ampli ;
233  continue;
234  }
235  bool cryIsInList = false;
236  result = find(seedCrys_.begin(), seedCrys_.end(), cryIndex);
237  if (result != seedCrys_.end())
238  cryIsInList = true;
239 
240  // Either we must have a user-requested cry (in which case there is no amplitude selection)
241  // Or we pick all crys that pass the amplitude cut (in which case there is no fixed crystal selection)
242  if(cryIsInList || (seedCrys_.empty() && ampli > threshold_))
243  {
244  // We have a winner!
245  crysAndAmplitudesMap_[cryIndex] = ampli;
246  string name = "Digis_Event" + intToString(naiveEvtNum_) + "_ic" + intToString(ic)
247  + "_FED" + intToString(FEDid);
248  string title = "Digis";
249  string seed = "ic" + intToString(ic) + "_FED" + intToString(FEDid);
250  int freq=1;
251  pair<map<string,int>::iterator,bool> pair = seedFrequencyMap_.insert(make_pair(seed,freq));
252  if(!pair.second)
253  {
254  ++(pair.first->second);
255  }
256 
257  //TODO: move this also to TFileService
258  TCanvas can(name.c_str(),title.c_str(),200,50,900,900);
259  can.Divide(side_,side_);
260  TGraph* myGraph;
261 
262  CaloNavigator<DetId> cursor = CaloNavigator<DetId>(det,caloTopo->getSubdetectorTopology(det));
263  //Now put each graph in one by one
264  for(int j=side_/2; j>=-side_/2; --j)
265  {
266  for(int i=-side_/2; i<=side_/2; ++i)
267  {
268  cursor.home();
269  cursor.offsetBy(i,j);
270  can.cd(i+1+side_/2+side_*(1-j));
271  myGraph = selectDigi(*cursor,ievt);
272  myGraph->Draw("A*");
273  }
274  }
275  can.Write();
276  names->push_back(name);
277  }
278  }
279 }
280 
281 TGraph* EcalDisplaysByEvent::selectDigi(DetId thisDet, int ievt)
282 {
283  int emptyY[10];
284  for (int i=0; i<10; i++)
285  emptyY[i] = 0;
286  TGraph* emptyGraph = fileService->make<TGraph>(10, abscissa, emptyY);
287  emptyGraph->SetTitle("NOT ECAL");
288 
289  //If the DetId is not from Ecal, return
290  if(thisDet.det() != DetId::Ecal)
291  return emptyGraph;
292 
293  emptyGraph->SetTitle("NO DIGIS");
294  //find digi we need -- can't get find() to work; need DataFrame(DetId det) to work?
296  int FEDid = 600+elecId.dccId();
297  bool isBarrel = true;
298  if(FEDid < 610 || FEDid > 645)
299  isBarrel = false;
300  int cryIndex = isBarrel ? ((EBDetId)thisDet).hashedIndex() : getEEIndex(elecId);
301  int ic = isBarrel ? ((EBDetId)thisDet).ic() : cryIndex;
302 
303  string sliceName = fedMap_->getSliceFromFed(FEDid);
304  EcalDataFrame df;
305  if(isBarrel)
306  {
308  while(digiItr != EBdigisHandle->end() && ((*digiItr).id() != (EBDetId)thisDet))
309  {
310  ++digiItr;
311  }
312  if(digiItr==EBdigisHandle->end())
313  {
314  //LogWarning("EcalDisplaysByEvent") << "Cannot find digi for ic:" << ic
315  // << " FED:" << FEDid << " evt:" << naiveEvtNum_;
316  return emptyGraph;
317  }
318  else
319  df = *digiItr;
320  }
321  else
322  {
324  while(digiItr != EEdigisHandle->end() && ((*digiItr).id() != (EEDetId)thisDet))
325  {
326  ++digiItr;
327  }
328  if(digiItr==EEdigisHandle->end())
329  {
330  //LogWarning("EcalDisplaysByEvent") << "Cannot find digi for ic:" << ic
331  // << " FED:" << FEDid << " evt:" << naiveEvtNum_;
332  return emptyGraph;
333  }
334  else df = *digiItr;
335  }
336 
337  int gainId = FEDsAndDCCHeaders_[FEDid].getMgpaGain();
338  int gainHuman;
339  if (gainId ==1) gainHuman =12;
340  else if (gainId ==2) gainHuman =6;
341  else if (gainId ==3) gainHuman =1;
342  else gainHuman =-1;
343 
344  double pedestal = 200;
345 
346  emptyGraph->SetTitle("FIRST TWO SAMPLES NOT GAIN12");
347  if(df.sample(0).gainId()!=1 || df.sample(1).gainId()!=1) return emptyGraph; //goes to the next digi
348  else {
349  ordinate[0] = df.sample(0).adc();
350  ordinate[1] = df.sample(1).adc();
351  pedestal = (double)(ordinate[0]+ordinate[1])/(double)2;
352  }
353 
354 
355  for (int i=0; i < df.size(); ++i ) {
356  if (df.sample(i).gainId() != 0)
357  ordinate[i] = (int)(pedestal+(df.sample(i).adc()-pedestal)*gainRatio[df.sample(i).gainId()-1]);
358  else
359  ordinate[i] = 49152; //Saturation of gain1
360  }
361 
362  TGraph* oneGraph = fileService->make<TGraph>(10, abscissa, ordinate);
363  string name = "Graph_ev" + intToString(naiveEvtNum_) + "_ic" + intToString(ic)
364  + "_FED" + intToString(FEDid);
365  string gainString = (gainId==1) ? "Free" : intToString(gainHuman);
366  string title = "Event" + intToString(naiveEvtNum_) + "_lv1a" + intToString(ievt) +
367  "_ic" + intToString(ic) + "_" + sliceName + "_gain" + gainString;
368 
369  float energy = 0;
370  map<int,float>::const_iterator itr;
371  itr = crysAndAmplitudesMap_.find(cryIndex);
372  if(itr!=crysAndAmplitudesMap_.end())
373  {
374  //edm::LogWarning("EcalDisplaysByEvent")<< "itr->second(ampli)="<< itr->second;
375  energy = (float) itr->second;
376  }
377  //else
378  //edm::LogWarning("EcalDisplaysByEvent") << "cry " << ic << "not found in ampMap";
379 
380  title+="_Energy"+floatToString(round(energy*1000));
381 
382  oneGraph->SetTitle(title.c_str());
383  oneGraph->SetName(name.c_str());
384  oneGraph->GetXaxis()->SetTitle("sample");
385  oneGraph->GetYaxis()->SetTitle("ADC");
386  return oneGraph;
387 }
388 
390 {
391  int FEDid = 600+elecId.dccId();
392  return 10000*FEDid+100*elecId.towerId()+5*(elecId.stripId()-1)+elecId.xtalId();
393 }
394 
396  const EBDigiCollection* ebDigis = ebDigiHandle.product();
397  for(EBDigiCollection::const_iterator digiItr = ebDigis->begin(); digiItr != ebDigis->end(); ++digiItr) {
398  EBDetId digiId = digiItr->id();
399  int ieta = digiId.ieta();
400  int iphi = digiId.iphi();
401  digiOccupancyEBAll_->Fill(iphi,ieta);
402  digiOccupancyEBcoarseAll_->Fill(iphi,ieta);
404  {
405  digiOccupancyEB_->Fill(iphi,ieta);
406  digiOccupancyEBcoarse_->Fill(iphi,ieta);
407  }
408  }
409 }
410 
412  const EEDigiCollection* eeDigis = eeDigiHandle.product();
413  for(EEDigiCollection::const_iterator digiItr = eeDigis->begin(); digiItr != eeDigis->end(); ++digiItr) {
414  DetId det = digiItr->id();
416  size_t FEDid = 600+elecId.dccId();
417  bool isEEM = false;
418  if(FEDid < 610)
419  isEEM = true;
420  EEDetId digiId = digiItr->id();
421  int ieta = digiId.iy();
422  int iphi = digiId.ix();
423  if(isEEM)
424  {
425  digiOccupancyEEMAll_->Fill(iphi,ieta);
426  digiOccupancyEEMcoarseAll_->Fill(iphi,ieta);
428  {
429  digiOccupancyEEMcoarse_->Fill(iphi,ieta);
430  digiOccupancyEEM_->Fill(iphi,ieta);
431  }
432  }
433  else
434  {
435  digiOccupancyEEPAll_->Fill(iphi,ieta);
436  digiOccupancyEEPcoarseAll_->Fill(iphi,ieta);
438  {
439  digiOccupancyEEP_->Fill(iphi,ieta);
440  digiOccupancyEEPcoarse_->Fill(iphi,ieta);
441  }
442  }
443  }
444 }
445 
447 {
448  for (EcalRecHitCollection::const_iterator hitItr = hits->begin(); hitItr != hits->end(); ++hitItr)
449  {
450  EcalRecHit hit = (*hitItr);
451  DetId det = hit.id();
453  int FEDid = 600+elecId.dccId();
454  bool isBarrel = true;
455  bool isEEM = false;
456  if(FEDid < 610 || FEDid > 645)
457  {
458  isBarrel = false;
459  if(FEDid < 610)
460  isEEM = true;
461  }
462  int iphi = isBarrel ? ((EBDetId)det).iphi() : ((EEDetId)det).ix();
463  int ieta = isBarrel ? ((EBDetId)det).ieta() : ((EEDetId)det).iy();
464  float energy = hit.energy();
465  float time = hit.time();
466 
467  // Fill energy histos
469  {
470  if(isBarrel)
471  {
472  energyEB_->Fill(energy);
473  energyMapEB_->Fill(iphi,ieta,energy);
474  energyMapEBcoarse_->Fill(iphi,ieta,energy);
475  }
476  else if(isEEM)
477  {
478  energyEEM_->Fill(energy);
479  energyMapEEM_->Fill(iphi,ieta,energy);
480  energyMapEEMcoarse_->Fill(iphi,ieta,energy);
481  }
482  else
483  {
484  energyEEP_->Fill(energy);
485  energyMapEEP_->Fill(iphi,ieta,energy);
486  energyMapEEPcoarse_->Fill(iphi,ieta,energy);
487  }
488  }
489  // Fill occupancy histos
491  {
492  if(isBarrel)
493  {
494  recHitOccupancyEB_->Fill(iphi,ieta);
495  recHitOccupancyEBcoarse_->Fill(iphi,ieta);
496  }
497  else if(isEEM)
498  {
499  recHitOccupancyEEM_->Fill(iphi,ieta);
500  recHitOccupancyEEMcoarse_->Fill(iphi,ieta);
501  }
502  else
503  {
504  recHitOccupancyEEP_->Fill(iphi,ieta);
505  recHitOccupancyEEPcoarse_->Fill(iphi,ieta);
506  }
507  }
508 
509  // Fill timing histos
511  {
512  if(isBarrel) {
513  timingEB_->Fill(time);
514  if(energy > minTimingEnergyEB_) {
515  timingMapEB_->Fill(iphi,ieta,time);
516  //timingMapEBCoarse_->Fill(iphi,ieta,time);
517  }
518  }
519  else if(isEEM) {
520  timingEEM_->Fill(time);
521  if(energy > minTimingEnergyEE_)
522  {
523  timingMapEEM_->Fill(iphi,ieta,time);
524  //timingMapEEMCoarse_->Fill(iphi,ieta,time);
525  }
526  }
527  else {
528  timingEEP_->Fill(time);
529  if(energy > minTimingEnergyEE_)
530  {
531  timingMapEEP_->Fill(iphi,ieta,time);
532  //timingMapEEPCoarse_->Fill(iphi,ieta,time);
533  }
534  }
535  }
536 
537  //All events
538  if(isBarrel)
539  {
540  energyEBAll_->Fill(energy);
541  energyMapEBAll_->Fill(iphi,ieta,energy);
542  energyMapEBcoarseAll_->Fill(iphi,ieta,energy);
543  recHitOccupancyEBAll_->Fill(iphi,ieta);
544  recHitOccupancyEBcoarseAll_->Fill(iphi,ieta);
545  timingEBAll_->Fill(time);
546  if(energy > minTimingEnergyEB_)
547  {
548  timingMapEBAll_->Fill(iphi,ieta,time);
549  timingMapEBCoarseAll_->Fill(iphi,ieta,time);
550  }
551  }
552  else if(isEEM)
553  {
554  energyEEMAll_->Fill(energy);
555  energyMapEEMAll_->Fill(iphi,ieta,energy);
556  energyMapEEMcoarseAll_->Fill(iphi,ieta,energy);
557  recHitOccupancyEEMAll_->Fill(iphi,ieta);
558  recHitOccupancyEEMcoarseAll_->Fill(iphi,ieta);
559  timingEEMAll_->Fill(time);
560  if(energy > minTimingEnergyEE_)
561  {
562  timingMapEEMAll_->Fill(iphi,ieta,time);
563  timingMapEEMCoarseAll_->Fill(iphi,ieta,time);
564  }
565  }
566  else
567  {
568  energyEEPAll_->Fill(energy);
569  energyMapEEPAll_->Fill(iphi,ieta,energy);
570  energyMapEEPcoarseAll_->Fill(iphi,ieta,energy);
571  recHitOccupancyEEPAll_->Fill(iphi,ieta);
572  recHitOccupancyEEPcoarseAll_->Fill(iphi,ieta);
573  timingEEPAll_->Fill(time);
574  if(energy > minTimingEnergyEE_)
575  {
576  timingMapEEPAll_->Fill(iphi,ieta,time);
577  timingMapEEPCoarseAll_->Fill(iphi,ieta,time);
578  }
579  }
580  // Fill FED-by-FED timing histos (all events)
581  TH1F* timingHist = FEDsAndTimingHists_[FEDid];
582  if(timingHist==0)
583  {
584  initHists(FEDid);
585  timingHist = FEDsAndTimingHists_[FEDid];
586  }
587  if(energy > minTimingAmp_)
588  {
589  timingHist->Fill(hit.time());
590  allFedsTimingHist_->Fill(hit.time());
591  }
592  }
593 }
594 
595 // ------------ method called once each job just after ending the event loop ------------
596 void
598 {
599  //All-event canvases
609 
610  if(runNum_ != -1) {
611  canvasNames_->Fill();
612  histoCanvasNames_->Fill();
613  }
614 
615  string frequencies = "";
616  for(std::map<std::string,int>::const_iterator itr = seedFrequencyMap_.begin();
617  itr != seedFrequencyMap_.end(); ++itr)
618  {
619  if(itr->second > 1)
620  {
621  frequencies+=itr->first;
622  frequencies+=" Frequency: ";
623  frequencies+=intToString(itr->second);
624  frequencies+="\n";
625  }
626  }
627  LogWarning("EcalDisplaysByEvent") << "Found seeds with frequency > 1: " << "\n\n" << frequencies;
628 
629  std::string channels;
630  for(std::vector<int>::const_iterator itr = maskedChannels_.begin();
631  itr != maskedChannels_.end(); ++itr)
632  {
633  channels+=intToString(*itr);
634  channels+=",";
635  }
636 
637  std::string feds;
638  for(std::vector<int>::const_iterator itr = maskedFEDs_.begin();
639  itr != maskedFEDs_.end(); ++itr)
640  {
641  feds+=intToString(*itr);
642  feds+=",";
643  }
644 
645  LogWarning("EcalDisplaysByEvent") << "Masked channels are: " << channels;
646  LogWarning("EcalDisplaysByEvent") << "Masked FEDs are: " << feds << " and that is all!";
647 }
648 
650 {
651  using namespace std;
652  ostringstream myStream;
653  myStream << num << flush;
654  return(myStream.str()); //returns the string form of the stringstream object
655 }
656 
658 {
659  using namespace std;
660  ostringstream myStream;
661  myStream << num << flush;
662  return(myStream.str()); //returns the string form of the stringstream object
663 }
664 
665 // insert the hist map into the map keyed by FED number
667 {
668  using namespace std;
669 
670  string title1 = "Jitter for ";
671  title1.append(fedMap_->getSliceFromFed(FED));
672  string name1 = "JitterFED";
673  name1.append(intToString(FED));
674  TH1F* timingHist = fileService->make<TH1F>(name1.c_str(),title1.c_str(),150,-7,7);
675  FEDsAndTimingHists_[FED] = timingHist;
676 }
677 
679 {
680  string lastPart = intToString(naiveEvtNum_)+"_LV1a"+intToString(ievt);
682  {
683  string canvasTitle = "Timing_Event"+lastPart;
684  timingEB_ = new TH1F("timeForAllFedsEB","timeForAllFeds;Relative Time (1 clock = 25ns)",78,-7,7);
685  timingEEM_ = new TH1F("timeForAllFedsEEM","timeForAllFeds_EEM;Relative Time (1 clock = 25ns)",78,-7,7);
686  timingEEP_ = new TH1F("timeForAllFedsEEP","timeForAllFeds_EEP;Relative Time (1 clock = 25ns)",78,-7,7);
687  timingCanvas_ = new TCanvas(canvasTitle.c_str(), canvasTitle.c_str(),300,60,500,200);
688  timingMapEB_ = init3DEcalHist("TimingMap", EB_FINE);
689  timingMapEEM_ = init3DEcalHist("TimingMap", EEM_FINE);
690  timingMapEEP_ = init3DEcalHist("TimingMap", EEP_FINE);
691  timingMapCanvas_ = init2DEcalCanvas("TimingMap_Event"+lastPart);
692  //timingMapEBCoarse_ = init3DEcalHist("TimingMap", EB_COARSE);
695  //timingMapCoarseCanvas_ = init2DEcalCanvas("TimingMapCoarse_Event"+lastPart);
696  }
698  {
699  energyEB_ = new TH1F("energyEB","Energy for EB Feds (GeV)",200,histRangeMin_,histRangeMax_);
700  energyEEM_ = new TH1F("energyEEM","Energy for EEM Feds (GeV)",200,histRangeMin_,10.0);
701  energyEEP_ = new TH1F("energyEEP","Energy for EEP Feds (GeV)",200,histRangeMin_,10.0);
702  string canvasTitle = "Energy_Event"+lastPart;
703  energyCanvas_ = new TCanvas(canvasTitle.c_str(), canvasTitle.c_str(),300,60,500,200);
704 
705  // Energy map hists
706  energyMapEB_ = init2DEcalHist("EnergyMap",EB_FINE);
709  energyMapEEM_ = init2DEcalHist("EnergyMap",EEM_FINE);
711  energyMapEEP_ = init2DEcalHist("EnergyMap",EEP_FINE);
712  energyMapCanvas_ = init2DEcalCanvas("EnergyMap_Event"+lastPart);
713  energyMapCoarseCanvas_ = init2DEcalCanvas("EnergyMapCoarse_Event"+lastPart);
714  }
716  {
717  // RecHit Occupancy
718  recHitOccupancyEB_ = init2DEcalHist("RecHitOccupancy",EB_FINE);
721  recHitOccupancyEEM_ = init2DEcalHist("RecHitOccupancy",EEM_FINE);
723  recHitOccupancyEEP_ = init2DEcalHist("RecHitOccupancy",EEP_FINE);
724  recHitOccupancyCanvas_ = init2DEcalCanvas("RecHitOccupancy_Event"+lastPart);
725  recHitOccupancyCoarseCanvas_ =init2DEcalCanvas("RecHitOccupancyCoarse_Event"+lastPart);
726 
727  //DigiOccupancy
728  digiOccupancyEB_ = init2DEcalHist("DigiOccupancy",EB_FINE);
729  digiOccupancyEBcoarse_ = init2DEcalHist("DigiOccupancy", EB_COARSE);
731  digiOccupancyEEM_ = init2DEcalHist("DigiOccupancy",EEM_FINE);
733  digiOccupancyEEP_ = init2DEcalHist("DigiOccupancy",EEP_FINE);
734  digiOccupancyCanvas_ = init2DEcalCanvas("DigiOccupancy_Event"+lastPart);
735  digiOccupancyCoarseCanvas_ = init2DEcalCanvas("DigiOccupancyCoarse_Event"+lastPart);
736  }
737 }
738 
740 {
741  delete timingEB_;
742  delete timingEEM_;
743  delete timingEEP_;
744  delete timingMapEB_;
745  delete timingMapEEM_;
746  delete timingMapEEP_;
747  delete timingCanvas_;
748  delete timingMapCanvas_;
749  delete energyEB_;
750  delete energyEEM_;
751  delete energyEEP_;
752  delete energyMapEB_;
753  delete energyMapEEM_;
754  delete energyMapEEP_;
755  delete energyMapEBcoarse_;
756  delete energyMapEEMcoarse_;
757  delete energyMapEEPcoarse_;
758  delete energyCanvas_;
759  delete energyMapCanvas_;
760  delete energyMapCoarseCanvas_;
761  delete recHitOccupancyEB_;
762  delete recHitOccupancyEEP_;
763  delete recHitOccupancyEEM_;
767  delete digiOccupancyEB_;
768  delete digiOccupancyEEM_;
769  delete digiOccupancyEEP_;
770  delete digiOccupancyEBcoarse_;
773  delete recHitOccupancyCanvas_;
775  delete digiOccupancyCanvas_;
777 }
778 
780 {
781  string canvasTitle = "Timing_AllEvents";
782  timingEBAll_ = new TH1F("timeForAllFedsEBAll","timeForAllFeds;Relative Time (1 clock = 25ns)",78,-7,7);
783  timingEEMAll_ = new TH1F("timeForAllFedsEEMAll","timeForAllFeds_EEM;Relative Time (1 clock = 25ns)",78,-7,7);
784  timingEEPAll_ = new TH1F("timeForAllFedsEEPAll","timeForAllFeds_EEP;Relative Time (1 clock = 25ns)",78,-7,7);
785  timingCanvasAll_ = new TCanvas(canvasTitle.c_str(), canvasTitle.c_str(),300,60,500,200);
786  timingMapEBAll_ = init3DEcalHist("TimingMapA", EB_FINE);
787  timingMapEEMAll_ = init3DEcalHist("TimingMapA", EEM_FINE);
788  timingMapEEPAll_ = init3DEcalHist("TimingMapA", EEP_FINE);
789  timingMapCanvasAll_ = init2DEcalCanvas("TimingMap_AllEvents");
793  //timingMapCoarseCanvasAll_ = init2DEcalCanvas("TimingMapCoarse_AllEvents");
794  energyEBAll_ = new TH1F("energyEBAllEvents","Energy for EB Feds (GeV)",200,histRangeMin_,histRangeMax_);
795  energyEEMAll_ = new TH1F("energyEEMAllEvents","Energy for EEM Feds (GeV)",200,histRangeMin_,10.0);
796  energyEEPAll_ = new TH1F("energyEEPAllEvents","Energy for EEP Feds (GeV)",200,histRangeMin_,10.0);
797  canvasTitle = "Energy_AllEvents";
798  energyCanvasAll_ = new TCanvas(canvasTitle.c_str(), canvasTitle.c_str(),300,60,500,200);
799 
800  // Energy map hists
801  energyMapEBAll_ = init2DEcalHist("EnergyMapA",EB_FINE);
804  energyMapEEMAll_ = init2DEcalHist("EnergyMapA",EEM_FINE);
806  energyMapEEPAll_ = init2DEcalHist("EnergyMapA",EEP_FINE);
807  energyMapCanvasAll_ = init2DEcalCanvas("EnergyMap_AllEvents");
808  energyMapCoarseCanvasAll_ = init2DEcalCanvas("EnergyMapCoarse_AllEvents");
809  // RecHit Occupancy
810  recHitOccupancyEBAll_ = init2DEcalHist("RecHitOccupancyA",EB_FINE);
813  recHitOccupancyEEMAll_ = init2DEcalHist("RecHitOccupancyA",EEM_FINE);
815  recHitOccupancyEEPAll_ = init2DEcalHist("RecHitOccupancyA",EEP_FINE);
816  recHitOccupancyCanvasAll_ = init2DEcalCanvas("RecHitOccupancy_AllEvents");
817  recHitOccupancyCoarseCanvasAll_ =init2DEcalCanvas("RecHitOccupancyCoarse_AllEvents");
818 
819  //DigiOccupancy
820  digiOccupancyEBAll_ = init2DEcalHist("DigiOccupancyA",EB_FINE);
823  digiOccupancyEEMAll_ = init2DEcalHist("DigiOccupancyA",EEM_FINE);
825  digiOccupancyEEPAll_ = init2DEcalHist("DigiOccupancyA",EEP_FINE);
826  digiOccupancyCanvasAll_ = init2DEcalCanvas("DigiOccupancy_AllEvents");
827  digiOccupancyCoarseCanvasAll_ = init2DEcalCanvas("DigiOccupancyCoarse_AllEvents");
828 
829 }
830 
831 
832 TH3F* EcalDisplaysByEvent::init3DEcalHist(std::string histTypeName, int subDet) {
833  TH3F* hist;
834  bool isBarrel = (subDet == EB_FINE || subDet == EB_COARSE) ? true : false;
835  bool isCoarse = (subDet == EB_COARSE || subDet == EEM_COARSE || subDet == EEP_COARSE) ? true : false;
836  bool isEEM = (subDet == EEM_FINE || subDet == EEM_COARSE) ? true : false;
837  std::string histName = histTypeName;
838  std::string histTitle = histTypeName;
839  double ttEtaBins[36] = {-85, -80, -75, -70, -65, -60, -55, -50, -45, -40, -35, -30, -25, -20, -15, -10, -5, 0, 1, 6, 11, 16, 21, 26, 31, 36, 41, 46, 51, 56, 61, 66, 71, 76, 81, 86 };
840  double modEtaBins[10]={-85, -65, -45, -25, 0, 1, 26, 46, 66, 86};
841  double ttPhiBins[73];
842  double modPhiBins[19];
843  double timingBins[79];
844  for (int i = 0; i < 79; ++i)
845  {
846  timingBins[i]= 6 - 7. + double(i) * 14. / 78.;
847  if (i<73)
848  {
849  ttPhiBins[i]=1+5*i;
850  if ( i < 19)
851  {
852  modPhiBins[i]=1+20*i;
853  }
854  }
855 
856  }
857 
858  if(isBarrel) {
859  histName = histName + "EB";
860  histTitle = histTitle + " EB";
861  if(isCoarse) {
862  histName = histName + "Coarse";
863  histTitle = histTitle + " by Module Nominal value = 6;iphi;ieta ";
864  hist = new TH3F(histName.c_str(),histTitle.c_str(),18,modPhiBins,9,modEtaBins,78,timingBins);
865  }
866  else {
867  histTitle = histTitle + " by TT Nominal value = 6;iphi;ieta";
868  hist = new TH3F(histName.c_str(),histTitle.c_str(),360/5,ttPhiBins,35,ttEtaBins,78,timingBins);
869  }
870  }
871  else {
872  double ttXBins[21];
873  double ttYBins[21];
874  for(int i=0;i!=21;++i) {
875  ttXBins[i] = 1 + 5*i;
876  ttYBins[i] = 1 + 5*i;
877  }
878  if(isEEM) {
879  histName = histName + "EEM";
880  histTitle = histTitle + " EEM";
881  }
882  else {
883  histName = histName + "EEP";
884  histTitle = histTitle + " EEP";
885  }
886  if(isCoarse) {
887  histName = histName + "Coarse";
888  histTitle = histTitle + " by Module Nominal value = 6;ix;iy";
889  hist = new TH3F(histName.c_str(),histTitle.c_str(),20,ttXBins,20,ttYBins,78,timingBins);
890  }
891  else {
892  histTitle = histTitle + " by TT Nominal value = 6;ix;iy";
893  hist = new TH3F(histName.c_str(),histTitle.c_str(),20,ttXBins,20,ttYBins,78,timingBins);
894  }
895  }
896  return hist;
897 }
898 
899 TH2F* EcalDisplaysByEvent::init2DEcalHist(std::string histTypeName, int subDet) {
900  TH2F* hist;
901  bool isBarrel = (subDet == EB_FINE || subDet == EB_COARSE) ? true : false;
902  bool isCoarse = (subDet == EB_COARSE || subDet == EEM_COARSE || subDet == EEP_COARSE) ? true : false;
903  bool isEEM = (subDet == EEM_FINE || subDet == EEM_COARSE) ? true : false;
904  std::string histName = histTypeName;
905  std::string histTitle = histTypeName;
906  if(isBarrel) {
907  histName = histName + "EB";
908  histTitle = histTitle + " EB";
909  if(isCoarse) {
910  histName = histName + "Coarse";
911  histTitle = histTitle + " Coarse;iphi;ieta";
912  double ttEtaBins[36] = {-85, -80, -75, -70, -65, -60, -55, -50, -45, -40,
913  -35, -30, -25, -20, -15, -10, -5, 0, 1, 6, 11, 16,
914  21, 26, 31, 36, 41, 46, 51, 56, 61, 66, 71, 76, 81, 86 };
915  hist = new TH2F(histName.c_str(),histTitle.c_str(),360/5,1,361.,35,ttEtaBins);
916  }
917  else {
918  histTitle = histTitle + ";iphi;ieta";
919  hist = new TH2F(histName.c_str(),histTitle.c_str(),360,1,361.,172,-86,86);
920  }
921  }
922  else {
923  if(isEEM) {
924  histName = histName + "EEM";
925  histTitle = histTitle + " EEM";
926  }
927  else {
928  histName = histName + "EEP";
929  histTitle = histTitle + " EEP";
930  }
931  if(isCoarse) {
932  histName = histName + "Coarse";
933  histTitle = histTitle + " Coarse;ix;iy";
934  hist = new TH2F(histName.c_str(),histTitle.c_str(),20,1,101,20,1,101);
935  }
936  else {
937  histTitle = histTitle + ";ix;iy";
938  hist = new TH2F(histName.c_str(),histTitle.c_str(),100,1,101,100,1,101);
939  }
940  }
941  return hist;
942 }
943 
944 TCanvas* EcalDisplaysByEvent::init2DEcalCanvas(std::string canvasTitle) {
945  TCanvas* canvas = new TCanvas(canvasTitle.c_str(), canvasTitle.c_str(),300,60,500,200);
946  return canvas;
947 }
948 
950 {
952  {
953  // Put the timing canvas together
955  // drawCanvas(timingMapCoarseCanvas_,timingMapEEMCoarse_,timingMapEBCoarse_,timingMapEEPCoarse_);
957  }
959  {
960  // Put the energy canvas together
962  // Put the energy map canvas together
965  }
967  {
968  // Put the occupancy canvas together
971  // And the same for the digis
974  }
975 }
976 
977 void EcalDisplaysByEvent::drawCanvas(TCanvas* canvas, TH1F* hist1, TH1F* hist2, TH1F* hist3) {
978  canvas->Divide(1,2);
979  canvas->cd(1)->Divide(2,1);
980  canvas->cd(1)->cd(1);
981  hist1->Draw();
982  canvas->cd(2);
983  hist2->Draw();
984  canvas->cd(1)->cd(2);
985  hist3->Draw();
986  histoCanvasNamesVector->push_back(canvas->GetName());
987  canvas->SetCanvasSize(500,500);
988  canvas->SetFixedAspectRatio(true);
989  canvas->Write();
990 }
991 
992 void EcalDisplaysByEvent::drawCanvas(TCanvas* canvas, TH2F* hist1, TH2F* hist2, TH2F* hist3) {
993  canvas->Divide(1,2);
994  canvas->cd(1)->Divide(2,1);
995  // EEM
996  canvas->cd(1)->cd(1);
997  hist1->Draw("colz");
998  drawEELines();
999  // EB
1000  canvas->cd(2);
1001  hist2->Draw("colz");
1002  hist2->GetXaxis()->SetNdivisions(-18);
1003  hist2->GetYaxis()->SetNdivisions(2);
1004  canvas->GetPad(2)->SetGridx(1);
1005  canvas->GetPad(2)->SetGridy(1);
1006  // EEP
1007  canvas->cd(1)->cd(2);
1008  hist3->Draw("colz");
1009  drawEELines();
1010  histoCanvasNamesVector->push_back(canvas->GetName());
1011  canvas->SetCanvasSize(500,500);
1012  canvas->SetFixedAspectRatio(true);
1013  canvas->Write();
1014 }
1015 
1016 void EcalDisplaysByEvent::drawCanvas(TCanvas* canvas, TH3F* hist1, TH3F* hist2, TH3F* hist3) {
1017  if(canvas == timingMapCoarseCanvas_) {
1018  canvas->cd();
1019  TProfile2D* profile2 = (TProfile2D*) hist2->Project3DProfile("yx");
1020  profile2->Draw("colz");
1021  drawTimingErrors(profile2);
1022  }
1023  else {
1024  canvas->Divide(1,2);
1025  canvas->cd(1)->Divide(2,1);
1026  // EEM
1027  canvas->cd(1)->cd(1);
1028  TProfile2D* profile1 = (TProfile2D*) hist1->Project3DProfile("yx");
1029  profile1->Draw("colz");
1030  drawEELines();
1031  // EB
1032  canvas->cd(2);
1033  TProfile2D* profile2 = (TProfile2D*) hist2->Project3DProfile("yx");
1034  profile2->Draw("colz");
1035  profile2->GetXaxis()->SetNdivisions(-18);
1036  profile2->GetYaxis()->SetNdivisions(2);
1037  canvas->GetPad(2)->SetGridx(1);
1038  canvas->GetPad(2)->SetGridy(1);
1039  // EEP
1040  canvas->cd(1)->cd(2);
1041  TProfile2D* profile3 = (TProfile2D*) hist3->Project3DProfile("yx");
1042  profile3->Draw("colz");
1043  drawEELines();
1044  }
1045  histoCanvasNamesVector->push_back(canvas->GetName());
1046  canvas->SetCanvasSize(500,500);
1047  canvas->SetFixedAspectRatio(true);
1048  canvas->Write();
1049 }
1050 
1052  int nxb = profile->GetNbinsX();
1053  int nyb = profile->GetNbinsY();
1054  char tempErr[200];
1055  for(int i=0;i!=nxb;++i) {
1056  for(int j=0;j!=nyb;++j) {
1057  int xb = i+1;
1058  int yb = j+1;
1059 // std::cout << "xb: " << xb << "\tyb: " << yb << std::endl;
1060  double xcorr = profile->GetBinCenter(xb);
1061  double ycorr = profile->GetBinCenter(yb);
1062  sprintf(tempErr,"%0.2f",profile->GetBinError(xb,yb));
1063  int nBin = profile->GetBin(xb,yb,0);
1064  int nBinEntries = (int) profile->GetBinEntries(nBin);
1065  if(nBinEntries != 0) {
1066  TLatex* tex = new TLatex(xcorr,ycorr,tempErr);
1067  tex->SetTextAlign(23);
1068  tex->SetTextSize(42);
1069  tex->SetTextSize(0.025);
1070  tex->SetLineWidth(2);
1071  tex->Draw();
1072  delete tex;
1073  }
1074  sprintf(tempErr,"%i",nBinEntries);
1075  if(nBinEntries!=0) {
1076  TLatex* tex = new TLatex(xcorr,ycorr,tempErr);
1077  tex->SetTextAlign(21);
1078  tex->SetTextFont(42);
1079  tex->SetTextSize(0.025);
1080  tex->SetLineWidth(2);
1081  tex->Draw();
1082  delete tex;
1083  }
1084  }
1085  }
1086 }
1087 
1089 
1090  int ixSectorsEE[202] = {61, 61, 60, 60, 59, 59, 58, 58, 57, 57, 55, 55, 45, 45, 43, 43, 42, 42, 41, 41, 40, 40, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 55, 55, 57, 57, 58, 58, 59, 59, 60, 60, 61, 61, 0,100,100, 97, 97, 95, 95, 92, 92, 87, 87, 85, 85, 80, 80, 75, 75, 65, 65, 60, 60, 40, 40, 35, 35, 25, 25, 20, 20, 15, 15, 13, 13, 8, 8, 5, 5, 3, 3, 0, 0, 3, 3, 5, 5, 8, 8, 13, 13, 15, 15, 20, 20, 25, 25, 35, 35, 40, 40, 60, 60, 65, 65, 75, 75, 80, 80, 85, 85, 87, 87, 92, 92, 95, 95, 97, 97,100,100, 0, 61, 65, 65, 70, 70, 80, 80, 90, 90, 92, 0, 61, 65, 65, 90, 90, 97, 0, 57, 60, 60, 65, 65, 70, 70, 75, 75, 80, 80, 0, 50, 50, 0, 43, 40, 40, 35, 35, 30, 30, 25, 25, 20, 20, 0, 39, 35, 35, 10, 10, 3, 0, 39, 35, 35, 30, 30, 20, 20, 10, 10, 8, 0, 45, 45, 40, 40, 35, 35, 0, 55, 55, 60, 60, 65, 65};
1091 
1092  int iySectorsEE[202] = {50, 55, 55, 57, 57, 58, 58, 59, 59, 60, 60, 61, 61, 60, 60, 59, 59, 58, 58, 57, 57, 55, 55, 45, 45, 43, 43, 42, 42, 41, 41, 40, 40, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 50, 0, 50, 60, 60, 65, 65, 75, 75, 80, 80, 85, 85, 87, 87, 92, 92, 95, 95, 97, 97,100,100, 97, 97, 95, 95, 92, 92, 87, 87, 85, 85, 80, 80, 75, 75, 65, 65, 60, 60, 40, 40, 35, 35, 25, 25, 20, 20, 15, 15, 13, 13, 8, 8, 5, 5, 3, 3, 0, 0, 3, 3, 5, 5, 8, 8, 13, 13, 15, 15, 20, 20, 25, 25, 35, 35, 40, 40, 50, 0, 45, 45, 40, 40, 35, 35, 30, 30, 25, 25, 0, 50, 50, 55, 55, 60, 60, 0, 60, 60, 65, 65, 70, 70, 75, 75, 85, 85, 87, 0, 61,100, 0, 60, 60, 65, 65, 70, 70, 75, 75, 85, 85, 87, 0, 50, 50, 55, 55, 60, 60, 0, 45, 45, 40, 40, 35, 35, 30, 30, 25, 25, 0, 39, 30, 30, 15, 15, 5, 0, 39, 30, 30, 15, 15, 5};
1093 
1094 
1095  for ( int i=0; i<202; i++) {
1096  ixSectorsEE[i] += 1;
1097  iySectorsEE[i] += 1;
1098 // std::cout << i << " " << ixSectorsEE[i] << " " << iySectorsEE[i] << std::endl;
1099  }
1100 
1101  TLine l;
1102  l.SetLineWidth(1);
1103  for ( int i=0; i<201; i=i+1) {
1104  if ( (ixSectorsEE[i]!=1 || iySectorsEE[i]!=1) &&
1105  (ixSectorsEE[i+1]!=1 || iySectorsEE[i+1]!=1) ) {
1106  l.DrawLine(ixSectorsEE[i], iySectorsEE[i],
1107  ixSectorsEE[i+1], iySectorsEE[i+1]);
1108  }
1109  }
1110 
1111 
1112 }
RunNumber_t run() const
Definition: EventID.h:42
std::map< int, TH1F * > FEDsAndTimingHists_
std::vector< std::string > maskedEBs_
EventNumber_t event() const
Definition: EventID.h:44
T getUntrackedParameter(std::string const &, T const &) const
std::set< EBDetId > listEBChannels
int i
Definition: DBlmapReader.cc:9
edm::Handle< EEDigiCollection > EEdigisHandle
int ix() const
Definition: EEDetId.h:71
int xtalId() const
get the channel id
boost::transform_iterator< IterHelp, boost::counting_iterator< int > > const_iterator
void home() const
move the navigator back to the starting point
int gainId(sample_type sample)
get the gainId (2 bits)
int stripId() const
get the tower id
TH2F * init2DEcalHist(std::string histTypeName, int subDet)
std::vector< int > maskedChannels_
std::map< int, float > crysAndAmplitudesMap_
Ecal readout channel identification [32:20] Unused (so far) [19:13] DCC id [12:6] tower [5:3] strip [...
std::vector< std::string > * names
const EcalElectronicsMapping * ecalElectronicsMap_
int getEEIndex(EcalElectronicsId elecId)
edm::InputTag headerProducer_
std::vector< T >::const_iterator const_iterator
EcalMGPASample sample(int i) const
Definition: EcalDataFrame.h:30
void drawTimingErrors(TProfile2D *profile)
int towerId() const
get the tower id
const_iterator begin() const
TCanvas * digiOccupancyCoarseCanvasAll_
float time() const
Definition: CaloRecHit.h:21
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
int gainId() const
get the gainId (2 bits)
std::set< EEDetId > listEEChannels
int size() const
Definition: EcalDataFrame.h:27
void drawCanvas(TCanvas *canvas, TH1F *hist1, TH1F *hist2, TH1F *hist3)
def canvas
Definition: svgfig.py:481
std::string getSliceFromFed(int)
Definition: EcalFedMap.cc:93
std::vector< std::string > * histoCanvasNamesVector
int iphi() const
get the crystal iphi
Definition: EBDetId.h:46
EcalElectronicsId getElectronicsId(const DetId &id) const
Get the electronics id for this det id.
int iEvent
Definition: GenABIO.cc:243
std::vector< int > maskedFEDs_
float energy() const
Definition: CaloRecHit.h:19
virtual T offsetBy(int deltaX, int deltaY) const
Free movement of arbitray steps.
tuple result
Definition: query.py:137
TCanvas * recHitOccupancyCoarseCanvasAll_
std::map< int, EcalDCCHeaderBlock > FEDsAndDCCHeaders_
tuple handle
Definition: patZpeak.py:22
int j
Definition: DBlmapReader.cc:9
virtual void beginRun(edm::Run const &, edm::EventSetup const &)
int iy() const
Definition: EEDetId.h:77
int ieta() const
get the crystal ieta
Definition: EBDetId.h:44
static edm::Service< TFileService > fileService
int dccId() const
get the DCC (Ecal Local DCC value not global one) id
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
std::string intToString(int num)
Definition: DetId.h:20
static float gainRatio[3]
void makeHistos(edm::Handle< EBDigiCollection > ebDigis)
void selectHits(edm::Handle< EcalRecHitCollection > hits, int ievt, edm::ESHandle< CaloTopology > caloTopo)
edm::Handle< EBDigiCollection > EBdigisHandle
std::map< std::string, int > seedFrequencyMap_
DetId id() const
get the id
Definition: EcalRecHit.h:76
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
long long int num
Definition: procUtils.cc:71
T const * product() const
Definition: Handle.h:74
const_iterator end() const
void initEvtByEvtHists(int naiveEvtNum_, int ievt)
TCanvas * digiOccupancyCoarseCanvas_
std::vector< int > seedCrys_
edm::InputTag EERecHitCollection_
std::string floatToString(float num)
edm::EventID id() const
Definition: EventBase.h:56
T * make() const
make new ROOT object
edm::InputTag EBRecHitCollection_
TGraph * selectDigi(DetId det, int ievt)
TH3F * init3DEcalHist(std::string histTypeName, int dubDet)
virtual void analyze(edm::Event const &, edm::EventSetup const &)
TCanvas * init2DEcalCanvas(std::string canvasName)
Detector det() const
get the detector field from this detid
Definition: DetId.h:37
TCanvas * recHitOccupancyCoarseCanvas_
EcalDisplaysByEvent(const edm::ParameterSet &)
Definition: Run.h:33
int adc() const
get the ADC sample (12 bits)