CMS 3D CMS Logo

Public Member Functions | Protected Member Functions | Private Types | Private Attributes

EcalRecHitsValidation Class Reference

#include <EcalRecHitsValidation.h>

Inheritance diagram for EcalRecHitsValidation:
edm::EDAnalyzer

List of all members.

Public Member Functions

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

Protected Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c)
 Analyze.
void beginJob ()
void endJob (void)
void findBarrelMatrix (int nCellInEta, int nCellInPhi, int CentralEta, int CentralPhi, int CentralZ, MapType &themap)
void findEndcapMatrix (int nCellInX, int nCellInY, int CentralX, int CentralY, int CentralZ, MapType &themap)
uint32_t getUnitWithMaxEnergy (MapType &themap)

Private Types

typedef std::map< uint32_t,
float, std::less< uint32_t > > 
MapType

Private Attributes

std::vector< uint32_t > crystalMatrix
DQMStoredbe_
edm::InputTag EBrechitCollection_
edm::InputTag EBuncalibrechitCollection_
edm::InputTag EErechitCollection_
edm::InputTag EEuncalibrechitCollection_
edm::InputTag ESrechitCollection_
std::string HepMCLabel
std::string hitsProducer_
MonitorElementmeEB5x5RecHitSimHitvsSimHitFlag8_
MonitorElementmeEBe5x5_
MonitorElementmeEBe5x5OverGun_
MonitorElementmeEBe5x5OverSimHits_
MonitorElementmeEBRecHitFlags_
MonitorElementmeEBRecHitLog10Energy5x5Contr_
MonitorElementmeEBRecHitLog10Energy_
MonitorElementmeEBRecHitLog10EnergyContr_
MonitorElementmeEBRecHitSimHitFlag6_
MonitorElementmeEBRecHitSimHitFlag7_
MonitorElementmeEBRecHitSimHitRatio1011_
MonitorElementmeEBRecHitSimHitRatio12_
MonitorElementmeEBRecHitSimHitRatio13_
MonitorElementmeEBRecHitSimHitRatio_
MonitorElementmeEBRecHitSimHitRatioGt35_
MonitorElementmeEBRecHitSimHitvsSimHitFlag5_6_
MonitorElementmeEBRecHitsOccupancyFlag5_6_
MonitorElementmeEBRecHitsOccupancyFlag8_9_
MonitorElementmeEBUnRecHitSimHitRatio_
MonitorElementmeEBUnRecHitSimHitRatioGt35_
MonitorElementmeEEe5x5_
MonitorElementmeEEe5x5OverGun_
MonitorElementmeEEe5x5OverSimHits_
MonitorElementmeEERecHitFlags_
MonitorElementmeEERecHitLog10Energy5x5Contr_
MonitorElementmeEERecHitLog10Energy_
MonitorElementmeEERecHitLog10EnergyContr_
MonitorElementmeEERecHitSimHitFlag6_
MonitorElementmeEERecHitSimHitFlag7_
MonitorElementmeEERecHitSimHitRatio1011_
MonitorElementmeEERecHitSimHitRatio12_
MonitorElementmeEERecHitSimHitRatio13_
MonitorElementmeEERecHitSimHitRatio_
MonitorElementmeEERecHitSimHitRatioGt35_
MonitorElementmeEERecHitSimHitvsSimHitFlag5_6_
MonitorElementmeEERecHitsOccupancyMinusFlag5_6_
MonitorElementmeEERecHitsOccupancyMinusFlag8_9_
MonitorElementmeEERecHitsOccupancyPlusFlag5_6_
MonitorElementmeEERecHitsOccupancyPlusFlag8_9_
MonitorElementmeEEUnRecHitSimHitRatio_
MonitorElementmeEEUnRecHitSimHitRatioGt35_
MonitorElementmeESRecHitLog10Energy_
MonitorElementmeESRecHitLog10EnergyContr_
MonitorElementmeESRecHitSimHitRatio_
MonitorElementmeGunEnergy_
MonitorElementmeGunEta_
MonitorElementmeGunPhi_
std::string outputFile_
bool verbose_

Detailed Description

Definition at line 44 of file EcalRecHitsValidation.h.


Member Typedef Documentation

typedef std::map<uint32_t,float,std::less<uint32_t> > EcalRecHitsValidation::MapType [private]

Definition at line 46 of file EcalRecHitsValidation.h.


Constructor & Destructor Documentation

EcalRecHitsValidation::EcalRecHitsValidation ( const edm::ParameterSet ps)

Constructor.

Definition at line 24 of file EcalRecHitsValidation.cc.

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

                                                                  {

  // ---------------------- 
  HepMCLabel                 = ps.getParameter<std::string>("moduleLabelMC"); 
  hitsProducer_              = ps.getParameter<std::string>("hitsProducer");
  EBrechitCollection_        = ps.getParameter<edm::InputTag>("EBrechitCollection");
  EErechitCollection_        = ps.getParameter<edm::InputTag>("EErechitCollection");
  ESrechitCollection_        = ps.getParameter<edm::InputTag>("ESrechitCollection");
  EBuncalibrechitCollection_ = ps.getParameter<edm::InputTag>("EBuncalibrechitCollection");
  EEuncalibrechitCollection_ = ps.getParameter<edm::InputTag>("EEuncalibrechitCollection");
  
  // ---------------------- 
  // DQM ROOT output 
  outputFile_ = ps.getUntrackedParameter<string>("outputFile", "");

  if ( outputFile_.size() != 0 ) {
    LogInfo("OutputInfo") << " Ecal RecHits Task histograms will be saved to '" << outputFile_.c_str() << "'";
  } else {
    LogInfo("OutputInfo") << " Ecal RecHits Task histograms will NOT be saved";
  }
 
  // ---------------------- 
  // 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();
  }


  // ----------------------   
  meGunEnergy_                 = 0;
  meGunEta_                    = 0;   
  meGunPhi_                    = 0;   
  meEBRecHitSimHitRatio_       = 0;
  meEERecHitSimHitRatio_       = 0;
  meESRecHitSimHitRatio_       = 0;
  meEBRecHitSimHitRatio1011_   = 0;
  meEERecHitSimHitRatio1011_   = 0;
  meEBRecHitSimHitRatio12_     = 0;
  meEERecHitSimHitRatio12_     = 0;
  meEBRecHitSimHitRatio13_     = 0;
  meEERecHitSimHitRatio13_     = 0;
  meEBRecHitSimHitRatioGt35_   = 0;
  meEERecHitSimHitRatioGt35_   = 0;
  meEBUnRecHitSimHitRatio_     = 0;
  meEEUnRecHitSimHitRatio_     = 0;
  meEBUnRecHitSimHitRatioGt35_ = 0;
  meEEUnRecHitSimHitRatioGt35_ = 0;
  meEBe5x5_                    = 0;
  meEBe5x5OverSimHits_         = 0;
  meEBe5x5OverGun_             = 0;
  meEEe5x5_                    = 0;
  meEEe5x5OverSimHits_         = 0;
  meEEe5x5OverGun_             = 0;
  
  meEBRecHitLog10Energy_         = 0;
  meEERecHitLog10Energy_         = 0;
  meESRecHitLog10Energy_         = 0;
  meEBRecHitLog10EnergyContr_    = 0;
  meEERecHitLog10EnergyContr_    = 0;
  meESRecHitLog10EnergyContr_    = 0;
  meEBRecHitLog10Energy5x5Contr_ = 0;
  meEERecHitLog10Energy5x5Contr_ = 0;

  meEBRecHitsOccupancyFlag5_6_      = 0;
  meEBRecHitsOccupancyFlag8_9_      = 0;
  meEERecHitsOccupancyPlusFlag5_6_  = 0;
  meEERecHitsOccupancyMinusFlag5_6_ = 0;
  meEERecHitsOccupancyPlusFlag8_9_  = 0;
  meEERecHitsOccupancyMinusFlag8_9_ = 0;
  
  meEBRecHitFlags_                   = 0;
  meEBRecHitSimHitvsSimHitFlag5_6_   = 0;
  meEBRecHitSimHitFlag6_             = 0;
  meEBRecHitSimHitFlag7_             = 0;
  meEB5x5RecHitSimHitvsSimHitFlag8_  = 0;

  meEERecHitFlags_                   = 0;
  meEERecHitSimHitvsSimHitFlag5_6_   = 0;
  meEERecHitSimHitFlag6_             = 0;
  meEERecHitSimHitFlag7_             = 0;


  // ---------------------- 
  std::string histo;
   
  if ( dbe_ ) {
    dbe_->setCurrentFolder("EcalRecHitsV/EcalRecHitsTask");
    
    histo = "EcalRecHitsTask Gun Momentum";
    meGunEnergy_ = dbe_->book1D(histo.c_str(), histo.c_str(), 100, 0., 1000.);
  
    histo = "EcalRecHitsTask Gun Eta";      
    meGunEta_ = dbe_->book1D(histo.c_str(), histo.c_str(), 700, -3.5, 3.5);
     
    histo = "EcalRecHitsTask Gun Phi";  
    meGunPhi_ = dbe_->book1D(histo.c_str(), histo.c_str(), 360, 0., 360.);    
    
    histo = "EcalRecHitsTask Barrel RecSimHit Ratio";  
    meEBRecHitSimHitRatio_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0., 2.);   

    histo = "EcalRecHitsTask Endcap RecSimHit Ratio"; 
    meEERecHitSimHitRatio_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0., 2.);

    histo = "EcalRecHitsTask Preshower RecSimHit Ratio"; 
    meESRecHitSimHitRatio_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0., 2.);

    histo = "EcalRecHitsTask Barrel RecSimHit Ratio gt 3p5 GeV";  
    meEBRecHitSimHitRatioGt35_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0.9, 1.1);   

    histo = "EcalRecHitsTask Endcap RecSimHit Ratio gt 3p5 GeV"; 
    meEERecHitSimHitRatioGt35_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0.9, 1.1);

    histo = "EcalRecHitsTask Barrel Unc RecSimHit Ratio";  
    meEBUnRecHitSimHitRatio_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0., 2.);   

    histo = "EcalRecHitsTask Endcap Unc RecSimHit Ratio"; 
    meEEUnRecHitSimHitRatio_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0., 2.);

    histo = "EcalRecHitsTask Barrel RecSimHit Ratio Channel Status=10 11";  
    meEBRecHitSimHitRatio1011_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0., 2.);   

    histo = "EcalRecHitsTask Endcap RecSimHit Ratio Channel Status=10 11"; 
    meEERecHitSimHitRatio1011_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0., 2.);

    histo = "EcalRecHitsTask Barrel RecSimHit Ratio Channel Status=12";  
    meEBRecHitSimHitRatio12_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0., 2.);   

    histo = "EcalRecHitsTask Endcap RecSimHit Ratio Channel Status=12"; 
    meEERecHitSimHitRatio12_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0., 2.);

    histo = "EcalRecHitsTask Barrel RecSimHit Ratio Channel Status=13";  
    meEBRecHitSimHitRatio13_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0., 2.);   

    histo = "EcalRecHitsTask Endcap RecSimHit Ratio Channel Status=13"; 
    meEERecHitSimHitRatio13_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0., 2.);

    histo = "EcalRecHitsTask Barrel Unc RecSimHit Ratio gt 3p5 GeV";  
    meEBUnRecHitSimHitRatioGt35_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0.9, 1.1);   

    histo = "EcalRecHitsTask Endcap Unc RecSimHit Ratio gt 3p5 GeV"; 
    meEEUnRecHitSimHitRatioGt35_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0.9, 1.1);

    histo = "EcalRecHitsTask Barrel Rec E5x5";
    meEBe5x5_ = dbe_->book1D(histo.c_str(), histo.c_str(), 4000, 0., 400.);

    histo = "EcalRecHitsTask Barrel Rec E5x5 over Sim E5x5";
    meEBe5x5OverSimHits_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0.9, 1.1);

    histo = "EcalRecHitsTask Barrel Rec E5x5 over gun energy";
    meEBe5x5OverGun_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0.9, 1.1);

    histo = "EcalRecHitsTask Endcap Rec E5x5";
    meEEe5x5_ = dbe_->book1D(histo.c_str(), histo.c_str(), 4000, 0., 400.);

    histo = "EcalRecHitsTask Endcap Rec E5x5 over Sim E5x5";
    meEEe5x5OverSimHits_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0.9, 1.1);

    histo = "EcalRecHitsTask Endcap Rec E5x5 over gun energy";
    meEEe5x5OverGun_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0.9, 1.1);

    meEBRecHitLog10Energy_ = dbe_->book1D( "EcalRecHitsTask Barrel Log10 Energy", "EcalRecHitsTask Barrel Log10 Energy", 90, -5., 4. ); 
    meEERecHitLog10Energy_ = dbe_->book1D( "EcalRecHitsTask Endcap Log10 Energy", "EcalRecHitsTask Endcap Log10 Energy", 90, -5., 4. ); 
    meESRecHitLog10Energy_ = dbe_->book1D( "EcalRecHitsTask Preshower Log10 Energy", "EcalRecHitsTask Preshower Log10 Energy", 90, -5., 4. ); 
    meEBRecHitLog10EnergyContr_ = dbe_->bookProfile( "EcalRecHits Barrel Log10En vs Hit Contribution", "EcalRecHits Barrel Log10En vs Hit Contribution", 90, -5., 4., 100, 0., 1. ); 
    meEERecHitLog10EnergyContr_ = dbe_->bookProfile( "EcalRecHits Endcap Log10En vs Hit Contribution", "EcalRecHits Endcap Log10En vs Hit Contribution", 90, -5., 4., 100, 0., 1. ); 
    meESRecHitLog10EnergyContr_ = dbe_->bookProfile( "EcalRecHits Preshower Log10En vs Hit Contribution", "EcalRecHits Preshower Log10En vs Hit Contribution", 90, -5., 4., 100, 0., 1. ); 
    meEBRecHitLog10Energy5x5Contr_ = dbe_->bookProfile( "EcalRecHits Barrel Log10En5x5 vs Hit Contribution", "EcalRecHits Barrel Log10En5x5 vs Hit Contribution", 90, -5., 4., 100, 0., 1. ); 
    meEERecHitLog10Energy5x5Contr_ = dbe_->bookProfile( "EcalRecHits Endcap Log10En5x5 vs Hit Contribution", "EcalRecHits Endcap Log10En5x5 vs Hit Contribution", 90, -5., 4., 100, 0., 1. ); 
    

    histo = "EB Occupancy Flag=5 6";  
    meEBRecHitsOccupancyFlag5_6_ = dbe_->book2D(histo, histo, 170, -85., 85., 360, 0., 360.);
    histo = "EB Occupancy Flag=8 9";  
    meEBRecHitsOccupancyFlag8_9_ = dbe_->book2D(histo, histo, 170, -85., 85., 360, 0., 360.);

    histo = "EE+ Occupancy Flag=5 6";  
    meEERecHitsOccupancyPlusFlag5_6_ = dbe_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
    histo = "EE- Occupancy Flag=5 6";  
    meEERecHitsOccupancyMinusFlag5_6_ = dbe_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
    histo = "EE+ Occupancy Flag=8 9";  
    meEERecHitsOccupancyPlusFlag8_9_ = dbe_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);
    histo = "EE- Occupancy Flag=8 9";  
    meEERecHitsOccupancyMinusFlag8_9_ = dbe_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.);


    histo = "EcalRecHitsTask Barrel Reco Flags";  
    meEBRecHitFlags_ = dbe_->book1D(histo.c_str(), histo.c_str(), 10, 0., 10.);   
    histo = "EcalRecHitsTask Endcap Reco Flags";  
    meEERecHitFlags_ = dbe_->book1D(histo.c_str(), histo.c_str(), 10, 0., 10.);   
    histo = "EcalRecHitsTask Barrel RecSimHit Ratio vs SimHit Flag=5 6";  
    meEBRecHitSimHitvsSimHitFlag5_6_ = dbe_->book2D(histo.c_str(), histo.c_str(), 80, 0., 2., 4000, 0., 400. );   
    histo = "EcalRecHitsTask Endcap RecSimHit Ratio vs SimHit Flag=5 6"; 
    meEERecHitSimHitvsSimHitFlag5_6_ = dbe_->book2D(histo.c_str(), histo.c_str(), 80, 0., 2., 4000, 0., 400. );
    histo = "EcalRecHitsTask Barrel RecSimHit Ratio Flag=6";  
    meEBRecHitSimHitFlag6_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0., 2.);   
    histo = "EcalRecHitsTask Endcap RecSimHit Ratio Flag=6"; 
    meEERecHitSimHitFlag6_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0., 2.);
    histo = "EcalRecHitsTask Barrel RecSimHit Ratio Flag=7";  
    meEBRecHitSimHitFlag7_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0., 2.);   
    histo = "EcalRecHitsTask Endcap RecSimHit Ratio Flag=7"; 
    meEERecHitSimHitFlag7_ = dbe_->book1D(histo.c_str(), histo.c_str(), 80, 0., 2.);
    histo = "EcalRecHitsTask Barrel 5x5 RecSimHit Ratio vs SimHit Flag=8";  
    meEB5x5RecHitSimHitvsSimHitFlag8_ = dbe_->book2D(histo.c_str(), histo.c_str(), 80, 0., 2., 4000, 0., 400. );   

  }
}
EcalRecHitsValidation::~EcalRecHitsValidation ( )

Destructor.

Definition at line 244 of file EcalRecHitsValidation.cc.

References dbe_, and DQMStore::save().

                                             {   
  
  if ( outputFile_.size() != 0 && dbe_ ) dbe_->save(outputFile_);  
}

Member Function Documentation

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

Analyze.

Implements edm::EDAnalyzer.

Definition at line 257 of file EcalRecHitsValidation.cc.

References abs, edm::SortedCollection< T, SORT >::begin(), EcalTrigTowerConstituentsMap::constituentsOf(), EcalCondObjectContainer< T >::end(), edm::SortedCollection< T, SORT >::end(), edm::EventID::event(), HcalObjRepresent::Fill(), edm::SortedCollection< T, SORT >::find(), EcalCondObjectContainer< T >::find(), edm::EventSetup::get(), edm::Event::getByLabel(), EcalADCToGeVConstant::getEBValue(), EcalADCToGeVConstant::getEEValue(), EcalChannelStatusCode::getStatusCode(), i, edm::EventBase::id(), EBDetId::ieta(), EBDetId::ietaAbs(), EBDetId::iphi(), edm::HandleBase::isValid(), edm::ESHandleBase::isValid(), EEDetId::ix(), EEDetId::iy(), EcalRecHit::kDead, EcalRecHit::kLeadingEdgeRecovered, EcalRecHit::kNeighboursRecovered, EcalRecHit::kSaturated, EcalRecHit::kTowerRecovered, funct::log(), LogDebug, M_PI, L1TEmulatorMonitor_cff::p, edm::ESHandle< T >::product(), edm::Handle< T >::product(), DetId::rawId(), edm::EventID::run(), ESDetId::six(), ESDetId::siy(), ESDetId::strip(), funct::tan(), EBDetId::tower(), EEDetId::zside(), and EBDetId::zside().

                                                                      {

  //Temporary stuff


  
  LogInfo("EcalRecHitsTask, EventInfo: ") << " Run = " << e.id().run() << " Event = " << e.id().event();

  // ADC -> GeV Scale
  edm::ESHandle<EcalADCToGeVConstant> pAgc;
  c.get<EcalADCToGeVConstantRcd>().get(pAgc);
  const EcalADCToGeVConstant* agc = pAgc.product();
  const double barrelADCtoGeV_  = agc->getEBValue();
  const double endcapADCtoGeV_ = agc->getEEValue();
  
  Handle<HepMCProduct> MCEvt;                   
  bool skipMC = false;
  e.getByLabel(HepMCLabel, MCEvt);  
  if (!MCEvt.isValid()) { skipMC = true; }

  edm::Handle<CrossingFrame<PCaloHit> > crossingFrame;

  bool skipBarrel = false;
  const EBUncalibratedRecHitCollection *EBUncalibRecHit =0;
  Handle< EBUncalibratedRecHitCollection > EcalUncalibRecHitEB;
  e.getByLabel( EBuncalibrechitCollection_, EcalUncalibRecHitEB);
  if (EcalUncalibRecHitEB.isValid()) {
    EBUncalibRecHit = EcalUncalibRecHitEB.product() ;    
  } else {
    skipBarrel = true;
  }

  bool skipEndcap = false;
  const EEUncalibratedRecHitCollection *EEUncalibRecHit = 0;
  Handle< EEUncalibratedRecHitCollection > EcalUncalibRecHitEE;
  e.getByLabel( EEuncalibrechitCollection_, EcalUncalibRecHitEE);
  if (EcalUncalibRecHitEE.isValid()){ 
    EEUncalibRecHit = EcalUncalibRecHitEE.product () ;
  } else {
    skipEndcap = true;
  }

  const EBRecHitCollection *EBRecHit = 0;
  Handle<EBRecHitCollection> EcalRecHitEB;
  e.getByLabel( EBrechitCollection_, EcalRecHitEB);
  if (EcalRecHitEB.isValid()){ 
    EBRecHit = EcalRecHitEB.product();
  } else {
    skipBarrel = true;
  }

  const EERecHitCollection *EERecHit = 0;
  Handle<EERecHitCollection> EcalRecHitEE;
  e.getByLabel( EErechitCollection_, EcalRecHitEE);
  if (EcalRecHitEE.isValid()){
    EERecHit = EcalRecHitEE.product ();
  } else {
    skipEndcap = true;
  }

  bool skipPreshower = false;
  const ESRecHitCollection *ESRecHit = 0;
  Handle<ESRecHitCollection> EcalRecHitES;
  e.getByLabel( ESrechitCollection_, EcalRecHitES);
  if (EcalRecHitES.isValid()) {
    ESRecHit = EcalRecHitES.product ();      
  } else {
    skipPreshower = true;
  }


  // ---------------------- 
  // gun
  double eGun = 0.;
  if ( ! skipMC ) {
    for ( HepMC::GenEvent::particle_const_iterator p = MCEvt->GetEvent()->particles_begin(); p != MCEvt->GetEvent()->particles_end(); ++p )  {      
      double htheta = (*p)->momentum().theta();
      double heta = -99999.;
      if( tan(htheta * 0.5) > 0 ) {
        heta = -log(tan(htheta * 0.5));
      }
      double hphi = (*p)->momentum().phi();
      hphi = (hphi>=0) ? hphi : hphi+2*M_PI;
      hphi = hphi / M_PI * 180.;
      
      LogDebug("EventInfo") << "EcalRecHitsTask: Particle gun type form MC = " << abs((*p)->pdg_id()) 
                            << "\n" << "Energy = "<< (*p)->momentum().e() 
                            << "\n" << "Eta = "   << heta 
                            << "\n" << "Phi = "   << hphi;
      
      if ( (*p)->momentum().e() > eGun ) eGun = (*p)->momentum().e();

      if (meGunEnergy_) meGunEnergy_->Fill((*p)->momentum().e());
      if (meGunEta_)    meGunEta_   ->Fill(heta);
      if (meGunPhi_)    meGunPhi_   ->Fill(hphi); 
    }
  }

  // -------------------------------------------------------------------
  // BARREL

  if ( ! skipBarrel) {

    // 1) loop over simHits  
    const std::string barrelHitsName(hitsProducer_+"EcalHitsEB");
    e.getByLabel("mix",barrelHitsName,crossingFrame);
    std::auto_ptr<MixCollection<PCaloHit> > 
      barrelHits (new MixCollection<PCaloHit>(crossingFrame.product ()));
    
    MapType ebSimMap;
    MapType ebRecMap;
    const int ebcSize = 90;
    double ebcontr[ebcSize]; 
    double ebcontr25[ebcSize];
    for( int i=0; i<ebcSize; i++ ) { ebcontr[i] = 0.0; ebcontr25[i] = 0.0; } 
    double ebtotal = 0.;

    for (MixCollection<PCaloHit>::MixItr hitItr = barrelHits->begin (); hitItr != barrelHits->end (); ++hitItr)  {   
      EBDetId ebid = EBDetId(hitItr->id());
      
      LogDebug("SimHitInfo, barrel") 
        << "CaloHit "   << hitItr->getName() << " DetID = " << hitItr->id()   << "\n"   
        << "Energy = "  << hitItr->energy()  << " Time = "  << hitItr->time() << "\n"
        << "EBDetId = " << ebid.ieta()       << " "         << ebid.iphi();
      
      uint32_t crystid = ebid.rawId();
      ebSimMap[crystid] += hitItr->energy();
    }
    
    
    
    // 2) loop over RecHits 
    for (EcalUncalibratedRecHitCollection::const_iterator uncalibRecHit = EBUncalibRecHit->begin(); uncalibRecHit != EBUncalibRecHit->end() ; ++uncalibRecHit) {
      EBDetId EBid = EBDetId(uncalibRecHit->id());
      
      // Find corresponding recHit
      EcalRecHitCollection::const_iterator myRecHit = EBRecHit->find(EBid);
      if( myRecHit == EBRecHit->end() ) continue; 
      ebRecMap[EBid.rawId()] += myRecHit->energy();
      
      // Fill log10(Energy) stuff...   
      ebtotal += myRecHit->energy();
      if( myRecHit->energy() > 0 ) {
        if( meEBRecHitLog10Energy_ ) meEBRecHitLog10Energy_->Fill( log10( myRecHit->energy() ) );
        int log10i = int( ( log10( myRecHit->energy() ) + 5. ) * 10. );
        if( log10i >=0 and log10i < ebcSize ) ebcontr[ log10i ] += myRecHit->energy();
      }

      // comparison Rec/Sim hit
      if ( ebSimMap[EBid.rawId()] != 0. ) {
        double uncEnergy = uncalibRecHit->amplitude()*barrelADCtoGeV_;
        if (meEBUnRecHitSimHitRatio_)                                {meEBUnRecHitSimHitRatio_    ->Fill(uncEnergy/ebSimMap[EBid.rawId()]);}
        if (meEBUnRecHitSimHitRatioGt35_ && (myRecHit->energy()>3.5)){meEBUnRecHitSimHitRatioGt35_->Fill(uncEnergy/ebSimMap[EBid.rawId()]);}
      }
      
      if (myRecHit != EBRecHit->end()) {
        if ( ebSimMap[EBid.rawId()] != 0. ) {
          if (meEBRecHitSimHitRatio_)                                {meEBRecHitSimHitRatio_    ->Fill(myRecHit->energy()/ebSimMap[EBid.rawId()]);}
          if (meEBRecHitSimHitRatioGt35_ && (myRecHit->energy()>3.5)){meEBRecHitSimHitRatioGt35_->Fill(myRecHit->energy()/ebSimMap[EBid.rawId()]);}
          uint16_t sc = 0;
          edm::ESHandle<EcalChannelStatus> pEcs;
          c.get<EcalChannelStatusRcd>().get(pEcs); 
          const EcalChannelStatus* ecs = 0;
          if( pEcs.isValid() ) ecs = pEcs.product();
          if( ecs != 0 ) {
            EcalChannelStatusMap::const_iterator csmi = ecs->find(EBid.rawId());
            EcalChannelStatusCode csc = 0;
            if( csmi != ecs->end() ) csc = *csmi;
            sc = csc.getStatusCode();
          }

          if( meEBRecHitSimHitRatio1011_ != 0 && 
              ( sc == 10 || sc == 11 ) ) { meEBRecHitSimHitRatio1011_->Fill(myRecHit->energy()/ebSimMap[EBid.rawId()]); }
          if( meEBRecHitSimHitRatio12_ != 0 && sc == 12 ) { meEBRecHitSimHitRatio12_->Fill(myRecHit->energy()/ebSimMap[EBid.rawId()]); }

          edm::ESHandle<EcalTrigTowerConstituentsMap> pttMap;
          c.get<IdealGeometryRecord>().get(pttMap);
          const EcalTrigTowerConstituentsMap* ttMap = 0;
          if( pttMap.isValid() ) ttMap = pttMap.product();
          double ttSimEnergy = 0;
          if( ttMap != 0 ) {
            EcalTrigTowerDetId ttDetId = EBid.tower();
            std::vector<DetId> vid = ttMap->constituentsOf( ttDetId );
            for( std::vector<DetId>::const_iterator dit = vid.begin(); dit != vid.end(); dit++ ) {
              EBDetId ttEBid = EBDetId(*dit);
              ttSimEnergy += ebSimMap[ttEBid.rawId()];
            }
            if( vid.size() != 0 ) ttSimEnergy = ttSimEnergy / vid.size();
          }
          if( meEBRecHitSimHitRatio13_ != 0 && sc == 13 && ttSimEnergy != 0 ) 
            meEBRecHitSimHitRatio13_->Fill(myRecHit->energy()/ttSimEnergy); 

          int flag = myRecHit->recoFlag();
          if( meEBRecHitFlags_ != 0 ) meEBRecHitFlags_->Fill( flag );
          if( meEBRecHitSimHitvsSimHitFlag5_6_  && ( flag == EcalRecHit::kSaturated || flag == EcalRecHit::kLeadingEdgeRecovered ))
            meEBRecHitSimHitvsSimHitFlag5_6_->Fill( myRecHit->energy()/ebSimMap[EBid.rawId()], ebSimMap[EBid.rawId()] );
          if( meEBRecHitSimHitFlag6_  && ( flag == EcalRecHit::kLeadingEdgeRecovered ))
            meEBRecHitSimHitFlag6_->Fill( myRecHit->energy()/ebSimMap[EBid.rawId()] );
          if( meEBRecHitSimHitFlag7_  && ( flag == EcalRecHit::kNeighboursRecovered ))
            meEBRecHitSimHitFlag6_->Fill( myRecHit->energy()/ebSimMap[EBid.rawId()] );
          if( meEB5x5RecHitSimHitvsSimHitFlag8_  && ( flag == EcalRecHit::kTowerRecovered ) && ttSimEnergy != 0 )
            meEB5x5RecHitSimHitvsSimHitFlag8_->Fill( myRecHit->energy()/ttSimEnergy, ttSimEnergy );

          if (meEBRecHitsOccupancyFlag5_6_ && ( (flag==EcalRecHit::kSaturated) || (flag==EcalRecHit::kLeadingEdgeRecovered) ) ) 
            meEBRecHitsOccupancyFlag5_6_  -> Fill(EBid.ieta(), EBid.iphi());
          if (meEBRecHitsOccupancyFlag8_9_ && ( (flag==EcalRecHit::kTowerRecovered) || (flag==EcalRecHit::kDead) ) ) 
            meEBRecHitsOccupancyFlag8_9_  -> Fill(EBid.ieta(), EBid.iphi());

        }
      }
      else
        continue;
    }  // loop over the UncalibratedRecHitCollection
    
    // RecHits matrix
    uint32_t  ebcenterid = getUnitWithMaxEnergy(ebRecMap);
    EBDetId myEBid(ebcenterid);
    int bx = myEBid.ietaAbs();
    int by = myEBid.iphi();
    int bz = myEBid.zside();
    findBarrelMatrix(5,5,bx,by,bz,ebRecMap);
    double e5x5rec = 0.;
    double e5x5sim = 0.;
    for ( unsigned int i = 0; i < crystalMatrix.size(); i++ ) {
      e5x5rec += ebRecMap[crystalMatrix[i]];
      e5x5sim += ebSimMap[crystalMatrix[i]];
      if( ebRecMap[crystalMatrix[i]] > 0 ) {
        int log10i25 = int( ( log10( ebRecMap[crystalMatrix[i]] ) + 5. ) * 10. );
        if( log10i25 >=0 && log10i25 < ebcSize ) ebcontr25[ log10i25 ] += ebRecMap[crystalMatrix[i]];
      }
    }
    
    if( meEBe5x5_ ) meEBe5x5_->Fill(e5x5rec);
    if ( e5x5sim > 0. && meEBe5x5OverSimHits_ ) meEBe5x5OverSimHits_->Fill(e5x5rec/e5x5sim);
    if ( eGun > 0. && meEBe5x5OverGun_ ) meEBe5x5OverGun_->Fill(e5x5rec/eGun);
    
    if( meEBRecHitLog10EnergyContr_  && ebtotal != 0 ) {
      for( int i=0; i<ebcSize; i++ ) {
        meEBRecHitLog10EnergyContr_->Fill( -5.+(float(i)+0.5)/10., ebcontr[i]/ebtotal );
      }
    }
    
    if( meEBRecHitLog10Energy5x5Contr_  && e5x5rec != 0 ) {
      for( int i=0; i<ebcSize; i++ ) {
        meEBRecHitLog10Energy5x5Contr_->Fill( -5.+(float(i)+0.5)/10., ebcontr25[i]/e5x5rec );
      }
    }
  }

  // -------------------------------------------------------------------
  // ENDCAP

  if ( ! skipEndcap ) {

    // 1) loop over simHits
    const std::string endcapHitsName(hitsProducer_+"EcalHitsEE");
    e.getByLabel("mix",endcapHitsName,crossingFrame);
    std::auto_ptr<MixCollection<PCaloHit> > 
      endcapHits (new MixCollection<PCaloHit>(crossingFrame.product ()));
  
    MapType eeSimMap;
    MapType eeRecMap;
    const int eecSize = 90;
    double eecontr[eecSize];
    double eecontr25[eecSize];
    for( int i=0; i<eecSize; i++ ) { eecontr[i] = 0.0; eecontr25[i] = 0.0; } 
    double eetotal = 0.;
 
    for (MixCollection<PCaloHit>::MixItr hitItr = endcapHits->begin(); hitItr != endcapHits->end(); ++hitItr) {   
      EEDetId eeid = EEDetId(hitItr->id()) ;
      
      LogDebug("Endcap, HitInfo")
        <<" CaloHit "      << hitItr->getName() << " DetID = "        << hitItr->id()   << "\n"
        << "Energy = "     << hitItr->energy()  << " Time = "         << hitItr->time() << "\n"
        << "EEDetId side " << eeid.zside()      << " = " << eeid.ix() << " " << eeid.iy();
      
      uint32_t crystid = eeid.rawId();
      eeSimMap[crystid] += hitItr->energy();
    }



    // 2) loop over RecHits
    for (EcalUncalibratedRecHitCollection::const_iterator uncalibRecHit = EEUncalibRecHit->begin(); uncalibRecHit != EEUncalibRecHit->end(); ++uncalibRecHit) {
      EEDetId EEid = EEDetId(uncalibRecHit->id());
      
      // Find corresponding recHit
      EcalRecHitCollection::const_iterator myRecHit = EERecHit->find(EEid);
      if( myRecHit == EERecHit->end() ) continue; 
      eeRecMap[EEid.rawId()] += myRecHit->energy();

      // Fill log10(Energy) stuff...
      eetotal += myRecHit->energy();   
      if( myRecHit->energy() > 0 ) {
        if( meEERecHitLog10Energy_ ) meEERecHitLog10Energy_->Fill( log10( myRecHit->energy() ) );
        int log10i = int( ( log10( myRecHit->energy() ) + 5. ) * 10. );
        if( log10i >=0 and log10i < eecSize ) eecontr[ log10i ] += myRecHit->energy();
      }

      // comparison Rec/Sim hit
      if ( eeSimMap[EEid.rawId()] != 0. ) {
        double uncEnergy = uncalibRecHit->amplitude()*endcapADCtoGeV_;
        if (meEEUnRecHitSimHitRatio_)                                {meEEUnRecHitSimHitRatio_    ->Fill(uncEnergy/eeSimMap[EEid.rawId()]);}
        if (meEEUnRecHitSimHitRatioGt35_ && (myRecHit->energy()>3.5)){meEEUnRecHitSimHitRatioGt35_->Fill(uncEnergy/eeSimMap[EEid.rawId()]);}
      }

      if (myRecHit != EERecHit->end()) {
        if ( eeSimMap[EEid.rawId()] != 0. ) {
          if (meEERecHitSimHitRatio_)                                {meEERecHitSimHitRatio_    ->Fill(myRecHit->energy()/eeSimMap[EEid.rawId()]); }
          if (meEERecHitSimHitRatioGt35_ && (myRecHit->energy()>3.5)){meEERecHitSimHitRatioGt35_->Fill(myRecHit->energy()/eeSimMap[EEid.rawId()]); }

          edm::ESHandle<EcalChannelStatus> pEcs;
          c.get<EcalChannelStatusRcd>().get(pEcs);
          const EcalChannelStatus* ecs = 0;
          if( pEcs.isValid() ) ecs = pEcs.product();
          if( ecs != 0 ) {
            EcalChannelStatusMap::const_iterator csmi = ecs->find(EEid.rawId());
            EcalChannelStatusCode csc = 0;
            if( csmi != ecs->end() ) csc = *csmi;
            uint16_t sc = csc.getStatusCode();
            if( meEERecHitSimHitRatio1011_ != 0 && 
                ( sc == 10 || sc == 11 ) ) { meEERecHitSimHitRatio1011_->Fill(myRecHit->energy()/eeSimMap[EEid.rawId()]); }
            if( meEERecHitSimHitRatio12_ != 0 && sc == 12 ) { meEERecHitSimHitRatio12_->Fill(myRecHit->energy()/eeSimMap[EEid.rawId()]); }
            if( meEERecHitSimHitRatio13_ != 0 && sc == 13 ) { meEERecHitSimHitRatio13_->Fill(myRecHit->energy()/eeSimMap[EEid.rawId()]); }
          }

          int flag = myRecHit->recoFlag();
          if( meEERecHitFlags_ != 0 ) meEERecHitFlags_->Fill( flag );
          if( meEERecHitSimHitvsSimHitFlag5_6_  && ( flag == EcalRecHit::kSaturated || flag == EcalRecHit::kLeadingEdgeRecovered ))
            meEERecHitSimHitvsSimHitFlag5_6_->Fill( myRecHit->energy()/eeSimMap[EEid.rawId()], eeSimMap[EEid.rawId()] );
          if( meEERecHitSimHitFlag6_  && ( flag == EcalRecHit::kLeadingEdgeRecovered ))
            meEERecHitSimHitFlag6_->Fill( myRecHit->energy()/eeSimMap[EEid.rawId()] );
          if( meEERecHitSimHitFlag7_  && ( flag == EcalRecHit::kNeighboursRecovered ))
            meEERecHitSimHitFlag6_->Fill( myRecHit->energy()/eeSimMap[EEid.rawId()] );

          if (EEid.zside() > 0) { 
            if (meEERecHitsOccupancyPlusFlag5_6_ && (( flag == EcalRecHit::kSaturated ) || ( flag == EcalRecHit::kLeadingEdgeRecovered ) ))  
              meEERecHitsOccupancyPlusFlag5_6_  ->Fill(EEid.ix(), EEid.iy()); 
            if (meEERecHitsOccupancyPlusFlag8_9_ && (( flag == EcalRecHit::kTowerRecovered ) || ( flag == EcalRecHit::kDead ) ))  
              meEERecHitsOccupancyPlusFlag8_9_  ->Fill(EEid.ix(), EEid.iy()); 
          }
          if (EEid.zside() < 0) { 
            if (meEERecHitsOccupancyMinusFlag5_6_ && (( flag == EcalRecHit::kSaturated ) || ( flag == EcalRecHit::kLeadingEdgeRecovered ) ))  
              meEERecHitsOccupancyMinusFlag5_6_  ->Fill(EEid.ix(), EEid.iy()); 
            if (meEERecHitsOccupancyMinusFlag8_9_ && (( flag == EcalRecHit::kTowerRecovered ) || ( flag == EcalRecHit::kDead ) ))  
              meEERecHitsOccupancyMinusFlag8_9_  ->Fill(EEid.ix(), EEid.iy()); 
          }
        }
      }
      else
        continue;
    }  // loop over the UncalibratedechitCollection
  
    // RecHits matrix
    uint32_t  eecenterid = getUnitWithMaxEnergy(eeRecMap);
    EEDetId myEEid(eecenterid);
    int bx = myEEid.ix();
    int by = myEEid.iy();
    int bz = myEEid.zside();
    findEndcapMatrix(5,5,bx,by,bz,eeRecMap);
    double e5x5rec = 0.;
    double e5x5sim = 0.;
    for ( unsigned int i = 0; i < crystalMatrix.size(); i++ ) {
      e5x5rec += eeRecMap[crystalMatrix[i]];
      e5x5sim += eeSimMap[crystalMatrix[i]];
      if( eeRecMap[crystalMatrix[i]] > 0 ) {
        int log10i25 = int( ( log10( eeRecMap[crystalMatrix[i]] ) + 5. ) * 10. );
        if( log10i25 >=0 && log10i25 < eecSize ) eecontr25[ log10i25 ] += eeRecMap[crystalMatrix[i]];
      }
    }

    if( meEEe5x5_ ) meEEe5x5_->Fill(e5x5rec);
    if ( e5x5sim > 0. && meEEe5x5OverSimHits_ ) meEEe5x5OverSimHits_->Fill(e5x5rec/e5x5sim);
    if ( eGun > 0. && meEEe5x5OverGun_ ) meEEe5x5OverGun_->Fill(e5x5rec/eGun);
    

    if( meEERecHitLog10EnergyContr_  && eetotal != 0 ) {
      for( int i=0; i<eecSize; i++ ) {
        meEERecHitLog10EnergyContr_->Fill( -5.+(float(i)+0.5)/10., eecontr[i]/eetotal );
      }
    }
    
    if( meEERecHitLog10Energy5x5Contr_  && e5x5rec != 0 ) {
      for( int i=0; i<eecSize; i++ ) {
        meEERecHitLog10Energy5x5Contr_->Fill( -5.+(float(i)+0.5)/10., eecontr25[i]/e5x5rec );
      }
    }
  }

  // -------------------------------------------------------------------
  // PRESHOWER

  if ( ! skipPreshower ) {

    // 1) loop over simHits
    const std::string preshowerHitsName(hitsProducer_+"EcalHitsES");
    e.getByLabel("mix",preshowerHitsName,crossingFrame);
    std::auto_ptr<MixCollection<PCaloHit> > 
      preshowerHits (new MixCollection<PCaloHit>(crossingFrame.product ()));

    MapType esSimMap;
    const int escSize = 90;
    double escontr[escSize];
    for( int i=0; i<escSize; i++ ) { escontr[i] = 0.0; }
    double estotal = 0.;

  
    for (MixCollection<PCaloHit>::MixItr hitItr = preshowerHits->begin(); hitItr != preshowerHits->end(); ++hitItr) {   
      ESDetId esid = ESDetId(hitItr->id()) ;

      LogDebug("Preshower, HitInfo")
        <<" CaloHit "       << hitItr->getName() << " DetID = "         << hitItr->id()   << "\n"
        << "Energy = "      << hitItr->energy()  << " Time = "          << hitItr->time() << "\n"
        << "ESDetId strip " << esid.strip()      << " = " << esid.six() << " " << esid.siy();
      
      uint32_t crystid = esid.rawId();
      esSimMap[crystid] += hitItr->energy();
    }


    // 2) loop over RecHits
    for (EcalRecHitCollection::const_iterator recHit = ESRecHit->begin(); recHit != ESRecHit->end(); ++recHit) {
      ESDetId ESid = ESDetId(recHit->id());
      if ( esSimMap[ESid.rawId()] != 0. ) { 
        
        // Fill log10(Energy) stuff...
        estotal += recHit->energy();   
        if( recHit->energy() > 0 ) {
          if( meESRecHitLog10Energy_ ) meESRecHitLog10Energy_->Fill( log10( recHit->energy() ) );
          int log10i = int( ( log10( recHit->energy() ) + 5. ) * 10. );
          if( log10i >=0 and log10i < escSize ) escontr[ log10i ] += recHit->energy();
        }

        if (meESRecHitSimHitRatio_) { 
          meESRecHitSimHitRatio_ ->Fill(recHit->energy()/esSimMap[ESid.rawId()]); 
        }
      }
      else
        continue;
    }  // loop over the RechitCollection

    if( meESRecHitLog10EnergyContr_  && estotal != 0 ) {
      for( int i=0; i<escSize; i++ ) {
        meESRecHitLog10EnergyContr_->Fill( -5.+(float(i)+0.5)/10., escontr[i]/estotal );
      }
    }

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

Reimplemented from edm::EDAnalyzer.

Definition at line 249 of file EcalRecHitsValidation.cc.

                                    {  

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

Reimplemented from edm::EDAnalyzer.

Definition at line 253 of file EcalRecHitsValidation.cc.

                                  {

}
void EcalRecHitsValidation::findBarrelMatrix ( int  nCellInEta,
int  nCellInPhi,
int  CentralEta,
int  CentralPhi,
int  CentralZ,
MapType themap 
) [protected]

Definition at line 728 of file EcalRecHitsValidation.cc.

References abs, i, getHLTprescales::index, and DetId::rawId().

                                                              {
  
  int goBackInEta = nCellInEta/2;
  int goBackInPhi = nCellInPhi/2;
  int matrixSize = nCellInEta*nCellInPhi; 
  crystalMatrix.clear();
  crystalMatrix.resize(matrixSize);

  int startEta  =  CentralZ*CentralEta - goBackInEta;
  int startPhi  =  CentralPhi - goBackInPhi;
  
  int i = 0 ;
  for ( int ieta = startEta; ieta < startEta+nCellInEta; ieta ++ ) {
    for( int iphi = startPhi; iphi < startPhi + nCellInPhi; iphi++ ) {
      uint32_t  index;
      if (abs(ieta) > 85 || abs(ieta)<1 ) { continue; }
      if (iphi< 1)      { index = EBDetId(ieta,iphi+360).rawId(); }
      else if(iphi>360) { index = EBDetId(ieta,iphi-360).rawId(); }
      else              { index = EBDetId(ieta,iphi).rawId();     }
      crystalMatrix[i++] = index;
    }
  }
  
}
void EcalRecHitsValidation::findEndcapMatrix ( int  nCellInX,
int  nCellInY,
int  CentralX,
int  CentralY,
int  CentralZ,
MapType themap 
) [protected]

Definition at line 755 of file EcalRecHitsValidation.cc.

References getHLTprescales::index, DetId::rawId(), and EEDetId::validDetId().

                                                               {
  int goBackInX = nCellInX/2;
  int goBackInY = nCellInY/2;
  crystalMatrix.clear();

   int startX  =  CentralX - goBackInX;
   int startY  =  CentralY - goBackInY;

   for ( int ix = startX; ix < startX+nCellInX; ix ++ ) {

      for( int iy = startY; iy < startY + nCellInY; iy++ ) {

        uint32_t index ;

        if(EEDetId::validDetId(ix,iy,CentralZ)) {
          index = EEDetId(ix,iy,CentralZ).rawId();
        }
        else { continue; }
        crystalMatrix.push_back(index);
      }
   }
}
uint32_t EcalRecHitsValidation::getUnitWithMaxEnergy ( MapType themap) [protected]

Definition at line 710 of file EcalRecHitsValidation.cc.

                                                                    {
  
  //look for max
  uint32_t unitWithMaxEnergy = 0;
  float    maxEnergy = 0.;
  
  MapType::iterator iter;
  for (iter = themap.begin(); iter != themap.end(); iter++) {
    
    if (maxEnergy < (*iter).second) {
      maxEnergy = (*iter).second;       
      unitWithMaxEnergy = (*iter).first;
    }                           
  }
  
  return unitWithMaxEnergy;
}

Member Data Documentation

std::vector<uint32_t> EcalRecHitsValidation::crystalMatrix [private]

Definition at line 145 of file EcalRecHitsValidation.h.

Definition at line 82 of file EcalRecHitsValidation.h.

Definition at line 86 of file EcalRecHitsValidation.h.

Definition at line 89 of file EcalRecHitsValidation.h.

Definition at line 87 of file EcalRecHitsValidation.h.

Definition at line 90 of file EcalRecHitsValidation.h.

Definition at line 88 of file EcalRecHitsValidation.h.

std::string EcalRecHitsValidation::HepMCLabel [private]

Definition at line 77 of file EcalRecHitsValidation.h.

std::string EcalRecHitsValidation::hitsProducer_ [private]

Definition at line 78 of file EcalRecHitsValidation.h.

Definition at line 138 of file EcalRecHitsValidation.h.

Definition at line 110 of file EcalRecHitsValidation.h.

Definition at line 112 of file EcalRecHitsValidation.h.

Definition at line 111 of file EcalRecHitsValidation.h.

Definition at line 134 of file EcalRecHitsValidation.h.

Definition at line 123 of file EcalRecHitsValidation.h.

Definition at line 117 of file EcalRecHitsValidation.h.

Definition at line 120 of file EcalRecHitsValidation.h.

Definition at line 136 of file EcalRecHitsValidation.h.

Definition at line 137 of file EcalRecHitsValidation.h.

Definition at line 98 of file EcalRecHitsValidation.h.

Definition at line 100 of file EcalRecHitsValidation.h.

Definition at line 102 of file EcalRecHitsValidation.h.

Definition at line 95 of file EcalRecHitsValidation.h.

Definition at line 104 of file EcalRecHitsValidation.h.

Definition at line 135 of file EcalRecHitsValidation.h.

Definition at line 126 of file EcalRecHitsValidation.h.

Definition at line 127 of file EcalRecHitsValidation.h.

Definition at line 106 of file EcalRecHitsValidation.h.

Definition at line 108 of file EcalRecHitsValidation.h.

Definition at line 113 of file EcalRecHitsValidation.h.

Definition at line 115 of file EcalRecHitsValidation.h.

Definition at line 114 of file EcalRecHitsValidation.h.

Definition at line 140 of file EcalRecHitsValidation.h.

Definition at line 124 of file EcalRecHitsValidation.h.

Definition at line 118 of file EcalRecHitsValidation.h.

Definition at line 121 of file EcalRecHitsValidation.h.

Definition at line 142 of file EcalRecHitsValidation.h.

Definition at line 143 of file EcalRecHitsValidation.h.

Definition at line 99 of file EcalRecHitsValidation.h.

Definition at line 101 of file EcalRecHitsValidation.h.

Definition at line 103 of file EcalRecHitsValidation.h.

Definition at line 96 of file EcalRecHitsValidation.h.

Definition at line 105 of file EcalRecHitsValidation.h.

Definition at line 141 of file EcalRecHitsValidation.h.

Definition at line 130 of file EcalRecHitsValidation.h.

Definition at line 132 of file EcalRecHitsValidation.h.

Definition at line 129 of file EcalRecHitsValidation.h.

Definition at line 131 of file EcalRecHitsValidation.h.

Definition at line 107 of file EcalRecHitsValidation.h.

Definition at line 109 of file EcalRecHitsValidation.h.

Definition at line 119 of file EcalRecHitsValidation.h.

Definition at line 122 of file EcalRecHitsValidation.h.

Definition at line 97 of file EcalRecHitsValidation.h.

Definition at line 92 of file EcalRecHitsValidation.h.

Definition at line 93 of file EcalRecHitsValidation.h.

Definition at line 94 of file EcalRecHitsValidation.h.

std::string EcalRecHitsValidation::outputFile_ [private]

Definition at line 84 of file EcalRecHitsValidation.h.

Definition at line 80 of file EcalRecHitsValidation.h.