CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Attributes
EcalDetIdToBeRecoveredProducer Class Reference

#include <EcalDetIdToBeRecoveredProducer.h>

Inheritance diagram for EcalDetIdToBeRecoveredProducer:
edm::stream::EDProducer<> edm::stream::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

void beginRun (edm::Run const &run, const edm::EventSetup &es) final
 
 EcalDetIdToBeRecoveredProducer (const edm::ParameterSet &ps)
 
void produce (edm::Event &evt, const edm::EventSetup &es) final
 
 ~EcalDetIdToBeRecoveredProducer () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
- Public Member Functions inherited from edm::stream::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
virtual ~ProducerBase () noexcept(false)
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::stream::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Attributes

const EcalChannelStatusMapchStatus_
 
std::string ebDetIdCollection_
 
edm::EDGetTokenT< EBDetIdCollectionebIntegrityChIdErrorsToken_
 
edm::EDGetTokenT< EBDetIdCollectionebIntegrityGainErrorsToken_
 
edm::EDGetTokenT< EBDetIdCollectionebIntegrityGainSwitchErrorsToken_
 
edm::EDGetTokenT< EBSrFlagCollectionebSrFlagToken_
 
const EcalElectronicsMappingecalMapping_
 
std::string eeDetIdCollection_
 
edm::EDGetTokenT< EEDetIdCollectioneeIntegrityChIdErrorsToken_
 
edm::EDGetTokenT< EEDetIdCollectioneeIntegrityGainErrorsToken_
 
edm::EDGetTokenT< EEDetIdCollectioneeIntegrityGainSwitchErrorsToken_
 
edm::EDGetTokenT< EESrFlagCollectioneeSrFlagToken_
 
edm::EDGetTokenT< EcalElectronicsIdCollectionintegrityBlockSizeErrorsToken_
 
edm::EDGetTokenT< EcalElectronicsIdCollectionintegrityTTIdErrorsToken_
 
std::string scDetIdCollection_
 
std::string ttDetIdCollection_
 
edm::ESHandle< EcalTrigTowerConstituentsMapttMap_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDProducerBase
typedef EDProducerAdaptorBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

produce ECAL rechits from uncalibrated rechits

$Id: $Date: $Revision:

Author
Federico Ferri, CEA-Saclay IRFU/SPP

Definition at line 30 of file EcalDetIdToBeRecoveredProducer.h.

Constructor & Destructor Documentation

EcalDetIdToBeRecoveredProducer::EcalDetIdToBeRecoveredProducer ( const edm::ParameterSet ps)
explicit

Definition at line 23 of file EcalDetIdToBeRecoveredProducer.cc.

References ebDetIdCollection_, ebIntegrityChIdErrorsToken_, ebIntegrityGainErrorsToken_, ebIntegrityGainSwitchErrorsToken_, ebSrFlagToken_, eeDetIdCollection_, eeIntegrityChIdErrorsToken_, eeIntegrityGainErrorsToken_, eeIntegrityGainSwitchErrorsToken_, eeSrFlagToken_, edm::ParameterSet::getParameter(), integrityBlockSizeErrorsToken_, integrityTTIdErrorsToken_, scDetIdCollection_, AlCaHLTBitMon_QueryRunRegistry::string, and ttDetIdCollection_.

24 {
25  // SRP collections
26  ebSrFlagToken_ = consumes<EBSrFlagCollection>(ps.getParameter<edm::InputTag>("ebSrFlagCollection"));
27  eeSrFlagToken_ = consumes<EESrFlagCollection>(ps.getParameter<edm::InputTag>("eeSrFlagCollection"));
28 
29  // Integrity for xtal data
30  ebIntegrityGainErrorsToken_ = consumes<EBDetIdCollection>(ps.getParameter<edm::InputTag>("ebIntegrityGainErrors"));
31  ebIntegrityGainSwitchErrorsToken_ = consumes<EBDetIdCollection>(ps.getParameter<edm::InputTag>("ebIntegrityGainSwitchErrors"));
32  ebIntegrityChIdErrorsToken_ = consumes<EBDetIdCollection>(ps.getParameter<edm::InputTag>("ebIntegrityChIdErrors"));
33 
34  // Integrity for xtal data - EE specific (to be rivisited towards EB+EE common collection)
35  eeIntegrityGainErrorsToken_ = consumes<EEDetIdCollection>(ps.getParameter<edm::InputTag>("eeIntegrityGainErrors"));
36  eeIntegrityGainSwitchErrorsToken_ = consumes<EEDetIdCollection>(ps.getParameter<edm::InputTag>("eeIntegrityGainSwitchErrors"));
37  eeIntegrityChIdErrorsToken_ = consumes<EEDetIdCollection>(ps.getParameter<edm::InputTag>("eeIntegrityChIdErrors"));
38 
39  // Integrity Errors
40  integrityTTIdErrorsToken_ = consumes<EcalElectronicsIdCollection>(ps.getParameter<edm::InputTag>("integrityTTIdErrors"));
41  integrityBlockSizeErrorsToken_ = consumes<EcalElectronicsIdCollection>(ps.getParameter<edm::InputTag>("integrityBlockSizeErrors"));
42 
43  // output collections
44  ebDetIdCollection_ = ps.getParameter<std::string>("ebDetIdToBeRecovered");
45  eeDetIdCollection_ = ps.getParameter<std::string>("eeDetIdToBeRecovered");
46  ttDetIdCollection_ = ps.getParameter<std::string>("ebFEToBeRecovered");
47  scDetIdCollection_ = ps.getParameter<std::string>("eeFEToBeRecovered");
48 
49  produces< std::set<EBDetId> >( ebDetIdCollection_ );
50  produces< std::set<EEDetId> >( eeDetIdCollection_ );
51  produces< std::set<EcalTrigTowerDetId> >( ttDetIdCollection_ );
52  produces< std::set<EcalScDetId> >( scDetIdCollection_ );
53 }
T getParameter(std::string const &) const
edm::EDGetTokenT< EcalElectronicsIdCollection > integrityBlockSizeErrorsToken_
edm::EDGetTokenT< EBDetIdCollection > ebIntegrityGainErrorsToken_
edm::EDGetTokenT< EcalElectronicsIdCollection > integrityTTIdErrorsToken_
edm::EDGetTokenT< EEDetIdCollection > eeIntegrityGainSwitchErrorsToken_
edm::EDGetTokenT< EBSrFlagCollection > ebSrFlagToken_
edm::EDGetTokenT< EBDetIdCollection > ebIntegrityGainSwitchErrorsToken_
edm::EDGetTokenT< EEDetIdCollection > eeIntegrityChIdErrorsToken_
edm::EDGetTokenT< EEDetIdCollection > eeIntegrityGainErrorsToken_
edm::EDGetTokenT< EESrFlagCollection > eeSrFlagToken_
edm::EDGetTokenT< EBDetIdCollection > ebIntegrityChIdErrorsToken_
EcalDetIdToBeRecoveredProducer::~EcalDetIdToBeRecoveredProducer ( )
override

Definition at line 56 of file EcalDetIdToBeRecoveredProducer.cc.

57 {
58 }

Member Function Documentation

void EcalDetIdToBeRecoveredProducer::beginRun ( edm::Run const &  run,
const edm::EventSetup es 
)
final

Definition at line 61 of file EcalDetIdToBeRecoveredProducer.cc.

References chStatus_, ecalMapping_, edm::EventSetup::get(), edm::ESHandle< T >::product(), and ttMap_.

62 {
64  es.get<EcalMappingRcd>().get(pEcalMapping);
65  ecalMapping_ = pEcalMapping.product();
66 
68  es.get<EcalChannelStatusRcd>().get(pChStatus);
69  chStatus_ = pChStatus.product();
70 
71  es.get<IdealGeometryRecord>().get(ttMap_);
72 }
edm::ESHandle< EcalTrigTowerConstituentsMap > ttMap_
const T & get() const
Definition: EventSetup.h:55
const EcalElectronicsMapping * ecalMapping_
T const * product() const
Definition: ESHandle.h:86
void EcalDetIdToBeRecoveredProducer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 319 of file EcalDetIdToBeRecoveredProducer.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), DEFINE_FWK_MODULE, and AlCaHLTBitMon_QueryRunRegistry::string.

319  {
321  desc.add<edm::InputTag>("ebIntegrityChIdErrors",edm::InputTag("ecalDigis","EcalIntegrityChIdErrors"));
322  desc.add<std::string>("ebDetIdToBeRecovered","ebDetId");
323  desc.add<edm::InputTag>("integrityTTIdErrors",edm::InputTag("ecalDigis","EcalIntegrityTTIdErrors"));
324  desc.add<edm::InputTag>("eeIntegrityGainErrors",edm::InputTag("ecalDigis","EcalIntegrityGainErrors"));
325  desc.add<std::string>("ebFEToBeRecovered","ebFE");
326  desc.add<edm::InputTag>("ebIntegrityGainErrors",edm::InputTag("ecalDigis","EcalIntegrityGainErrors"));
327  desc.add<std::string>("eeDetIdToBeRecovered","eeDetId");
328  desc.add<edm::InputTag>("eeIntegrityGainSwitchErrors",edm::InputTag("ecalDigis","EcalIntegrityGainSwitchErrors"));
329  desc.add<edm::InputTag>("eeIntegrityChIdErrors",edm::InputTag("ecalDigis","EcalIntegrityChIdErrors"));
330  desc.add<edm::InputTag>("ebIntegrityGainSwitchErrors",edm::InputTag("ecalDigis","EcalIntegrityGainSwitchErrors"));
331  desc.add<edm::InputTag>("ebSrFlagCollection",edm::InputTag("ecalDigis"));
332  desc.add<std::string>("eeFEToBeRecovered","eeFE");
333  desc.add<edm::InputTag>("integrityBlockSizeErrors",edm::InputTag("ecalDigis","EcalIntegrityBlockSizeErrors"));
334  desc.add<edm::InputTag>("eeSrFlagCollection",edm::InputTag("ecalDigis"));
335  descriptions.add("ecalDetIdToBeRecovered",desc);
336 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void EcalDetIdToBeRecoveredProducer::produce ( edm::Event evt,
const edm::EventSetup es 
)
final

Definition at line 82 of file EcalDetIdToBeRecoveredProducer.cc.

References edm::EDCollection< T >::begin(), edm::SortedCollection< T, SORT >::begin(), chStatus_, coll, EcalTrigTowerConstituentsMap::constituentsOf(), PVValHelper::dx, PVValHelper::dy, ebDetIdCollection_, ecalDetIdToBeRecovered_cfi::ebIntegrityChIdErrors, ebIntegrityChIdErrorsToken_, ecalDetIdToBeRecovered_cfi::ebIntegrityGainErrors, ebIntegrityGainErrorsToken_, ecalDetIdToBeRecovered_cfi::ebIntegrityGainSwitchErrors, ebIntegrityGainSwitchErrorsToken_, ebSrFlagToken_, EcalBarrel, EcalEndcap, ecalMapping_, eeDetIdCollection_, ecalDetIdToBeRecovered_cfi::eeIntegrityChIdErrors, eeIntegrityChIdErrorsToken_, ecalDetIdToBeRecovered_cfi::eeIntegrityGainErrors, eeIntegrityGainErrorsToken_, ecalDetIdToBeRecovered_cfi::eeIntegrityGainSwitchErrors, eeIntegrityGainSwitchErrorsToken_, eeSrFlagToken_, edm::SortedCollection< T, SORT >::empty(), edm::EDCollection< T >::end(), EcalCondObjectContainer< T >::end(), edm::SortedCollection< T, SORT >::end(), EcalCondObjectContainer< T >::find(), RemoveAddSevLevel::flag, edm::Event::getByToken(), EcalElectronicsMapping::getDetId(), mps_fire::i, include(), ecalDetIdToBeRecovered_cfi::integrityBlockSizeErrors, integrityBlockSizeErrorsToken_, ecalDetIdToBeRecovered_cfi::integrityTTIdErrors, integrityTTIdErrorsToken_, EcalScDetId::ix(), EcalScDetId::iy(), eostools::move(), edm::EDCollection< T >::push_back(), edm::Event::put(), scDetIdCollection_, edm::EDCollection< T >::size(), EcalSrFlag::SRF_FORCED_MASK, EcalSrFlag::SRF_FULL, EcalElectronicsId::subdet(), lumiQTWidget::t, EBDetId::tower(), EcalTrigTowerConstituentsMap::towerOf(), ttDetIdCollection_, ecaldqm::ttId(), ttMap_, EEDetId::validDetId(), and EcalScDetId::zside().

83 {
84  std::vector< edm::Handle<EBDetIdCollection> > ebDetIdColls;
85  std::vector< edm::Handle<EEDetIdCollection> > eeDetIdColls;
86  std::vector< edm::Handle<EcalElectronicsIdCollection> > ttColls;
87 
88  auto ebDetIdToRecover = std::make_unique<std::set<EBDetId>>(); // isolated channels to be recovered
89  auto eeDetIdToRecover = std::make_unique<std::set<EEDetId>>(); // isolated channels to be recovered
90  auto ebTTDetIdToRecover = std::make_unique<std::set<EcalTrigTowerDetId>>(); // tt to be recovered
91  auto eeSCDetIdToRecover = std::make_unique<std::set<EcalScDetId>>(); // sc to be recovered
92 
93  /*
94  * get collections
95  */
96 
97  // Selective Readout Flags
99  ev.getByToken(ebSrFlagToken_, ebSrFlags );
100 
102  ev.getByToken(eeSrFlagToken_, eeSrFlags );
103 
104  // Integrity errors
106  ev.getByToken( ebIntegrityGainErrorsToken_, ebIntegrityGainErrors );
107 
108  ebDetIdColls.push_back( ebIntegrityGainErrors );
109 
111  ev.getByToken( ebIntegrityGainSwitchErrorsToken_, ebIntegrityGainSwitchErrors );
112  ebDetIdColls.push_back( ebIntegrityGainSwitchErrors );
113 
115  ev.getByToken( ebIntegrityChIdErrorsToken_, ebIntegrityChIdErrors );
116  ebDetIdColls.push_back( ebIntegrityChIdErrors );
117 
119  ev.getByToken( eeIntegrityGainErrorsToken_, eeIntegrityGainErrors );
120  eeDetIdColls.push_back( eeIntegrityGainErrors );
121 
123  ev.getByToken( eeIntegrityGainSwitchErrorsToken_, eeIntegrityGainSwitchErrors );
124  eeDetIdColls.push_back( eeIntegrityGainSwitchErrors );
125 
126 
127 
129  ev.getByToken( eeIntegrityChIdErrorsToken_, eeIntegrityChIdErrors );
130  eeDetIdColls.push_back( eeIntegrityChIdErrors );
131 
132 
133 
134 
136  ev.getByToken( integrityTTIdErrorsToken_, integrityTTIdErrors );
137  ttColls.push_back( integrityTTIdErrors );
138 
140  ev.getByToken( integrityBlockSizeErrorsToken_, integrityBlockSizeErrors );
141  ttColls.push_back( integrityBlockSizeErrors );
142 
143  /*
144  * get regions of interest from SRP
145  */
146  // -- Barrel
147  EBDetIdCollection ebSrpDetId;
148  EcalTrigTowerDetIdCollection ebSrpTTDetId;
149  for ( EBSrFlagCollection::const_iterator it = ebSrFlags->begin(); it != ebSrFlags->end(); ++it ) {
150  const int flag = it->value();
151  if ( flag == EcalSrFlag::SRF_FULL || ( flag == EcalSrFlag::SRF_FORCED_MASK) ) {
152  const EcalTrigTowerDetId ttId = it->id();
153  ebSrpTTDetId.push_back( ttId );
154 
155  const std::vector<DetId> vid = ttMap_->constituentsOf( ttId );
156 
157  for ( std::vector<DetId>::const_iterator itId = vid.begin(); itId != vid.end(); ++itId ) {
158  ebSrpDetId.push_back( *itId );
159  }
160  }
161  }
162  // -- Endcap
163  EEDetIdCollection eeSrpDetId;
164  //EcalTrigTowerDetIdCollection eeSrpTTDetId;
165  for ( EESrFlagCollection::const_iterator it = eeSrFlags->begin(); it != eeSrFlags->end(); ++it ) {
166  const int flag = it->value();
167  if ( flag == EcalSrFlag::SRF_FULL || ( flag == EcalSrFlag::SRF_FORCED_MASK) ) {
168  //EcalTrigTowerDetId ttId = it->id();
169  //eeSrpTTDetId.push_back( ttId );
170  const EcalScDetId scId( it->id() );
171  // not clear how to get the vector of DetId constituents of a SC...
173  //std::vector<DetId> vid = ecalMapping_->dccTowerConstituents( eId.dccId(), eId.towerId() );
174  std::vector<DetId> vid;
175  for(int dx=1; dx<=5; ++dx){
176  for(int dy=1; dy<=5; ++dy){
177  const int ix = (scId.ix()-1)*5 + dx;
178  const int iy = (scId.iy()-1)*5 + dy;
179  const int iz = scId.zside();
180  if(EEDetId::validDetId(ix, iy, iz)){
181  vid.push_back(EEDetId(ix, iy, iz));
182  }
183  }
184  }
186  //std::vector<DetId> vid = ttMap_->constituentsOf( ttId );
187  for ( std::vector<DetId>::const_iterator itId = vid.begin(); itId != vid.end(); ++itId ) {
188  eeSrpDetId.push_back( *itId );
189  }
190  }
191  }
192  // SRP switched off: get the list from the DB
193  if ( ebSrFlags->empty() ) {
194  }
195  // SRP switched off: get the list from the DB
196  if ( eeSrFlags->empty() ) {
197  }
198 
199  /*
200  * get OR of integrity error collections
201  * in interesting regions flagged by SRP
202  * and insert them in the list of DetId to recover
203  */
204  // -- Barrel
205  for ( std::vector<edm::Handle<EBDetIdCollection> >::const_iterator it = ebDetIdColls.begin(); it != ebDetIdColls.end(); ++it )
206  {
207  const EBDetIdCollection * idc = it->product();
208  for ( EBDetIdCollection::const_iterator jt = idc->begin(); jt != idc->end(); ++jt )
209  if (include(ebSrpDetId, *jt))
210  ebDetIdToRecover->insert( *jt );
211  }
212  // -- Endcap
213  for ( std::vector<edm::Handle<EEDetIdCollection> >::const_iterator it = eeDetIdColls.begin(); it != eeDetIdColls.end(); ++it )
214  {
215  const EEDetIdCollection * idc = it->product();
216  for ( EEDetIdCollection::const_iterator jt = idc->begin(); jt != idc->end(); ++jt )
217  if (include(eeSrpDetId, *jt))
218  eeDetIdToRecover->insert( *jt );
219  }
220 
221  /*
222  * find isolated dead channels (from DB info) --> chStatus 10, 11, 12
223  * and group of dead channels w/ trigger(from DB info) --> chStatus 13
224  * in interesting regions flagged by SRP
225  */
226  // -- Barrel
227  for ( EBDetIdCollection::const_iterator itId = ebSrpDetId.begin(); itId != ebSrpDetId.end(); ++itId ) {
229  if ( chit != chStatus_->end() ) {
230  const int flag = (*chit).getStatusCode();
231  if ( flag >= 10 && flag <= 12) { // FIXME -- avoid hardcoded values...
232  ebDetIdToRecover->insert( *itId );
233  } else if ( flag == 13 || flag == 14 ) { // FIXME -- avoid hardcoded values...
234  ebTTDetIdToRecover->insert( (*itId).tower() );
235  }
236  } else {
237  edm::LogError("EcalDetIdToBeRecoveredProducer") << "No channel status found for xtal "
238  << (*itId).rawId()
239  << "! something wrong with EcalChannelStatus in your DB? ";
240  }
241  }
242  // -- Endcap
243  for ( EEDetIdCollection::const_iterator itId = eeSrpDetId.begin(); itId != eeSrpDetId.end(); ++itId ) {
245  if ( chit != chStatus_->end() ) {
246  int flag = (*chit).getStatusCode() ;
247  if ( flag >= 10 && flag <= 12) { // FIXME -- avoid hardcoded values...
248  eeDetIdToRecover->insert( *itId );
249  } else if ( flag == 13 || flag == 14 ) { // FIXME -- avoid hardcoded values...
250  eeSCDetIdToRecover->insert( EcalScDetId(1+((*itId).ix()-1)/5,1+((*itId).iy()-1)/5,(*itId).zside()) );
251  }
252  } else {
253  edm::LogError("EcalDetIdToBeRecoveredProducer") << "No channel status found for xtal "
254  << (*itId).rawId()
255  << "! something wrong with EcalChannelStatus in your DB? ";
256  }
257  }
258 
259 
260  // loop over electronics id associated with TT and SC
261  for (size_t t = 0; t < ttColls.size(); ++t) {
262  const EcalElectronicsIdCollection& coll = *(ttColls[t]);
263 
264  for (size_t i = 0; i < coll.size(); ++i)
265  {
266  const EcalElectronicsId elId = coll[i];
267  const EcalSubdetector subdet = elId.subdet();
268  const DetId detId = ecalMapping_->getDetId(elId);
269 
270  if (subdet == EcalBarrel) { // elId pointing to TT
271  // get list of crystals corresponding to TT
272  const EcalTrigTowerDetId ttId( ttMap_->towerOf(detId) );
273  const std::vector<DetId>& vid = ttMap_->constituentsOf(ttId);
274 
275  for (size_t j = 0; j < vid.size(); ++j) {
276  const EBDetId ebdi(vid[j]);
277  if (include(ebSrpDetId, ebdi)) {
278  ebDetIdToRecover->insert(ebdi);
279  ebTTDetIdToRecover->insert(ebdi.tower());
280  }
281  }
282  }
283  else if (subdet == EcalEndcap) { // elId pointing to SC
284  // extract list of crystals corresponding to SC
285  const EcalScDetId scId(detId);
286  std::vector<DetId> vid;
287  for(int dx=1; dx<=5; ++dx) {
288  for(int dy=1; dy<=5; ++dy) {
289  const int ix = (scId.ix()-1)*5 + dx;
290  const int iy = (scId.iy()-1)*5 + dy;
291  const int iz = scId.zside();
292  if(EEDetId::validDetId(ix, iy, iz))
293  vid.push_back(EEDetId(ix, iy, iz));
294  }
295  }
296 
297  for (size_t j = 0; j < vid.size(); ++j) {
298  const EEDetId eedi(vid[i]);
299  if (include(eeSrpDetId, eedi)) {
300  eeDetIdToRecover->insert(eedi);
301  eeSCDetIdToRecover->insert(EcalScDetId(eedi));
302  }
303  }
304  }
305  else
306  edm::LogWarning("EcalDetIdToBeRecoveredProducer")
307  << "Incorrect EcalSubdetector = " << subdet
308  << " in EcalElectronicsIdCollection collection ";
309  }
310  }
311 
312  // return the collections
313  ev.put(std::move(ebDetIdToRecover), ebDetIdCollection_ );
314  ev.put(std::move(eeDetIdToRecover), eeDetIdCollection_ );
315  ev.put(std::move(ebTTDetIdToRecover), ttDetIdCollection_ );
316  ev.put(std::move(eeSCDetIdToRecover), scDetIdCollection_ );
317 }
size_type size() const
Definition: EDCollection.h:97
const_iterator end() const
Definition: EDCollection.h:153
Ecal readout channel identification [32:20] Unused (so far) [19:13] DCC id [12:6] tower [5:3] strip [...
static const int SRF_FORCED_MASK
Definition: EcalSrFlag.h:29
edm::EDGetTokenT< EcalElectronicsIdCollection > integrityBlockSizeErrorsToken_
std::vector< EBSrFlag >::const_iterator const_iterator
void push_back(T const &t)
Definition: EDCollection.h:67
edm::EDGetTokenT< EBDetIdCollection > ebIntegrityGainErrorsToken_
bool ev
edm::EDGetTokenT< EcalElectronicsIdCollection > integrityTTIdErrorsToken_
unsigned ttId(DetId const &)
EcalTrigTowerDetId towerOf(const DetId &id) const
Get the tower id for this det id (or null if not known)
edm::EDGetTokenT< EEDetIdCollection > eeIntegrityGainSwitchErrorsToken_
static const int SRF_FULL
Definition: EcalSrFlag.h:24
std::vector< DetId > constituentsOf(const EcalTrigTowerDetId &id) const
Get the constituent detids for this tower id.
edm::EDGetTokenT< EBSrFlagCollection > ebSrFlagToken_
EcalSubdetector subdet() const
get the subdet
edm::EDGetTokenT< EBDetIdCollection > ebIntegrityGainSwitchErrorsToken_
edm::EDGetTokenT< EEDetIdCollection > eeIntegrityChIdErrorsToken_
const_iterator end() const
Definition: DetId.h:18
edm::ESHandle< EcalTrigTowerConstituentsMap > ttMap_
const_iterator begin() const
Definition: EDCollection.h:146
JetCorrectorParametersCollection coll
Definition: classes.h:10
static bool validDetId(int crystal_ix, int crystal_iy, int iz)
Definition: EEDetId.h:248
std::vector< Item >::const_iterator const_iterator
DetId getDetId(const EcalElectronicsId &id) const
Get the detid given an electronicsId.
edm::EDGetTokenT< EEDetIdCollection > eeIntegrityGainErrorsToken_
bool include(const CollT &coll, const ItemT &item)
const_iterator find(uint32_t rawId) const
edm::EDGetTokenT< EESrFlagCollection > eeSrFlagToken_
const_iterator end() const
edm::EDGetTokenT< EBDetIdCollection > ebIntegrityChIdErrorsToken_
const EcalElectronicsMapping * ecalMapping_
EcalSubdetector
def move(src, dest)
Definition: eostools.py:510
const_iterator begin() const
std::vector< EBDetId >::const_iterator const_iterator
Definition: EDCollection.h:19

Member Data Documentation

const EcalChannelStatusMap* EcalDetIdToBeRecoveredProducer::chStatus_
private

Definition at line 43 of file EcalDetIdToBeRecoveredProducer.h.

Referenced by beginRun(), and produce().

std::string EcalDetIdToBeRecoveredProducer::ebDetIdCollection_
private

Definition at line 71 of file EcalDetIdToBeRecoveredProducer.h.

Referenced by EcalDetIdToBeRecoveredProducer(), and produce().

edm::EDGetTokenT<EBDetIdCollection> EcalDetIdToBeRecoveredProducer::ebIntegrityChIdErrorsToken_
private

Definition at line 57 of file EcalDetIdToBeRecoveredProducer.h.

Referenced by EcalDetIdToBeRecoveredProducer(), and produce().

edm::EDGetTokenT<EBDetIdCollection> EcalDetIdToBeRecoveredProducer::ebIntegrityGainErrorsToken_
private

Definition at line 55 of file EcalDetIdToBeRecoveredProducer.h.

Referenced by EcalDetIdToBeRecoveredProducer(), and produce().

edm::EDGetTokenT<EBDetIdCollection> EcalDetIdToBeRecoveredProducer::ebIntegrityGainSwitchErrorsToken_
private

Definition at line 56 of file EcalDetIdToBeRecoveredProducer.h.

Referenced by EcalDetIdToBeRecoveredProducer(), and produce().

edm::EDGetTokenT<EBSrFlagCollection> EcalDetIdToBeRecoveredProducer::ebSrFlagToken_
private

Definition at line 51 of file EcalDetIdToBeRecoveredProducer.h.

Referenced by EcalDetIdToBeRecoveredProducer(), and produce().

const EcalElectronicsMapping* EcalDetIdToBeRecoveredProducer::ecalMapping_
private

Definition at line 44 of file EcalDetIdToBeRecoveredProducer.h.

Referenced by beginRun(), and produce().

std::string EcalDetIdToBeRecoveredProducer::eeDetIdCollection_
private

Definition at line 72 of file EcalDetIdToBeRecoveredProducer.h.

Referenced by EcalDetIdToBeRecoveredProducer(), and produce().

edm::EDGetTokenT<EEDetIdCollection> EcalDetIdToBeRecoveredProducer::eeIntegrityChIdErrorsToken_
private

Definition at line 62 of file EcalDetIdToBeRecoveredProducer.h.

Referenced by EcalDetIdToBeRecoveredProducer(), and produce().

edm::EDGetTokenT<EEDetIdCollection> EcalDetIdToBeRecoveredProducer::eeIntegrityGainErrorsToken_
private

Definition at line 60 of file EcalDetIdToBeRecoveredProducer.h.

Referenced by EcalDetIdToBeRecoveredProducer(), and produce().

edm::EDGetTokenT<EEDetIdCollection> EcalDetIdToBeRecoveredProducer::eeIntegrityGainSwitchErrorsToken_
private

Definition at line 61 of file EcalDetIdToBeRecoveredProducer.h.

Referenced by EcalDetIdToBeRecoveredProducer(), and produce().

edm::EDGetTokenT<EESrFlagCollection> EcalDetIdToBeRecoveredProducer::eeSrFlagToken_
private

Definition at line 52 of file EcalDetIdToBeRecoveredProducer.h.

Referenced by EcalDetIdToBeRecoveredProducer(), and produce().

edm::EDGetTokenT<EcalElectronicsIdCollection> EcalDetIdToBeRecoveredProducer::integrityBlockSizeErrorsToken_
private

Definition at line 66 of file EcalDetIdToBeRecoveredProducer.h.

Referenced by EcalDetIdToBeRecoveredProducer(), and produce().

edm::EDGetTokenT<EcalElectronicsIdCollection> EcalDetIdToBeRecoveredProducer::integrityTTIdErrorsToken_
private

Definition at line 65 of file EcalDetIdToBeRecoveredProducer.h.

Referenced by EcalDetIdToBeRecoveredProducer(), and produce().

std::string EcalDetIdToBeRecoveredProducer::scDetIdCollection_
private

Definition at line 74 of file EcalDetIdToBeRecoveredProducer.h.

Referenced by EcalDetIdToBeRecoveredProducer(), and produce().

std::string EcalDetIdToBeRecoveredProducer::ttDetIdCollection_
private

Definition at line 73 of file EcalDetIdToBeRecoveredProducer.h.

Referenced by EcalDetIdToBeRecoveredProducer(), and produce().

edm::ESHandle<EcalTrigTowerConstituentsMap> EcalDetIdToBeRecoveredProducer::ttMap_
private

Definition at line 45 of file EcalDetIdToBeRecoveredProducer.h.

Referenced by beginRun(), and produce().