CMS 3D CMS Logo

CSCComparatorDigiValidation Class Reference

#include <Validation/MuonCSCDigis/src/CSCComparatorDigiValidation.h>

Inheritance diagram for CSCComparatorDigiValidation:

CSCBaseValidation

List of all members.

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &)
 CSCComparatorDigiValidation (DQMStore *dbe, const edm::InputTag &inputTag, const edm::InputTag &stripDigiInputTag)
 ~CSCComparatorDigiValidation ()

Private Attributes

MonitorElementthe3StripPlots [10]
MonitorElementtheNDigisPerEventPlot
MonitorElementtheNDigisPerLayerPlots [10]
edm::InputTag theStripDigiInputTag
MonitorElementtheStripDigiPlots [10]
MonitorElementtheTimeBinPlots [10]


Detailed Description

Definition at line 8 of file CSCComparatorDigiValidation.h.


Constructor & Destructor Documentation

CSCComparatorDigiValidation::CSCComparatorDigiValidation ( DQMStore dbe,
const edm::InputTag inputTag,
const edm::InputTag stripDigiInputTag 
)

Definition at line 9 of file CSCComparatorDigiValidation.cc.

References DQMStore::book1D(), CSCBaseValidation::dbe_, i, the3StripPlots, theNDigisPerLayerPlots, theStripDigiPlots, and theTimeBinPlots.

00011 : CSCBaseValidation(dbe, inputTag),
00012   theStripDigiInputTag(stripDigiInputTag),
00013   theTimeBinPlots(),
00014   theNDigisPerLayerPlots(),
00015   theStripDigiPlots(),
00016   the3StripPlots(),
00017   theNDigisPerEventPlot( dbe_->book1D("CSCComparatorDigisPerEvent", "CSC Comparator Digis per event", 100, 0, 100) )
00018 {
00019   for(int i = 0; i < 10; ++i)
00020   {
00021     char title1[200], title2[200], title3[200], title4[200];
00022     sprintf(title1, "CSCComparatorDigiTimeType%d", i+1);
00023     sprintf(title2, "CSCComparatorDigisPerLayerType%d", i+1);
00024     sprintf(title3, "CSCComparatorStripAmplitudeType%d", i+1);
00025     sprintf(title4, "CSCComparator3StripAmplitudeType%d", i+1);
00026     theTimeBinPlots[i] = dbe_->book1D(title1, title1, 9, 0, 8);
00027     theNDigisPerLayerPlots[i] = dbe_->book1D(title2, title2, 100, 0, 20);
00028     theStripDigiPlots[i] = dbe_->book1D(title3, title3, 100, 0, 1000);
00029     the3StripPlots[i] = dbe_->book1D(title4, title4, 100, 0, 1000);
00030 
00031   }
00032 }

CSCComparatorDigiValidation::~CSCComparatorDigiValidation (  ) 

Definition at line 36 of file CSCComparatorDigiValidation.cc.

00037 {
00038   /*
00039   for(int i = 0; i < 10; ++i)
00040   {
00041     std::cout << "Mean of " << theTimeBinPlots[i]->getName()
00042       << " is " << theTimeBinPlots[i]->getMean()
00043       << " +/- " << theTimeBinPlots[i]->getRMS() << std::endl;
00044     std::cout << "Mean charge of " << the3StripPlots[i]->getName()
00045       << " is " << the3StripPlots[i]->getMean() << std::endl;
00046   }
00047   */
00048 }


Member Function Documentation

void CSCComparatorDigiValidation::analyze ( const edm::Event e,
const edm::EventSetup  
) [virtual]

Implements CSCBaseValidation.

Definition at line 51 of file CSCComparatorDigiValidation.cc.

References ecalMGPA::adc(), CSCLayer::chamber(), CSCChamberSpecs::chamberType(), detId, edm::InputTag::encode(), MonitorElement::Fill(), CSCBaseValidation::findLayer(), edm::Event::getByLabel(), edm::Handle< T >::isValid(), j, prof2calltree::last, DetId::rawId(), CSCChamber::specs(), strip(), the3StripPlots, CSCBaseValidation::theInputTag, theNDigisPerEventPlot, theNDigisPerLayerPlots, theStripDigiInputTag, theStripDigiPlots, and theTimeBinPlots.

Referenced by CSCDigiValidation::analyze().

00052 {
00053   edm::Handle<CSCComparatorDigiCollection> comparators;
00054   edm::Handle<CSCStripDigiCollection> stripDigis;
00055 
00056   e.getByLabel(theInputTag, comparators);
00057   if (!comparators.isValid()) {
00058     edm::LogError("CSCDigiDump") << "Cannot get comparators by label " << theInputTag.encode();
00059   }
00060   e.getByLabel(theStripDigiInputTag, stripDigis);
00061   if (!stripDigis.isValid()) {
00062     edm::LogError("CSCDigiDump") << "Cannot get comparators by label " << theInputTag.encode();
00063   }
00064   
00065   unsigned nDigisPerEvent = 0;
00066 
00067   for (CSCComparatorDigiCollection::DigiRangeIterator j=comparators->begin(); j!=comparators->end(); j++) {
00068     std::vector<CSCComparatorDigi>::const_iterator digiItr = (*j).second.first;
00069     std::vector<CSCComparatorDigi>::const_iterator last = (*j).second.second;
00070 
00071     CSCDetId detId((*j).first);
00072     const CSCLayer * layer = findLayer(detId.rawId());
00073     int chamberType = layer->chamber()->specs()->chamberType();
00074 
00075     CSCStripDigiCollection::Range stripRange = stripDigis->get(detId);
00076 
00077     theNDigisPerLayerPlots[chamberType-1]->Fill(last-digiItr);
00078 
00079     for( ; digiItr != last; ++digiItr) {
00080       ++nDigisPerEvent;
00081       theTimeBinPlots[chamberType-1]->Fill(digiItr->getTimeBin());
00082 
00083       int strip = digiItr->getStrip();
00084       for(std::vector<CSCStripDigi>::const_iterator stripItr = stripRange.first;
00085           stripItr != stripRange.second; ++stripItr)
00086       {
00087         if(stripItr->getStrip() == strip)
00088         {
00089           std::vector<int> adc = stripItr->getADCCounts();
00090           float pedc = 0.5*(adc[0]+adc[1]);
00091           float amp = adc[4] - pedc;
00092           theStripDigiPlots[chamberType-1]->Fill(amp);
00093           // check neighbors
00094           if(stripItr != stripRange.first && stripItr != stripRange.second-1)
00095           {
00096             std::vector<int> adcl = (stripItr-1)->getADCCounts();
00097             std::vector<int> adcr = (stripItr+1)->getADCCounts();
00098             float pedl = 0.5*(adcl[0]+adcl[1]);
00099             float pedr = 0.5*(adcr[0]+adcr[1]);
00100             float three = adcl[4]-pedl
00101                         + adcr[4]-pedr
00102                         + amp;
00103             the3StripPlots[chamberType-1]->Fill(three);
00104           }
00105         }
00106       }
00107     }
00108 
00109   }
00110 
00111   theNDigisPerEventPlot->Fill(nDigisPerEvent);
00112 }


Member Data Documentation

MonitorElement* CSCComparatorDigiValidation::the3StripPlots[10] [private]

Definition at line 22 of file CSCComparatorDigiValidation.h.

Referenced by analyze(), and CSCComparatorDigiValidation().

MonitorElement* CSCComparatorDigiValidation::theNDigisPerEventPlot [private]

Definition at line 24 of file CSCComparatorDigiValidation.h.

Referenced by analyze().

MonitorElement* CSCComparatorDigiValidation::theNDigisPerLayerPlots[10] [private]

Definition at line 20 of file CSCComparatorDigiValidation.h.

Referenced by analyze(), and CSCComparatorDigiValidation().

edm::InputTag CSCComparatorDigiValidation::theStripDigiInputTag [private]

Definition at line 17 of file CSCComparatorDigiValidation.h.

Referenced by analyze().

MonitorElement* CSCComparatorDigiValidation::theStripDigiPlots[10] [private]

Definition at line 21 of file CSCComparatorDigiValidation.h.

Referenced by analyze(), and CSCComparatorDigiValidation().

MonitorElement* CSCComparatorDigiValidation::theTimeBinPlots[10] [private]

Definition at line 19 of file CSCComparatorDigiValidation.h.

Referenced by analyze(), and CSCComparatorDigiValidation().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:17:09 2009 for CMSSW by  doxygen 1.5.4