137 DetId detId = (*it)->geographicalId();
138 int detid = detId.
rawId();
147 unsigned int nrocs = nROCrows * nROCcolumns;
150 std::map<int, std::pair<int, int>> rocToOfflinePixel;
153 typedef std::vector<sipixelobjects::CablingPathToDetUnit>::const_iterator
IT;
154 for (IT it = path.begin(); it != path.end(); ++it) {
163 rocToOfflinePixel[idInDetUnit] = std::pair<int, int>(global.
row, global.
col);
176 std::map<edm::LuminosityBlockNumber_t, std::map<int, std::vector<int>>> FEDerror25Map =
178 std::map<edm::LuminosityBlockNumber_t, SiPixelDetectorStatus> siPixelStatusMap =
189 for (
unsigned int i = 0;
i < badComponentList.size();
i++) {
192 uint32_t detId = badComponentList[
i].DetID;
193 int detid =
int(detId);
196 for (
int iroc = 0; iroc <
int(nroc); iroc++) {
198 std::map<int, std::pair<int, int>> rocToOfflinePixel =
pixelO2O_[detid];
199 int row = rocToOfflinePixel[iroc].first;
200 int column = rocToOfflinePixel[iroc].second;
211 std::map<edm::LuminosityBlockNumber_t, edm::LuminosityBlockNumber_t> finalIOV;
212 std::map<edm::LuminosityBlockNumber_t, edm::LuminosityBlockNumber_t> fedError25IOV;
213 std::map<edm::LuminosityBlockNumber_t, edm::LuminosityBlockNumber_t> pclIOV;
216 std::map<int, SiPixelQuality*> siPixelQualityStuckTBM_Tag;
227 if (nextIt != FEDerror25Map.end())
228 interval =
int(nextIt->first - it->first);
235 std::map<int, std::vector<int>> tmpFEDerror25 = it->second;
236 for (
std::map<
int, std::vector<int>>::iterator ilist = tmpFEDerror25.begin(); ilist != tmpFEDerror25.end();
238 int detid = ilist->first;
239 uint32_t detId = uint32_t(detid);
243 BadModule_stuckTBM.
DetID = uint32_t(detid);
244 BadModule_FEDerror25.
DetID = uint32_t(detid);
248 BadModule_stuckTBM.
BadRocs = 0;
249 BadModule_FEDerror25.
BadRocs = 0;
250 std::vector<uint32_t> BadRocList_stuckTBM, BadRocList_FEDerror25;
251 std::vector<int>
list = ilist->second;
253 for (
unsigned int i = 0; i < list.size(); i++) {
255 std::map<int, std::pair<int, int>> rocToOfflinePixel =
pixelO2O_[detid];
256 int row = rocToOfflinePixel[iroc].first;
257 int column = rocToOfflinePixel[iroc].second;
259 BadRocList_FEDerror25.push_back(uint32_t(iroc));
260 for (
int iLumi = 0; iLumi <
interval; iLumi++) {
266 BadRocList_stuckTBM.push_back(uint32_t(iroc));
267 for (
int iLumi = 0; iLumi <
interval; iLumi++) {
274 if (BadRocList_stuckTBM.size() ==
sensorSize_[detid])
277 short badrocs_stuckTBM = 0;
278 for (std::vector<uint32_t>::iterator iter = BadRocList_stuckTBM.begin(); iter != BadRocList_stuckTBM.end();
280 badrocs_stuckTBM += 1 << *iter;
283 if (badrocs_stuckTBM != 0) {
284 BadModule_stuckTBM.
BadRocs = badrocs_stuckTBM;
289 if (BadRocList_FEDerror25.size() ==
sensorSize_[detid])
292 short badrocs_FEDerror25 = 0;
293 for (std::vector<uint32_t>::iterator iter = BadRocList_FEDerror25.begin(); iter != BadRocList_FEDerror25.end();
295 badrocs_FEDerror25 += 1 << *iter;
298 if (badrocs_FEDerror25 != 0) {
299 BadModule_FEDerror25.
BadRocs = badrocs_FEDerror25;
305 siPixelQualityStuckTBM_Tag[it->first] = siPixelQuality_stuckTBM;
307 finalIOV[it->first] = it->first;
308 fedError25IOV[it->first] = it->first;
313 delete siPixelQuality_FEDerror25;
319 finalIOV[it->first] = it->first;
320 pclIOV[it->first] = it->first;
324 std::map<edm::LuminosityBlockNumber_t, edm::LuminosityBlockNumber_t>::iterator itIOV;
327 std::map<int, SiPixelQuality*> siPixelQualityPCL_Tag;
328 std::map<int, SiPixelQuality*> siPixelQualityPrompt_Tag;
329 std::map<int, SiPixelQuality*> siPixelQualityOther_Tag;
331 for (itIOV = finalIOV.begin(); itIOV != finalIOV.end(); itIOV++) {
333 std::map<edm::LuminosityBlockNumber_t, edm::LuminosityBlockNumber_t>::iterator nextItIOV =
std::next(itIOV);
334 if (nextItIOV != finalIOV.end())
335 interval =
int(nextItIOV->first - itIOV->first);
343 std::map<int, std::vector<int>> tmpFEDerror25 = FEDerror25Map[lumiFEDerror25];
353 <<
"Tag requested for prompt in low statistics IOV in the " <<
outputBase_ <<
" harvester" << std::endl;
354 siPixelQualityPCL_Tag[itIOV->first] = siPixelQualityPermBad;
355 siPixelQualityPrompt_Tag[itIOV->first] = siPixelQualityPermBad;
358 std::map<int, SiPixelModuleStatus> detectorStatus = tmpSiPixelStatus.
getDetectorStatus();
359 std::map<int, SiPixelModuleStatus>::iterator itModEnd = detectorStatus.end();
360 for (std::map<int, SiPixelModuleStatus>::iterator itMod = detectorStatus.begin(); itMod != itModEnd; ++itMod) {
361 int detid = itMod->first;
362 uint32_t detId = uint32_t(detid);
365 for (
int iroc = 0; iroc < modStatus.
nrocs(); ++iroc) {
367 std::map<int, std::pair<int, int>> rocToOfflinePixel =
pixelO2O_[detid];
368 int row = rocToOfflinePixel[iroc].first;
369 int column = rocToOfflinePixel[iroc].second;
370 for (
int iLumi = 0; iLumi <
interval; iLumi++) {
383 <<
"Tag requested for other in low statistics IOV in the " <<
outputBase_ <<
" harvester" << std::endl;
397 std::map<int, SiPixelModuleStatus> detectorStatus = tmpSiPixelStatus.
getDetectorStatus();
398 std::map<int, SiPixelModuleStatus>::iterator itModEnd = detectorStatus.end();
399 for (std::map<int, SiPixelModuleStatus>::iterator itMod = detectorStatus.begin(); itMod != itModEnd; ++itMod) {
403 int detid = itMod->first;
404 uint32_t detId = uint32_t(detid);
407 double local_threshold = 0.0;
426 BadModulePCL.
DetID = uint32_t(detid);
427 BadModuleOther.
DetID = uint32_t(detid);
433 std::vector<uint32_t> BadRocListPCL, BadRocListOther;
437 std::vector<int> listFEDerror25 = tmpFEDerror25[detid];
439 std::map<int, std::pair<int, int>> rocToOfflinePixel =
pixelO2O_[detid];
440 for (
int iroc = 0; iroc < modStatus.
nrocs(); ++iroc) {
441 unsigned int rocOccupancy = modStatus.
digiOccROC(iroc);
443 int row = rocToOfflinePixel[iroc].first;
444 int column = rocToOfflinePixel[iroc].second;
447 if (rocOccupancy < local_threshold * DetAverage_local) {
450 BadRocListPCL.push_back(uint32_t(iroc));
451 for (
int iLumi = 0; iLumi <
interval; iLumi++) {
456 std::vector<int>::iterator it =
std::find(listFEDerror25.begin(), listFEDerror25.end(), iroc);
461 BadRocListOther.push_back(uint32_t(iroc));
462 for (
int iLumi = 0; iLumi <
interval; iLumi++) {
478 short badrocsPCL = 0;
479 for (std::vector<uint32_t>::iterator iterPCL = BadRocListPCL.begin(); iterPCL != BadRocListPCL.end();
481 badrocsPCL += 1 << *iterPCL;
483 if (badrocsPCL != 0) {
484 BadModulePCL.
BadRocs = badrocsPCL;
489 short badrocsOther = 0;
490 for (std::vector<uint32_t>::iterator iterOther = BadRocListOther.begin(); iterOther != BadRocListOther.end();
492 badrocsOther += 1 << *iterOther;
494 if (badrocsOther != 0) {
495 BadModuleOther.
BadRocs = badrocsOther;
501 BadModulePrompt.
DetID = uint32_t(detid);
505 std::vector<uint32_t> BadRocListPrompt;
506 for (
int iroc = 0; iroc < modStatus.
nrocs(); ++iroc) {
509 BadRocListPrompt.push_back(uint32_t(iroc));
511 std::map<int, std::pair<int, int>> rocToOfflinePixel =
pixelO2O_[detid];
512 int row = rocToOfflinePixel[iroc].first;
513 int column = rocToOfflinePixel[iroc].second;
514 for (
int iLumi = 0; iLumi <
interval; iLumi++) {
524 short badrocsPrompt = 0;
525 for (std::vector<uint32_t>::iterator iterPrompt = BadRocListPrompt.begin();
526 iterPrompt != BadRocListPrompt.end();
528 badrocsPrompt += 1 << *iterPrompt;
530 if (badrocsPrompt != 0) {
531 BadModulePrompt.
BadRocs = badrocsPrompt;
538 siPixelQualityPCL_Tag[itIOV->first] = siPixelQualityPCL;
540 siPixelQualityPrompt_Tag[itIOV->first] = siPixelQualityPrompt;
542 siPixelQualityOther_Tag[itIOV->first] = siPixelQualityOther;
561 itIOV = std::prev(finalIOV.end());
562 SiPixelQuality* lastPrompt = siPixelQualityPrompt_Tag[itIOV->first];
563 SiPixelQuality* lastOther = siPixelQualityOther_Tag[itIOV->first];
576 delete siPixelQualityDummy;
579 delete siPixelQualityPermBad;
void addDisabledModule(disabledModuleType module)
SiPixelCoordinates coord_
virtual int nrows() const =0
virtual int rowsperroc() const =0
bool equal(SiPixelQuality *a, SiPixelQuality *b)
std::map< int, unsigned int > sensorSize_
void init(edm::EventSetup const &)
edm::LuminosityBlockNumber_t endLumiBlock_
constexpr uint32_t rawId() const
get the raw id
bool IsRocBad(const uint32_t &detid, const short &rocNb) const
edm::LuminosityBlockNumber_t stepIOV(edm::LuminosityBlockNumber_t pin, std::map< edm::LuminosityBlockNumber_t, edm::LuminosityBlockNumber_t > IOV)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
virtual std::map< uint32_t, std::vector< sipixelobjects::CablingPathToDetUnit > > det2PathMap() const =0
unsigned int LuminosityBlockNumber_t
SiPixelStatusManager siPixelStatusManager_
identify pixel inside single ROC
global coordinates (row and column in DetUnit, as in PixelDigi)
U second(std::pair< T, U > const &p)
const DetContainer & dets() const override
Returm a vector of all GeomDet (including all GeomDetUnits)
std::map< int, std::map< int, std::pair< int, int > > > pixelO2O_
unsigned long long Time_t
virtual int colsperroc() const =0
const SiPixelQuality * badPixelInfo_
unsigned int idInDetUnit() const
id of this ROC in DetUnit etermined by token path
const std::map< edm::LuminosityBlockNumber_t, SiPixelDetectorStatus > & getBadComponents()
const std::map< edm::LuminosityBlockNumber_t, std::map< int, std::vector< int > > > & getFEDerror25Rocs()
void writeOne(T *payload, Time_t time, const std::string &recordName, bool withlogging=false)
const std::vector< disabledModuleType > getBadComponentList() const
const SiPixelFedCabling * cablingMap_
std::vector< LinkConnSpec >::const_iterator IT
const TrackerGeometry * trackerGeometry_
std::map< int, SiPixelModuleStatus > getDetectorStatus()
virtual const sipixelobjects::PixelROC * findItem(const sipixelobjects::CablingPathToDetUnit &) const =0
virtual const PixelTopology & specificTopology() const
Returns a reference to the pixel proxy topology.
row and collumn in ROC representation
double perLayerRingAverage(int detid, SiPixelDetectorStatus tmpSiPixelStatus)
std::vector< HistogramManager > histo
virtual int ncolumns() const =0
unsigned int digiOccROC(int iroc)
return ROC status (= hits on ROC iroc)
void constructTag(std::map< int, SiPixelQuality * > siPixelQualityTag, edm::Service< cond::service::PoolDBOutputService > &poolDbService, std::string tagName, edm::Run const &iRun)
std::map< edm::LuminosityBlockNumber_t, std::map< int, std::vector< int > > >::iterator FEDerror25Map_iterator
T const * product() const
std::map< edm::LuminosityBlockNumber_t, SiPixelDetectorStatus >::iterator siPixelStatusMap_iterator
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger list("!*","!HLTx*"if it matches 2 triggers or more) will accept the event if all the matching triggers are FAIL.It will reject the event if any of the triggers are PASS or EXCEPTION(this matches the behavior of"!*"before the partial wildcard feature was incorporated).Triggers which are in the READY state are completely ignored.(READY should never be returned since the trigger paths have been run
GlobalPixel toGlobal(const LocalPixel &loc) const