CMS 3D CMS Logo

EcalCosmicsHists.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: EcalCosmicsHists
4 // Class: EcalCosmicsHists
5 //
21 
27 
30 
38 
39 
40 #include <vector>
41 #include "TLine.h"
42 
43 
44 using namespace cms;
45 using namespace edm;
46 using namespace std;
47 
48 //
49 // constants, enums and typedefs
50 //
51 
52 //
53 // static data member definitions
54 //
55 
56 //
57 // constructors and destructor
58 //
60  ecalRawDataColl_(iConfig.getParameter<edm::InputTag>("ecalRawDataColl")),
61  ecalRecHitCollectionEB_ (iConfig.getParameter<edm::InputTag>("ecalRecHitCollectionEB")),
62  ecalRecHitCollectionEE_ (iConfig.getParameter<edm::InputTag>("ecalRecHitCollectionEE")),
63  barrelClusterCollection_ (iConfig.getParameter<edm::InputTag>("barrelClusterCollection")),
64  endcapClusterCollection_ (iConfig.getParameter<edm::InputTag>("endcapClusterCollection")),
65  l1GTReadoutRecTag_ (iConfig.getUntrackedParameter<std::string>("L1GlobalReadoutRecord","gtDigis")),
66  l1GMTReadoutRecTag_ (iConfig.getUntrackedParameter<std::string>("L1GlobalMuonReadoutRecord","gtDigis")),
67  runNum_(-1),
68  histRangeMax_ (iConfig.getUntrackedParameter<double>("histogramMaxRange",1.8)),
69  histRangeMin_ (iConfig.getUntrackedParameter<double>("histogramMinRange",0.0)),
70  minTimingAmpEB_ (iConfig.getUntrackedParameter<double>("MinTimingAmpEB",0.100)),
71  minTimingAmpEE_ (iConfig.getUntrackedParameter<double>("MinTimingAmpEE",0.100)),
72  minRecHitAmpEB_(iConfig.getUntrackedParameter<double>("MinRecHitAmpEB",0.027)),
73  minRecHitAmpEE_(iConfig.getUntrackedParameter<double>("MinRecHitAmpEE",0.18)),
74  minHighEnergy_(iConfig.getUntrackedParameter<double>("MinHighEnergy",2.0)),
75  fileName_ (iConfig.getUntrackedParameter<std::string>("fileName", std::string("ecalCosmicHists"))),
76  runInFileName_(iConfig.getUntrackedParameter<bool>("runInFileName",true)),
77  startTime_ (iConfig.getUntrackedParameter<double>("TimeStampStart",1215107133.)),
78  runTimeLength_ (iConfig.getUntrackedParameter<double>("TimeStampLength",3.)),
79  numTimingBins_(iConfig.getUntrackedParameter<int>("TimeStampBins",1800))
80 {
81  naiveEvtNum_ = 0;
82  cosmicCounter_ = 0;
83  cosmicCounterEB_ = 0;
87 
88  // TrackAssociator parameters
89  edm::ParameterSet trkParameters = iConfig.getParameter<edm::ParameterSet>("TrackAssociatorParameters");
91  trackParameters_.loadParameters( trkParameters, iC );
93 
94  string title1 = "Seed Energy for All Feds; Seed Energy (GeV)";
95  string name1 = "SeedEnergyAllFEDs";
96  int numBins = 200;//(int)round(histRangeMax_-histRangeMin_)+1;
97  allFedsHist_ = new TH1F(name1.c_str(),title1.c_str(),numBins,histRangeMin_,histRangeMax_);
98 
99  fedMap_ = new EcalFedMap();
100 }
101 
102 
104 {
105 }
106 
107 
108 //
109 // member functions
110 //
111 
112 // ------------ method called to for each event ------------
113 void
115 {
116  bool hasEndcapClusters = true;
117  int ievt = iEvent.id().event();
118 
121 
122  naiveEvtNum_++;
123 
124  //LogDebug("EcalCosmicsHists")<< " My Event: " << naiveEvtNum_ << " " << iEvent.id().run() << " " << iEvent.id().event() << " " << iEvent.time().value();
125  //LogDebug("EcalCosmicsHists")<< "Timestamp: " << iEvent.id().run() << " " << iEvent.id().event() << " " << iEvent.time().value();
126 
127 
128  // check DB payload
130  iSetup.get<EcalADCToGeVConstantRcd>().get(pAgc);
131  const EcalADCToGeVConstant* agc = pAgc.product();
132  if (naiveEvtNum_<=1) {
133  LogWarning("EcalCosmicsHists") << "Global EB ADC->GeV scale: " << agc->getEBValue() << " GeV/ADC count" ;
134  LogWarning("EcalCosmicsHists") << "Global EE ADC->GeV scale: " << agc->getEEValue() << " GeV/ADC count" ;
135  }
136  //float adcEBconst = agc->getEBValue();
137  //float adcEEconst = agc->getEEValue();
138 
139 
140  //
141 
142  //===================TIMESTAMP INFORMTION=================================
143  // Code added to get the time in seconds
144  unsigned int timeStampLow = ( 0xFFFFFFFF & iEvent.time().value() );
145  unsigned int timeStampHigh = ( iEvent.time().value() >> 32 );
146  double rawEventTime = ( double)(timeStampHigh)+((double )(timeStampLow)/1000000.);
147  double eventTime = rawEventTime - startTime_; //Notice the subtraction of the "starttime"
148  //std::cout << "Event Time " << eventTime << " High " <<timeStampHigh<< " low"<<timeStampLow <<" value " <<iEvent.time().value() << std::endl;
149  //========================================================================
150 
151  iEvent.getByLabel(barrelClusterCollection_, bscHandle);
152  if (!(bscHandle.isValid()))
153  {
154  LogWarning("EcalCosmicsHists") << barrelClusterCollection_ << " not available";
155  return;
156  }
157  LogDebug("EcalCosmicsHists") << "event " << ievt;
158 
159  iEvent.getByLabel(endcapClusterCollection_, escHandle);
160  if (!(escHandle.isValid()))
161  {
162  LogWarning("EcalCosmicsHists") << endcapClusterCollection_ << " not available";
163  hasEndcapClusters = false;
164  //return;
165  }
166 
168  iEvent.getByLabel(ecalRecHitCollectionEB_, hits);
169  if (!(hits.isValid()))
170  {
171  LogWarning("EcalCosmicsHists") << ecalRecHitCollectionEB_ << " not available";
172  return;
173  }
175  iEvent.getByLabel(ecalRecHitCollectionEE_, hitsEE);
176  if (!(hitsEE.isValid()))
177  {
178  LogWarning("EcalCosmicsHists") << ecalRecHitCollectionEE_ << " not available";
179  return;
180  }
181 
183  iEvent.getByLabel(ecalRawDataColl_, DCCHeaders);
184  if(!DCCHeaders.isValid())
185  LogWarning("EcalCosmicsHists") << "DCC headers not available";
186 
187  //make the bx histos right here
188  //TODO: Right now we are filling histos for errors...
189  int orbit = -100;
190  int bx = -100;
191  int runType = -100;
192 
193  for(EcalRawDataCollection::const_iterator headerItr= DCCHeaders->begin();headerItr != DCCHeaders->end();
194  ++headerItr) {
195  headerItr->getEventSettings();
196  int myorbit = headerItr->getOrbit();
197  int mybx = headerItr->getBX();
198  int myRunType = headerItr->getRunType();
199  int FEDid = headerItr->fedId();
200  TH2F* dccRuntypeHist = FEDsAndDCCRuntypeVsBxHists_[FEDid];
201  if(dccRuntypeHist==nullptr)
202  {
203  initHists(FEDid);
204  dccRuntypeHist = FEDsAndDCCRuntypeVsBxHists_[FEDid];
205  }
206  dccRuntypeHist->Fill(mybx,myRunType);
207 
208  if (bx == -100)
209  {
210  bx = mybx;
211  }
212  else if (bx != mybx)
213  {
214  LogWarning("EcalCosmicsHists") << "This header has a conflicting bx OTHERS were " << bx << " here " << mybx;
215  dccBXErrorByFEDHist_->Fill(headerItr->fedId());
216  if(bx != -100)
217  {
218  dccErrorVsBxHist_->Fill(bx,0);
219  }
220  }
221 
222  if (runType == -100)
223  {
224  runType = myRunType;
225  }
226  else if (runType != myRunType)
227  {
228  LogWarning("EcalCosmicsHists") << "This header has a conflicting runType OTHERS were " << bx << " here " << mybx;
229  dccRuntypeErrorByFEDHist_->Fill(headerItr->fedId());
230  if(bx != -100)
231  dccErrorVsBxHist_->Fill(bx,2);
232  }
233 
234 
235  if (orbit == -100)
236  {
237  orbit = myorbit;
238  }
239  else if (orbit != myorbit)
240  {
241  LogWarning("EcalCosmicsHists") << "This header has a conflicting orbit; OTHERS were " << orbit << " here " << myorbit;
242  dccOrbitErrorByFEDHist_->Fill(headerItr->fedId());
243  if(bx != -100)
244  dccErrorVsBxHist_->Fill(bx,1);
245  }
246  }
247  dccEventVsBxHist_->Fill(bx,runType);
248  dccRuntypeHist_->Fill(runType);
249 
250 
251 
252  std::vector<bool> l1Triggers = determineTriggers(iEvent, iSetup);
253  bool isEcalL1 = l1Triggers[4];
254  bool isHCALL1 = l1Triggers[3];
255  bool isRPCL1 = l1Triggers[2];
256  bool isCSCL1 = l1Triggers[1];
257  bool isDTL1 = l1Triggers[0];
258 
259  if(runNum_==-1)
260  {
261  runNum_ = iEvent.id().run();
262  }
263 
264  int numberOfCosmics = 0;
265  int numberOfCosmicsEB = 0;
266  int numberOfCosmicsEEP = 0;
267  int numberOfCosmicsEEM = 0;
268  int numberOfCosmicsTop = 0;
269  int numberOfCosmicsBottom = 0;
270  int numberOfHighEClusters = 0;
271  //int eventnum = iEvent.id().event();
272  std::vector<EBDetId> seeds;
273 
274  //++++++++++++++++++BEGIN LOOP OVER EB SUPERCLUSTERS+++++++++++++++++++++++++//
275 
276  const reco::SuperClusterCollection *clusterCollection_p = bscHandle.product();
277  for (reco::SuperClusterCollection::const_iterator clus = clusterCollection_p->begin(); clus != clusterCollection_p->end(); ++clus)
278  {
279  double energy = clus->energy();
280  double phi = clus->phi();
281  double eta = clus->eta();
282  double time = -1000.0;
283  double ampli = 0.;
284  double secondMin = 0.;
285  double secondTime = -1000.;
286  int numXtalsinCluster = 0;
287 
288  EBDetId maxDet;
289  EBDetId secDet;
290 
291  numberofBCinSC_->Fill(clus->clustersSize());
292  numberofBCinSCphi_->Fill(phi,clus->clustersSize());
293 
294  for (reco::CaloCluster_iterator bclus = (clus->clustersBegin()); bclus != (clus->clustersEnd()); ++bclus)
295  {
296  double cphi = (*bclus)->phi();
297  double ceta = (*bclus)->eta();
298  TrueBCOccupancy_->Fill(cphi,ceta);
299  TrueBCOccupancyCoarse_->Fill(cphi,ceta);
300  }
301 
302  std::vector< std::pair<DetId, float> > clusterDetIds = clus->hitsAndFractions();//get these from the cluster
303  for(std::vector<std::pair<DetId, float> >::const_iterator detitr = clusterDetIds.begin(); detitr != clusterDetIds.end(); ++detitr)
304  {
305  //Here I use the "find" on a digi collection... I have been warned...
306  if ((*detitr).first.det() != DetId::Ecal) { std::cout << " det is " <<(*detitr).first.det() << std::endl;continue;}
307  if ((*detitr).first.subdetId() != EcalBarrel) {std::cout << " subdet is " <<(*detitr).first.subdetId() << std::endl; continue; }
308  EcalRecHitCollection::const_iterator thishit = hits->find((*detitr).first);
309  if (thishit == hits->end()) continue;
310  //The checking above should no longer be needed...... as only those in the cluster would already have rechits..
311 
312  EcalRecHit myhit = (*thishit);
313 
314  double thisamp = myhit.energy();
315  if (thisamp > minRecHitAmpEB_) {numXtalsinCluster++; }
316  if (thisamp > secondMin) {secondMin = thisamp; secondTime = myhit.time(); secDet = (EBDetId)(*detitr).first;}
317  if (secondMin > ampli) {std::swap(ampli,secondMin); std::swap(time,secondTime); std::swap(maxDet,secDet);}
318  }
319 
320  double fullnumXtalsinCluster = clusterDetIds.size();
321 
322  float E2 = ampli + secondMin;
324  int FEDid = 600+elecId.dccId();
325 
326  numberOfCosmics++;
327  numberOfCosmicsEB++;
328 
329  //Set some more values
330  seeds.push_back(maxDet);
331  int ieta = maxDet.ieta();
332  int iphi = maxDet.iphi();
333  int ietaSM = maxDet.ietaSM();
334  int iphiSM = maxDet.iphiSM();
335 
336  int LM = ecalElectronicsMap_->getLMNumber(maxDet) ;//FIX ME
337 
338  // top and bottom clusters
339  if (iphi>0&&iphi<180) {
340  numberOfCosmicsTop++;
341  } else {
342  numberOfCosmicsBottom++;
343  }
344 
345  // fill the proper hist
346  TH1F* uRecHist = FEDsAndHists_[FEDid];
347  TH1F* E2uRecHist = FEDsAndE2Hists_[FEDid];
348  TH1F* energyuRecHist = FEDsAndenergyHists_[FEDid];
349  TH1F* timingHist = FEDsAndTimingHists_[FEDid];
350  TH1F* freqHist = FEDsAndFrequencyHists_[FEDid];
351  TH1F* iphiProfileHist = FEDsAndiPhiProfileHists_[FEDid];
352  TH1F* ietaProfileHist = FEDsAndiEtaProfileHists_[FEDid];
353  TH2F* timingHistVsFreq = FEDsAndTimingVsFreqHists_[FEDid];
354  TH2F* timingHistVsAmp = FEDsAndTimingVsAmpHists_[FEDid];
355  TH2F* E2vsE1uRecHist = FEDsAndE2vsE1Hists_[FEDid];
356  TH2F* energyvsE1uRecHist = FEDsAndenergyvsE1Hists_[FEDid];
357  TH2F* occupHist = FEDsAndOccupancyHists_[FEDid];
358  TH2F* timingHistVsPhi = FEDsAndTimingVsPhiHists_[FEDid];
359  TH2F* timingHistVsModule = FEDsAndTimingVsModuleHists_[FEDid];
360 
361  if(uRecHist==nullptr)
362  {
363  initHists(FEDid);
364  uRecHist = FEDsAndHists_[FEDid];
365  E2uRecHist = FEDsAndE2Hists_[FEDid];
366  energyuRecHist = FEDsAndenergyHists_[FEDid];
367  timingHist = FEDsAndTimingHists_[FEDid];
368  freqHist = FEDsAndFrequencyHists_[FEDid];
369  timingHistVsFreq = FEDsAndTimingVsFreqHists_[FEDid];
370  timingHistVsAmp = FEDsAndTimingVsAmpHists_[FEDid];
371  iphiProfileHist = FEDsAndiPhiProfileHists_[FEDid];
372  ietaProfileHist = FEDsAndiEtaProfileHists_[FEDid];
373  E2vsE1uRecHist = FEDsAndE2vsE1Hists_[FEDid];
374  energyvsE1uRecHist = FEDsAndenergyvsE1Hists_[FEDid];
375  occupHist = FEDsAndOccupancyHists_[FEDid];
376  timingHistVsPhi = FEDsAndTimingVsPhiHists_[FEDid];
377  timingHistVsModule = FEDsAndTimingVsModuleHists_[FEDid];
378  }
379 
380  uRecHist->Fill(ampli);
381  E2uRecHist->Fill(E2);
382  E2vsE1uRecHist->Fill(ampli,E2);
383  energyuRecHist->Fill(energy);
384  energyvsE1uRecHist->Fill(ampli,energy);
385  allFedsHist_->Fill(ampli);
386  allFedsE2Hist_->Fill(E2);
387  allFedsenergyHist_->Fill(energy);
388  allFedsenergyHighHist_->Fill(energy);
389  allFedsE2vsE1Hist_->Fill(ampli,E2);
390  allFedsenergyvsE1Hist_->Fill(ampli,energy);
391  freqHist->Fill(naiveEvtNum_);
392  iphiProfileHist->Fill(iphi);
393  ietaProfileHist->Fill(ieta);
394 
396  allFedsiPhiProfileHist_->Fill(iphi);
397  allFedsiEtaProfileHist_->Fill(ieta);
398  allOccupancy_->Fill(iphi, ieta);
399  TrueOccupancy_->Fill(phi, eta);
400  allOccupancyCoarse_->Fill(iphi, ieta);
401  TrueOccupancyCoarse_->Fill(phi, eta);
402  allFedsNumXtalsInClusterHist_->Fill(numXtalsinCluster);
403  NumXtalsInClusterHist_->Fill(fullnumXtalsinCluster);
404  numxtalsVsEnergy_->Fill(energy,numXtalsinCluster);
405  numxtalsVsHighEnergy_->Fill(energy,numXtalsinCluster);
406 
407  //Fill the hists for the time stamp information
408  allFedsFreqTimeVsPhiHist_->Fill(iphi,eventTime);
409  allFedsFreqTimeVsPhiTTHist_->Fill(iphi,eventTime);
410  allFedsFreqTimeVsEtaHist_->Fill(eventTime,ieta);
411  allFedsFreqTimeVsEtaTTHist_->Fill(eventTime,ieta);
412  //end time stamp hists
413 
414  occupHist->Fill(ietaSM,iphiSM);
415  if (fullnumXtalsinCluster==1) {
416  allOccupancySingleXtal_->Fill(iphi, ieta);
417  energySingleXtalHist_->Fill(energy);
418  }
419 
420  // Exclusive trigger plots
421 
422  if(isEcalL1&&!isDTL1&&!isRPCL1&&!isCSCL1&&!isHCALL1) {
423  allOccupancyExclusiveECAL_->Fill(iphi, ieta);
424  allOccupancyCoarseExclusiveECAL_->Fill(iphi, ieta);
425  if (ampli > minTimingAmpEB_) {
426  allFedsTimingHistECAL_->Fill(time);
427  allFedsTimingPhiEtaHistECAL_->Fill(iphi,ieta,time);
428  allFedsTimingTTHistECAL_->Fill(iphi,ieta,time);
429  allFedsTimingLMHistECAL_->Fill(LM,time);
430  }
431  triggerExclusiveHist_->Fill(0);
432  }
433 
434  if(!isEcalL1&&!isDTL1&&!isRPCL1&&!isCSCL1&&isHCALL1) {
435  allOccupancyExclusiveHCAL_->Fill(iphi, ieta);
436  allOccupancyCoarseExclusiveHCAL_->Fill(iphi, ieta);
437  if (ampli > minTimingAmpEB_) {
438  allFedsTimingHistHCAL_->Fill(time);
439  allFedsTimingPhiEtaHistHCAL_->Fill(iphi,ieta,time);
440  allFedsTimingTTHistHCAL_->Fill(iphi,ieta,time);
441  allFedsTimingLMHistHCAL_->Fill(LM,time);
442  }
443  triggerExclusiveHist_->Fill(1);
444  }
445 
446  if(!isEcalL1&&isDTL1&&!isRPCL1&&!isCSCL1&&!isHCALL1) {
447  allOccupancyExclusiveDT_->Fill(iphi, ieta);
448  allOccupancyCoarseExclusiveDT_->Fill(iphi, ieta);
449  if (ampli > minTimingAmpEB_) {
450  allFedsTimingHistDT_->Fill(time);
451  allFedsTimingPhiEtaHistDT_->Fill(iphi,ieta,time);
452  allFedsTimingTTHistDT_->Fill(iphi,ieta,time);
453  allFedsTimingLMHistDT_->Fill(LM,time);
454  }
455  triggerExclusiveHist_->Fill(2);
456  }
457 
458  if(!isEcalL1&&!isDTL1&&isRPCL1&&!isCSCL1&&!isHCALL1) {
459  allOccupancyExclusiveRPC_->Fill(iphi, ieta);
460  allOccupancyCoarseExclusiveRPC_->Fill(iphi, ieta);
461  if (ampli > minTimingAmpEB_) {
462  allFedsTimingHistRPC_->Fill(time);
463  allFedsTimingPhiEtaHistRPC_->Fill(iphi,ieta,time);
464  allFedsTimingTTHistRPC_->Fill(iphi,ieta,time);
465  allFedsTimingLMHistRPC_->Fill(LM,time);
466  }
467  triggerExclusiveHist_->Fill(3);
468  }
469 
470  if(!isEcalL1&&!isDTL1&&!isRPCL1&&isCSCL1&&!isHCALL1) {
471  allOccupancyExclusiveCSC_->Fill(iphi, ieta);
472  allOccupancyCoarseExclusiveCSC_->Fill(iphi, ieta);
473  if (ampli > minTimingAmpEB_) {
474  allFedsTimingHistCSC_->Fill(time);
475  allFedsTimingPhiEtaHistCSC_->Fill(iphi,ieta,time);
476  allFedsTimingTTHistCSC_->Fill(iphi,ieta,time);
477  allFedsTimingLMHistCSC_->Fill(LM,time);
478  }
479  triggerExclusiveHist_->Fill(4);
480  }
481 
482  // Inclusive trigger plots
483 
484  if (isEcalL1) {
485  triggerHist_->Fill(0);
486  allOccupancyECAL_->Fill(iphi, ieta);
487  allOccupancyCoarseECAL_->Fill(iphi, ieta);
488  }
489  if (isHCALL1) {
490  triggerHist_->Fill(1);
491  allOccupancyHCAL_->Fill(iphi, ieta);
492  allOccupancyCoarseHCAL_->Fill(iphi, ieta);
493  }
494  if (isDTL1) {
495  triggerHist_->Fill(2);
496  allOccupancyDT_->Fill(iphi, ieta);
497  allOccupancyCoarseDT_->Fill(iphi, ieta);
498  }
499  if (isRPCL1) {
500  triggerHist_->Fill(3);
501  allOccupancyRPC_->Fill(iphi, ieta);
502  allOccupancyCoarseRPC_->Fill(iphi, ieta);
503  }
504  if (isCSCL1) {
505  triggerHist_->Fill(4);
506  allOccupancyCSC_->Fill(iphi, ieta);
507  allOccupancyCoarseCSC_->Fill(iphi, ieta);
508  }
509 
510  // Fill histo for Ecal+muon coincidence
511  if(isEcalL1&&(isCSCL1||isRPCL1||isDTL1)&&!isHCALL1)
512  allFedsTimingHistEcalMuon_->Fill(time);
513 
514  if (ampli > minTimingAmpEB_) {
515  timingHist->Fill(time);
516  timingHistVsFreq->Fill(time, naiveEvtNum_);
517  timingHistVsAmp->Fill(time, ampli);
518  allFedsTimingHist_->Fill(time);
519  allFedsTimingVsAmpHist_->Fill(time, ampli);
521  timingHistVsPhi->Fill(time, iphiSM);
522  timingHistVsModule->Fill(time, ietaSM);
523  allFedsTimingPhiHist_->Fill(iphi,time);
524  allFedsTimingPhiEtaHist_->Fill(iphi,ieta,time);
525  allFedsTimingTTHist_->Fill(iphi,ieta,time);
526  allFedsTimingLMHist_->Fill(LM,time);
527  if (FEDid>=610&&FEDid<=627) allFedsTimingPhiEbmHist_->Fill(iphi,time);
528  if (FEDid>=628&&FEDid<=645) allFedsTimingPhiEbpHist_->Fill(iphi,time);
529 
530  if (FEDid>=610&&FEDid<=627) allFedsTimingEbmHist_->Fill(time);
531  if (FEDid>=628&&FEDid<=645) allFedsTimingEbpHist_->Fill(time);
532  if (FEDid>=613&&FEDid<=616) allFedsTimingEbmTopHist_->Fill(time);
533  if (FEDid>=631&&FEDid<=634) allFedsTimingEbpTopHist_->Fill(time);
534  if (FEDid>=622&&FEDid<=625) allFedsTimingEbmBottomHist_->Fill(time);
535  if (FEDid>=640&&FEDid<=643) allFedsTimingEbpBottomHist_->Fill(time);
536  }
537 
538  // *** High Energy Clusters Analysis ** //
539 
540  if (energy>minHighEnergy_) {
541 
542  LogInfo("EcalCosmicsHists") << "High energy event " << iEvent.id().run() << " : "
543  << iEvent.id().event() << " " << naiveEvtNum_
544  << " : " << energy << " " << numXtalsinCluster
545  << " : " << iphi << " " << ieta
546  << " : " << isEcalL1 << isHCALL1 << isDTL1 << isRPCL1 << isCSCL1 ;
547 
548  numberOfHighEClusters++;
549  allOccupancyHighEnergy_->Fill(iphi, ieta);
550  allOccupancyHighEnergyCoarse_->Fill(iphi, ieta);
551  allFedsOccupancyHighEnergyHist_->Fill(iphi,ieta,energy);
552  allFedsenergyOnlyHighHist_->Fill(energy);
553 
554  HighEnergy_2GeV_occuCoarse->Fill(iphi,ieta);
555  HighEnergy_2GeV_occu3D->Fill(iphi,ieta,energy);
556 
557  HighEnergy_NumXtal->Fill(fullnumXtalsinCluster);
558  HighEnergy_NumXtalFedId->Fill(FEDid,fullnumXtalsinCluster);
559  HighEnergy_NumXtaliphi->Fill(iphi,fullnumXtalsinCluster);
560  HighEnergy_energy3D->Fill(iphi,ieta,energy);
561  HighEnergy_energyNumXtal->Fill(fullnumXtalsinCluster,energy);
562 
563  if (energy>100.0) {
564  LogInfo("EcalCosmicsHists") << "Very high energy event " << iEvent.id().run() << " : "
565  << iEvent.id().event() << " " << naiveEvtNum_
566  << " : " << energy << " " << numXtalsinCluster
567  << " : " << iphi << " " << ieta
568  << " : " << isEcalL1 << isHCALL1 << isDTL1 << isRPCL1 << isCSCL1 ;
569 
570  HighEnergy_100GeV_occuCoarse->Fill(iphi,ieta);
571  HighEnergy_100GeV_occu3D->Fill(iphi,ieta,energy);
572 
573  }
574 
575  }
576 
577  // *** end of High Energy Clusters analysis *** //
578 
579  }//++++++++++++++++++END LOOP OVER EB SUPERCLUSTERS+++++++++++++++++++++++//
580 
581  //+++++++++++++++++++LOOP OVER ENDCAP EE CLUSTERS++++++++++++++++++++//
582 
583  if(hasEndcapClusters) {
584  clusterCollection_p = escHandle.product();
585  for (reco::SuperClusterCollection::const_iterator clus = clusterCollection_p->begin(); clus != clusterCollection_p->end(); ++clus) {
586  double energy = clus->energy();
587  //double phi = clus->phi();
588  //double eta = clus->eta();
589  double time = -1000.0;
590  double ampli = 0.;
591  double secondMin = 0.;
592  double secondTime = -1000.;
593  int clusSize = clus->clustersSize();
594  int numXtalsinCluster = 0;
595 
596  EEDetId maxDet;
597  EEDetId secDet;
598  //LogInfo("EcalCosmicsHists") << "Here is what we initialized the maxDet to: " << maxDet;
599 
600  // for (reco::basicCluster_iterator bclus = (clus->clustersBegin()); bclus != (clus->clustersEnd()); ++bclus) {
601 // //double cphi = (*bclus)->phi();
602 // //double ceta = (*bclus)->eta();
603 // //TODO: extend histos to EE
604 // //TrueBCOccupancy_->Fill(cphi,ceta);
605 // //TrueBCOccupancyCoarse_->Fill(cphi,ceta);
606 // }
607 
608  std::vector<std::pair<DetId, float> > clusterDetIds = clus->hitsAndFractions();//get these from the cluster
609  for(std::vector<std::pair<DetId, float> >::const_iterator detitr = clusterDetIds.begin(); detitr != clusterDetIds.end(); ++detitr) {
610 
611  //LogInfo("EcalCosmicsHists") << " Here is the DetId inside the cluster: " << (EEDetId)(*detitr);
612  //Here I use the "find" on a digi collection... I have been warned...
613 
614  if ((*detitr).first.det() != DetId::Ecal) {
615  LogError("EcalCosmicsHists") << " det is " <<(*detitr).first.det(); continue;
616  }
617  if ((*detitr).first.subdetId() != EcalEndcap) {
618  LogError("EcalCosmicsHists") << " subdet is " <<(*detitr).first.subdetId(); continue;
619  }
620 
621  EcalRecHitCollection::const_iterator thishit = hitsEE->find((*detitr).first);
622 
623  if (thishit == hitsEE->end()) {
624  LogInfo("EcalCosmicsHists") << " WARNING: EEDetId not found in the RecHit collection!";
625  continue;
626  }
627  // The checking above should no longer be needed......
628  // as only those in the cluster would already have rechits..
629 
630  EcalRecHit myhit = (*thishit);
631 
632  //LogInfo("EcalCosmicsHists") << " Found hit for DetId: " << (EEDetId)(*detitr);
633  double thisamp = myhit.energy();
634  if (thisamp > minRecHitAmpEE_) {numXtalsinCluster++; }
635  if (thisamp > secondMin) {secondMin = thisamp; secondTime = myhit.time(); secDet = (EEDetId)(*detitr).first;}
636  if (secondMin > ampli) {std::swap(ampli,secondMin); std::swap(time,secondTime); std::swap(maxDet,secDet);}
637 
638  //LogInfo("EcalCosmicsHists") << "maxDetId is now: " << (EEDetId)(maxDet);
639  }
640 
641  double fullnumXtalsinCluster = clusterDetIds.size();
642 
643  float E2 = ampli + secondMin;
644 
646  //int FEDid = 600+elecId.dccId();
647 
648  //Set some more values
649  //TODO: need to fix the seeds vector to be DetId or have another one for EE
650  //seeds.push_back(maxDet);
651 
652  int ix = maxDet.ix();
653  int iy = maxDet.iy();
654  int iz = maxDet.zside();
655 
656  // LogWarning("EcalCosmicsHists") << "EE cluster (x,y,z) : ( "
657  // << ix << " , " << iy << " , " << iz
658  // << " ) " << std::endl;
659 
660  if (!EEDetId::validDetId(ix,iy,iz)) {
661  LogWarning("EcalCosmicsHists") << "INVALID EE DetId !!!" << endl;
662  return;
663  }
664 
665 
666  numberOfCosmics++;
667  if (iz<0) { numberOfCosmicsEEM++; }
668  else { numberOfCosmicsEEP++; }
669 
670  //int LM = ecalElectronicsMap_->getLMNumber(maxDet) ;//FIX ME
671 
672  //TODO: extend histos to EE
673  //TH1F* uRecHist = FEDsAndHists_[FEDid];
674  //TH1F* E2uRecHist = FEDsAndE2Hists_[FEDid];
675  //TH1F* energyuRecHist = FEDsAndenergyHists_[FEDid];
676  //TH1F* timingHist = FEDsAndTimingHists_[FEDid];
677  //TH1F* freqHist = FEDsAndFrequencyHists_[FEDid];
678  //TH1F* iphiProfileHist = FEDsAndiPhiProfileHists_[FEDid];
679  //TH1F* ietaProfileHist = FEDsAndiEtaProfileHists_[FEDid];
680  //TH2F* timingHistVsFreq = FEDsAndTimingVsFreqHists_[FEDid];
681  //TH2F* timingHistVsAmp = FEDsAndTimingVsAmpHists_[FEDid];
682  //TH2F* E2vsE1uRecHist = FEDsAndE2vsE1Hists_[FEDid];
683  //TH2F* energyvsE1uRecHist = FEDsAndenergyvsE1Hists_[FEDid];
684  //TH1F* numXtalInClusterHist = FEDsAndNumXtalsInClusterHists_[FEDid];
685  //TH2F* occupHist = FEDsAndOccupancyHists_[FEDid];
686  //TH2F* timingHistVsPhi = FEDsAndTimingVsPhiHists_[FEDid];
687  //TH2F* timingHistVsModule = FEDsAndTimingVsModuleHists_[FEDid];
688  //if(uRecHist==0)
689  //{
690  // initHists(FEDid);
691  // uRecHist = FEDsAndHists_[FEDid];
692  // E2uRecHist = FEDsAndE2Hists_[FEDid];
693  // energyuRecHist = FEDsAndenergyHists_[FEDid];
694  // timingHist = FEDsAndTimingHists_[FEDid];
695  // freqHist = FEDsAndFrequencyHists_[FEDid];
696  // timingHistVsFreq = FEDsAndTimingVsFreqHists_[FEDid];
697  // timingHistVsAmp = FEDsAndTimingVsAmpHists_[FEDid];
698  // iphiProfileHist = FEDsAndiPhiProfileHists_[FEDid];
699  // ietaProfileHist = FEDsAndiEtaProfileHists_[FEDid];
700  // E2vsE1uRecHist = FEDsAndE2vsE1Hists_[FEDid];
701  // energyvsE1uRecHist = FEDsAndenergyvsE1Hists_[FEDid];
702  // numXtalInClusterHist = FEDsAndNumXtalsInClusterHists_[FEDid];
703  // occupHist = FEDsAndOccupancyHists_[FEDid];
704  // timingHistVsPhi = FEDsAndTimingVsPhiHists_[FEDid];
705  // timingHistVsModule = FEDsAndTimingVsModuleHists_[FEDid];
706  //}
707  //uRecHist->Fill(ampli);
708  //E2uRecHist->Fill(E2);
709  //E2vsE1uRecHist->Fill(ampli,E2);
710  //energyuRecHist->Fill(energy);
711  //energyvsE1uRecHist->Fill(ampli,energy);
712  //allFedsHist_->Fill(ampli);
713 
714  if (iz<0) {
715  EEM_FedsSeedEnergyHist_->Fill(ampli);
716  EEM_FedsenergyHist_->Fill(energy);
717  EEM_FedsenergyHighHist_->Fill(energy);
718  EEM_FedsE2Hist_->Fill(E2);
719  EEM_FedsE2vsE1Hist_->Fill(ampli,E2);
720  EEM_FedsenergyvsE1Hist_->Fill(ampli,energy);
721  EEM_AllOccupancyCoarse_->Fill(ix-0.5,iy-0.5);
722  EEM_AllOccupancy_->Fill(ix-0.5,iy-0.5);
723 
724  EEM_FedsNumXtalsInClusterHist_->Fill(numXtalsinCluster);
725  EEM_NumXtalsInClusterHist_->Fill(fullnumXtalsinCluster);
726  EEM_numxtalsVsEnergy_->Fill(energy,numXtalsinCluster);
727  EEM_numxtalsVsHighEnergy_->Fill(energy,numXtalsinCluster);
728  EEM_numberofBCinSC_->Fill(clusSize);
729 
730  if (fullnumXtalsinCluster==1) {
731  EEM_OccupancySingleXtal_->Fill(ix-0.5,iy-0.5);
732  EEM_energySingleXtalHist_->Fill(energy);
733  }
734 
735  if (ampli > minTimingAmpEE_) {
736  EEM_FedsTimingHist_->Fill(time);
737  EEM_FedsTimingVsAmpHist_->Fill(time, ampli);
738  EEM_FedsTimingTTHist_->Fill(ix-0.5,iy-0.5,time);
739  }
740 
741  // Exclusive trigger plots
742 
743  if(isEcalL1&&!isDTL1&&!isRPCL1&&!isCSCL1&&!isHCALL1) {
744  EEM_OccupancyExclusiveECAL_->Fill(ix-0.5,iy-0.5);
745  EEM_OccupancyCoarseExclusiveECAL_->Fill(ix-0.5,iy-0.5);
746  if (ampli > minTimingAmpEE_) {
747  EEM_FedsTimingHistECAL_->Fill(time);
748  EEM_FedsTimingTTHistECAL_->Fill(ix-0.5,iy-0.5,time);
749  }
750  EEM_triggerExclusiveHist_->Fill(0);
751  }
752 
753  if(!isEcalL1&&!isDTL1&&!isRPCL1&&!isCSCL1&&isHCALL1) {
754  EEM_OccupancyExclusiveHCAL_->Fill(ix-0.5,iy-0.5);
755  EEM_OccupancyCoarseExclusiveHCAL_->Fill(ix-0.5,iy-0.5);
756  if (ampli > minTimingAmpEE_) {
757  EEM_FedsTimingHistHCAL_->Fill(time);
758  EEM_FedsTimingTTHistHCAL_->Fill(ix-0.5,iy-0.5,time);
759  }
760  EEM_triggerExclusiveHist_->Fill(1);
761  }
762 
763  if(!isEcalL1&&isDTL1&&!isRPCL1&&!isCSCL1&&!isHCALL1) {
764  EEM_OccupancyExclusiveDT_->Fill(ix-0.5,iy-0.5);
765  EEM_OccupancyCoarseExclusiveDT_->Fill(ix-0.5,iy-0.5);
766  if (ampli > minTimingAmpEE_) {
767  EEM_FedsTimingHistDT_->Fill(time);
768  EEM_FedsTimingTTHistDT_->Fill(ix-0.5,iy-0.5,time);
769  }
770  EEM_triggerExclusiveHist_->Fill(2);
771  }
772 
773  if(!isEcalL1&&!isDTL1&&isRPCL1&&!isCSCL1&&!isHCALL1) {
774  EEM_OccupancyExclusiveRPC_->Fill(ix-0.5,iy-0.5);
775  EEM_OccupancyCoarseExclusiveRPC_->Fill(ix-0.5,iy-0.5);
776  if (ampli > minTimingAmpEE_) {
777  EEM_FedsTimingHistRPC_->Fill(time);
778  EEM_FedsTimingTTHistRPC_->Fill(ix-0.5,iy-0.5,time);
779  }
780  EEM_triggerExclusiveHist_->Fill(3);
781  }
782 
783  if(!isEcalL1&&!isDTL1&&!isRPCL1&&isCSCL1&&!isHCALL1) {
784  EEM_OccupancyExclusiveCSC_->Fill(ix-0.5,iy-0.5);
785  EEM_OccupancyCoarseExclusiveCSC_->Fill(ix-0.5,iy-0.5);
786  if (ampli > minTimingAmpEE_) {
787  EEM_FedsTimingHistCSC_->Fill(time);
788  EEM_FedsTimingTTHistCSC_->Fill(ix-0.5,iy-0.5,time);
789  }
790  EEM_triggerExclusiveHist_->Fill(4);
791  }
792 
793  // Inclusive trigger plots
794 
795  if (isEcalL1) {
796  EEM_triggerHist_->Fill(0);
797  EEM_OccupancyECAL_->Fill(ix-0.5,iy-0.5);
798  EEM_OccupancyCoarseECAL_->Fill(ix-0.5,iy-0.5);
799  }
800  if (isHCALL1) {
801  EEM_triggerHist_->Fill(1);
802  EEM_OccupancyHCAL_->Fill(ix-0.5,iy-0.5);
803  EEM_OccupancyCoarseHCAL_->Fill(ix-0.5,iy-0.5);
804  }
805  if (isDTL1) {
806  EEM_triggerHist_->Fill(2);
807  EEM_OccupancyDT_->Fill(ix-0.5,iy-0.5);
808  EEM_OccupancyCoarseDT_->Fill(ix-0.5,iy-0.5);
809  }
810  if (isRPCL1) {
811  EEM_triggerHist_->Fill(3);
812  EEM_OccupancyRPC_->Fill(ix-0.5,iy-0.5);
813  EEM_OccupancyCoarseRPC_->Fill(ix-0.5,iy-0.5);
814  }
815  if (isCSCL1) {
816  EEM_triggerHist_->Fill(4);
817  EEM_OccupancyCSC_->Fill(ix-0.5,iy-0.5);
818  EEM_OccupancyCoarseCSC_->Fill(ix-0.5,iy-0.5);
819  }
820 
821  } else {
822 
823  EEP_FedsSeedEnergyHist_->Fill(ampli);
824  EEP_FedsenergyHist_->Fill(energy);
825  EEP_FedsenergyHighHist_->Fill(energy);
826  EEP_FedsE2Hist_->Fill(E2);
827  EEP_FedsE2vsE1Hist_->Fill(ampli,E2);
828  EEP_FedsenergyvsE1Hist_->Fill(ampli,energy);
829  EEP_AllOccupancyCoarse_->Fill(ix-0.5,iy-0.5);
830  EEP_AllOccupancy_->Fill(ix-0.5,iy-0.5);
831 
832  EEP_FedsNumXtalsInClusterHist_->Fill(numXtalsinCluster);
833  EEP_NumXtalsInClusterHist_->Fill(fullnumXtalsinCluster);
834  EEP_numxtalsVsEnergy_->Fill(energy,numXtalsinCluster);
835  EEP_numxtalsVsHighEnergy_->Fill(energy,numXtalsinCluster);
836  EEP_numberofBCinSC_->Fill(clusSize);
837 
838  if (fullnumXtalsinCluster==1) {
839  EEP_OccupancySingleXtal_->Fill(ix-0.5,iy-0.5);
840  EEP_energySingleXtalHist_->Fill(energy);
841  }
842 
843  if (ampli > minTimingAmpEE_) {
844  EEP_FedsTimingHist_->Fill(time);
845  EEP_FedsTimingVsAmpHist_->Fill(time, ampli);
846  EEP_FedsTimingTTHist_->Fill(ix-0.5,iy-0.5,time);
847  }
848 
849  // Exclusive trigger plots
850 
851  if(isEcalL1&&!isDTL1&&!isRPCL1&&!isCSCL1&&!isHCALL1) {
852  EEP_OccupancyExclusiveECAL_->Fill(ix-0.5,iy-0.5);
853  EEP_OccupancyCoarseExclusiveECAL_->Fill(ix-0.5,iy-0.5);
854  if (ampli > minTimingAmpEE_) {
855  EEP_FedsTimingHistECAL_->Fill(time);
856  EEP_FedsTimingTTHistECAL_->Fill(ix-0.5,iy-0.5,time);
857  }
858  EEP_triggerExclusiveHist_->Fill(0);
859  }
860 
861  if(!isEcalL1&&!isDTL1&&!isRPCL1&&!isCSCL1&&isHCALL1) {
862  EEP_OccupancyExclusiveHCAL_->Fill(ix-0.5,iy-0.5);
863  EEP_OccupancyCoarseExclusiveHCAL_->Fill(ix-0.5,iy-0.5);
864  if (ampli > minTimingAmpEE_) {
865  EEP_FedsTimingHistHCAL_->Fill(time);
866  EEP_FedsTimingTTHistHCAL_->Fill(ix-0.5,iy-0.5,time);
867  }
868  EEP_triggerExclusiveHist_->Fill(1);
869  }
870 
871  if(!isEcalL1&&isDTL1&&!isRPCL1&&!isCSCL1&&!isHCALL1) {
872  EEP_OccupancyExclusiveDT_->Fill(ix-0.5,iy-0.5);
873  EEP_OccupancyCoarseExclusiveDT_->Fill(ix-0.5,iy-0.5);
874  if (ampli > minTimingAmpEE_) {
875  EEP_FedsTimingHistDT_->Fill(time);
876  EEP_FedsTimingTTHistDT_->Fill(ix-0.5,iy-0.5,time);
877  }
878  EEP_triggerExclusiveHist_->Fill(2);
879  }
880 
881  if(!isEcalL1&&!isDTL1&&isRPCL1&&!isCSCL1&&!isHCALL1) {
882  EEP_OccupancyExclusiveRPC_->Fill(ix-0.5,iy-0.5);
883  EEP_OccupancyCoarseExclusiveRPC_->Fill(ix-0.5,iy-0.5);
884  if (ampli > minTimingAmpEE_) {
885  EEP_FedsTimingHistRPC_->Fill(time);
886  EEP_FedsTimingTTHistRPC_->Fill(ix-0.5,iy-0.5,time);
887  }
888  EEP_triggerExclusiveHist_->Fill(3);
889  }
890 
891  if(!isEcalL1&&!isDTL1&&!isRPCL1&&isCSCL1&&!isHCALL1) {
892  EEP_OccupancyExclusiveCSC_->Fill(ix-0.5,iy-0.5);
893  EEP_OccupancyCoarseExclusiveCSC_->Fill(ix-0.5,iy-0.5);
894  if (ampli > minTimingAmpEE_) {
895  EEP_FedsTimingHistCSC_->Fill(time);
896  EEP_FedsTimingTTHistCSC_->Fill(ix-0.5,iy-0.5,time);
897  }
898  EEP_triggerExclusiveHist_->Fill(4);
899  }
900 
901  // Inclusive trigger plots
902 
903  if (isEcalL1) {
904  EEP_triggerHist_->Fill(0);
905  EEP_OccupancyECAL_->Fill(ix-0.5,iy-0.5);
906  EEP_OccupancyCoarseECAL_->Fill(ix-0.5,iy-0.5);
907  }
908  if (isHCALL1) {
909  EEP_triggerHist_->Fill(1);
910  EEP_OccupancyHCAL_->Fill(ix-0.5,iy-0.5);
911  EEP_OccupancyCoarseHCAL_->Fill(ix-0.5,iy-0.5);
912  }
913  if (isDTL1) {
914  EEP_triggerHist_->Fill(2);
915  EEP_OccupancyDT_->Fill(ix-0.5,iy-0.5);
916  EEP_OccupancyCoarseDT_->Fill(ix-0.5,iy-0.5);
917  }
918  if (isRPCL1) {
919  EEP_triggerHist_->Fill(3);
920  EEP_OccupancyRPC_->Fill(ix-0.5,iy-0.5);
921  EEP_OccupancyCoarseRPC_->Fill(ix-0.5,iy-0.5);
922  }
923  if (isCSCL1) {
924  EEP_triggerHist_->Fill(4);
925  EEP_OccupancyCSC_->Fill(ix-0.5,iy-0.5);
926  EEP_OccupancyCoarseCSC_->Fill(ix-0.5,iy-0.5);
927  }
928 
929  }
930 
931 
932  // *** High Energy Clusters Analysis ** //
933 
934  if (energy>minHighEnergy_) {
935 
936  LogInfo("EcalCosmicsHists") << "High energy event in EE " << iEvent.id().run() << " : "
937  << iEvent.id().event() << " " << naiveEvtNum_
938  << " : " << energy << " " << numXtalsinCluster
939  << " : " << ix << " " << iy
940  << " : " << isEcalL1 << isHCALL1 << isDTL1 << isRPCL1 << isCSCL1 ;
941 
942  // numberOfHighEClusters++;
943  // allOccupancyHighEnergy_->Fill(iphi, ieta);
944  // allOccupancyHighEnergyCoarse_->Fill(iphi, ieta);
945  // allFedsOccupancyHighEnergyHist_->Fill(iphi,ieta,energy);
946  if (iz<0) {
947  EEM_FedsenergyOnlyHighHist_->Fill(energy);
948  EEM_OccupancyHighEnergy_->Fill(ix-0.5,iy-0.5);
949  EEM_OccupancyHighEnergyCoarse_->Fill(ix-0.5,iy-0.5);
950  } else {
951  EEP_FedsenergyOnlyHighHist_->Fill(energy);
952  }
953  // HighEnergy_2GeV_occuCoarse->Fill(iphi,ieta);
954  // HighEnergy_2GeV_occu3D->Fill(iphi,ieta,energy);
955 
956  // HighEnergy_NumXtal->Fill(fullnumXtalsinCluster);
957  // HighEnergy_NumXtalFedId->Fill(FEDid,fullnumXtalsinCluster);
958  // HighEnergy_NumXtaliphi->Fill(iphi,fullnumXtalsinCluster);
959  // HighEnergy_energy3D->Fill(iphi,ieta,energy);
960  // HighEnergy_energyNumXtal->Fill(fullnumXtalsinCluster,energy);
961 
962  if (energy>100.0) {
963  LogInfo("EcalCosmicsHists") << "Very high energy event in EE " << iEvent.id().run() << " : "
964  << iEvent.id().event() << " " << naiveEvtNum_
965  << " : " << energy << " " << numXtalsinCluster
966  << " : " << ix << " " << iy
967  << " : " << isEcalL1 << isHCALL1 << isDTL1 << isRPCL1 << isCSCL1 ;
968  // HighEnergy_100GeV_occuCoarse->Fill(iphi,ieta);
969  // HighEnergy_100GeV_occu3D->Fill(iphi,ieta,energy);
970  }
971 
972  }
973 
974  // *** end of High Energy Clusters analysis *** //
975 
976  }//++++++++++++++++++END LOOP OVER EE SUPERCLUSTERS+++++++++++++++++++++++++++++++++++
977  }
978 
979  HighEnergy_numClusHighEn->Fill(numberOfHighEClusters);
980  HighEnergy_ratioClusters->Fill((double(numberOfHighEClusters))/(double(numberOfCosmics)));
981 
982  numberofCosmicsHist_->Fill(numberOfCosmics);
983  EEP_numberofCosmicsHist_->Fill(numberOfCosmicsEEP);
984  EEM_numberofCosmicsHist_->Fill(numberOfCosmicsEEM);
985  numberofCosmicsHistEB_->Fill(numberOfCosmicsEB);
986 
987  if ( numberOfCosmics > 0 ) {
988  cosmicCounter_++;
990  allFedsFreqTimeHist_->Fill(eventTime);
991  //This line will work in 21X!!
992  //std::cout << " Orbit " << iEvent.orbitNumber() << " BX " << iEvent.bunchCrossing()<< std::endl;
993  //std::cout << " BX " << iEvent.experimentType() << std::endl;
994  }
995 
996  if ( numberOfCosmicsEB > 0 ) cosmicCounterEB_++;
997  if ( numberOfCosmicsEEP > 0 ) cosmicCounterEEP_++;
998  if ( numberOfCosmicsEEM > 0 ) cosmicCounterEEM_++;
999 
1000  if (numberOfCosmicsTop&&numberOfCosmicsBottom) {
1002  numberofCosmicsTopBottomHist_->Fill(numberOfCosmicsTop+numberOfCosmicsBottom);
1003  }
1004 
1005  // *** TrackAssociator *** //
1006 
1007  // get reco tracks
1009  iEvent.getByLabel("cosmicMuons", recoTracks);
1010 
1011  if ( recoTracks.isValid() ) {
1012  // LogWarning("EcalCosmicsHists") << "... Valid TrackAssociator recoTracks !!! " << recoTracks.product()->size();
1013  std::map<int,std::vector<DetId> > trackDetIdMap;
1014  int tracks = 0;
1015  for(reco::TrackCollection::const_iterator recoTrack = recoTracks->begin(); recoTrack != recoTracks->end(); ++recoTrack){
1016 
1017  if(fabs(recoTrack->d0())>70 || fabs(recoTrack->dz())>70)
1018  continue;
1019  if(recoTrack->numberOfValidHits()<20)
1020  continue;
1021 
1022  //if (recoTrack->pt() < 2) continue; // skip low Pt tracks
1023 
1024  TrackDetMatchInfo info = trackAssociator_.associate(iEvent, iSetup, *recoTrack, trackParameters_);
1025 
1026  // edm::LogVerbatim("TrackAssociator") << "\n-------------------------------------------------------\n Track (pt,eta,phi): " <<
1027  // recoTrack->pt() << " , " << recoTrack->eta() << " , " << recoTrack->phi() ;
1028  // edm::LogVerbatim("TrackAssociator") << "Ecal energy in crossed crystals based on RecHits: " <<
1029  // info.crossedEnergy(TrackDetMatchInfo::EcalRecHits);
1030  // edm::LogVerbatim("TrackAssociator") << "Ecal energy in 3x3 crystals based on RecHits: " <<
1031  // info.nXnEnergy(TrackDetMatchInfo::EcalRecHits, 1);
1032  // edm::LogVerbatim("TrackAssociator") << "Hcal energy in crossed towers based on RecHits: " <<
1033  // info.crossedEnergy(TrackDetMatchInfo::HcalRecHits);
1034  // edm::LogVerbatim("TrackAssociator") << "Hcal energy in 3x3 towers based on RecHits: " <<
1035  // info.nXnEnergy(TrackDetMatchInfo::HcalRecHits, 1);
1036  // edm::LogVerbatim("TrackAssociator") << "Number of muon segment matches: " << info.numberOfSegments();
1037 
1038  // std::cout << "\n-------------------------------------------------------\n Track (pt,eta,phi): " <<
1039  // recoTrack->pt() << " , " << recoTrack->eta() << " , " << recoTrack->phi() << std::endl;
1040  // std::cout << "Ecal energy in crossed crystals based on RecHits: " <<
1041  // info.crossedEnergy(TrackDetMatchInfo::EcalRecHits) << std::endl;
1042  // std::cout << "Ecal energy in 3x3 crystals based on RecHits: " <<
1043  // info.nXnEnergy(TrackDetMatchInfo::EcalRecHits, 1) << std::endl;
1044  // std::cout << "Hcal energy in crossed towers based on RecHits: " <<
1045  // info.crossedEnergy(TrackDetMatchInfo::HcalRecHits) << std::endl;
1046  // std::cout << "Hcal energy in 3x3 towers based on RecHits: " <<
1047  // info.nXnEnergy(TrackDetMatchInfo::HcalRecHits, 1) << std::endl;
1048 
1049  for (unsigned int i=0; i<info.crossedEcalIds.size(); i++) {
1050  // only checks for barrel
1051  if (info.crossedEcalIds[i].det() == DetId::Ecal && info.crossedEcalIds[i].subdetId() == 1) {
1052  EBDetId ebDetId (info.crossedEcalIds[i]);
1053  trackAssoc_muonsEcal_->Fill(ebDetId.iphi(), ebDetId.ieta());
1054  //std::cout << "Crossed iphi: " << ebDetId.iphi()
1055  // << " ieta: " << ebDetId.ieta() << " : nCross " << info.crossedEcalIds.size() << std::endl;
1056 
1057  EcalRecHitCollection::const_iterator thishit = hits->find(ebDetId);
1058  if (thishit == hits->end()) continue;
1059 
1060  //EcalRecHit myhit = (*thishit);
1061  //double thisamp = myhit.energy();
1062  //std::cout << " Crossed energy: " << thisamp << " : nCross " << info.crossedEcalIds.size() << std::endl;
1063  }
1064  }
1065 
1066  //edm::LogVerbatim("TrackAssociator") << " crossedEcalIds size: " << info.crossedEcalIds.size()
1067  // << " crossedEcalRecHits size: " << info.crossedEcalRecHits.size();
1068  numberofCrossedEcalIdsHist_->Fill(info.crossedEcalIds.size());
1069  tracks++;
1070  if(!info.crossedEcalIds.empty())
1071  trackDetIdMap.insert(std::pair<int,std::vector<DetId> > (tracks,info.crossedEcalIds));
1072  }
1073 
1074  // Now to match recoTracks with cosmic clusters
1075 
1076  int numAssocTracks = 0;
1077  int numAssocClusters = 0;
1078  edm::LogVerbatim("TrackAssociator") << "Matching cosmic clusters to tracks...";
1079  int numSeeds = seeds.size();
1080  int numTracks = trackDetIdMap.size();
1081  while(!seeds.empty() && !trackDetIdMap.empty())
1082  {
1083  double bestDr = 1000;
1084  double bestDPhi = 1000;
1085  double bestDEta = 1000;
1086  double bestEtaTrack = 1000;
1087  double bestEtaSeed = 1000;
1088  double bestPhiTrack = 1000;
1089  double bestPhiSeed = 1000;
1090  EBDetId bestTrackDet;
1091  EBDetId bestSeed;
1092  int bestTrack = -1;
1093  std::map<EBDetId,EBDetId> trackDetIdToSeedMap;
1094 
1095  //edm::LogVerbatim("TrackAssociator") << "NumTracks:" << trackDetIdMap.size() << " numClusters:" << seeds.size();
1096 
1097  for(std::vector<EBDetId>::const_iterator seedItr = seeds.begin(); seedItr != seeds.end(); ++seedItr) {
1098  for(std::map<int,std::vector<DetId> >::const_iterator mapItr = trackDetIdMap.begin();
1099  mapItr != trackDetIdMap.end(); ++mapItr) {
1100  for(unsigned int i=0; i<mapItr->second.size(); i++) {
1101  // only checks for barrel
1102  if(mapItr->second[i].det() == DetId::Ecal && mapItr->second[i].subdetId() == 1) {
1103  EBDetId ebDet = (mapItr->second[i]);
1104  double seedEta = seedItr->ieta();
1105  double deta = ebDet.ieta()-seedEta;
1106  if(seedEta * ebDet.ieta() < 0 )
1107  deta > 0 ? (deta=deta-1.) : (deta=deta+1.);
1108  double dR;
1109  double dphi = ebDet.iphi()-seedItr->iphi();
1110  if (abs(dphi) > 180)
1111  dphi > 0 ? (dphi=360-dphi) : (dphi=-360-dphi);
1112  dR = sqrt(deta*deta + dphi*dphi);
1113  if(dR < bestDr)
1114  {
1115  bestDr = dR;
1116  bestDPhi = dphi;
1117  bestDEta = deta;
1118  bestTrackDet = mapItr->second[i];
1119  bestTrack = mapItr->first;
1120  bestSeed = (*seedItr);
1121  bestEtaTrack = ebDet.ieta();
1122  bestEtaSeed = seedEta;
1123  bestPhiTrack = ebDet.iphi();
1124  bestPhiSeed = seedItr->iphi();
1125  }
1126  }
1127  }
1128  }
1129  }
1130  if(bestDr < 1000) {
1131  //edm::LogVerbatim("TrackAssociator") << "Best deltaR from matched DetId's to cluster:" << bestDr;
1132  deltaRHist_->Fill(bestDr);
1133  deltaPhiHist_->Fill(bestDPhi);
1134  deltaEtaHist_->Fill(bestDEta);
1135  deltaEtaDeltaPhiHist_->Fill(bestDEta,bestDPhi);
1136  seedTrackEtaHist_->Fill(bestEtaSeed,bestEtaTrack);
1137  seedTrackPhiHist_->Fill(bestPhiSeed,bestPhiTrack);
1138  seeds.erase(find(seeds.begin(),seeds.end(), bestSeed));
1139  trackDetIdMap.erase(trackDetIdMap.find(bestTrack));
1140  trackDetIdToSeedMap[bestTrackDet] = bestSeed;
1141  numAssocTracks++;
1142  numAssocClusters++;
1143 
1144  // for high energy analysis
1145  if(bestDPhi < 1.5 && bestDEta < 1.8 ) {
1146  //edm::LogVerbatim("TrackAssociator") << "Best seed ieta and iphi: ("
1147  // << bestSeed.ieta() << ", " << bestSeed.iphi() << ") ";
1148  //check if the bestSeed is a High Energy one
1149  EcalRecHitCollection::const_iterator Ecalhit = hits->find(bestSeed);
1150  if (Ecalhit == hits->end()) {
1151  continue;
1152  }
1153  double EcalhitEnergy = Ecalhit->energy();
1154  //edm::LogVerbatim("TrackAssociator") << "Best seed energy: " << EcalhitEnergy ;
1155  HighEnergy_bestSeed->Fill(EcalhitEnergy);
1156  HighEnergy_bestSeedOccupancy->Fill(bestSeed.iphi(), bestSeed.ieta());
1157  }
1158  }
1159  else {
1160  edm::LogVerbatim("TrackAssociator") << "could not match cluster seed to track." << bestDr;
1161  break; // no match found
1162  }
1163  }
1164  if(numSeeds>0 && numTracks>0) {
1165  ratioAssocClustersHist_->AddBinContent(1,numAssocClusters);
1166  ratioAssocClustersHist_->AddBinContent(2,numSeeds);
1167  }
1168  if(numTracks>0) {
1169  ratioAssocTracksHist_->AddBinContent(1,numAssocTracks);
1170  ratioAssocTracksHist_->AddBinContent(2,numTracks);
1171  numberofCosmicsWTrackHist_->Fill(numSeeds);
1172  }
1173  } else {
1174  // LogWarning("EcalCosmicsHists") << "!!! No TrackAssociator recoTracks !!!";
1175  }
1176 
1177 
1178  // Study on Tracks for High Energy events
1179  edm::Handle<reco::TrackCollection> recoTracksBarrel;
1180  iEvent.getByLabel("cosmicMuonsBarrelOnly", recoTracksBarrel);
1181  if ( !recoTracksBarrel.isValid() ) {
1182  //edm::LogWarning("EcalCosmicsHists") << "RecoTracksBarrel not valid!! " ;
1183  }
1184  else {
1185  //edm::LogWarning("EcalCosmicsHists") << "Number of barrel reco tracks found in the event: " << recoTracksBarrel->size() ;
1186  HighEnergy_numRecoTrackBarrel->Fill(recoTracksBarrel->size());
1187  for(reco::TrackCollection::const_iterator recoTrack = recoTracksBarrel->begin(); recoTrack != recoTracksBarrel->end(); ++recoTrack) {
1188  //edm::LogWarning("EcalCosmicsHists") << "Track (pt,eta,phi): " << recoTrack->pt() << " , " << recoTrack->eta() << " , " << recoTrack->phi() ;
1189  //edm::LogWarning("EcalCosmicsHists") << "Track innermost hit: " << recoTrack->innerPosition().phi() ;
1190  }
1191 
1192  for (reco::SuperClusterCollection::const_iterator clus = clusterCollection_p->begin(); clus != clusterCollection_p->end(); ++clus) {
1193  double energy = clus->energy();
1194  double phi = clus->phi();
1195  double eta = clus->eta();
1196 
1197  if (recoTracksBarrel->empty()) HighEnergy_0tracks_occu3D->Fill(phi,eta,energy);
1198  if (recoTracksBarrel->size()==1) HighEnergy_1tracks_occu3D->Fill(phi,eta,energy);
1199  if (recoTracksBarrel->size()==2) HighEnergy_2tracks_occu3D->Fill(phi,eta,energy);
1200 
1201  std::vector<std::pair<DetId, float> > clusterDetIds = clus->hitsAndFractions();//get these from the cluster
1202  for(std::vector< std::pair<DetId, float> >::const_iterator detitr = clusterDetIds.begin(); detitr != clusterDetIds.end(); ++detitr)
1203  {
1204  if ((*detitr).first.det() != DetId::Ecal) {continue;}
1205  if ((*detitr).first.subdetId() != EcalBarrel) {continue; }
1206  EcalRecHitCollection::const_iterator thishit = hits->find((*detitr).first);
1207  if (thishit == hits->end()) {continue;}
1208 
1209  double rechitenergy = thishit->energy();
1210  int ieta = ((EBDetId)(*detitr).first).ieta();
1211  int iphi = ((EBDetId)(*detitr).first).iphi();
1212  if (rechitenergy > minRecHitAmpEB_) {
1213  if (recoTracksBarrel->empty()) HighEnergy_0tracks_occu3DXtal->Fill(iphi,ieta,rechitenergy);
1214  if (recoTracksBarrel->size()==1) HighEnergy_1tracks_occu3DXtal->Fill(iphi,ieta,rechitenergy);
1215  if (recoTracksBarrel->size()==2) HighEnergy_2tracks_occu3DXtal->Fill(iphi,ieta,rechitenergy);
1216 
1217  if (rechitenergy > 10 ) edm::LogWarning("EcalCosmicsHists") << "!!!!! Crystal with energy " << rechitenergy << " at (ieta,iphi) (" << ieta << " ," << iphi << "); Id: " << (*detitr).first.det();
1218  }
1219  }
1220  }
1221 
1222  // look at angle between 2 recoTracks
1223  if ( recoTracksBarrel->size() == 2 ) {
1224  reco::TrackCollection::const_iterator Track1 = recoTracksBarrel->begin();
1225  reco::TrackCollection::const_iterator Track2 = (recoTracksBarrel->begin())+1;
1226  float angle = (acos(sin(Track1->theta()) * cos(Track1->phi()) * sin(Track2->theta()) * cos(Track2->phi()) + sin(Track1->theta()) * sin(Track1->phi()) * sin(Track2->theta()) * sin(Track2->phi()) + cos(Track1->theta()) * cos(Track2->theta())))/0.017453292519943;
1227  //edm::LogWarning("EcalCosmicsHists") << "Tracks angle: " << angle;
1228  HighEnergy_TracksAngle->Fill(angle);
1229  if ( (Track1->innerPosition().phi()) > 0 && (Track2->innerPosition().phi()) < 0 ) {
1230  //edm::LogWarning("EcalCosmicsHists") << "Top-bottom tracks";
1231  HighEnergy_TracksAngleTopBottom->Fill(angle);
1232  }
1233 
1234 
1235  }
1236  }
1237 
1238  // *** end of TrackAssociator code *** //
1239 
1240 
1241  // *** HCAL RecHits code *** //
1242 
1243  //hcal rechits
1245  iEvent.getByLabel("hbhereco", hbhe);
1246 
1248  iEvent.getByLabel("hfreco",hfrh);
1249 
1251  iEvent.getByLabel("horeco", horh);
1252 
1253  if ( hbhe.isValid() ) {
1254  // LogInfo("EcalCosmicHists") << "event " << ievt << " HBHE RecHits collection size " << hbhe->size();
1255  const HBHERecHitCollection hbheHit = *(hbhe.product());
1256  for (HBHERecHitCollection::const_iterator hhit=hbheHit.begin(); hhit!=hbheHit.end(); hhit++) {
1257  // if (hhit->energy() > 0.6){
1258  hcalEnergy_HBHE_->Fill(hhit->energy());
1259  // }
1260  }
1261  } else {
1262  // LogWarning("EcalCosmicHists") << " HBHE RecHits **NOT** VALID!! " << endl;
1263  }
1264 
1265  if ( hfrh.isValid() ) {
1266  // LogInfo("EcalCosmicHists") << "event " << ievt << " HF RecHits collection size " << hfrh->size();
1267  const HFRecHitCollection hfHit = *(hfrh.product());
1268  for (HFRecHitCollection::const_iterator hhit=hfHit.begin(); hhit!=hfHit.end(); hhit++) {
1269  hcalEnergy_HF_->Fill(hhit->energy());
1270  }
1271  } else {
1272  // LogWarning("EcalCosmicHists") << " HF RecHits **NOT** VALID!! " << endl;
1273  }
1274 
1275  if ( horh.isValid() ) {
1276  // LogInfo("EcalCosmicHists") << "event " << ievt << " HO RecHits collection size " << horh->size();
1277  const HORecHitCollection hoHit = *(horh.product());
1278  for (HORecHitCollection::const_iterator hhit=hoHit.begin(); hhit!=hoHit.end(); hhit++) {
1279  // if (hhit->energy() > 0.6){
1280  hcalEnergy_HO_->Fill(hhit->energy());
1281  // }
1282  }
1283  } else {
1284  // LogWarning("EcalCosmicHists") << " HO RecHits **NOT** VALID!! " << endl;
1285  }
1286 
1287  // *** end of HCAL code *** //
1288 }
1289 
1290 
1291 
1292 std::vector<bool> EcalCosmicsHists::determineTriggers(const edm::Event& iEvent, const edm::EventSetup& eventSetup)
1293 {
1294  std::vector<bool> l1Triggers; //DT,CSC,RPC,HCAL,ECAL
1295  //0 , 1 , 2 , 3 , 4
1296  for(int i=0;i<5;i++)
1297  l1Triggers.push_back(false);
1298 
1299  // get the GMTReadoutCollection
1300  Handle<L1MuGMTReadoutCollection> gmtrc_handle;
1301  iEvent.getByLabel(l1GMTReadoutRecTag_,gmtrc_handle);
1302  L1MuGMTReadoutCollection const* gmtrc = gmtrc_handle.product();
1303  if (!(gmtrc_handle.isValid()))
1304  {
1305  LogWarning("EcalCosmicsHists") << "l1MuGMTReadoutCollection" << " not available";
1306  return l1Triggers;
1307  }
1308  // get hold of L1GlobalReadoutRecord
1310  iEvent.getByLabel(l1GTReadoutRecTag_,L1GTRR);
1311 
1312  //Ecal
1314  eventSetup.get<L1GtTriggerMenuRcd>().get(menuRcd) ;
1315  const L1GtTriggerMenu* menu = menuRcd.product();
1317  iEvent.getByLabel( edm::InputTag("gtDigis"), gtRecord);
1318  // Get dWord after masking disabled bits
1319  const DecisionWord dWord = gtRecord->decisionWord();
1320 
1321  bool l1SingleEG1 = menu->gtAlgorithmResult("L1_SingleEG1", dWord);
1322  bool l1SingleEG5 = menu->gtAlgorithmResult("L1_SingleEG5", dWord);
1323  bool l1SingleEG8 = menu->gtAlgorithmResult("L1_SingleEG8", dWord);
1324  bool l1SingleEG10 = menu->gtAlgorithmResult("L1_SingleEG10", dWord);
1325  bool l1SingleEG12 = menu->gtAlgorithmResult("L1_SingleEG12", dWord);
1326  bool l1SingleEG15 = menu->gtAlgorithmResult("L1_SingleEG15", dWord);
1327  bool l1SingleEG20 = menu->gtAlgorithmResult("L1_SingleEG20", dWord);
1328  bool l1SingleEG25 = menu->gtAlgorithmResult("L1_SingleEG25", dWord);
1329  bool l1DoubleNoIsoEGBTBtight = menu->gtAlgorithmResult("L1_DoubleNoIsoEG_BTB_tight", dWord);
1330  bool l1DoubleNoIsoEGBTBloose = menu->gtAlgorithmResult("L1_DoubleNoIsoEG_BTB_loose ", dWord);
1331  bool l1DoubleNoIsoEGTopBottom = menu->gtAlgorithmResult("L1_DoubleNoIsoEGTopBottom", dWord);
1332  bool l1DoubleNoIsoEGTopBottomCen = menu->gtAlgorithmResult("L1_DoubleNoIsoEGTopBottomCen", dWord);
1333  bool l1DoubleNoIsoEGTopBottomCen2 = menu->gtAlgorithmResult("L1_DoubleNoIsoEGTopBottomCen2", dWord);
1334  bool l1DoubleNoIsoEGTopBottomCenVert = menu->gtAlgorithmResult("L1_DoubleNoIsoEGTopBottomCenVert", dWord);
1335 
1336  l1Triggers[4] = l1SingleEG1 || l1SingleEG5 || l1SingleEG8 || l1SingleEG10 || l1SingleEG12 || l1SingleEG15
1337  || l1SingleEG20 || l1SingleEG25 || l1DoubleNoIsoEGBTBtight || l1DoubleNoIsoEGBTBloose
1338  || l1DoubleNoIsoEGTopBottom || l1DoubleNoIsoEGTopBottomCen || l1DoubleNoIsoEGTopBottomCen2
1339  || l1DoubleNoIsoEGTopBottomCenVert;
1340 
1341  std::vector<L1MuGMTReadoutRecord> gmt_records = gmtrc->getRecords();
1342  std::vector<L1MuGMTReadoutRecord>::const_iterator igmtrr;
1343  for(igmtrr=gmt_records.begin(); igmtrr!=gmt_records.end(); igmtrr++) {
1344  std::vector<L1MuRegionalCand>::const_iterator iter1;
1345  std::vector<L1MuRegionalCand> rmc;
1346 
1347  //DT triggers
1348  int idt = 0;
1349  rmc = igmtrr->getDTBXCands();
1350  for(iter1=rmc.begin(); iter1!=rmc.end(); iter1++) {
1351  if ( !(*iter1).empty() ) {
1352  idt++;
1353  }
1354  }
1355  //if(idt>0) std::cout << "Found " << idt << " valid DT candidates in bx wrt. L1A = "
1356  // << igmtrr->getBxInEvent() << std::endl;
1357  if(igmtrr->getBxInEvent()==0 && idt>0) l1Triggers[0] = true;
1358 
1359  //RPC triggers
1360  int irpcb = 0;
1361  rmc = igmtrr->getBrlRPCCands();
1362  for(iter1=rmc.begin(); iter1!=rmc.end(); iter1++) {
1363  if ( !(*iter1).empty() ) {
1364  irpcb++;
1365  }
1366  }
1367  //if(irpcb>0) std::cout << "Found " << irpcb << " valid RPC candidates in bx wrt. L1A = "
1368  // << igmtrr->getBxInEvent() << std::endl;
1369  if(igmtrr->getBxInEvent()==0 && irpcb>0) l1Triggers[2] = true;
1370 
1371  //CSC Triggers
1372  int icsc = 0;
1373  rmc = igmtrr->getCSCCands();
1374  for(iter1=rmc.begin(); iter1!=rmc.end(); iter1++) {
1375  if ( !(*iter1).empty() ) {
1376  icsc++;
1377  }
1378  }
1379  //if(icsc>0) std::cout << "Found " << icsc << " valid CSC candidates in bx wrt. L1A = "
1380  // << igmtrr->getBxInEvent() << std::endl;
1381  if(igmtrr->getBxInEvent()==0 && icsc>0) l1Triggers[1] = true;
1382  }
1383 
1384  L1GlobalTriggerReadoutRecord const* gtrr = L1GTRR.product();
1385 
1386  for(int ibx=-1; ibx<=1; ibx++) {
1387  bool hcal_top = false;
1388  bool hcal_bot = false;
1389  const L1GtPsbWord psb = gtrr->gtPsbWord(0xbb0d,ibx);
1390  std::vector<int> valid_phi;
1391  if((psb.aData(4)&0x3f) >= 1) {valid_phi.push_back( (psb.aData(4)>>10)&0x1f ); }
1392  if((psb.bData(4)&0x3f) >= 1) {valid_phi.push_back( (psb.bData(4)>>10)&0x1f ); }
1393  if((psb.aData(5)&0x3f) >= 1) {valid_phi.push_back( (psb.aData(5)>>10)&0x1f ); }
1394  if((psb.bData(5)&0x3f) >= 1) {valid_phi.push_back( (psb.bData(5)>>10)&0x1f ); }
1395  std::vector<int>::const_iterator iphi;
1396  for(iphi=valid_phi.begin(); iphi!=valid_phi.end(); iphi++) {
1397  //std::cout << "Found HCAL mip with phi=" << *iphi << " in bx wrt. L1A = " << ibx << std::endl;
1398  if(*iphi<9) hcal_top=true;
1399  if(*iphi>8) hcal_bot=true;
1400  }
1401  if(ibx==0 && hcal_top && hcal_bot) l1Triggers[3]=true;
1402  }
1403 
1404  edm::LogInfo("EcalCosmicsHists") << "**** Trigger SourceSource ****";
1405  if(l1Triggers[0]) edm::LogInfo("EcalCosmicsHists") << "DT";
1406  if(l1Triggers[2]) edm::LogInfo("EcalCosmicsHists") << "RPC";
1407  if(l1Triggers[1]) edm::LogInfo("EcalCosmicsHists") << "CSC";
1408  if(l1Triggers[3]) edm::LogInfo("EcalCosmicsHists") << "HCAL";
1409  if(l1Triggers[4]) edm::LogInfo("EcalCosmicsHists") << "ECAL";
1410  edm::LogInfo("EcalCosmicsHists") << "************************";
1411 
1412  return l1Triggers;
1413 }
1414 
1415 // insert the hist map into the map keyed by FED number
1417 {
1418  using namespace std;
1419 
1420  string FEDid = intToString(FED);
1421  string title1 = "Energy of Seed Crystal ";
1422  title1.append(fedMap_->getSliceFromFed(FED));
1423  title1.append(";Seed Energy (GeV);Number of Cosmics");
1424  string name1 = "SeedEnergyFED";
1425  name1.append(intToString(FED));
1426  int numBins = 200;//(int)round(histRangeMax_-histRangeMin_)+1;
1427  TH1F* hist = new TH1F(name1.c_str(),title1.c_str(), numBins, histRangeMin_, histRangeMax_);
1428  FEDsAndHists_[FED] = hist;
1429  FEDsAndHists_[FED]->SetDirectory(nullptr);
1430 
1431  TH1F* E2hist = new TH1F(Form("E2_FED_%d",FED),Form("E2_FED_%d",FED), numBins, histRangeMin_, histRangeMax_);
1432  FEDsAndE2Hists_[FED] = E2hist;
1433  FEDsAndE2Hists_[FED]->SetDirectory(nullptr);
1434 
1435  TH1F* energyhist = new TH1F(Form("Energy_FED_%d",FED),Form("Energy_FED_%d",FED), numBins, histRangeMin_, histRangeMax_);
1436  FEDsAndenergyHists_[FED] = energyhist;
1437  FEDsAndenergyHists_[FED]->SetDirectory(nullptr);
1438 
1439  TH2F* E2vsE1hist = new TH2F(Form("E2vsE1_FED_%d",FED),Form("E2vsE1_FED_%d",FED), numBins, histRangeMin_, histRangeMax_, numBins, histRangeMin_, histRangeMax_);
1440  FEDsAndE2vsE1Hists_[FED] = E2vsE1hist;
1441  FEDsAndE2vsE1Hists_[FED]->SetDirectory(nullptr);
1442 
1443  TH2F* energyvsE1hist = new TH2F(Form("EnergyvsE1_FED_%d",FED),Form("EnergyvsE1_FED_%d",FED), numBins, histRangeMin_, histRangeMax_, numBins, histRangeMin_, histRangeMax_);
1444  FEDsAndenergyvsE1Hists_[FED] = energyvsE1hist;
1445  FEDsAndenergyvsE1Hists_[FED]->SetDirectory(nullptr);
1446 
1447  title1 = "Time for ";
1448  title1.append(fedMap_->getSliceFromFed(FED));
1449  title1.append(";Relative Time (1 clock = 25ns);Events");
1450  name1 = "TimeFED";
1451  name1.append(intToString(FED));
1452  TH1F* timingHist = new TH1F(name1.c_str(),title1.c_str(),78,-7,7);
1453  FEDsAndTimingHists_[FED] = timingHist;
1454  FEDsAndTimingHists_[FED]->SetDirectory(nullptr);
1455 
1456  TH1F* freqHist = new TH1F(Form("Frequency_FED_%d",FED),Form("Frequency for FED %d;Event Number",FED),100,0.,100000);
1457  FEDsAndFrequencyHists_[FED] = freqHist;
1458  FEDsAndFrequencyHists_[FED]->SetDirectory(nullptr);
1459 
1460  TH1F* iphiProfileHist = new TH1F(Form("iPhi_Profile_FED_%d",FED),Form("iPhi Profile for FED %d",FED),360,1.,361);
1461  FEDsAndiPhiProfileHists_[FED] = iphiProfileHist;
1462  FEDsAndiPhiProfileHists_[FED]->SetDirectory(nullptr);
1463 
1464  TH1F* ietaProfileHist = new TH1F(Form("iEta_Profile_FED_%d",FED),Form("iEta Profile for FED %d",FED),172,-86,86);
1465  FEDsAndiEtaProfileHists_[FED] = ietaProfileHist;
1466  FEDsAndiEtaProfileHists_[FED]->SetDirectory(nullptr);
1467 
1468  TH2F* timingHistVsFreq = new TH2F(Form("timeVsFreqFED_%d",FED),Form("time Vs Freq FED %d",FED),78,-7,7,100,0.,100000);
1469  FEDsAndTimingVsFreqHists_[FED] = timingHistVsFreq;
1470  FEDsAndTimingVsFreqHists_[FED]->SetDirectory(nullptr);
1471 
1472  TH2F* timingHistVsAmp = new TH2F(Form("timeVsAmpFED_%d",FED),Form("time Vs Amp FED %d",FED),78,-7,7,numBins,histRangeMin_,histRangeMax_);
1473  FEDsAndTimingVsAmpHists_[FED] = timingHistVsAmp;
1474  FEDsAndTimingVsAmpHists_[FED]->SetDirectory(nullptr);
1475 
1476  TH1F* numXtalInClusterHist = new TH1F(Form("NumXtalsInCluster_FED_%d",FED),Form("Num active Xtals In Cluster for FED %d;Num Active Xtals",FED),25,0,25);
1477  FEDsAndNumXtalsInClusterHists_[FED] = numXtalInClusterHist;
1478  FEDsAndNumXtalsInClusterHists_[FED]->SetDirectory(nullptr);
1479 
1480  TH2F* OccupHist = new TH2F(Form("occupFED_%d",FED),Form("Occupancy FED %d;i#eta;i#phi",FED),85,1,86,20,1,21);
1481  FEDsAndOccupancyHists_[FED] = OccupHist;
1482  FEDsAndOccupancyHists_[FED]->SetDirectory(nullptr);
1483 
1484  TH2F* timingHistVsPhi = new TH2F(Form("timeVsPhiFED_%d",FED),Form("time Vs Phi FED %d;Relative Time (1 clock = 25ns);i#phi",FED),78,-7,7,20,1,21);
1485  FEDsAndTimingVsPhiHists_[FED] = timingHistVsPhi;
1486  FEDsAndTimingVsPhiHists_[FED]->SetDirectory(nullptr);
1487 
1488  TH2F* timingHistVsModule = new TH2F(Form("timeVsModuleFED_%d",FED),Form("time Vs Module FED %d;Relative Time (1 clock = 25ns);i#eta",FED),78,-7,7,4,1,86);
1489  FEDsAndTimingVsModuleHists_[FED] = timingHistVsModule;
1490  FEDsAndTimingVsModuleHists_[FED]->SetDirectory(nullptr);
1491 
1492  TH2F* dccRuntypeVsBxFED = new TH2F(Form("DCCRuntypeVsBxFED_%d",FED),Form("DCC Runtype vs. BX FED %d",FED),3600,0,3600,24,0,24);
1493  FEDsAndDCCRuntypeVsBxHists_[FED] = dccRuntypeVsBxFED;
1494  FEDsAndDCCRuntypeVsBxHists_[FED]->SetDirectory(nullptr);
1495 
1496 }
1497 
1498 // ------------ method called once each job just before starting event loop ------------
1499 void
1501 {
1503  eventSetup.get< EcalMappingRcd >().get(handle);
1504  ecalElectronicsMap_ = handle.product();
1505 
1506  //Here I will init some of the specific histograms
1507  int numBins = 200;//(int)round(histRangeMax_-histRangeMin_)+1;
1508 
1509  //=============Special Bins for TT and Modules borders=============================
1510  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 };
1511  double modEtaBins[10]={-85, -65, -45, -25, 0, 1, 26, 46, 66, 86};
1512  double ttPhiBins[73];
1513  double modPhiBins[19];
1514  double timingBins[79];
1515  double highEBins[11];
1516  for (int i = 0; i < 79; ++i)
1517  {
1518  timingBins[i]=-7.+double(i)*14./78.;
1519  if (i<73)
1520  {
1521  ttPhiBins[i]=1+5*i;
1522  if ( i < 19)
1523  {
1524  modPhiBins[i]=1+20*i;
1525  if (i < 11)
1526  {
1527  highEBins[i]=10.+double(i)*20.;
1528  }
1529  }
1530  }
1531 
1532  }
1533  //=============END Special Bins for TT and Modules borders===========================
1534 
1535  //====================Frequency for Event timing information=========================
1536  double timingEndInSeconds = runTimeLength_*3600.;
1537  double timingBinWidth = timingEndInSeconds/double(numTimingBins_);
1538  //====================END Frequency for Event timing information=====================
1539 
1540 
1541  allFedsenergyHist_ = new TH1F("energy_AllClusters","energy_AllClusters;Cluster Energy (GeV)",numBins,histRangeMin_,histRangeMax_);
1542  allFedsenergyHighHist_ = new TH1F("energyHigh_AllClusters","energyHigh_AllClusters;Cluster Energy (GeV)",numBins,histRangeMin_,200.0);
1543  allFedsenergyOnlyHighHist_ = new TH1F("energyHigh_HighEnergyClusters","energy of High Energy Clusters;Cluster Energy (GeV)",numBins,histRangeMin_,200.0);
1544  allFedsE2Hist_ = new TH1F("E2_AllClusters","E2_AllClusters;Seed+highest neighbor energy (GeV)",numBins,histRangeMin_,histRangeMax_);
1545  allFedsE2vsE1Hist_ = new TH2F("E2vsE1_AllClusters","E2vsE1_AllClusters;Seed Energy (GeV);Seed+highest neighbor energy (GeV)",numBins,histRangeMin_,histRangeMax_,numBins,histRangeMin_,histRangeMax_);
1546  allFedsenergyvsE1Hist_ = new TH2F("energyvsE1_AllClusters","energyvsE1_AllClusters;Seed Energy (GeV);Energy(GeV)",numBins,histRangeMin_,histRangeMax_,numBins,histRangeMin_,histRangeMax_);
1547  allFedsTimingHist_ = new TH1F("timeForAllFeds","timeForAllFeds;Relative Time (1 clock = 25ns)",78,-7,7);
1548  allFedsTimingVsFreqHist_ = new TH2F("timeVsFreqAllEvent","time Vs Freq All events;Relative Time (1 clock = 25ns);Event Number",78,-7,7,2000,0.,200000);
1549  allFedsTimingVsAmpHist_ = new TH2F("timeVsAmpAllEvents","time Vs Amp All Events;Relative Time (1 clock = 25ns);Amplitude (GeV)",78,-7,7,numBins,histRangeMin_,histRangeMax_);
1550  allFedsFrequencyHist_ = new TH1F("FrequencyAllEvent","Frequency for All events;Event Number",2000,0.,200000);
1551 
1552  //--------Special Hists for times stamp info----------------------------------------------
1553  allFedsFreqTimeHist_ = new TH1F("FrequencyAllEventsInTime",Form("Time of Cosmic Events; Time (s);Passing Event rate/%5g s",timingBinWidth),numTimingBins_,0.,timingEndInSeconds);
1554  allFedsFreqTimeVsPhiHist_= new TH2F("FrequencyAllEventsInTimeVsPhi",Form("Time of Cosmic Events vs iPhi; iPhi;Time (s)/%5g s",timingBinWidth*360.),360,1.,361.,numTimingBins_/360,0.,timingEndInSeconds);
1555  allFedsFreqTimeVsPhiTTHist_= new TH2F("FrequencyAllEventsInTimeVsTTPhi",Form("Time of Cosmic Events vs iPhi (TT bins); iPhi;Time (s)/%5g s",timingBinWidth*72.),72,1.,361.,numTimingBins_/72,0.,timingEndInSeconds);
1556  allFedsFreqTimeVsEtaHist_= new TH2F("FrequencyAllEventsInTimeVsEta",Form("Time of Cosmic Events vs iEta; Time (s)/%5g s; iEta" ,timingBinWidth*172.),numTimingBins_/172,0.,timingEndInSeconds,172,-86.,86.);
1557  allFedsFreqTimeVsEtaTTHist_= new TH2F("FrequencyAllEventsInTimeVsTTEta",Form("Time of Cosmic Events vs Eta (TT bins);Time (s)/%5g s; iEta" ,timingBinWidth*35.),numTimingBins_/35,0.,timingEndInSeconds,35,ttEtaBins);
1558  //--------END Special Hists for times stamp info------------------------------------------
1559 
1560  allFedsiPhiProfileHist_ = new TH1F("iPhiProfileAllEvents","iPhi Profile all events;i#phi",360,1.,361.);
1561  allFedsiEtaProfileHist_ = new TH1F("iEtaProfileAllEvents","iEta Profile all events;i#eta",172,-86,86);
1562 
1563  allOccupancy_ = new TH2F("OccupancyAllEvents","Occupancy all events;i#phi;i#eta",360,1.,361.,172,-86,86);
1564  TrueOccupancy_ = new TH2F("TrueOccupancyAllEvents","True Occupancy all events;#phi;#eta",360,-3.14159,3.14159,172,-1.5,1.5);
1565  allOccupancyCoarse_ = new TH2F("OccupancyAllEventsCoarse","Occupancy all events Coarse;i#phi;i#eta",360/5,1,361.,35,ttEtaBins);
1566  TrueOccupancyCoarse_ = new TH2F("TrueOccupancyAllEventsCoarse","True Occupancy all events Coarse;#phi;#eta",360/5,-3.14159,3.14159,34,-1.5,1.5);
1567 
1568 
1569  // single xtal cluster occupancy
1570  allOccupancySingleXtal_ = new TH2F("OccupancySingleXtal","Occupancy single xtal clusters;i#phi;i#eta",360,1.,361.,172,-86,86);
1571  energySingleXtalHist_ = new TH1F("energy_SingleXtalClusters","Energy single xtal clusters;Cluster Energy (GeV)",numBins,histRangeMin_,200.0);
1572 
1573  allFedsTimingPhiHist_ = new TH2F("timePhiAllFEDs","time vs Phi for all FEDs (TT binning);i#phi;Relative Time (1 clock = 25ns)",72,1,361,78,-7,7);
1574  allFedsTimingPhiEbpHist_ = new TH2F("timePhiEBP","time vs Phi for FEDs in EB+ (TT binning) ;i#phi;Relative Time (1 clock = 25ns)",72,1,361,78,-7,7);
1575  allFedsTimingPhiEbmHist_ = new TH2F("timePhiEBM","time vs Phi for FEDs in EB- (TT binning);i#phi;Relative Time (1 clock = 25ns)",72,1,361,78,-7,7);
1576  allFedsTimingPhiEtaHist_ = new TH3F("timePhiEtaAllFEDs","(Phi,Eta,time) for all FEDs (SM,M binning);i#phi;i#eta;Relative Time (1 clock = 25ns)",18,modPhiBins,9,modEtaBins,78,timingBins);
1577  allFedsTimingTTHist_ = new TH3F("timeTTAllFEDs","(Phi,Eta,time) for all FEDs (SM,TT binning);i#phi;i#eta;Relative Time (1 clock = 25ns)",72,ttPhiBins,35,ttEtaBins,78,timingBins);
1578  allFedsTimingLMHist_ = new TH2F("timeLMAllFEDs","(LM,time) for all FEDs (SM,LM binning);LM;Relative Time (1 clock = 25ns)",92, 1, 92,78,-7,7);
1579 
1580  allFedsTimingEbpHist_ = new TH1F("timeEBP","time for FEDs in EB+;Relative Time (1 clock = 25ns)",78,-7,7);
1581  allFedsTimingEbmHist_ = new TH1F("timeEBM","time for FEDs in EB-;Relative Time (1 clock = 25ns)",78,-7,7);
1582  allFedsTimingEbpTopHist_ = new TH1F("timeEBPTop","time for FEDs in EB+ Top;Relative Time (1 clock = 25ns)",78,-7,7);
1583  allFedsTimingEbmTopHist_ = new TH1F("timeEBMTop","time for FEDs in EB- Top;Relative Time (1 clock = 25ns)",78,-7,7);
1584  allFedsTimingEbpBottomHist_ = new TH1F("timeEBPBottom","time for FEDs in EB+ Bottom;Relative Time (1 clock = 25ns)",78,-7,7);
1585  allFedsTimingEbmBottomHist_ = new TH1F("timeEBMBottom","time for FEDs in EB- Bottom;Relative Time (1 clock = 25ns)",78,-7,7);
1586 
1587  numberofCosmicsHist_ = new TH1F("numberofCosmicsPerEvent","Number of cosmics per event;Number of Cosmics",30,0,30);
1588  numberofCosmicsHistEB_ = new TH1F("numberofCosmicsPerEvent_EB","Number of cosmics per event EB;Number of Cosmics",30,0,30);
1589 
1590  numberofCosmicsWTrackHist_ = new TH1F("numberofCosmicsWTrackPerEvent","Number of cosmics with track per event",30,0,30);
1591  numberofCosmicsTopBottomHist_ = new TH1F("numberofCosmicsTopBottomPerEvent","Number of top bottom cosmics per event;Number of Cosmics",30,0,30);
1592  numberofGoodEvtFreq_ = new TH1F("frequencyOfGoodEvents","Number of events with cosmic vs Event;Event Number;Number of Good Events/100 Events",2000,0,200000);
1593 
1594  numberofCrossedEcalIdsHist_ = new TH1F("numberofCrossedEcalCosmicsPerEvent","Number of crossed ECAL cosmics per event;Number of Crossed Cosmics",10,0,10);
1595 
1596  allOccupancyExclusiveECAL_ = new TH2F("OccupancyAllEvents_ExclusiveECAL","Occupancy all events Exclusive ECAL ;i#phi;i#eta",360,1.,361.,172,-86,86);
1597  allOccupancyCoarseExclusiveECAL_ = new TH2F("OccupancyAllEventsCoarse_ExclusiveECAL","Occupancy all events Coarse Exclusive ECAL;i#phi;i#eta",360/5,ttPhiBins,35, ttEtaBins);
1598  allOccupancyECAL_ = new TH2F("OccupancyAllEvents_ECAL","Occupancy all events ECAL;i#phi;i#eta",360,1.,361.,172,-86,86);
1599  allOccupancyCoarseECAL_ = new TH2F("OccupancyAllEventsCoarse_ECAL","Occupancy all events Coarse ECAL;i#phi;i#eta",360/5,ttPhiBins,35, ttEtaBins);
1600  allFedsTimingHistECAL_ = new TH1F("timeForAllFeds_ECAL","timeForAllFeds ECAL;Relative Time (1 clock = 25ns)",78,-7,7);
1601  allFedsTimingPhiEtaHistECAL_ = new TH3F("timePhiEtaAllFEDs_ECAL","ECAL (Phi,Eta,time) for all FEDs (SM,M binning);i#phi;i#eta;Relative Time (1 clock = 25ns)",18,modPhiBins,9, modEtaBins,78,timingBins);
1602  allFedsTimingTTHistECAL_ = new TH3F("timeTTAllFEDs_ECAL","ECAL (Phi,Eta,time) for all FEDs (SM,TT binning);i#phi;i#eta;Relative Time (1 clock = 25ns)",72,ttPhiBins,35,ttEtaBins,78,timingBins);
1603  allFedsTimingLMHistECAL_ = new TH2F("timeLMAllFEDs_ECAL","ECAL (LM,time) for all FEDs (SM,LM binning);LM;Relative Time (1 clock = 25ns)",92, 1, 92,78,-7,7);
1604 
1605  allOccupancyExclusiveDT_ = new TH2F("OccupancyAllEvents_ExclusiveDT","Occupancy all events Exclusive DT;i#phi;i#eta",360,1.,361.,172,-86,86);
1606  allOccupancyCoarseExclusiveDT_ = new TH2F("OccupancyAllEventsCoarse_ExclusiveDT","Occupancy all events Coarse Exclusive DT;i#phi;i#eta",360/5,1,361.,35,ttEtaBins);
1607  allOccupancyDT_ = new TH2F("OccupancyAllEvents_DT","Occupancy all events DT;i#phi;i#eta",360,1.,361.,172,-86,86);
1608  allOccupancyCoarseDT_ = new TH2F("OccupancyAllEventsCoarse_DT","Occupancy all events Coarse DT;i#phi;i#eta",360/5,1,361.,35,ttEtaBins);
1609  allFedsTimingHistDT_ = new TH1F("timeForAllFeds_DT","timeForAllFeds DT;Relative Time (1 clock = 25ns)",78,-7,7);
1610  allFedsTimingPhiEtaHistDT_ = new TH3F("timePhiEtaAllFEDs_DT","DT (Phi,Eta,time) for all FEDs (SM,M binning);i#phi;i#eta;Relative Time (1 clock = 25ns)",18,modPhiBins,9, modEtaBins,78,timingBins);
1611  allFedsTimingTTHistDT_ = new TH3F("timeTTAllFEDs_DT","DT (Phi,Eta,time) for all FEDs (SM,TT binning);i#phi;i#eta;Relative Time (1 clock = 25ns)",72,ttPhiBins,35,ttEtaBins,78,timingBins);
1612  allFedsTimingLMHistDT_ = new TH2F("timeLMAllFEDs_DT","DT (LM,time) for all FEDs (SM,LM binning);LM;Relative Time (1 clock = 25ns)",92, 1, 92,78,-7,7);
1613 
1614  allOccupancyExclusiveRPC_ = new TH2F("OccupancyAllEvents_ExclusiveRPC","Occupancy all events Exclusive RPC;i#phi;i#eta",360,1.,361.,172,-86,86);
1615  allOccupancyCoarseExclusiveRPC_ = new TH2F("OccupancyAllEventsCoarse_ExclusiveRPC","Occupancy all events Coarse Exclusive RPC;i#phi;i#eta",360/5,1,361.,35, ttEtaBins);
1616  allOccupancyRPC_ = new TH2F("OccupancyAllEvents_RPC","Occupancy all events RPC;i#phi;i#eta",360,1.,361.,172,-86,86);
1617  allOccupancyCoarseRPC_ = new TH2F("OccupancyAllEventsCoarse_RPC","Occupancy all events Coarse RPC;i#phi;i#eta",360/5,1,361.,35, ttEtaBins);
1618  allFedsTimingHistRPC_ = new TH1F("timeForAllFeds_RPC","timeForAllFeds RPC;Relative Time (1 clock = 25ns)",78,-7,7);
1619  allFedsTimingPhiEtaHistRPC_ = new TH3F("timePhiEtaAllFEDs_RPC","RPC (Phi,Eta,time) for all FEDs (SM,M binning);i#phi;i#eta;Relative Time (1 clock = 25ns)",18,modPhiBins,9, modEtaBins,78,timingBins);
1620  allFedsTimingTTHistRPC_ = new TH3F("timeTTAllFEDs_RPC","RPC (Phi,Eta,time) for all FEDs (SM,TT binning);i#phi;i#eta;Relative Time (1 clock = 25ns)",72,ttPhiBins,35,ttEtaBins,78,timingBins);
1621  allFedsTimingLMHistRPC_ = new TH2F("timeLMAllFEDs_RPC","RPC (LM,time) for all FEDs (SM,LM binning);LM;Relative Time (1 clock = 25ns)",92, 1, 92,78,-7,7);
1622 
1623  allOccupancyExclusiveCSC_ = new TH2F("OccupancyAllEvents_ExclusiveCSC","Occupancy all events Exclusive CSC;i#phi;i#eta",360,1.,361.,172,-86,86);
1624  allOccupancyCoarseExclusiveCSC_ = new TH2F("OccupancyAllEventsCoarse_ExclusiveCSC","Occupancy all events Coarse Exclusive CSC;i#phi;i#eta",360/5,1,361.,35, ttEtaBins);
1625  allOccupancyCSC_ = new TH2F("OccupancyAllEvents_CSC","Occupancy all events CSC;i#phi;i#eta",360,1.,361.,172,-86,86);
1626  allOccupancyCoarseCSC_ = new TH2F("OccupancyAllEventsCoarse_CSC","Occupancy all events Coarse CSC;i#phi;i#eta",360/5,1,361.,35, ttEtaBins);
1627  allFedsTimingHistCSC_ = new TH1F("timeForAllFeds_CSC","timeForAllFeds CSC;Relative Time (1 clock = 25ns)",78,-7,7);
1628  allFedsTimingPhiEtaHistCSC_ = new TH3F("timePhiEtaAllFEDs_CSC","CSC (Phi,Eta,time) for all FEDs (SM,M binning);i#phi;i#eta;Relative Time (1 clock = 25ns)",18,modPhiBins,9, modEtaBins,78,timingBins);
1629  allFedsTimingTTHistCSC_ = new TH3F("timeTTAllFEDs_CSC","CSC (Phi,Eta,time) for all FEDs (SM,TT binning);i#phi;i#eta;Relative Time (1 clock = 25ns)",72,ttPhiBins,35,ttEtaBins,78,timingBins);
1630  allFedsTimingLMHistCSC_ = new TH2F("timeLMAllFEDs_CSC","CSC (LM,time) for all FEDs (SM,LM binning);LM;Relative Time (1 clock = 25ns)",92, 1, 62,78,-7,7);
1631 
1632  allOccupancyExclusiveHCAL_ = new TH2F("OccupancyAllEvents_ExclusiveHCAL","Occupancy all events Exclusive HCAL;i#phi;i#eta",360,1.,361.,172,-86,86);
1633  allOccupancyCoarseExclusiveHCAL_ = new TH2F("OccupancyAllEventsCoarse_ExclusiveHCAL","Occupancy all events Coarse Exclusive HCAL;i#phi;i#eta",360/5,1,361.,35, ttEtaBins);
1634  allOccupancyHCAL_ = new TH2F("OccupancyAllEvents_HCAL","Occupancy all events HCAL;i#phi;i#eta",360,1.,361.,172,-86,86);
1635  allOccupancyCoarseHCAL_ = new TH2F("OccupancyAllEventsCoarse_HCAL","Occupancy all events Coarse HCAL;i#phi;i#eta",360/5,1,361.,35, ttEtaBins);
1636  allFedsTimingHistHCAL_ = new TH1F("timeForAllFeds_HCAL","timeForAllFeds HCAL;Relative Time (1 clock = 25ns)",78,-7,7);
1637  allFedsTimingPhiEtaHistHCAL_ = new TH3F("timePhiEtaAllFEDs_HCAL","HCAL (Phi,Eta,time) for all FEDs (SM,M binning);i#phi;i#eta;Relative Time (1 clock = 25ns)",18,modPhiBins,9, modEtaBins,78,timingBins);
1638  allFedsTimingTTHistHCAL_ = new TH3F("timeTTAllFEDs_HCAL","HCAL (Phi,Eta,time) for all FEDs (SM,TT binning);i#phi;i#eta;Relative Time (1 clock = 25ns)",72,ttPhiBins,35,ttEtaBins,78,timingBins);
1639  allFedsTimingLMHistHCAL_ = new TH2F("timeLMAllFEDs_HCAL","HCAL (LM,time) for all FEDs (SM,LM binning);LM;Relative Time (1 clock = 25ns)",92, 1, 92,78,-7,7);
1640 
1641  TrueBCOccupancy_ = new TH2F("BCTrueOccupancyAllEvents","True SB Occupancy all events;#phi;#eta",360,-3.14159,3.14159,172,-1.5,1.5);
1642  TrueBCOccupancyCoarse_ = new TH2F("BCTrueOccupancyAllEventsCoarse","True BC Occupancy all events Coarse;#phi;#eta",360/5,-3.14159,3.14159,34,-1.5 ,1.5);
1643 
1644  numberofBCinSC_ = new TH1F("numberofBCinSC","Number of Basic Clusters in Super Cluster;Num Basic Clusters",20,0,20);//SC
1645  numberofBCinSCphi_ = new TH2F("numberofBCinSCphi","Number of Basic Clusters in Super Cluster;phi;Num Basic Clusters",360/5,-3.14159,3.14159,20,0,20);//SC
1646 
1647  allFedsTimingHistEcalMuon_ = new TH1F("timeForAllFeds_EcalMuon","timeForAllFeds Ecal+Muon;Relative Time (1 clock = 25ns)",78,-7,7);
1648 
1649  triggerHist_ = new TH1F("triggerHist","Trigger Number",5,0,5);
1650  triggerHist_->GetXaxis()->SetBinLabel(1,"ECAL");
1651  triggerHist_->GetXaxis()->SetBinLabel(2,"HCAL");
1652  triggerHist_->GetXaxis()->SetBinLabel(3,"DT");
1653  triggerHist_->GetXaxis()->SetBinLabel(4,"RPC");
1654  triggerHist_->GetXaxis()->SetBinLabel(5,"CSC");
1655 
1656  triggerExclusiveHist_ = new TH1F("triggerExclusiveHist","Trigger Number (Mutually Exclusive)",5,0,5); triggerExclusiveHist_->GetXaxis()->SetBinLabel(1,"ECAL");
1657  triggerExclusiveHist_->GetXaxis()->SetBinLabel(2,"HCAL");
1658  triggerExclusiveHist_->GetXaxis()->SetBinLabel(3,"DT");
1659  triggerExclusiveHist_->GetXaxis()->SetBinLabel(4,"RPC");
1660  triggerExclusiveHist_->GetXaxis()->SetBinLabel(5,"CSC");
1661 
1662  runNumberHist_ = new TH1F("runNumberHist","Run Number",1,0,1);
1663 
1664  deltaRHist_ = new TH1F("deltaRHist","deltaR",500,-0.5,499.5);
1665  deltaEtaHist_ = new TH1F("deltaIEtaHist","deltaIEta",170,-85.5,84.5);
1666  deltaPhiHist_ = new TH1F("deltaIPhiHist","deltaIPhi",720,-360.5,359.5);
1667  ratioAssocTracksHist_ = new TH1F("ratioAssocTracks","num assoc. tracks/tracks through Ecal",11,0,1.1);
1668  ratioAssocClustersHist_ = new TH1F("ratioAssocClusters","num assoc. clusters/total clusters",11,0,1.1);
1669  trackAssoc_muonsEcal_= new TH2F("trackAssoc_muonsEcal","Map of muon hits in Ecal", 360,1.,361.,172,-86,86);//360, 0 , 360, 170,-85 ,85);
1670  deltaEtaDeltaPhiHist_ = new TH2F("deltaEtaDeltaPhi","Delta ieta vs. delta iphi",170,-85.5,84.5,720,-360.5,359.5);
1671  seedTrackEtaHist_ = new TH2F("seedTrackEta","track ieta vs. seed ieta",170,-85.5,84.5,170,-85.5,84.5);
1672  seedTrackPhiHist_ = new TH2F("seedTrackPhi","track iphi vs. seed iphi",720,-360.5,359.5,720,-360.5,359.5);
1673 
1674  dccEventVsBxHist_ = new TH2F("dccEventVsBx","DCC Runtype vs. bunch crossing",3600,0,3600,24,0,24);
1675  dccBXErrorByFEDHist_ = new TH1F("dccBXErrorByFED","Incorrect BX number by FED",54,601,655);
1676  dccOrbitErrorByFEDHist_ = new TH1F("dccOrbitErrorByFED","Incorrect orbit number by FED",54,601,655);
1677  dccRuntypeErrorByFEDHist_ = new TH1F("dccRuntypeErrorByFED","Incorrect DCC Runtype by FED",54,601,655);
1678  dccRuntypeHist_ = new TH1F("dccRuntype","DCC Runtype frequency",24,0,24);
1679  dccErrorVsBxHist_ = new TH2F("dccErrorVsBX","DCC Errors vs. BX",3600,0,3600,3,0,3);
1680 
1681  hcalEnergy_HBHE_ = new TH1F("hcalEnergy_HBHE","RecHit Energy HBHE",440,-10,100);
1682  hcalEnergy_HF_ = new TH1F("hcalEnergy_HF","RecHit Energy HF",440,-10,100);
1683  hcalEnergy_HO_ = new TH1F("hcalEnergy_HO","RecHit Energy HO",440,-10,100);
1684  hcalHEHBecalEB_ = new TH2F("hcalHEHBecalEB","HCAL HBHE RecHit energy vs ECAL EB energy",numBins,histRangeMin_,300.0,40,-5,5);
1685 
1686  NumXtalsInClusterHist_ = new TH1F("NumXtalsInClusterAllHist","Number of Xtals in Cluster;NumXtals",150,0,150);
1687  numxtalsVsEnergy_ = new TH2F("NumXtalsVsEnergy","Number of Xtals in Cluster vs Energy;Energy (GeV);Number of Xtals in Cluster",numBins,histRangeMin_,histRangeMax_, 150,0,150);
1688  numxtalsVsHighEnergy_ = new TH2F("NumXtalsVsHighEnergy","Number of Xtals in Cluster vs Energy;Energy (GeV);Number of Xtals in Cluster",numBins,histRangeMin_,200., 150,0,150);
1689 
1690  // high energy analysis
1691  allOccupancyHighEnergy_ = new TH2F("OccupancyHighEnergyEvents","Occupancy high energy events;i#phi;i#eta",360,1.,361.,172,-86,86);
1692  allOccupancyHighEnergyCoarse_ = new TH2F("OccupancyHighEnergyEventsCoarse","Occupancy high energy events Coarse;i#phi;i#eta",72,ttPhiBins,35,ttEtaBins);
1693  allFedsOccupancyHighEnergyHist_ = new TH3F("OccupancyHighEnergyEvents3D","(Phi,Eta,energy) for all high energy events;i#phi;i#eta;energy (GeV)",18,modPhiBins,9,modEtaBins,10,highEBins);
1694  allFedsNumXtalsInClusterHist_ = new TH1F("NumActiveXtalsInClusterAllHist","Number of active Xtals in Cluster;NumXtals",100,0,100);
1695 
1696  HighEnergy_NumXtal = new TH1F("HighEnergy_NumXtal","Num crystals in high E clusters;num crystals",150,0,150);
1697  HighEnergy_NumXtalFedId = new TH2F("HighEnergy_NumXtalFedId","Num crystals in cluster vs FedId;FedId;num crystals",36,610.,645.,150,0,150);
1698  HighEnergy_NumXtaliphi = new TH2F("HighEnergy_NumXtaliphi","Num crystals in cluster vs iphi;i#phi;num crystals",360,1.,361.,150,0,150);
1699  HighEnergy_energy3D = new TH3F("HighEnergy_energy3D","(Phi,Eta,energy) for all high energy events;i#phi;i#eta;energy (GeV)",72,ttPhiBins,35,ttEtaBins,10,highEBins);
1700 
1701  HighEnergy_energyNumXtal = new TH2F("HighEnergy_energyNumXtal","Energy in cluster vs Num crystals in cluster;num crystals;energy",150,0,150,200,0.,200.);
1702 
1703  HighEnergy_bestSeed = new TH1F("HighEnergy_bestSeedEnergy","BestSeed Energy from TrackAss",200,0.,200.);
1704  HighEnergy_bestSeedOccupancy = new TH2F("HighEnergy_bestSeedOccupancy","Occupancy HighEn events from TrackAss;i#phi;i#eta",360,1.,361.,172,-86,86);
1705 
1706  HighEnergy_numClusHighEn = new TH1F("HighEnergy_numClusHighEn","Num High Energy Clusters",7,0,7);
1707  HighEnergy_ratioClusters = new TH1F("HighEnergy_ratioClusters","Num High Energy Clusters/Num tot Clusters",100,0.,1.1);
1708 
1709  HighEnergy_numRecoTrackBarrel = new TH1F("HighEnergy_numRecoTracksBarrel","Num BarrelRecoTracks",10,0,10);
1710  HighEnergy_TracksAngle = new TH1F("HighEnergy_TracksAngle","Angle between tracks",720,0.,180.);
1711  HighEnergy_TracksAngleTopBottom = new TH1F("HighEnergy_TopBottomTracksAngle","Angle between top-bottom tracks",720,0.,180.);
1712 
1713  HighEnergy_2GeV_occuCoarse = new TH2F("HighEnergy_occu2GeV_Coarse","Occupancy high energy events with more than 2 GeV;i#phi;i#eta",72,ttPhiBins,35,ttEtaBins);
1714  HighEnergy_2GeV_occu3D = new TH3F("HighEnergy_2GeV_energy3D","(iphi,ieta,energy) for all high energy events w > 10 GeV;i#phi;i#eta;energy (GeV)",72,ttPhiBins,35,ttEtaBins,10,highEBins);
1715  HighEnergy_100GeV_occuCoarse = new TH2F("HighEnergy_occu100GeV_Coarse","Occupancy high energy events with more than 100 GeV;i#phi;i#eta",72,ttPhiBins,35,ttEtaBins);
1716  HighEnergy_100GeV_occu3D = new TH3F("HighEnergy_100GeV_energy3D","(iphi,ieta,energy) for all high energy events more than 100 GeV;i#phi;i#eta;energy (GeV)",72,ttPhiBins,35,ttEtaBins,10,highEBins);
1717  HighEnergy_0tracks_occu3D = new TH3F("HighEnergy_0Tracks_energy3D","(iphi,ieta,energy) for all events with 0 tracks;i#phi;i#eta;energy (GeV)",72,ttPhiBins,35,ttEtaBins,10,highEBins);
1718  HighEnergy_1tracks_occu3D = new TH3F("HighEnergy_1Tracks_energy3D","(iphi,ieta,energy) for all events with 1 tracks;i#phi;i#eta;energy (GeV)",72,ttPhiBins,35,ttEtaBins,10,highEBins);
1719  HighEnergy_2tracks_occu3D = new TH3F("HighEnergy_2Tracks_energy3D","(iphi,ieta,energy) for all events with 2 tracks;i#phi;i#eta;energy (GeV)",72,ttPhiBins,35,ttEtaBins,10,highEBins);
1720  HighEnergy_0tracks_occu3DXtal = new TH3F("HighEnergy_0Tracks_energy3DXtal","(iphi,ieta,energy) for all events with 0 tracks;i#phi;i#eta;energy (GeV)",360,1.,361.,172,-86,86,200,0.,200.);
1721  HighEnergy_1tracks_occu3DXtal = new TH3F("HighEnergy_1Tracks_energy3DXtal","(iphi,ieta,energy) for all events with 1 tracks;i#phi;i#eta;energy (GeV)",360,1.,361.,172,-86,86,200,0.,200.);
1722  HighEnergy_2tracks_occu3DXtal = new TH3F("HighEnergy_2Tracks_energy3DXtal","(iphi,ieta,energy) for all events with 2 tracks;i#phi;i#eta;energy (GeV)",360,1.,361.,172,-86,86,200,0.,200.);
1723 
1724  //EE histograms
1725 
1726  // EE-
1727  EEM_FedsSeedEnergyHist_ = new TH1F("SeedEnergyAllFEDs","Seed Energy for EEM Feds; Seed Energy (GeV)",200,histRangeMin_,10.0);
1728 
1729  EEM_AllOccupancyCoarse_ = new TH2F("OccupancyAllEventsCoarse","Occupancy all events Coarse EEM;ix;iy",20,0,100,20,0,100);
1730  EEM_AllOccupancy_ = new TH2F("OccupancyAllEvents","Occupancy all events EEM;ix;iy",100,0,100,100,0,100);
1731  EEM_FedsenergyHist_ = new TH1F("energy_AllClusters","energy_AllClusters_EEM;Cluster Energy (GeV)",numBins,histRangeMin_,10.0);
1732  EEM_FedsenergyHighHist_ = new TH1F("energyHigh_AllClusters","energyHigh_AllClusters in EEM;Cluster Energy (GeV)",numBins,histRangeMin_,200.0);
1733  EEM_FedsenergyOnlyHighHist_ = new TH1F("energyHigh_HighEnergyClusters","energy of High Energy Clusters in EEM;Cluster Energy (GeV)",numBins,histRangeMin_,200.0);
1734  EEM_FedsE2Hist_ = new TH1F("E2_AllClusters","E2_AllClusters_EEM;Seed+highest neighbor energy (GeV)",numBins,histRangeMin_,10.0);
1735  EEM_FedsE2vsE1Hist_ = new TH2F("E2vsE1_AllClusters","E2vsE1_AllClusters_EEM;Seed Energy (GeV);Seed+highest neighbor energy (GeV)",numBins,histRangeMin_,10.0,numBins,histRangeMin_,10.0);
1736  EEM_FedsenergyvsE1Hist_ = new TH2F("energyvsE1_AllClusters","energyvsE1_AllClusters_EEM;Seed Energy (GeV);Energy(GeV)",numBins,histRangeMin_,10.0,numBins,histRangeMin_,10.0);
1737  EEM_FedsTimingHist_ = new TH1F("timeForAllFeds","timeForAllFeds_EEM;Relative Time (1 clock = 25ns)",78,-7,7);
1738  EEM_numberofCosmicsHist_ = new TH1F("numberofCosmicsPerEvent","Number of cosmics per event EEM;Number of Cosmics",30,0,30);
1739 
1740  EEM_FedsTimingVsAmpHist_ = new TH2F("timeVsAmpAllEvents","time Vs Amp All Events EEM;Relative Time (1 clock = 25ns);Amplitude (GeV)",78,-7,7,numBins,histRangeMin_,10.0);
1741  EEM_FedsTimingTTHist_ = new TH3F("timeTTAllFEDs","(ix,iy,time) for all FEDs (SM,TT binning) EEM;ix;iy;Relative Time (1 clock = 25ns)",20,0,100,20,0,100,78,-7,7);
1742 
1743  EEM_OccupancySingleXtal_ = new TH2F("OccupancySingleXtal","Occupancy single xtal clusters EEM;ix;iy",100,0,100,100,0,100);
1744  EEM_energySingleXtalHist_ = new TH1F("energy_SingleXtalClusters","Energy single xtal clusters EEM;Cluster Energy (GeV)",numBins,histRangeMin_,200.0);
1745 
1746  EEM_OccupancyExclusiveECAL_ = new TH2F("OccupancyAllEvents_ExclusiveECAL","Occupancy all events Exclusive ECAL EEM;ix;iy",100,0,100,100,0,100);
1747  EEM_OccupancyCoarseExclusiveECAL_ = new TH2F("OccupancyAllEventsCoarse_ExclusiveECAL","Occupancy all events Coarse Exclusive ECAL EEM;ix;iy",20,0,100,20,0,100);
1748  EEM_OccupancyECAL_ = new TH2F("OccupancyAllEvents_ECAL","Occupancy all events ECAL EEM;ix;iy",100,0,100,100,0,100);
1749  EEM_OccupancyCoarseECAL_ = new TH2F("OccupancyAllEventsCoarse_ECAL","Occupancy all events Coarse ECAL EEM;ix;iy",20,0,100,20,0,100);
1750  EEM_FedsTimingHistECAL_ = new TH1F("timeForAllFeds_ECAL","timeForAllFeds ECAL EEM;Relative Time (1 clock = 25ns)",78,-7,7);
1751  EEM_FedsTimingTTHistECAL_ = new TH3F("timeTTAllFEDs_ECAL","(ix,iy,time) for all FEDs (SM,TT binning) ECAL EEM;ix;iy;Relative Time (1 clock = 25ns)",20,0,100,20,0,100,78,-7,7);
1752 
1753  EEM_OccupancyExclusiveDT_ = new TH2F("OccupancyAllEvents_ExclusiveDT","Occupancy all events Exclusive DT EEM;ix;iy",100,0,100,100,0,100);
1754  EEM_OccupancyCoarseExclusiveDT_ = new TH2F("OccupancyAllEventsCoarse_ExclusiveDT","Occupancy all events Coarse Exclusive DT EEM;ix;iy",20,0,100,20,0,100);
1755  EEM_OccupancyDT_ = new TH2F("OccupancyAllEvents_DT","Occupancy all events DT EEM;ix;iy",100,0,100,100,0,100);
1756  EEM_OccupancyCoarseDT_ = new TH2F("OccupancyAllEventsCoarse_DT","Occupancy all events Coarse DT EEM;ix;iy",20,0,100,20,0,100);
1757  EEM_FedsTimingHistDT_ = new TH1F("timeForAllFeds_DT","timeForAllFeds DT EEM;Relative Time (1 clock = 25ns)",78,-7,7);
1758  EEM_FedsTimingTTHistDT_ = new TH3F("timeTTAllFEDs_DT","(ix,iy,time) for all FEDs (SM,TT binning) DT EEM;ix;iy;Relative Time (1 clock = 25ns)",20,0,100,20,0,100,78,-7,7);
1759 
1760  EEM_OccupancyExclusiveRPC_ = new TH2F("OccupancyAllEvents_ExclusiveRPC","Occupancy all events Exclusive RPC EEM;ix;iy",100,0,100,100,0,100);
1761  EEM_OccupancyCoarseExclusiveRPC_ = new TH2F("OccupancyAllEventsCoarse_ExclusiveRPC","Occupancy all events Coarse Exclusive RPC EEM;ix;iy",20,0,100,20,0,100);
1762  EEM_OccupancyRPC_ = new TH2F("OccupancyAllEvents_RPC","Occupancy all events RPC EEM;ix;iy",100,0,100,100,0,100);
1763  EEM_OccupancyCoarseRPC_ = new TH2F("OccupancyAllEventsCoarse_RPC","Occupancy all events Coarse RPC EEM;ix;iy",20,0,100,20,0,100);
1764  EEM_FedsTimingHistRPC_ = new TH1F("timeForAllFeds_RPC","timeForAllFeds RPC EEM;Relative Time (1 clock = 25ns)",78,-7,7);
1765  EEM_FedsTimingTTHistRPC_ = new TH3F("timeTTAllFEDs_RPC","(ix,iy,time) for all FEDs (SM,TT binning) RPC EEM;ix;iy;Relative Time (1 clock = 25ns)",20,0,100,20,0,100,78,-7,7);
1766 
1767  EEM_OccupancyExclusiveCSC_ = new TH2F("OccupancyAllEvents_ExclusiveCSC","Occupancy all events Exclusive CSC EEM;ix;iy",100,0,100,100,0,100);
1768  EEM_OccupancyCoarseExclusiveCSC_ = new TH2F("OccupancyAllEventsCoarse_ExclusiveCSC","Occupancy all events Coarse Exclusive CSC EEM;ix;iy",20,0,100,20,0,100);
1769  EEM_OccupancyCSC_ = new TH2F("OccupancyAllEvents_CSC","Occupancy all events CSC EEM;ix;iy",100,0,100,100,0,100);
1770  EEM_OccupancyCoarseCSC_ = new TH2F("OccupancyAllEventsCoarse_CSC","Occupancy all events Coarse CSC EEM;ix;iy",20,0,100,20,0,100);
1771  EEM_FedsTimingHistCSC_ = new TH1F("timeForAllFeds_CSC","timeForAllFeds CSC EEM;Relative Time (1 clock = 25ns)",78,-7,7);
1772  EEM_FedsTimingTTHistCSC_ = new TH3F("timeTTAllFEDs_CSC","(ix,iy,time) for all FEDs (SM,TT binning) CSC EEM;ix;iy;Relative Time (1 clock = 25ns)",20,0,100,20,0,100,78,-7,7);
1773 
1774  EEM_OccupancyExclusiveHCAL_ = new TH2F("OccupancyAllEvents_ExclusiveHCAL","Occupancy all events Exclusive HCAL EEM;ix;iy",100,0,100,100,0,100);
1775  EEM_OccupancyCoarseExclusiveHCAL_ = new TH2F("OccupancyAllEventsCoarse_ExclusiveHCAL","Occupancy all events Coarse Exclusive HCAL EEM;ix;iy",20,0,100,20,0,100);
1776  EEM_OccupancyHCAL_ = new TH2F("OccupancyAllEvents_HCAL","Occupancy all events HCAL EEM;ix;iy",100,0,100,100,0,100);
1777  EEM_OccupancyCoarseHCAL_ = new TH2F("OccupancyAllEventsCoarse_HCAL","Occupancy all events Coarse HCAL EEM;ix;iy",20,0,100,20,0,100);
1778  EEM_FedsTimingHistHCAL_ = new TH1F("timeForAllFeds_HCAL","timeForAllFeds HCAL EEM;Relative Time (1 clock = 25ns)",78,-7,7);
1779  EEM_FedsTimingTTHistHCAL_ = new TH3F("timeTTAllFEDs_HCAL","(ix,iy,time) for all FEDs (SM,TT binning) HCAL EEM;ix;iy;Relative Time (1 clock = 25ns)",20,0,100,20,0,100,78,-7,7);
1780 
1781  EEM_numberofBCinSC_ = new TH1F("numberofBCinSC","Number of Basic Clusters in Super Cluster EEM;Num Basic Clusters",20,0,20);
1782 
1783  EEM_triggerHist_ = new TH1F("triggerHist","Trigger Number EEM",5,0,5);
1784  EEM_triggerHist_->GetXaxis()->SetBinLabel(1,"ECAL");
1785  EEM_triggerHist_->GetXaxis()->SetBinLabel(2,"HCAL");
1786  EEM_triggerHist_->GetXaxis()->SetBinLabel(3,"DT");
1787  EEM_triggerHist_->GetXaxis()->SetBinLabel(4,"RPC");
1788  EEM_triggerHist_->GetXaxis()->SetBinLabel(5,"CSC");
1789 
1790  EEM_triggerExclusiveHist_ = new TH1F("triggerExclusiveHist","Trigger Number (Mutually Exclusive) EEM",5,0,5); triggerExclusiveHist_->GetXaxis()->SetBinLabel(1,"ECAL");
1791  EEM_triggerExclusiveHist_->GetXaxis()->SetBinLabel(2,"HCAL");
1792  EEM_triggerExclusiveHist_->GetXaxis()->SetBinLabel(3,"DT");
1793  EEM_triggerExclusiveHist_->GetXaxis()->SetBinLabel(4,"RPC");
1794  EEM_triggerExclusiveHist_->GetXaxis()->SetBinLabel(5,"CSC");
1795 
1796  EEM_NumXtalsInClusterHist_ = new TH1F("NumXtalsInClusterAllHist","Number of Xtals in Cluster EEM;NumXtals",150,0,150);
1797  EEM_numxtalsVsEnergy_ = new TH2F("NumXtalsVsEnergy","Number of Xtals in Cluster vs Energy EEM;Energy (GeV);Number of Xtals in Cluster",numBins,histRangeMin_,10.0, 150,0,150);
1798  EEM_numxtalsVsHighEnergy_ = new TH2F("NumXtalsVsHighEnergy","Number of Xtals in Cluster vs Energy EEM;Energy (GeV);Number of Xtals in Cluster",numBins,histRangeMin_,200., 150,0,150);
1799 
1800  EEM_OccupancyHighEnergy_ = new TH2F("OccupancyHighEnergyEvents","Occupancy high energy events EEM;ix;iy",100,0,100,100,0,100);
1801  EEM_OccupancyHighEnergyCoarse_ = new TH2F("OccupancyHighEnergyEventsCoarse","Occupancy high energy events Coarse EEM;ix;iy",20,0,100,20,0,100);
1802 
1803  EEM_FedsNumXtalsInClusterHist_ = new TH1F("NumActiveXtalsInClusterAllHist","Number of active Xtals in Cluster EEM;NumXtals",100,0,100);
1804 
1805 
1806  // EE+
1807  EEP_FedsSeedEnergyHist_ = new TH1F("SeedEnergyAllFEDs","Seed Energy for EEP Feds; Seed Energy (GeV)",200,histRangeMin_,10.0);
1808 
1809  EEP_AllOccupancyCoarse_ = new TH2F("OccupancyAllEventsCoarse","Occupancy all events Coarse EEP;ix;iy",20,0,100,20,0,100);
1810  EEP_AllOccupancy_ = new TH2F("OccupancyAllEvents","Occupancy all events EEP;ix;iy",100,0,100,100,0,100);
1811  EEP_FedsenergyHist_ = new TH1F("energy_AllClusters","energy_AllClusters_EEP;Cluster Energy (GeV)",numBins,histRangeMin_,10.0);
1812  EEP_FedsenergyHighHist_ = new TH1F("energyHigh_AllClusters","energyHigh_AllClusters in EEP;Cluster Energy (GeV)",numBins,histRangeMin_,200.0);
1813  EEP_FedsenergyOnlyHighHist_ = new TH1F("energyHigh_HighEnergyClusters","energy of High Energy Clusters in EEP;Cluster Energy (GeV)",numBins,histRangeMin_,200.0);
1814  EEP_FedsE2Hist_ = new TH1F("E2_AllClusters","E2_AllClusters_EEP;Seed+highest neighbor energy (GeV)",numBins,histRangeMin_,10.0);
1815  EEP_FedsE2vsE1Hist_ = new TH2F("E2vsE1_AllClusters","E2vsE1_AllClusters_EEP;Seed Energy (GeV);Seed+highest neighbor energy (GeV)",numBins,histRangeMin_,10.0,numBins,histRangeMin_,10.0);
1816  EEP_FedsenergyvsE1Hist_ = new TH2F("energyvsE1_AllClusters","energyvsE1_AllClusters_EEP;Seed Energy (GeV);Energy(GeV)",numBins,histRangeMin_,10.0,numBins,histRangeMin_,10.0);
1817  EEP_FedsTimingHist_ = new TH1F("timeForAllFeds","timeForAllFeds_EEP;Relative Time (1 clock = 25ns)",78,-7,7);
1818  EEP_numberofCosmicsHist_ = new TH1F("numberofCosmicsPerEvent","Number of cosmics per event EEP;Number of Cosmics",30,0,30);
1819 
1820  EEP_FedsTimingVsAmpHist_ = new TH2F("timeVsAmpAllEvents","time Vs Amp All Events EEP;Relative Time (1 clock = 25ns);Amplitude (GeV)",78,-7,7,numBins,histRangeMin_,10.0);
1821  EEP_FedsTimingTTHist_ = new TH3F("timeTTAllFEDs","(ix,iy,time) for all FEDs (SM,TT binning) EEP;ix;iy;Relative Time (1 clock = 25ns)",20,0,100,20,0,100,78,-7,7);
1822 
1823  EEP_OccupancySingleXtal_ = new TH2F("OccupancySingleXtal","Occupancy single xtal clusters EEP;ix;iy",100,0,100,100,0,100);
1824  EEP_energySingleXtalHist_ = new TH1F("energy_SingleXtalClusters","Energy single xtal clusters EEP;Cluster Energy (GeV)",numBins,histRangeMin_,200.0);
1825 
1826  EEP_OccupancyExclusiveECAL_ = new TH2F("OccupancyAllEvents_ExclusiveECAL","Occupancy all events Exclusive ECAL EEP;ix;iy",100,0,100,100,0,100);
1827  EEP_OccupancyCoarseExclusiveECAL_ = new TH2F("OccupancyAllEventsCoarse_ExclusiveECAL","Occupancy all events Coarse Exclusive ECAL EEP;ix;iy",20,0,100,20,0,100);
1828  EEP_OccupancyECAL_ = new TH2F("OccupancyAllEvents_ECAL","Occupancy all events ECAL EEP;ix;iy",100,0,100,100,0,100);
1829  EEP_OccupancyCoarseECAL_ = new TH2F("OccupancyAllEventsCoarse_ECAL","Occupancy all events Coarse ECAL EEP;ix;iy",20,0,100,20,0,100);
1830  EEP_FedsTimingHistECAL_ = new TH1F("timeForAllFeds_ECAL","timeForAllFeds ECAL EEP;Relative Time (1 clock = 25ns)",78,-7,7);
1831  EEP_FedsTimingTTHistECAL_ = new TH3F("timeTTAllFEDs_ECAL","(ix,iy,time) for all FEDs (SM,TT binning) ECAL EEP;ix;iy;Relative Time (1 clock = 25ns)",20,0,100,20,0,100,78,-7,7);
1832 
1833  EEP_OccupancyExclusiveDT_ = new TH2F("OccupancyAllEvents_ExclusiveDT","Occupancy all events Exclusive DT EEP;ix;iy",100,0,100,100,0,100);
1834  EEP_OccupancyCoarseExclusiveDT_ = new TH2F("OccupancyAllEventsCoarse_ExclusiveDT","Occupancy all events Coarse Exclusive DT EEP;ix;iy",20,0,100,20,0,100);
1835  EEP_OccupancyDT_ = new TH2F("OccupancyAllEvents_DT","Occupancy all events DT EEP;ix;iy",100,0,100,100,0,100);
1836  EEP_OccupancyCoarseDT_ = new TH2F("OccupancyAllEventsCoarse_DT","Occupancy all events Coarse DT EEP;ix;iy",20,0,100,20,0,100);
1837  EEP_FedsTimingHistDT_ = new TH1F("timeForAllFeds_DT","timeForAllFeds DT EEP;Relative Time (1 clock = 25ns)",78,-7,7);
1838  EEP_FedsTimingTTHistDT_ = new TH3F("timeTTAllFEDs_DT","(ix,iy,time) for all FEDs (SM,TT binning) DT EEP;ix;iy;Relative Time (1 clock = 25ns)",20,0,100,20,0,100,78,-7,7);
1839 
1840  EEP_OccupancyExclusiveRPC_ = new TH2F("OccupancyAllEvents_ExclusiveRPC","Occupancy all events Exclusive RPC EEP;ix;iy",100,0,100,100,0,100);
1841  EEP_OccupancyCoarseExclusiveRPC_ = new TH2F("OccupancyAllEventsCoarse_ExclusiveRPC","Occupancy all events Coarse Exclusive RPC EEP;ix;iy",20,0,100,20,0,100);
1842  EEP_OccupancyRPC_ = new TH2F("OccupancyAllEvents_RPC","Occupancy all events RPC EEP;ix;iy",100,0,100,100,0,100);
1843  EEP_OccupancyCoarseRPC_ = new TH2F("OccupancyAllEventsCoarse_RPC","Occupancy all events Coarse RPC EEP;ix;iy",20,0,100,20,0,100);
1844  EEP_FedsTimingHistRPC_ = new TH1F("timeForAllFeds_RPC","timeForAllFeds RPC EEP;Relative Time (1 clock = 25ns)",78,-7,7);
1845  EEP_FedsTimingTTHistRPC_ = new TH3F("timeTTAllFEDs_RPC","(ix,iy,time) for all FEDs (SM,TT binning) RPC EEP;ix;iy;Relative Time (1 clock = 25ns)",20,0,100,20,0,100,78,-7,7);
1846 
1847  EEP_OccupancyExclusiveCSC_ = new TH2F("OccupancyAllEvents_ExclusiveCSC","Occupancy all events Exclusive CSC EEP;ix;iy",100,0,100,100,0,100);
1848  EEP_OccupancyCoarseExclusiveCSC_ = new TH2F("OccupancyAllEventsCoarse_ExclusiveCSC","Occupancy all events Coarse Exclusive CSC EEP;ix;iy",20,0,100,20,0,100);
1849  EEP_OccupancyCSC_ = new TH2F("OccupancyAllEvents_CSC","Occupancy all events CSC EEP;ix;iy",100,0,100,100,0,100);
1850  EEP_OccupancyCoarseCSC_ = new TH2F("OccupancyAllEventsCoarse_CSC","Occupancy all events Coarse CSC EEP;ix;iy",20,0,100,20,0,100);
1851  EEP_FedsTimingHistCSC_ = new TH1F("timeForAllFeds_CSC","timeForAllFeds CSC EEP;Relative Time (1 clock = 25ns)",78,-7,7);
1852  EEP_FedsTimingTTHistCSC_ = new TH3F("timeTTAllFEDs_CSC","(ix,iy,time) for all FEDs (SM,TT binning) CSC EEP;ix;iy;Relative Time (1 clock = 25ns)",20,0,100,20,0,100,78,-7,7);
1853 
1854  EEP_OccupancyExclusiveHCAL_ = new TH2F("OccupancyAllEvents_ExclusiveHCAL","Occupancy all events Exclusive HCAL EEP;ix;iy",100,0,100,100,0,100);
1855  EEP_OccupancyCoarseExclusiveHCAL_ = new TH2F("OccupancyAllEventsCoarse_ExclusiveHCAL","Occupancy all events Coarse Exclusive HCAL EEP;ix;iy",20,0,100,20,0,100);
1856  EEP_OccupancyHCAL_ = new TH2F("OccupancyAllEvents_HCAL","Occupancy all events HCAL EEP;ix;iy",100,0,100,100,0,100);
1857  EEP_OccupancyCoarseHCAL_ = new TH2F("OccupancyAllEventsCoarse_HCAL","Occupancy all events Coarse HCAL EEP;ix;iy",20,0,100,20,0,100);
1858  EEP_FedsTimingHistHCAL_ = new TH1F("timeForAllFeds_HCAL","timeForAllFeds HCAL EEP;Relative Time (1 clock = 25ns)",78,-7,7);
1859  EEP_FedsTimingTTHistHCAL_ = new TH3F("timeTTAllFEDs_HCAL","(ix,iy,time) for all FEDs (SM,TT binning) HCAL EEP;ix;iy;Relative Time (1 clock = 25ns)",20,0,100,20,0,100,78,-7,7);
1860 
1861  EEP_numberofBCinSC_ = new TH1F("numberofBCinSC","Number of Basic Clusters in Super Cluster EEP;Num Basic Clusters",20,0,20);
1862 
1863  EEP_triggerHist_ = new TH1F("triggerHist","Trigger Number EEP",5,0,5);
1864  EEP_triggerHist_->GetXaxis()->SetBinLabel(1,"ECAL");
1865  EEP_triggerHist_->GetXaxis()->SetBinLabel(2,"HCAL");
1866  EEP_triggerHist_->GetXaxis()->SetBinLabel(3,"DT");
1867  EEP_triggerHist_->GetXaxis()->SetBinLabel(4,"RPC");
1868  EEP_triggerHist_->GetXaxis()->SetBinLabel(5,"CSC");
1869 
1870  EEP_triggerExclusiveHist_ = new TH1F("triggerExclusiveHist","Trigger Number (Mutually Exclusive) EEP",5,0,5);
1871  EEP_triggerExclusiveHist_->GetXaxis()->SetBinLabel(1,"ECAL");
1872  EEP_triggerExclusiveHist_->GetXaxis()->SetBinLabel(2,"HCAL");
1873  EEP_triggerExclusiveHist_->GetXaxis()->SetBinLabel(3,"DT");
1874  EEP_triggerExclusiveHist_->GetXaxis()->SetBinLabel(4,"RPC");
1875  EEP_triggerExclusiveHist_->GetXaxis()->SetBinLabel(5,"CSC");
1876 
1877  EEP_NumXtalsInClusterHist_ = new TH1F("NumXtalsInClusterAllHist","Number of Xtals in Cluster EEP;NumXtals",150,0,150);
1878  EEP_numxtalsVsEnergy_ = new TH2F("NumXtalsVsEnergy","Number of Xtals in Cluster vs Energy EEP;Energy (GeV);Number of Xtals in Cluster",numBins,histRangeMin_,10.0, 150,0,150);
1879  EEP_numxtalsVsHighEnergy_ = new TH2F("NumXtalsVsHighEnergy","Number of Xtals in Cluster vs Energy EEP;Energy (GeV);Number of Xtals in Cluster",numBins,histRangeMin_,200., 150,0,150);
1880 
1881  EEP_OccupancyHighEnergy_ = new TH2F("OccupancyHighEnergyEvents","Occupancy high energy events EEP;ix;iy",100,0,100,100,0,100);
1882  EEP_OccupancyHighEnergyCoarse_ = new TH2F("OccupancyHighEnergyEventsCoarse","Occupancy high energy events Coarse EEP;ix;iy",20,0,100,20,0,100);
1883 
1884  EEP_FedsNumXtalsInClusterHist_ = new TH1F("NumActiveXtalsInClusterAllHist","Number of active Xtals in Cluster EEP;NumXtals",100,0,100);
1885 
1886 
1887 }
1888 
1889 // ------------ method called once each job just after ending the event loop ------------
1890 void
1892 {
1893  using namespace std;
1894  if (runInFileName_) {
1895  fileName_ += "-"+intToString(runNum_)+".graph.root";
1896  } else {
1897  fileName_ += ".root";
1898  }
1899 
1900  TFile root_file_(fileName_.c_str() , "RECREATE");
1901 
1902  for(map<int,TH1F*>::const_iterator itr = FEDsAndHists_.begin();
1903  itr != FEDsAndHists_.end(); ++itr) {
1904  string dir = fedMap_->getSliceFromFed(itr->first);
1905  TDirectory* FEDdir = gDirectory->mkdir(dir.c_str());
1906  FEDdir->cd();
1907 
1908  TH1F* hist = itr->second;
1909  if(hist!=nullptr)
1910  hist->Write();
1911  else {
1912  cerr << "EcalCosmicsHists: Error: This shouldn't happen!" << endl;
1913  }
1914  // Write out timing hist
1915  hist = FEDsAndTimingHists_[itr->first];
1916  if(hist!=nullptr)
1917  hist->Write();
1918  else {
1919  cerr << "EcalCosmicsHists: Error: This shouldn't happen!" << endl;
1920  }
1921 
1922  hist = FEDsAndFrequencyHists_[itr->first];
1923  hist->Write();
1924 
1925  hist = FEDsAndiPhiProfileHists_[itr->first];
1926  hist->Write();
1927 
1928  hist = FEDsAndiEtaProfileHists_[itr->first];
1929  hist->Write();
1930 
1931  hist = FEDsAndE2Hists_[itr->first];
1932  hist->Write();
1933 
1934  hist = FEDsAndenergyHists_[itr->first];
1935  hist->Write();
1936 
1937  hist = FEDsAndNumXtalsInClusterHists_[itr->first];
1938  hist->Write();
1939 
1940  TH2F* hist2 = FEDsAndTimingVsAmpHists_[itr->first];
1941  hist2->Write();
1942 
1943  hist2 = FEDsAndTimingVsFreqHists_[itr->first];
1944  hist2->Write();
1945 
1946  hist2 = FEDsAndE2vsE1Hists_[itr->first];
1947  hist2->Write();
1948 
1949  hist2 = FEDsAndenergyvsE1Hists_[itr->first];
1950  hist2->Write();
1951 
1952  hist2 = FEDsAndOccupancyHists_[itr->first];
1953  hist2->Write();
1954 
1955  hist2 = FEDsAndTimingVsPhiHists_[itr->first];
1956  hist2->Write();
1957 
1958  hist2 = FEDsAndTimingVsModuleHists_[itr->first];
1959  hist2->Write();
1960 
1961  //2d hist
1962  map<int,TH2F*>::const_iterator itr2d;
1963  itr2d = FEDsAndDCCRuntypeVsBxHists_.find(itr->first);
1964  if(itr2d != FEDsAndDCCRuntypeVsBxHists_.end())
1965  {
1966  TH2F* hist2 = itr2d->second;
1967  hist2->GetYaxis()->SetBinLabel(1,"COSMIC");
1968  hist2->GetYaxis()->SetBinLabel(2,"BEAMH4");
1969  hist2->GetYaxis()->SetBinLabel(3,"BEAMH2");
1970  hist2->GetYaxis()->SetBinLabel(4,"MTCC");
1971  hist2->GetYaxis()->SetBinLabel(5,"LASER_STD");
1972  hist2->GetYaxis()->SetBinLabel(6,"LASER_POWER_SCAN");
1973  hist2->GetYaxis()->SetBinLabel(7,"LASER_DELAY_SCAN");
1974  hist2->GetYaxis()->SetBinLabel(8,"TESTPULSE_SCAN_MEM");
1975  hist2->GetYaxis()->SetBinLabel(9,"TESTPULSE_MGPA");
1976  hist2->GetYaxis()->SetBinLabel(10,"PEDESTAL_STD");
1977  hist2->GetYaxis()->SetBinLabel(11,"PEDESTAL_OFFSET_SCAN");
1978  hist2->GetYaxis()->SetBinLabel(12,"PEDESTAL_25NS_SCAN");
1979  hist2->GetYaxis()->SetBinLabel(13,"LED_STD");
1980  hist2->GetYaxis()->SetBinLabel(14,"PHYSICS_GLOBAL");
1981  hist2->GetYaxis()->SetBinLabel(15,"COSMICS_GLOBAL");
1982  hist2->GetYaxis()->SetBinLabel(16,"HALO_GLOBAL");
1983  hist2->GetYaxis()->SetBinLabel(17,"LASER_GAP");
1984  hist2->GetYaxis()->SetBinLabel(18,"TESTPULSE_GAP");
1985  hist2->GetYaxis()->SetBinLabel(19,"PEDESTAL_GAP");
1986  hist2->GetYaxis()->SetBinLabel(20,"LED_GAP");
1987  hist2->GetYaxis()->SetBinLabel(21,"PHYSICS_LOCAL");
1988  hist2->GetYaxis()->SetBinLabel(22,"COSMICS_LOCAL");
1989  hist2->GetYaxis()->SetBinLabel(23,"HALO_LOCAL");
1990  hist2->GetYaxis()->SetBinLabel(24,"CALIB_LOCAL");
1991  hist2->Write();
1992  }
1993 
1994  root_file_.cd();
1995  }
1996  allFedsHist_->Write();
1997  allFedsE2Hist_->Write();
1998  allFedsenergyHist_->Write();
1999  allFedsenergyHighHist_->Write();
2000  allFedsenergyOnlyHighHist_->Write();
2001  allFedsE2vsE1Hist_->Write();
2002  allFedsenergyvsE1Hist_->Write();
2003  allFedsTimingHist_->Write();
2004  allFedsTimingVsAmpHist_->Write();
2005  allFedsFrequencyHist_->Write();
2006  allFedsTimingVsFreqHist_->Write();
2007  allFedsiEtaProfileHist_->Write();
2008  allFedsiPhiProfileHist_->Write();
2009  allOccupancy_->Write();
2010  TrueOccupancy_->Write();
2011  allOccupancyCoarse_->Write();
2012  TrueOccupancyCoarse_->Write();
2013  allOccupancyHighEnergy_->Write();
2015  allOccupancySingleXtal_->Write();
2016  energySingleXtalHist_->Write();
2018  allFedsTimingPhiHist_->Write();
2019  allFedsTimingPhiEbpHist_->Write();
2020  allFedsTimingPhiEbmHist_->Write();
2021  allFedsTimingEbpHist_->Write();
2022  allFedsTimingEbmHist_->Write();
2023  allFedsTimingEbpTopHist_->Write();
2024  allFedsTimingEbmTopHist_->Write();
2025  allFedsTimingEbpBottomHist_->Write();
2026  allFedsTimingEbmBottomHist_->Write();
2027  allFedsTimingPhiEtaHist_->Write();
2028  allFedsTimingTTHist_->Write();
2029  allFedsTimingLMHist_->Write();
2031 
2032  numberofBCinSC_->Write();//SC
2033  numberofBCinSCphi_->Write();//SC
2034  TrueBCOccupancyCoarse_->Write();//BC
2035  TrueBCOccupancy_->Write(); //BC
2036 
2037  numxtalsVsEnergy_->Write();
2038  numxtalsVsHighEnergy_->Write();
2039 
2040  allOccupancyExclusiveECAL_->Write();
2042  allOccupancyECAL_->Write();
2043  allOccupancyCoarseECAL_->Write();
2045  allFedsTimingHistECAL_->Write();
2046  allFedsTimingTTHistECAL_->Write();
2047  allFedsTimingLMHistECAL_->Write();
2048 
2049  allOccupancyExclusiveHCAL_->Write();
2051  allOccupancyHCAL_->Write();
2052  allOccupancyCoarseHCAL_->Write();
2054  allFedsTimingHistHCAL_->Write();
2055  allFedsTimingTTHistHCAL_->Write();
2056  allFedsTimingLMHistHCAL_->Write();
2057 
2058  allOccupancyExclusiveDT_->Write();
2060  allOccupancyDT_->Write();
2061  allOccupancyCoarseDT_->Write();
2062  allFedsTimingPhiEtaHistDT_->Write();
2063  allFedsTimingHistDT_->Write();
2064  allFedsTimingTTHistDT_->Write();
2065  allFedsTimingLMHistDT_->Write();
2066 
2067  allOccupancyExclusiveRPC_->Write();
2069  allOccupancyRPC_->Write();
2070  allOccupancyCoarseRPC_->Write();
2071  allFedsTimingPhiEtaHistRPC_->Write();
2072  allFedsTimingHistRPC_->Write();
2073  allFedsTimingTTHistRPC_->Write();
2074  allFedsTimingLMHistRPC_->Write();
2075 
2076  allOccupancyExclusiveCSC_->Write();
2078  allOccupancyCSC_->Write();
2079  allOccupancyCoarseCSC_->Write();
2080  allFedsTimingPhiEtaHistCSC_->Write();
2081  allFedsTimingHistCSC_->Write();
2082  allFedsTimingTTHistCSC_->Write();
2083  allFedsTimingLMHistCSC_->Write();
2084 
2085  allFedsTimingHistEcalMuon_->Write();
2086 
2087  //EE
2088  TDirectory* EEMinusDir = gDirectory->mkdir("EEMinus");
2089  EEMinusDir->cd();
2090  EEM_FedsSeedEnergyHist_->Write();
2091  EEM_AllOccupancyCoarse_->Write();
2092  EEM_AllOccupancy_->Write();
2093  EEM_FedsenergyHist_->Write();
2094  EEM_FedsenergyHighHist_->Write();
2095  EEM_FedsenergyOnlyHighHist_->Write();
2096  EEM_FedsE2Hist_->Write();
2097  EEM_FedsE2vsE1Hist_->Write();
2098  EEM_FedsenergyvsE1Hist_->Write();
2099  EEM_FedsTimingHist_->Write();
2100  EEM_numberofCosmicsHist_->Write();
2101  EEM_FedsTimingVsAmpHist_->Write();
2102  EEM_FedsTimingTTHist_->Write();
2103  EEM_OccupancySingleXtal_->Write();
2104  EEM_energySingleXtalHist_->Write();
2105  EEM_OccupancyExclusiveECAL_->Write();
2107  EEM_OccupancyECAL_->Write();
2108  EEM_OccupancyCoarseECAL_->Write();
2109  EEM_FedsTimingHistECAL_->Write();
2110  EEM_FedsTimingTTHistECAL_->Write();
2111  EEM_OccupancyExclusiveDT_->Write();
2113  EEM_OccupancyDT_->Write();
2114  EEM_OccupancyCoarseDT_->Write();
2115  EEM_FedsTimingHistDT_->Write();
2116  EEM_FedsTimingTTHistDT_->Write();
2117  EEM_OccupancyExclusiveRPC_->Write();
2119  EEM_OccupancyRPC_->Write();
2120  EEM_OccupancyCoarseRPC_->Write();
2121  EEM_FedsTimingHistRPC_->Write();
2122  EEM_FedsTimingTTHistRPC_->Write();
2123  EEM_OccupancyExclusiveCSC_->Write();
2125  EEM_OccupancyCSC_->Write();
2126  EEM_OccupancyCoarseCSC_->Write();
2127  EEM_FedsTimingHistCSC_->Write();
2128  EEM_FedsTimingTTHistCSC_->Write();
2129  EEM_OccupancyExclusiveHCAL_->Write();
2131  EEM_OccupancyHCAL_->Write();
2132  EEM_OccupancyCoarseHCAL_->Write();
2133  EEM_FedsTimingHistHCAL_->Write();
2134  EEM_FedsTimingTTHistHCAL_->Write();
2135  EEM_numberofBCinSC_->Write();
2136  EEM_triggerHist_->Write();
2137  EEM_triggerExclusiveHist_->Write();
2138  EEM_NumXtalsInClusterHist_->Write();
2139  EEM_numxtalsVsEnergy_->Write();
2140  EEM_numxtalsVsHighEnergy_->Write();
2141  EEM_OccupancyHighEnergy_->Write();
2144  root_file_.cd();
2145 
2146  TDirectory* EEPlusDir = gDirectory->mkdir("EEPlus");
2147  EEPlusDir->cd();
2148  EEP_FedsSeedEnergyHist_->Write();
2149  EEP_AllOccupancyCoarse_->Write();
2150  EEP_AllOccupancy_->Write();
2151  EEP_FedsenergyHist_->Write();
2152  EEP_FedsenergyHighHist_->Write();
2153  EEP_FedsenergyOnlyHighHist_->Write();
2154  EEP_FedsE2Hist_->Write();
2155  EEP_FedsE2vsE1Hist_->Write();
2156  EEP_FedsenergyvsE1Hist_->Write();
2157  EEP_FedsTimingHist_->Write();
2158  EEP_numberofCosmicsHist_->Write();
2159  EEP_FedsTimingVsAmpHist_->Write();
2160  EEP_FedsTimingTTHist_->Write();
2161  EEP_OccupancySingleXtal_->Write();
2162  EEP_energySingleXtalHist_->Write();
2163  EEP_OccupancyExclusiveECAL_->Write();
2165  EEP_OccupancyECAL_->Write();
2166  EEP_OccupancyCoarseECAL_->Write();
2167  EEP_FedsTimingHistECAL_->Write();
2168  EEP_FedsTimingTTHistECAL_->Write();
2169  EEP_OccupancyExclusiveDT_->Write();
2171  EEP_OccupancyDT_->Write();
2172  EEP_OccupancyCoarseDT_->Write();
2173  EEP_FedsTimingHistDT_->Write();
2174  EEP_FedsTimingTTHistDT_->Write();
2175  EEP_OccupancyExclusiveRPC_->Write();
2177  EEP_OccupancyRPC_->Write();
2178  EEP_OccupancyCoarseRPC_->Write();
2179  EEP_FedsTimingHistRPC_->Write();
2180  EEP_FedsTimingTTHistRPC_->Write();
2181  EEP_OccupancyExclusiveCSC_->Write();
2183  EEP_OccupancyCSC_->Write();
2184  EEP_OccupancyCoarseCSC_->Write();
2185  EEP_FedsTimingHistCSC_->Write();
2186  EEP_FedsTimingTTHistCSC_->Write();
2187  EEP_OccupancyExclusiveHCAL_->Write();
2189  EEP_OccupancyHCAL_->Write();
2190  EEP_OccupancyCoarseHCAL_->Write();
2191  EEP_FedsTimingHistHCAL_->Write();
2192  EEP_FedsTimingTTHistHCAL_->Write();
2193  EEP_numberofBCinSC_->Write();
2194  EEP_triggerHist_->Write();
2195  EEP_triggerExclusiveHist_->Write();
2196  EEP_NumXtalsInClusterHist_->Write();
2197  EEP_numxtalsVsEnergy_->Write();
2198  EEP_numxtalsVsHighEnergy_->Write();
2199  EEP_OccupancyHighEnergy_->Write();
2202  root_file_.cd();
2203 
2204  triggerHist_->Write();
2205  triggerExclusiveHist_->Write();
2206 
2207  NumXtalsInClusterHist_->Write();
2208 
2209  numberofCosmicsHist_->Write();
2210  numberofCosmicsHistEB_->Write();
2211 
2212  numberofCosmicsWTrackHist_->Write();
2214  numberofGoodEvtFreq_->Write();
2215  numberofCrossedEcalIdsHist_->Write();
2216 
2217  runNumberHist_->SetBinContent(1,runNum_);
2218  runNumberHist_->Write();
2219 
2220  deltaRHist_->Write();
2221  deltaEtaHist_->Write();
2222  deltaPhiHist_->Write();
2223  ratioAssocClustersHist_->Write();
2224  ratioAssocTracksHist_->Write();
2225  deltaEtaDeltaPhiHist_->Write();
2226  seedTrackPhiHist_->Write();
2227  seedTrackEtaHist_->Write();
2228  dccEventVsBxHist_->Write();
2229  dccOrbitErrorByFEDHist_->Write();
2230  dccBXErrorByFEDHist_->Write();
2231  dccRuntypeErrorByFEDHist_->Write();
2232  dccErrorVsBxHist_->Write();
2233  dccRuntypeHist_->Write();
2234 
2235  trackAssoc_muonsEcal_->Write();
2236 
2237  hcalEnergy_HBHE_->Write();
2238  hcalEnergy_HF_->Write();
2239  hcalEnergy_HO_->Write();
2240  hcalHEHBecalEB_->Write();
2241 
2242  TDirectory* highEnergyDir = gDirectory->mkdir("HighEnergy");
2243  highEnergyDir->cd();
2244  HighEnergy_NumXtal->Write();
2245  HighEnergy_NumXtalFedId->Write();
2246  HighEnergy_NumXtaliphi->Write();
2247  HighEnergy_energy3D->Write();
2248  HighEnergy_energyNumXtal->Write();
2249  HighEnergy_bestSeed->Write();
2251  HighEnergy_numClusHighEn->Write();
2252  HighEnergy_ratioClusters->Write();
2254  HighEnergy_TracksAngle->Write();
2256  HighEnergy_2GeV_occuCoarse->Write();
2257  HighEnergy_2GeV_occu3D->Write();
2259  HighEnergy_100GeV_occu3D->Write();
2260  HighEnergy_0tracks_occu3D->Write();
2261  HighEnergy_1tracks_occu3D->Write();
2262  HighEnergy_2tracks_occu3D->Write();
2266 
2267  root_file_.cd();
2268 
2269  TDirectory* TimeStampdir = gDirectory->mkdir("EventTiming");
2270  TimeStampdir->cd();
2271  allFedsFreqTimeHist_->Write();
2272  allFedsFreqTimeVsPhiHist_->Write();
2273  allFedsFreqTimeVsPhiTTHist_->Write();
2274  allFedsFreqTimeVsEtaHist_->Write();
2275  allFedsFreqTimeVsEtaTTHist_->Write();
2276 
2277  root_file_.cd();
2278 
2279  root_file_.Close();
2280 
2281  LogWarning("EcalCosmicsHists") << "---> Number of cosmic events: " << cosmicCounter_ << " in " << naiveEvtNum_ << " events.";
2282  LogWarning("EcalCosmicsHists") << "---> Number of EB cosmic events: " << cosmicCounterEB_ << " in " << naiveEvtNum_ << " events.";
2283  LogWarning("EcalCosmicsHists") << "---> Number of EE- cosmic events: " << cosmicCounterEEM_ << " in " << naiveEvtNum_ << " events.";
2284  LogWarning("EcalCosmicsHists") << "---> Number of EE+ cosmic events: " << cosmicCounterEEP_ << " in " << naiveEvtNum_ << " events.";
2285 
2286  // LogWarning("EcalCosmicsHists") << "---> Number of top+bottom cosmic events: " << cosmicCounterTopBottom_ << " in " << cosmicCounter_ << " cosmics in " << naiveEvtNum_ << " events.";
2287 
2288 }
2289 
2290 
2292 {
2293  using namespace std;
2294  ostringstream myStream;
2295  myStream << num << flush;
2296  return(myStream.str()); //returns the string form of the stringstream object
2297 }
2298 
TH3F * EEM_FedsTimingTTHistECAL_
#define LogDebug(id)
RunNumber_t run() const
Definition: EventID.h:39
TH2F * allFedsTimingLMHistECAL_
TH2F * allOccupancyExclusiveECAL_
TH3F * allFedsTimingTTHistRPC_
TH3F * HighEnergy_0tracks_occu3D
T getParameter(std::string const &) const
const cms_uint16_t bData(int iB) const
get/set B_DATA_CH_IB
Definition: L1GtPsbWord.cc:323
EventNumber_t event() const
Definition: EventID.h:41
TH2F * allOccupancyCoarseExclusiveCSC_
TH2F * EEM_OccupancySingleXtal_
std::string intToString(int num)
TH3F * allFedsTimingTTHistCSC_
TH2F * EEP_FedsenergyvsE1Hist_
TH2F * allOccupancyExclusiveHCAL_
TH2F * HighEnergy_bestSeedOccupancy
static const TGPicture * info(bool iBackgroundIsBlack)
TH2F * allOccupancyCoarseExclusiveECAL_
TH3F * allFedsTimingPhiEtaHistCSC_
std::map< int, TH2F * > FEDsAndDCCRuntypeVsBxHists_
int ix() const
Definition: EEDetId.h:76
TH1F * EEM_FedsenergyHighHist_
TH2F * EEM_numxtalsVsHighEnergy_
TH1F * allFedsiPhiProfileHist_
TH1F * EEM_numberofCosmicsHist_
TH3F * EEM_FedsTimingTTHistCSC_
TH1F * EEP_FedsenergyHighHist_
TH2F * allOccupancyExclusiveRPC_
TH1F * allFedsiEtaProfileHist_
EcalFedMap * fedMap_
std::map< int, TH2F * > FEDsAndTimingVsAmpHists_
TH3F * allFedsTimingPhiEtaHistECAL_
edm::InputTag ecalRawDataColl_
std::map< int, TH1F * > FEDsAndFrequencyHists_
TH2F * allOccupancyCoarseExclusiveHCAL_
EcalCosmicsHists(const edm::ParameterSet &)
TH2F * EEP_OccupancyExclusiveHCAL_
TH1F * EEP_energySingleXtalHist_
TH1F * allFedsTimingEbpTopHist_
TH2F * EEM_OccupancyExclusiveDT_
std::map< int, TH2F * > FEDsAndE2vsE1Hists_
void endJob() override
TH2F * allFedsTimingLMHistHCAL_
Ecal readout channel identification [32:20] Unused (so far) [19:13] DCC id [12:6] tower [5:3] strip [...
TH2F * allFedsTimingVsFreqHist_
TH1F * EEM_energySingleXtalHist_
std::vector< DetId > crossedEcalIds
TH2F * EEP_numxtalsVsHighEnergy_
TH2F * EEM_FedsTimingVsAmpHist_
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
TH1F * EEP_FedsSeedEnergyHist_
void useDefaultPropagator()
use the default propagator
TH1F * allFedsTimingEbpBottomHist_
std::vector< EcalDCCHeaderBlock >::const_iterator const_iterator
TH3F * allFedsTimingPhiEtaHistDT_
TH2F * EEP_OccupancyCoarseECAL_
void loadParameters(const edm::ParameterSet &, edm::ConsumesCollector &)
TH1F * numberofCosmicsWTrackHist_
TH3F * EEP_FedsTimingTTHistRPC_
TH2F * allFedsFreqTimeVsPhiHist_
TH2F * HighEnergy_2GeV_occuCoarse
float time() const
Definition: EcalRecHit.h:70
TH1F * dccRuntypeErrorByFEDHist_
TH3F * allFedsTimingPhiEtaHistRPC_
TH3F * HighEnergy_1tracks_occu3DXtal
void analyze(edm::Event const &, edm::EventSetup const &) override
TH3F * allFedsTimingPhiEtaHistHCAL_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:20
TH3F * EEM_FedsTimingTTHistDT_
~EcalCosmicsHists() override
TH2F * EEM_OccupancyExclusiveECAL_
std::map< int, TH1F * > FEDsAndHists_
TH2F * EEM_OccupancyCoarseHCAL_
std::map< int, TH1F * > FEDsAndNumXtalsInClusterHists_
int iphiSM() const
get the crystal iphi (1-20)
Definition: EBDetId.h:75
TH3F * EEM_FedsTimingTTHistRPC_
TH3F * HighEnergy_2tracks_occu3D
TH2F * HighEnergy_100GeV_occuCoarse
std::map< int, TH2F * > FEDsAndTimingVsPhiHists_
TH2F * allOccupancyCoarseExclusiveDT_
TH2F * EEP_OccupancyExclusiveCSC_
TH2F * allOccupancyHighEnergy_
edm::InputTag endcapClusterCollection_
TH2F * EEP_OccupancyExclusiveDT_
std::string getSliceFromFed(int)
Definition: EcalFedMap.cc:93
int iphi() const
get the crystal iphi
Definition: EBDetId.h:53
TH2F * EEM_OccupancyCoarseExclusiveCSC_
TH2F * HighEnergy_NumXtalFedId
TH3F * allFedsTimingTTHistECAL_
TH1F * allFedsTimingEbmTopHist_
EcalElectronicsId getElectronicsId(const DetId &id) const
Get the electronics id for this det id.
std::vector< bool > determineTriggers(const edm::Event &, const edm::EventSetup &eventSetup)
TH2F * allFedsFreqTimeVsEtaTTHist_
int iEvent
Definition: GenABIO.cc:230
TH2F * EEM_OccupancyExclusiveRPC_
TH2F * EEM_OccupancyHighEnergy_
TH1F * EEP_FedsTimingHistHCAL_
TH2F * allFedsTimingPhiEbmHist_
std::map< int, TH2F * > FEDsAndenergyvsE1Hists_
const cms_uint16_t aData(int iA) const
get/set A_DATA_CH_IA
Definition: L1GtPsbWord.cc:228
TH2F * EEM_OccupancyCoarseECAL_
TH2F * EEM_OccupancyCoarseExclusiveRPC_
std::vector< SuperCluster > SuperClusterCollection
collection of SuperCluser objectr
TH1F * EEP_numberofCosmicsHist_
TH2F * EEP_OccupancyHighEnergyCoarse_
std::vector< bool > DecisionWord
typedefs
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
TH1F * EEP_FedsNumXtalsInClusterHist_
TH3F * EEP_FedsTimingTTHistHCAL_
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
T sqrt(T t)
Definition: SSEVec.h:18
TH3F * HighEnergy_1tracks_occu3D
TH1F * allFedsenergyOnlyHighHist_
TH1F * EEP_triggerExclusiveHist_
TH2F * EEP_OccupancyCoarseExclusiveECAL_
const bool gtAlgorithmResult(const std::string &algName, const std::vector< bool > &decWord) const
TH1F * EEM_FedsSeedEnergyHist_
std::map< int, TH2F * > FEDsAndOccupancyHists_
TH3F * HighEnergy_100GeV_occu3D
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
TH3F * EEP_FedsTimingTTHistECAL_
TH2F * HighEnergy_energyNumXtal
TH3F * allFedsTimingTTHistHCAL_
TH1F * HighEnergy_ratioClusters
TH2F * EEM_OccupancyExclusiveCSC_
int zside() const
Definition: EEDetId.h:70
TH2F * EEP_OccupancyCoarseExclusiveHCAL_
std::string fileName_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
TH2F * EEM_OccupancyCoarseRPC_
TH2F * EEP_AllOccupancyCoarse_
TH2F * EEP_OccupancyCoarseCSC_
std::map< int, TH1F * > FEDsAndiEtaProfileHists_
const EcalElectronicsMapping * ecalElectronicsMap_
TrackDetectorAssociator trackAssociator_
TH1F * numberofCosmicsTopBottomHist_
TH2F * EEP_OccupancySingleXtal_
float energy() const
Definition: EcalRecHit.h:68
TH2F * EEM_OccupancyCoarseExclusiveECAL_
int iy() const
Definition: EEDetId.h:82
TH1F * allFedsTimingHistEcalMuon_
int ieta() const
get the crystal ieta
Definition: EBDetId.h:51
TH2F * EEP_OccupancyExclusiveECAL_
std::map< int, TH2F * > FEDsAndTimingVsFreqHists_
const L1GtPsbWord gtPsbWord(cms_uint16_t boardIdValue, int bxInEventValue) const
get / set PSB word (record) in the GT readout record
TrackAssociatorParameters trackParameters_
TH1F * EEM_triggerExclusiveHist_
TH1F * EEM_FedsTimingHistHCAL_
bool isValid() const
Definition: HandleBase.h:74
TH1F * HighEnergy_TracksAngleTopBottom
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:475
TH1F * EEP_FedsTimingHistECAL_
TH2F * allFedsTimingPhiEbpHist_
const DecisionWord & decisionWord(int bxInEventValue) const
TH2F * allOccupancyExclusiveDT_
TH2F * EEM_OccupancyCoarseExclusiveHCAL_
TH2F * allOccupancySingleXtal_
TH2F * EEP_OccupancyCoarseExclusiveCSC_
std::map< int, TH1F * > FEDsAndiPhiProfileHists_
TH2F * allFedsTimingVsAmpHist_
TH3F * allFedsTimingPhiEtaHist_
const_iterator end() const
TH1F * ratioAssocClustersHist_
edm::InputTag l1GMTReadoutRecTag_
TH2F * EEM_FedsenergyvsE1Hist_
TH2F * EEM_OccupancyCoarseCSC_
TH2F * allOccupancyExclusiveCSC_
TH1F * HighEnergy_numClusHighEn
TH2F * allFedsFreqTimeVsEtaHist_
T const * product() const
Definition: Handle.h:81
TH2F * EEP_OccupancyExclusiveRPC_
static bool validDetId(int crystal_ix, int crystal_iy, int iz)
Definition: EEDetId.h:248
const T & get() const
Definition: EventSetup.h:59
void beginRun(edm::Run const &, edm::EventSetup const &) override
TH1F * EEM_FedsTimingHistECAL_
TH2F * allFedsTimingLMHistRPC_
int ietaSM() const
get the crystal ieta in the SM convention (1-85)
Definition: EBDetId.h:73
std::map< int, TH2F * > FEDsAndTimingVsModuleHists_
edm::EventID id() const
Definition: EventBase.h:60
iterator find(key_type k)
TH1F * dccOrbitErrorByFEDHist_
TH1F * numberofCrossedEcalIdsHist_
HLT enums.
TH2F * allFedsTimingLMHistCSC_
TH3F * EEM_FedsTimingTTHistHCAL_
TH2F * allOccupancyCoarseECAL_
TH2F * EEP_OccupancyCoarseHCAL_
std::vector< L1MuGMTReadoutRecord > const & getRecords() const
TH1F * EEM_FedsenergyOnlyHighHist_
TH1F * EEP_NumXtalsInClusterHist_
TH1F * allFedsNumXtalsInClusterHist_
TH2F * EEM_OccupancyExclusiveHCAL_
TH2F * allOccupancyCoarseExclusiveRPC_
TH2F * EEP_OccupancyCoarseExclusiveRPC_
TH2F * EEM_OccupancyCoarseExclusiveDT_
TrackDetMatchInfo associate(const edm::Event &, const edm::EventSetup &, const FreeTrajectoryState &, const AssociatorParameters &)
TH2F * EEP_OccupancyCoarseRPC_
TH3F * HighEnergy_2tracks_occu3DXtal
TH1F * EEM_NumXtalsInClusterHist_
TH2F * allOccupancyHighEnergyCoarse_
TH2F * EEP_OccupancyHighEnergy_
TH3F * allFedsOccupancyHighEnergyHist_
TH2F * EEM_AllOccupancyCoarse_
dbl *** dir
Definition: mlp_gen.cc:35
TH3F * EEP_FedsTimingTTHistCSC_
TH3F * EEP_FedsTimingTTHistDT_
TH2F * EEP_FedsTimingVsAmpHist_
TH1F * EEM_FedsNumXtalsInClusterHist_
TH2F * allFedsFreqTimeVsPhiTTHist_
std::map< int, TH1F * > FEDsAndenergyHists_
edm::InputTag l1GTReadoutRecTag_
edm::InputTag barrelClusterCollection_
int getLMNumber(const DetId &id) const
T const * product() const
Definition: ESHandle.h:86
std::map< int, TH1F * > FEDsAndTimingHists_
TH2F * EEM_OccupancyHighEnergyCoarse_
TimeValue_t value() const
Definition: Timestamp.h:56
edm::Timestamp time() const
Definition: EventBase.h:61
std::map< int, TH1F * > FEDsAndE2Hists_
TH1F * allFedsTimingEbmBottomHist_
TH1F * EEP_FedsenergyOnlyHighHist_
const_iterator begin() const
Definition: Run.h:43
edm::InputTag ecalRecHitCollectionEB_
TH1F * HighEnergy_numRecoTrackBarrel
TH2F * EEP_OccupancyCoarseExclusiveDT_
TH3F * HighEnergy_0tracks_occu3DXtal
TH2F * allOccupancyCoarseHCAL_
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
Definition: angle.h:11
edm::InputTag ecalRecHitCollectionEE_