CMS 3D CMS Logo

Public Member Functions | Protected Member Functions | Private Attributes

EcalEndcapRecHitsValidation Class Reference

#include <EcalEndcapRecHitsValidation.h>

Inheritance diagram for EcalEndcapRecHitsValidation:
edm::EDAnalyzer

List of all members.

Public Member Functions

 EcalEndcapRecHitsValidation (const edm::ParameterSet &ps)
 Constructor.
 ~EcalEndcapRecHitsValidation ()
 Destructor.

Protected Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c)
 Analyze.
void beginJob ()
void endJob (void)

Private Attributes

DQMStoredbe_
edm::InputTag EEdigiCollection_
edm::InputTag EEuncalibrechitCollection_
MonitorElementmeEEUncalibRecHitMaxSampleRatio_
MonitorElementmeEEUncalibRecHitMaxSampleRatioGt60adc_
MonitorElementmeEEUncalibRecHitsAmpFullMap_
MonitorElementmeEEUncalibRecHitsAmplitude_
MonitorElementmeEEUncalibRecHitsAmplitudeGt60adc_
MonitorElementmeEEUncalibRecHitsChi2_
MonitorElementmeEEUncalibRecHitsChi2Gt60adc_
MonitorElementmeEEUncalibRecHitsJitter_
MonitorElementmeEEUncalibRecHitsJitterGt60adc_
MonitorElementmeEEUncalibRecHitsOccupancyMinus_
MonitorElementmeEEUncalibRecHitsOccupancyMinusGt60adc_
MonitorElementmeEEUncalibRecHitsOccupancyPlus_
MonitorElementmeEEUncalibRecHitsOccupancyPlusGt60adc_
MonitorElementmeEEUncalibRecHitsPedestal_
MonitorElementmeEEUncalibRecHitsPedestalGt60adc_
MonitorElementmeEEUncalibRecHitsPedFullMap_
bool verbose_

Detailed Description

Definition at line 38 of file EcalEndcapRecHitsValidation.h.


Constructor & Destructor Documentation

EcalEndcapRecHitsValidation::EcalEndcapRecHitsValidation ( const edm::ParameterSet ps)

Constructor.

Definition at line 17 of file EcalEndcapRecHitsValidation.cc.

References dbe_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), trackerHits::histo, and cmsCodeRules::cppFunctionSkipper::operator.

                                                                              {

  // ---------------------- 
  EEdigiCollection_          = ps.getParameter<edm::InputTag>("EEdigiCollection");
  EEuncalibrechitCollection_ = ps.getParameter<edm::InputTag>("EEuncalibrechitCollection");
    
  // ---------------------- 
  // verbosity switch 
  verbose_ = ps.getUntrackedParameter<bool>("verbose", false);
  
  // ----------------------                 
  // get hold of back-end interface 
  dbe_ = 0;
  dbe_ = Service<DQMStore>().operator->();                   
  if ( dbe_ ) {
    if ( verbose_ ) {
      dbe_->setVerbose(1);
    } else {
      dbe_->setVerbose(0);
    }
  }                                                                  
  if ( dbe_ ) {
    if ( verbose_ ) dbe_->showDirStructure();
  }


  // ----------------------   
  meEEUncalibRecHitsOccupancyPlus_         = 0;
  meEEUncalibRecHitsOccupancyMinus_        = 0;
  meEEUncalibRecHitsAmplitude_             = 0;
  meEEUncalibRecHitsPedestal_              = 0;
  meEEUncalibRecHitsJitter_                = 0;
  meEEUncalibRecHitsChi2_                  = 0;
  meEEUncalibRecHitMaxSampleRatio_         = 0;
  meEEUncalibRecHitsOccupancyPlusGt60adc_  = 0;
  meEEUncalibRecHitsOccupancyMinusGt60adc_ = 0;
  meEEUncalibRecHitsAmplitudeGt60adc_      = 0;
  meEEUncalibRecHitsPedestalGt60adc_       = 0;
  meEEUncalibRecHitsJitterGt60adc_         = 0;
  meEEUncalibRecHitsChi2Gt60adc_           = 0;
  meEEUncalibRecHitMaxSampleRatioGt60adc_  = 0;
  meEEUncalibRecHitsAmpFullMap_            = 0;
  meEEUncalibRecHitsPedFullMap_            = 0;

  // ---------------------- 
  Char_t histo[200];
   
  if ( dbe_ ) 
    {
      dbe_->setCurrentFolder("EcalRecHitsV/EcalEndcapRecHitsTask");
      
      sprintf (histo, "EE+ Occupancy" );  
      meEEUncalibRecHitsOccupancyPlus_ = dbe_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);

      sprintf (histo, "EE- Occupancy" );  
      meEEUncalibRecHitsOccupancyMinus_ = dbe_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
      
      sprintf (histo, "EE Amplitude" );
      meEEUncalibRecHitsAmplitude_ = dbe_->book1D(histo, histo, 201, -20., 4000.);
      
      sprintf (histo, "EE Pedestal" );
      meEEUncalibRecHitsPedestal_ = dbe_->book1D(histo, histo, 50, 190., 210.);
      
      sprintf (histo, "EE Jitter" );
      meEEUncalibRecHitsJitter_ = dbe_->book1D(histo, histo, 100, 0., 100.);
      
      sprintf (histo, "EE Chi2" );
      meEEUncalibRecHitsChi2_ = dbe_->book1D(histo, histo, 100, 18000., 22000.);

      sprintf (histo, "EE RecHit Max Sample Ratio"); 
      meEEUncalibRecHitMaxSampleRatio_ = dbe_->book1D(histo, histo, 120, 0.90, 1.05);
      
      sprintf (histo, "EE+ Occupancy gt 60 adc counts" );  
      meEEUncalibRecHitsOccupancyPlusGt60adc_ = dbe_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);

      sprintf (histo, "EE- Occupancy gt 60 adc counts" );  
      meEEUncalibRecHitsOccupancyMinusGt60adc_ = dbe_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);

      sprintf (histo, "EE Amplitude gt 60 adc counts" );
      meEEUncalibRecHitsAmplitudeGt60adc_ = dbe_->book1D(histo, histo, 200, 0., 4000.);
      
      sprintf (histo, "EE Pedestal gt 60 adc counts" );
      meEEUncalibRecHitsPedestalGt60adc_ = dbe_->book1D(histo, histo, 50, 190., 210.);
      
      sprintf (histo, "EE Jitter gt 60 adc counts" );
      meEEUncalibRecHitsJitterGt60adc_ = dbe_->book1D(histo, histo, 100, 0., 100.);
      
      sprintf (histo, "EE Chi2 gt 60 adc counts" );
      meEEUncalibRecHitsChi2Gt60adc_ = dbe_->book1D(histo, histo, 100, 18000., 22000.);

      sprintf (histo, "EE RecHit Max Sample Ratio gt 60 adc counts"); 
      meEEUncalibRecHitMaxSampleRatioGt60adc_ = dbe_->book1D(histo, histo, 120, 0.90, 1.05);

      sprintf (histo, "EE Amplitude Full Map");
      meEEUncalibRecHitsAmpFullMap_ = dbe_->bookProfile2D(histo, histo, 100, 0., 100., 100, 0., 100., 200, 0., 4000.);

      sprintf (histo, "EE Pedestal Full Map");
      meEEUncalibRecHitsPedFullMap_ = dbe_->bookProfile2D(histo, histo, 100, 0., 100., 100, 0., 100., 50, 194., 201.);
    }
}
EcalEndcapRecHitsValidation::~EcalEndcapRecHitsValidation ( )

Destructor.

Definition at line 118 of file EcalEndcapRecHitsValidation.cc.

                                                         {   

}

Member Function Documentation

void EcalEndcapRecHitsValidation::analyze ( const edm::Event e,
const edm::EventSetup c 
) [protected, virtual]

Analyze.

Implements edm::EDAnalyzer.

Definition at line 130 of file EcalEndcapRecHitsValidation.cc.

References EcalMGPASample::adc(), edm::SortedCollection< T, SORT >::begin(), jptDQMConfig_cff::eMax, edm::DataFrameContainer::end(), edm::SortedCollection< T, SORT >::end(), HcalObjRepresent::Fill(), edm::DataFrameContainer::find(), edm::EventSetup::get(), edm::Event::getByLabel(), EcalCondObjectContainer< T >::getMap(), edm::HandleBase::isValid(), EEDetId::ix(), EEDetId::iy(), LogDebug, edm::ESHandle< T >::product(), edm::Handle< T >::product(), and EEDetId::zside().

                                                                            {

  const EEUncalibratedRecHitCollection *EEUncalibRecHit = 0;
  Handle< EEUncalibratedRecHitCollection > EcalUncalibRecHitEE;
  e.getByLabel( EEuncalibrechitCollection_, EcalUncalibRecHitEE);
  if (EcalUncalibRecHitEE.isValid()) {
    EEUncalibRecHit = EcalUncalibRecHitEE.product() ;
  } else {
    return;
  }
  
  bool skipDigis = false;
  const EEDigiCollection *EEDigi = 0;
  Handle< EEDigiCollection > EcalDigiEE;
  e.getByLabel( EEdigiCollection_, EcalDigiEE);
  if (EcalDigiEE.isValid()) { 
    EEDigi = EcalDigiEE.product(); 
  } else { 
    skipDigis = true;
  }
  
  edm::ESHandle<EcalPedestals> ecalPeds; 
  c.get<EcalPedestalsRcd>().get(ecalPeds);

  // ---------------------- 
  // loop over UncalibRecHits
  for (EcalUncalibratedRecHitCollection::const_iterator uncalibRecHit = EEUncalibRecHit->begin(); uncalibRecHit != EEUncalibRecHit->end() ; ++uncalibRecHit)
    {
      EEDetId EEid = EEDetId(uncalibRecHit->id());

      int mySide = EEid.zside();      

      // general checks
      if (mySide > 0) { if (meEEUncalibRecHitsOccupancyPlus_)  meEEUncalibRecHitsOccupancyPlus_  ->Fill(EEid.ix(), EEid.iy()); }
      if (mySide < 0) { if (meEEUncalibRecHitsOccupancyMinus_) meEEUncalibRecHitsOccupancyMinus_ ->Fill(EEid.ix(), EEid.iy()); }
      if (meEEUncalibRecHitsAmplitude_)  meEEUncalibRecHitsAmplitude_  -> Fill(uncalibRecHit->amplitude());
      if (meEEUncalibRecHitsPedestal_)   meEEUncalibRecHitsPedestal_   -> Fill(uncalibRecHit->pedestal());
      if (meEEUncalibRecHitsJitter_)     meEEUncalibRecHitsJitter_     -> Fill(uncalibRecHit->jitter());
      if (meEEUncalibRecHitsChi2_)       meEEUncalibRecHitsChi2_       -> Fill(uncalibRecHit->chi2());
      if (meEEUncalibRecHitsAmpFullMap_) meEEUncalibRecHitsAmpFullMap_ -> Fill(EEid.ix(), EEid.iy(), uncalibRecHit->amplitude()); 
      if (meEEUncalibRecHitsPedFullMap_) meEEUncalibRecHitsPedFullMap_ -> Fill(EEid.ix(), EEid.iy(), uncalibRecHit->pedestal()); 


      // general checks, with threshold at 60 ADC counts
      if ( uncalibRecHit->amplitude() > 60 ) 
        {
          if (mySide > 0) { if (meEEUncalibRecHitsOccupancyPlusGt60adc_)  meEEUncalibRecHitsOccupancyPlusGt60adc_ ->Fill(EEid.ix(), EEid.iy()); }
          if (mySide < 0) { if (meEEUncalibRecHitsOccupancyMinusGt60adc_) meEEUncalibRecHitsOccupancyMinusGt60adc_->Fill(EEid.ix(), EEid.iy()); }
          if (meEEUncalibRecHitsAmplitudeGt60adc_)  meEEUncalibRecHitsAmplitudeGt60adc_  -> Fill(uncalibRecHit->amplitude());
          if (meEEUncalibRecHitsPedestalGt60adc_)   meEEUncalibRecHitsPedestalGt60adc_   -> Fill(uncalibRecHit->pedestal());
          if (meEEUncalibRecHitsJitterGt60adc_)     meEEUncalibRecHitsJitterGt60adc_     -> Fill(uncalibRecHit->jitter());
          if (meEEUncalibRecHitsChi2Gt60adc_)       meEEUncalibRecHitsChi2Gt60adc_       -> Fill(uncalibRecHit->chi2());
        }

      if ( ! skipDigis ) {
        // Find the rechit corresponding digi
        EEDigiCollection::const_iterator myDigi = EEDigi->find(EEid);
        int sMax    = -1;
        double eMax = 0.;
        if (myDigi != EEDigi->end()){ 
          for (unsigned int sample = 0 ; sample < myDigi->size(); ++sample){
            EcalMGPASample thisSample = (*myDigi)[sample];
            double analogSample = thisSample.adc();
            if ( eMax < analogSample ){ 
              eMax = analogSample;
              sMax = sample;
            }
          }
        }
        else
          continue;
      
        // ratio uncalibratedRecHit amplitude + ped / max energy digi  
        const EcalPedestals* myped = ecalPeds.product();
        EcalPedestalsMap::const_iterator it=myped->getMap().find( EEid );
        if( it != myped->getMap().end() ){
          
          if (eMax > (*it).mean_x1 + 5 * (*it).rms_x1 && eMax != 0 ){ //only real signal RecHit
            
            if ( meEEUncalibRecHitMaxSampleRatio_ )
              { meEEUncalibRecHitMaxSampleRatio_->Fill( (uncalibRecHit->amplitude()+uncalibRecHit->pedestal())/eMax); }
            
            if ( meEEUncalibRecHitMaxSampleRatioGt60adc_ && (uncalibRecHit->amplitude() > 60) ) 
              { meEEUncalibRecHitMaxSampleRatioGt60adc_->Fill( (uncalibRecHit->amplitude()+uncalibRecHit->pedestal())/eMax); }
            
            LogDebug("EcalRecHitsTaskInfo") << "endcap, eMax = " << eMax << " Amplitude = " << uncalibRecHit->amplitude()+uncalibRecHit->pedestal();  
          }
          else
            continue;
        }
        else
          continue;
      }
    } // loop over the UncalibratedRecHitCollection

}
void EcalEndcapRecHitsValidation::beginJob ( void  ) [protected, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 122 of file EcalEndcapRecHitsValidation.cc.

                                          {  

}
void EcalEndcapRecHitsValidation::endJob ( void  ) [protected, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 126 of file EcalEndcapRecHitsValidation.cc.

                                        {

}

Member Data Documentation

Definition at line 63 of file EcalEndcapRecHitsValidation.h.

Definition at line 65 of file EcalEndcapRecHitsValidation.h.

Definition at line 66 of file EcalEndcapRecHitsValidation.h.

Definition at line 74 of file EcalEndcapRecHitsValidation.h.

Definition at line 81 of file EcalEndcapRecHitsValidation.h.

Definition at line 82 of file EcalEndcapRecHitsValidation.h.

Definition at line 70 of file EcalEndcapRecHitsValidation.h.

Definition at line 77 of file EcalEndcapRecHitsValidation.h.

Definition at line 73 of file EcalEndcapRecHitsValidation.h.

Definition at line 80 of file EcalEndcapRecHitsValidation.h.

Definition at line 72 of file EcalEndcapRecHitsValidation.h.

Definition at line 79 of file EcalEndcapRecHitsValidation.h.

Definition at line 69 of file EcalEndcapRecHitsValidation.h.

Definition at line 76 of file EcalEndcapRecHitsValidation.h.

Definition at line 68 of file EcalEndcapRecHitsValidation.h.

Definition at line 75 of file EcalEndcapRecHitsValidation.h.

Definition at line 71 of file EcalEndcapRecHitsValidation.h.

Definition at line 78 of file EcalEndcapRecHitsValidation.h.

Definition at line 83 of file EcalEndcapRecHitsValidation.h.

Definition at line 61 of file EcalEndcapRecHitsValidation.h.