CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

EcalRawToRecHitByproductProducer Class Reference

#include <EcalRawToRecHitByproductProducer.h>

Inheritance diagram for EcalRawToRecHitByproductProducer:
edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

List of all members.

Public Member Functions

 EcalRawToRecHitByproductProducer (const edm::ParameterSet &)
 ~EcalRawToRecHitByproductProducer ()

Private Member Functions

virtual void produce (edm::Event &, const edm::EventSetup &)

Private Attributes

std::string workerName_

Detailed Description

Definition at line 29 of file EcalRawToRecHitByproductProducer.h.


Constructor & Destructor Documentation

EcalRawToRecHitByproductProducer::EcalRawToRecHitByproductProducer ( const edm::ParameterSet iConfig) [explicit]

Definition at line 6 of file EcalRawToRecHitByproductProducer.cc.

References edm::ParameterSet::getParameter(), and workerName_.

{
  workerName_ = iConfig.getParameter<std::string>("workerName");

  produces<EBDigiCollection>("ebDigis"); 
  produces<EEDigiCollection>("eeDigis");

  produces<EBSrFlagCollection>();
  produces<EESrFlagCollection>();
  produces<EcalRawDataCollection>();
  produces<EcalPnDiodeDigiCollection>();
  produces<EcalTrigPrimDigiCollection>("EcalTriggerPrimitives");
  produces<EcalPSInputDigiCollection>("EcalPseudoStripInputs");
  
  // Integrity for xtal data
  produces<EBDetIdCollection>("EcalIntegrityGainErrors");
  produces<EBDetIdCollection>("EcalIntegrityGainSwitchErrors");
  produces<EBDetIdCollection>("EcalIntegrityChIdErrors");

  // Integrity for xtal data - EE specific (to be rivisited towards EB+EE common collection)
  produces<EEDetIdCollection>("EcalIntegrityGainErrors");
  produces<EEDetIdCollection>("EcalIntegrityGainSwitchErrors");
  produces<EEDetIdCollection>("EcalIntegrityChIdErrors");

  // Integrity Errors
  produces<EcalElectronicsIdCollection>("EcalIntegrityTTIdErrors");
  produces<EcalElectronicsIdCollection>("EcalIntegrityZSXtalIdErrors");
  produces<EcalElectronicsIdCollection>("EcalIntegrityBlockSizeErrors");
 
  // Mem channels' integrity
  produces<EcalElectronicsIdCollection>("EcalIntegrityMemTtIdErrors");
  produces<EcalElectronicsIdCollection>("EcalIntegrityMemBlockSizeErrors");
  produces<EcalElectronicsIdCollection>("EcalIntegrityMemChIdErrors");
  produces<EcalElectronicsIdCollection>("EcalIntegrityMemGainErrors");
}
EcalRawToRecHitByproductProducer::~EcalRawToRecHitByproductProducer ( ) [inline]

Definition at line 32 of file EcalRawToRecHitByproductProducer.h.

{};

Member Function Documentation

void EcalRawToRecHitByproductProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
) [private, virtual]

Implements edm::EDProducer.

Definition at line 45 of file EcalRawToRecHitByproductProducer.cc.

References edm::EventSetup::get(), LogDebug, EcalUnpackerWorker::productDccHeaders, EcalUnpackerWorker::productDigisEB, EcalUnpackerWorker::productDigisEE, EcalUnpackerWorker::productEBSrFlags, EcalUnpackerWorker::productEESrFlags, EcalUnpackerWorker::productInvalidBlockLengths, EcalUnpackerWorker::productInvalidChIds, EcalUnpackerWorker::productInvalidEEChIds, EcalUnpackerWorker::productInvalidEEGains, EcalUnpackerWorker::productInvalidEEGainsSwitch, EcalUnpackerWorker::productInvalidGains, EcalUnpackerWorker::productInvalidGainsSwitch, EcalUnpackerWorker::productInvalidMemBlockSizes, EcalUnpackerWorker::productInvalidMemChIds, EcalUnpackerWorker::productInvalidMemGains, EcalUnpackerWorker::productInvalidMemTtIds, EcalUnpackerWorker::productInvalidTTIds, EcalUnpackerWorker::productInvalidZSXtalIds, EcalUnpackerWorker::productPnDiodeDigis, EcalUnpackerWorker::productPSs, EcalUnpackerWorker::productTps, edm::Event::put(), EcalUnpackerWorker::update(), and workerName_.

{
  //retrieve the unpacker worker
  edm::ESHandle<EcalUnpackerWorkerBase> workerESH;
  iSetup.get<EcalUnpackerWorkerRecord>().get(workerName_, workerESH);
  const EcalUnpackerWorker * worker =  dynamic_cast<const EcalUnpackerWorker *>(&*workerESH);
  if (!worker) 
    edm::LogError("IncorrectConfiguration")<<"worker "<< workerName_ <<" could not be cast in EcalUnpackerWorker type."
                                               <<" this must be a configuration mistake. Expect a segfault right now.";

  LogDebug("EcalRawToRecHit|Byproducts")<<"worker retrieved.";

  //prepare output collections
  std::auto_ptr<EBDigiCollection> productDigisEB(worker->productDigisEB);
  
  // create the collection of Ecal Digis
  std::auto_ptr<EEDigiCollection> productDigisEE(worker->productDigisEE);

  // create the collection for headers
  std::auto_ptr<EcalRawDataCollection> productDccHeaders(worker->productDccHeaders);

  // create the collection for invalid gains
  std::auto_ptr< EBDetIdCollection> productInvalidGains(worker->productInvalidGains);

  // create the collection for invalid gain Switch
  std::auto_ptr< EBDetIdCollection> productInvalidGainsSwitch(worker->productInvalidGainsSwitch);
  
  // create the collection for invalid chids
  std::auto_ptr< EBDetIdCollection> productInvalidChIds(worker->productInvalidChIds);
  
    
  // create the collection for invalid gains
  std::auto_ptr<EEDetIdCollection> productInvalidEEGains(worker->productInvalidEEGains);
    
  // create the collection for invalid gain Switch
  std::auto_ptr<EEDetIdCollection> productInvalidEEGainsSwitch(worker->productInvalidEEGainsSwitch);
    
  // create the collection for invalid chids
  std::auto_ptr<EEDetIdCollection> productInvalidEEChIds(worker->productInvalidEEChIds);
  
    
  // create the collection for EB srflags       
  std::auto_ptr<EBSrFlagCollection> productEBSrFlags(worker->productEBSrFlags);
  
  // create the collection for EB srflags       
  std::auto_ptr<EESrFlagCollection> productEESrFlags(worker->productEESrFlags);
  
  // create the collection for ecal trigger primitives
  std::auto_ptr<EcalTrigPrimDigiCollection> productEcalTps(worker->productTps);

  // create the collection for ecal trigger primitives
  std::auto_ptr<EcalPSInputDigiCollection> productEcalPSs(worker->productPSs);


  // create the collection for invalid TTIds
  std::auto_ptr<EcalElectronicsIdCollection> productInvalidTTIds(worker->productInvalidTTIds);
 
  // create the collection for invalid XtalIds
  std::auto_ptr<EcalElectronicsIdCollection> productInvalidZSXtalIds(worker->productInvalidZSXtalIds);
 
  // create the collection for invalid BlockLengths
  std::auto_ptr<EcalElectronicsIdCollection> productInvalidBlockLengths(worker->productInvalidBlockLengths);
  
  // MEMs Collections
  // create the collection for the Pn Diode Digis
  std::auto_ptr<EcalPnDiodeDigiCollection> productPnDiodeDigis(worker->productPnDiodeDigis);
  
  // create the collection for invalid Mem Tt id 
  std::auto_ptr<EcalElectronicsIdCollection> productInvalidMemTtIds(worker->productInvalidMemTtIds);
  
  // create the collection for invalid Mem Block Size 
  std::auto_ptr<EcalElectronicsIdCollection> productInvalidMemBlockSizes(worker->productInvalidMemBlockSizes);
  
  // create the collection for invalid Mem Block Size 
  std::auto_ptr<EcalElectronicsIdCollection> productInvalidMemChIds(worker->productInvalidMemChIds);
  
  // create the collection for invalid Mem Gain Errors 
  std::auto_ptr<EcalElectronicsIdCollection> productInvalidMemGains(worker->productInvalidMemGains);
  

  //---------------------------   
  //write outputs to the event
  //---------------------------   
  iEvent.put(productDccHeaders); 
  iEvent.put(productInvalidGains,"EcalIntegrityGainErrors");
  iEvent.put(productInvalidGainsSwitch, "EcalIntegrityGainSwitchErrors");
  iEvent.put(productInvalidChIds, "EcalIntegrityChIdErrors");
  // EE (leaving for now the same names as in EB)
  iEvent.put(productInvalidEEGains,"EcalIntegrityGainErrors");
  iEvent.put(productInvalidEEGainsSwitch, "EcalIntegrityGainSwitchErrors");
  iEvent.put(productInvalidEEChIds, "EcalIntegrityChIdErrors");
  // EE
  iEvent.put(productInvalidTTIds,"EcalIntegrityTTIdErrors");
  iEvent.put(productInvalidZSXtalIds,"EcalIntegrityZSXtalIdErrors");
  iEvent.put(productInvalidBlockLengths,"EcalIntegrityBlockSizeErrors");
  iEvent.put(productPnDiodeDigis);
  // errors  
  iEvent.put(productInvalidMemTtIds,"EcalIntegrityMemTtIdErrors");
  iEvent.put(productInvalidMemBlockSizes,"EcalIntegrityMemBlockSizeErrors");
  iEvent.put(productInvalidMemChIds,"EcalIntegrityMemChIdErrors");
  iEvent.put(productInvalidMemGains,"EcalIntegrityMemGainErrors");

  // flags
  iEvent.put(productEBSrFlags);
  iEvent.put(productEESrFlags);

  // trigger primitives 
  iEvent.put(productEcalTps,"EcalTriggerPrimitives");
  iEvent.put(productEcalPSs,"EcalPseudoStripInputs");

  //make new collections.
  worker->update(iEvent);
}

Member Data Documentation

Definition at line 37 of file EcalRawToRecHitByproductProducer.h.

Referenced by EcalRawToRecHitByproductProducer(), and produce().