CMS 3D CMS Logo

EcalRawToRecHitByproductProducer.cc

Go to the documentation of this file.
00001 #include "EventFilter/EcalRawToDigi/plugins/EcalRawToRecHitByproductProducer.h"
00002 #include "EventFilter/EcalRawToDigi/interface/EcalUnpackerWorkerRecord.h"
00003 #include "EventFilter/EcalRawToDigi/interface/EcalUnpackerWorker.h"
00004 
00005 
00006 EcalRawToRecHitByproductProducer::EcalRawToRecHitByproductProducer(const edm::ParameterSet& iConfig)
00007 {
00008   workerName_ = iConfig.getParameter<std::string>("workerName");
00009 
00010   produces<EBDigiCollection>("ebDigis"); 
00011   produces<EEDigiCollection>("eeDigis");
00012 
00013   produces<EBSrFlagCollection>();
00014   produces<EESrFlagCollection>();
00015   produces<EcalRawDataCollection>();
00016   produces<EcalPnDiodeDigiCollection>();
00017   produces<EcalTrigPrimDigiCollection>("EcalTriggerPrimitives");
00018   
00019   // Integrity for xtal data
00020   produces<EBDetIdCollection>("EcalIntegrityGainErrors");
00021   produces<EBDetIdCollection>("EcalIntegrityGainSwitchErrors");
00022   produces<EBDetIdCollection>("EcalIntegrityChIdErrors");
00023 
00024   // Integrity for xtal data - EE specific (to be rivisited towards EB+EE common collection)
00025   produces<EEDetIdCollection>("EcalIntegrityGainErrors");
00026   produces<EEDetIdCollection>("EcalIntegrityGainSwitchErrors");
00027   produces<EEDetIdCollection>("EcalIntegrityChIdErrors");
00028 
00029   // Integrity Errors
00030   produces<EcalElectronicsIdCollection>("EcalIntegrityTTIdErrors");
00031   produces<EcalElectronicsIdCollection>("EcalIntegrityBlockSizeErrors");
00032  
00033   // Mem channels' integrity
00034   produces<EcalElectronicsIdCollection>("EcalIntegrityMemTtIdErrors");
00035   produces<EcalElectronicsIdCollection>("EcalIntegrityMemBlockSizeErrors");
00036   produces<EcalElectronicsIdCollection>("EcalIntegrityMemChIdErrors");
00037   produces<EcalElectronicsIdCollection>("EcalIntegrityMemGainErrors");
00038 }
00039 
00040 
00041 // ------------ method called to produce the data  ------------
00042 void
00043 EcalRawToRecHitByproductProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup)
00044 {
00045   //retrieve the unpacker worker
00046   edm::ESHandle<EcalUnpackerWorker> worker;
00047   iSetup.get<EcalUnpackerWorkerRecord>().get(workerName_, worker);
00048   LogDebug("EcalRawToRecHit|Byproducts")<<"worker retrieved.";
00049 
00050   //prepare output collections
00051   std::auto_ptr<EBDigiCollection> productDigisEB(worker->productDigisEB);
00052   
00053   // create the collection of Ecal Digis
00054   std::auto_ptr<EEDigiCollection> productDigisEE(worker->productDigisEE);
00055 
00056   // create the collection for headers
00057   std::auto_ptr<EcalRawDataCollection> productDccHeaders(worker->productDccHeaders);
00058 
00059   // create the collection for invalid gains
00060   std::auto_ptr< EBDetIdCollection> productInvalidGains(worker->productInvalidGains);
00061 
00062   // create the collection for invalid gain Switch
00063   std::auto_ptr< EBDetIdCollection> productInvalidGainsSwitch(worker->productInvalidGainsSwitch);
00064   
00065   // create the collection for invalid chids
00066   std::auto_ptr< EBDetIdCollection> productInvalidChIds(worker->productInvalidChIds);
00067   
00069     
00070   // create the collection for invalid gains
00071   std::auto_ptr<EEDetIdCollection> productInvalidEEGains(worker->productInvalidEEGains);
00072     
00073   // create the collection for invalid gain Switch
00074   std::auto_ptr<EEDetIdCollection> productInvalidEEGainsSwitch(worker->productInvalidEEGainsSwitch);
00075     
00076   // create the collection for invalid chids
00077   std::auto_ptr<EEDetIdCollection> productInvalidEEChIds(worker->productInvalidEEChIds);
00078   
00080     
00081   // create the collection for EB srflags       
00082   std::auto_ptr<EBSrFlagCollection> productEBSrFlags(worker->productEBSrFlags);
00083   
00084   // create the collection for EB srflags       
00085   std::auto_ptr<EESrFlagCollection> productEESrFlags(worker->productEESrFlags);
00086   
00087   // create the collection for ecal trigger primitives
00088   std::auto_ptr<EcalTrigPrimDigiCollection> productEcalTps(worker->productTps);
00090 
00091   // create the collection for invalid TTIds
00092   std::auto_ptr<EcalElectronicsIdCollection> productInvalidTTIds(worker->productInvalidTTIds);
00093   
00094   // create the collection for invalid BlockLengths
00095   std::auto_ptr<EcalElectronicsIdCollection> productInvalidBlockLengths(worker->productInvalidBlockLengths);
00096   
00097   // MEMs Collections
00098   // create the collection for the Pn Diode Digis
00099   std::auto_ptr<EcalPnDiodeDigiCollection> productPnDiodeDigis(worker->productPnDiodeDigis);
00100   
00101   // create the collection for invalid Mem Tt id 
00102   std::auto_ptr<EcalElectronicsIdCollection> productInvalidMemTtIds(worker->productInvalidMemTtIds);
00103   
00104   // create the collection for invalid Mem Block Size 
00105   std::auto_ptr<EcalElectronicsIdCollection> productInvalidMemBlockSizes(worker->productInvalidMemBlockSizes);
00106   
00107   // create the collection for invalid Mem Block Size 
00108   std::auto_ptr<EcalElectronicsIdCollection> productInvalidMemChIds(worker->productInvalidMemChIds);
00109   
00110   // create the collection for invalid Mem Gain Errors 
00111   std::auto_ptr<EcalElectronicsIdCollection> productInvalidMemGains(worker->productInvalidMemGains);
00112   
00113 
00114   //---------------------------   
00115   //write outputs to the event
00116   //---------------------------   
00117   iEvent.put(productDccHeaders); 
00118   iEvent.put(productInvalidGains,"EcalIntegrityGainErrors");
00119   iEvent.put(productInvalidGainsSwitch, "EcalIntegrityGainSwitchErrors");
00120   iEvent.put(productInvalidChIds, "EcalIntegrityChIdErrors");
00121   // EE (leaving for now the same names as in EB)
00122   iEvent.put(productInvalidEEGains,"EcalIntegrityGainErrors");
00123   iEvent.put(productInvalidEEGainsSwitch, "EcalIntegrityGainSwitchErrors");
00124   iEvent.put(productInvalidEEChIds, "EcalIntegrityChIdErrors");
00125   // EE
00126   iEvent.put(productInvalidTTIds,"EcalIntegrityTTIdErrors");
00127   iEvent.put(productInvalidBlockLengths,"EcalIntegrityBlockSizeErrors");
00128   iEvent.put(productPnDiodeDigis);
00129   // errors  
00130   iEvent.put(productInvalidMemTtIds,"EcalIntegrityMemTtIdErrors");
00131   iEvent.put(productInvalidMemBlockSizes,"EcalIntegrityMemBlockSizeErrors");
00132   iEvent.put(productInvalidMemChIds,"EcalIntegrityMemChIdErrors");
00133   iEvent.put(productInvalidMemGains,"EcalIntegrityMemGainErrors");
00134 
00135   // flags
00136   iEvent.put(productEBSrFlags);
00137   iEvent.put(productEESrFlags);
00138 
00139   // trigger primitives 
00140   iEvent.put(productEcalTps,"EcalTriggerPrimitives");
00141 
00142   //make new collections.
00143   worker->update(iEvent);
00144 }

Generated on Tue Jun 9 17:34:32 2009 for CMSSW by  doxygen 1.5.4