84 std::vector< edm::Handle<EBDetIdCollection> > ebDetIdColls;
85 std::vector< edm::Handle<EEDetIdCollection> > eeDetIdColls;
86 std::vector< edm::Handle<EcalElectronicsIdCollection> > ttColls;
88 auto ebDetIdToRecover = std::make_unique<std::set<EBDetId>>();
89 auto eeDetIdToRecover = std::make_unique<std::set<EEDetId>>();
90 auto ebTTDetIdToRecover = std::make_unique<std::set<EcalTrigTowerDetId>>();
91 auto eeSCDetIdToRecover = std::make_unique<std::set<EcalScDetId>>();
108 ebDetIdColls.push_back( ebIntegrityGainErrors );
112 ebDetIdColls.push_back( ebIntegrityGainSwitchErrors );
116 ebDetIdColls.push_back( ebIntegrityChIdErrors );
120 eeDetIdColls.push_back( eeIntegrityGainErrors );
124 eeDetIdColls.push_back( eeIntegrityGainSwitchErrors );
130 eeDetIdColls.push_back( eeIntegrityChIdErrors );
137 ttColls.push_back( integrityTTIdErrors );
141 ttColls.push_back( integrityBlockSizeErrors );
150 const int flag = it->value();
157 for ( std::vector<DetId>::const_iterator itId = vid.begin(); itId != vid.end(); ++itId ) {
166 const int flag = it->value();
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();
181 vid.push_back(
EEDetId(ix, iy, iz));
187 for ( std::vector<DetId>::const_iterator itId = vid.begin(); itId != vid.end(); ++itId ) {
193 if ( ebSrFlags->empty() ) {
196 if ( eeSrFlags->
empty() ) {
210 ebDetIdToRecover->insert( *jt );
218 eeDetIdToRecover->insert( *jt );
230 const int flag = (*chit).getStatusCode();
231 if ( flag >= 10 && flag <= 12) {
232 ebDetIdToRecover->insert( *itId );
233 }
else if ( flag == 13 || flag == 14 ) {
234 ebTTDetIdToRecover->insert( (*itId).tower() );
237 edm::LogError(
"EcalDetIdToBeRecoveredProducer") <<
"No channel status found for xtal " 239 <<
"! something wrong with EcalChannelStatus in your DB? ";
246 int flag = (*chit).getStatusCode() ;
247 if ( flag >= 10 && flag <= 12) {
248 eeDetIdToRecover->insert( *itId );
249 }
else if ( flag == 13 || flag == 14 ) {
250 eeSCDetIdToRecover->insert(
EcalScDetId(1+((*itId).ix()-1)/5,1+((*itId).iy()-1)/5,(*itId).zside()) );
253 edm::LogError(
"EcalDetIdToBeRecoveredProducer") <<
"No channel status found for xtal " 255 <<
"! something wrong with EcalChannelStatus in your DB? ";
261 for (
size_t t = 0;
t < ttColls.size(); ++
t) {
264 for (
size_t i = 0;
i < coll.
size(); ++
i)
275 for (
size_t j = 0; j < vid.size(); ++j) {
277 if (
include(ebSrpDetId, ebdi)) {
278 ebDetIdToRecover->insert(ebdi);
279 ebTTDetIdToRecover->insert(ebdi.tower());
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();
293 vid.push_back(
EEDetId(ix, iy, iz));
297 for (
size_t j = 0; j < vid.size(); ++j) {
299 if (
include(eeSrpDetId, eedi)) {
300 eeDetIdToRecover->insert(eedi);
307 <<
"Incorrect EcalSubdetector = " << subdet
308 <<
" in EcalElectronicsIdCollection collection ";
std::string ebDetIdCollection_
const_iterator end() const
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
edm::EDGetTokenT< EcalElectronicsIdCollection > integrityBlockSizeErrorsToken_
std::vector< T >::const_iterator const_iterator
std::string scDetIdCollection_
void push_back(T const &t)
edm::EDGetTokenT< EBDetIdCollection > ebIntegrityGainErrorsToken_
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
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_
std::string ttDetIdCollection_
edm::EDGetTokenT< EEDetIdCollection > eeIntegrityChIdErrorsToken_
const_iterator end() const
edm::ESHandle< EcalTrigTowerConstituentsMap > ttMap_
const_iterator begin() const
ebIntegrityGainSwitchErrors
static bool validDetId(int crystal_ix, int crystal_iy, int iz)
std::vector< Item >::const_iterator const_iterator
DetId getDetId(const EcalElectronicsId &id) const
Get the detid given an electronicsId.
std::string eeDetIdCollection_
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 EcalChannelStatusMap * chStatus_
eeIntegrityGainSwitchErrors
const EcalElectronicsMapping * ecalMapping_
const_iterator begin() const
std::vector< T >::const_iterator const_iterator