Go to the documentation of this file.00001 #include "Validation/MuonCSCDigis/src/CSCCLCTDigiValidation.h"
00002 #include "DataFormats/Common/interface/Handle.h"
00003 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00004 #include "DataFormats/CSCDigi/interface/CSCCLCTDigiCollection.h"
00005
00006 #include "Geometry/CSCGeometry/interface/CSCLayerGeometry.h"
00007 #include "Geometry/CSCGeometry/interface/CSCGeometry.h"
00008 #include "DQMServices/Core/interface/DQMStore.h"
00009
00010
00011
00012 CSCCLCTDigiValidation::CSCCLCTDigiValidation(DQMStore* dbe, const edm::InputTag & inputTag)
00013 : CSCBaseValidation(dbe, inputTag),
00014 theTimeBinPlots(),
00015 theNDigisPerLayerPlots(),
00016 theNDigisPerEventPlot( dbe_->book1D("CSCCLCTDigisPerEvent", "CSC CLCT Digis per event", 100, 0, 100) )
00017 {
00018 for(int i = 0; i < 10; ++i)
00019 {
00020 char title1[200], title2[200];
00021 sprintf(title1, "CSCCLCTDigiTimeType%d", i+1);
00022 sprintf(title2, "CSCCLCTDigisPerLayerType%d", i+1);
00023 theTimeBinPlots[i] = dbe_->book1D(title1, title1, 20, 0, 20);
00024 theNDigisPerLayerPlots[i] = dbe_->book1D(title2, title2, 100, 0, 20);
00025 }
00026 }
00027
00028
00029
00030 CSCCLCTDigiValidation::~CSCCLCTDigiValidation()
00031 {
00032
00033
00034
00035
00036
00037
00038
00039
00040 }
00041
00042
00043 void CSCCLCTDigiValidation::analyze(const edm::Event&e, const edm::EventSetup&)
00044 {
00045 edm::Handle<CSCCLCTDigiCollection> clcts;
00046
00047 e.getByLabel(theInputTag, clcts);
00048 if (!clcts.isValid()) {
00049 edm::LogError("CSCDigiDump") << "Cannot get clcts by label " << theInputTag.encode();
00050 }
00051
00052 unsigned nDigisPerEvent = 0;
00053
00054 for (CSCCLCTDigiCollection::DigiRangeIterator j=clcts->begin(); j!=clcts->end(); j++) {
00055 std::vector<CSCCLCTDigi>::const_iterator beginDigi = (*j).second.first;
00056 std::vector<CSCCLCTDigi>::const_iterator endDigi = (*j).second.second;
00057 CSCDetId detId((*j).first.rawId());
00058 int chamberType = detId.iChamberType();
00059
00060 int nDigis = endDigi-beginDigi;
00061 nDigisPerEvent += nDigis;
00062 theNDigisPerLayerPlots[chamberType-1]->Fill(nDigis);
00063
00064 for( std::vector<CSCCLCTDigi>::const_iterator digiItr = beginDigi;
00065 digiItr != endDigi; ++digiItr)
00066 {
00067 theTimeBinPlots[chamberType-1]->Fill(digiItr->getBX());
00068 }
00069
00070 }
00071 }