CMS 3D CMS Logo

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