1 #ifndef StMeasurementDetSet_H 2 #define StMeasurementDetSet_H 23 #include <unordered_map> 29 #define COUT std::cout 31 #define COUT LogDebug("") 70 unsigned int id(
int i)
const {
return id_[
i]; }
73 int find(
unsigned int jd,
int i = 0)
const {
return std::lower_bound(
id_.begin() +
i,
id_.end(), jd) -
id_.begin(); }
124 std::vector<unsigned int>
id_;
144 : conditionSet_(&cond),
146 activeThisEvent_(cond.
nDet(),
true),
147 detSet_(cond.
nDet()),
148 detIndex_(cond.
nDet(), -1),
150 theRawInactiveStripDetIds_(),
159 void update(
int i,
const StripDetset& detSet) {
173 int size()
const {
return conditions().nDet(); }
175 unsigned int id(
int i)
const {
return conditions().id(i); }
176 int find(
unsigned int jd,
int i = 0)
const {
return conditions().find(jd,
i); }
179 bool isActive(
int i)
const {
return activeThisEvent_[
i] && conditions().isActiveThisPeriod(i); }
183 activeThisEvent_[
i] =
true;
189 std::fill(empty_.begin(), empty_.end(),
true);
190 std::fill(ready_.begin(), ready_.end(),
true);
191 std::fill(detIndex_.begin(), detIndex_.end(), -1);
192 std::fill(activeThisEvent_.begin(), activeThisEvent_.end(),
true);
199 activeThisEvent_[
i] = active;
218 std::fill(stripDefined_.begin(), stripDefined_.end(),
false);
219 std::fill(stripUpdated_.begin(), stripUpdated_.end(),
false);
224 stripDefined_[
i] =
true;
225 stripUpdated_[
i] =
false;
231 if (detIndex_[i] >= 0) {
232 detSet_[
i].set(*handle_, handle_->item(detIndex_[i]));
236 detSet_[
i] = StripDetset();
275 void zeroStat()
const { stat = Stat(); }
276 void incTot(
int n)
const { stat.totDet =
n; }
277 void incReady()
const { stat.detReady++; }
278 void incSet()
const { stat.detSet++; }
279 void incAct()
const { stat.detAct++; }
280 void printStat()
const {
281 COUT <<
"VI detsets " << stat.totDet <<
',' << stat.detReady <<
',' << stat.detSet <<
',' << stat.detAct
302 unsigned int id(
int i)
const {
return id_[
i]; }
303 int find(
unsigned int jd,
int i = 0)
const {
return std::lower_bound(
id_.begin() +
i,
id_.end(), jd) -
id_.begin(); }
319 std::vector<unsigned int>
id_;
330 : conditionSet_(&cond), detSet_(cond.
nDet()), empty_(cond.
nDet(),
true), activeThisEvent_(cond.
nDet(),
true) {}
334 int size()
const {
return conditions().nDet(); }
336 unsigned int id(
int i)
const {
return conditions().id(i); }
337 int find(
unsigned int jd,
int i = 0)
const {
return conditions().find(jd,
i); }
339 void update(
int i,
const PixelDetSet& detSet) {
345 bool isActive(
int i)
const {
return activeThisEvent_[
i] && conditions().isActiveThisPeriod(i); }
349 activeThisEvent_[
i] =
true;
350 auto found = badFEDChannelPositionsSet_.find(i);
351 if (
found != badFEDChannelPositionsSet_.end()) {
352 badFEDChannelPositionsSet_.erase(
found);
357 std::fill(empty_.begin(), empty_.end(),
true);
358 std::fill(activeThisEvent_.begin(), activeThisEvent_.end(),
true);
359 badFEDChannelPositionsSet_.clear();
364 auto found = badFEDChannelPositionsSet_.find(i);
365 if (
found == badFEDChannelPositionsSet_.end())
367 return &(
found->second);
370 auto found = badFEDChannelPositionsSet_.find(i);
371 if (
found == badFEDChannelPositionsSet_.end()) {
372 badFEDChannelPositionsSet_.emplace(i, positions);
374 found->second.insert(
found->second.end(), positions.begin(), positions.end());
381 activeThisEvent_[
i] = active;
387 const PixelDetSet&
detSet(
int i)
const {
return detSet_[
i]; }
412 unsigned int id(
int i)
const {
return id_[
i]; }
413 int find(
unsigned int jd,
int i = 0)
const {
return std::lower_bound(
id_.begin() +
i,
id_.end(), jd) -
id_.begin(); }
429 std::vector<unsigned int>
id_;
439 : conditionSet_(&cond), detSet_(cond.
nDet()), empty_(cond.
nDet(),
true), activeThisEvent_(cond.
nDet(),
true) {}
443 int size()
const {
return conditions().nDet(); }
445 unsigned int id(
int i)
const {
return conditions().id(i); }
446 int find(
unsigned int jd,
int i = 0)
const {
return conditions().find(jd,
i); }
448 void update(
int i,
const Phase2DetSet& detSet) {
454 bool isActive(
int i)
const {
return activeThisEvent_[
i] && conditions().isActiveThisPeriod(i); }
458 activeThisEvent_[
i] =
true;
462 std::fill(empty_.begin(), empty_.end(),
true);
463 std::fill(activeThisEvent_.begin(), activeThisEvent_.end(),
true);
467 activeThisEvent_[
i] = active;
473 const Phase2DetSet&
detSet(
int i)
const {
return detSet_[
i]; }
489 #endif // StMeasurementDetSet_H bool isMasked(int i, const SiStripCluster &cluster) const
edmNew::DetSet< Phase2TrackerCluster1D > Phase2DetSet
std::vector< std::pair< LocalPoint, LocalPoint > > BadFEDChannelPositions
int find(unsigned int jd, int i=0) const
edm::Handle< edmNew::DetSetVector< Phase2TrackerCluster1D > > & handle()
void setActiveThisEvent(int i, bool active)
Turn on/off the module for reconstruction for one events. This per-event flag is cleared by any call ...
std::vector< std::vector< BadStripBlock > > badStripBlocks_
PxMeasurementConditionSet(const PixelClusterParameterEstimator *cpe)
unsigned int id(int i) const
std::vector< bool > activeThisPeriod_
const PixelClusterParameterEstimator * theCPE
void setActive(int i, bool active)
Turn on/off the module for reconstruction, for the full run or lumi (using info from DB...
int totalStrips(int i) const
const StripDetset & detSet(int i) const
bool isActive(int i) const
edm::Handle< edmNew::DetSetVector< Phase2TrackerCluster1D > > handle_
bool bad128Strip(int index, int strip) const
edm::Ref< edmNew::DetSetVector< SiPixelCluster >, SiPixelCluster > SiPixelClusterRef
StMeasurementDetSet(const StMeasurementConditionSet &cond)
void update(int i, int j)
std::vector< bool > ready_
const Phase2DetSet & detSet(int i) const
const PxMeasurementConditionSet * conditionSet_
void update(int i, const StripDetset &detSet)
const StMeasurementConditionSet & conditions() const
bool maskBad128StripBlocks_
StripDetset::const_iterator new_const_iterator
uint16_t firstStrip() const
data_type const * const_iterator
const edm::Handle< edmNew::DetSetVector< SiPixelCluster > > & handle() const
bool isActiveThisPeriod(int i) const
unsigned int id(int i) const
const BadFEDChannelPositions * getBadFEDChannelPositions(int i) const
edm::Ref< edmNew::DetSetVector< Phase2TrackerCluster1D >, Phase2TrackerCluster1D > Phase2TrackerCluster1DRef
void defineStrip(int i, std::pair< unsigned int, unsigned int > range)
std::vector< bool > empty_
const bool stripUpdated(int i) const
uint16_t maxConsecutiveBad
unsigned int id(int i) const
unsigned int id(int i) const
edmNew::DetSet< SiStripCluster > StripDetset
int find(unsigned int jd, int i=0) const
std::vector< unsigned char > subId_
const BadStripCuts & badStripCuts(int i) const
const ClusterParameterEstimator< Phase2TrackerCluster1D > * cpe() const
unsigned int id(int i) const
const SiStripRecHitMatcher * matcher() const
const StMeasurementConditionSet * conditionSet_
int find(unsigned int jd, int i=0) const
void setActiveThisEvent(int i, bool active)
Turn on/off the module for reconstruction for one events. This per-event flag is cleared by any call ...
const edm::Handle< edmNew::DetSetVector< Phase2TrackerCluster1D > > & handle() const
void setActive(int i, bool active)
Turn on/off the module for reconstruction, for the full run or lumi (using info from DB...
bool isActive(int i) const
std::vector< BadStripBlock > & getBadStripBlocks(int i)
edm::Handle< edmNew::DetSetVector< SiPixelCluster > > handle_
bool hasAny128StripBad(int i) const
bool isActiveThisPeriod(int i) const
const edm::Handle< edmNew::DetSetVector< SiStripCluster > > & handle() const
std::vector< Phase2DetSet > detSet_
PxMeasurementDetSet(const PxMeasurementConditionSet &cond)
const StripClusterParameterEstimator * stripCPE() const
std::vector< uint32_t > theRawInactiveStripDetIds_
std::vector< unsigned int > id_
StMeasurementConditionSet(const SiStripRecHitMatcher *matcher, const StripClusterParameterEstimator *cpe)
void update(int i, const PixelDetSet &detSet)
void addBadFEDChannelPositions(int i, BadFEDChannelPositions &positions)
std::vector< int > totalStrips_
void resetOnDemandStrips()
bool maskBad128StripBlocks() const
std::vector< bool > hasAny128StripBad_
const StripClusterParameterEstimator * theCPE
void setActiveThisEvent(int i, bool active)
std::vector< bool > empty_
std::vector< uint32_t > & rawInactiveStripDetIds()
void setMaskBad128StripBlocks(bool maskThem)
std::vector< bool > activeThisPeriod_
std::vector< unsigned int > id_
std::vector< unsigned int > id_
std::vector< bool > activeThisPeriod_
const Phase2OTMeasurementConditionSet & conditions() const
BadStripBlock(const SiStripBadStrip::data &data)
bool isActive(int i) const
edm::Handle< edmNew::DetSetVector< SiStripCluster > > handle_
std::vector< bool > bad128Strip_
int find(unsigned int jd, int i=0) const
std::vector< bool > activeThisEvent_
void setActiveThisEvent(bool active)
Pixel cluster – collection of neighboring pixels above threshold.
char data[epos_bytes_allocation]
BadStripCuts(uint32_t iMaxBad, uint32_t iMaxConsecutiveBad)
std::vector< bool > empty_
std::vector< StripDetset > detSet_
std::vector< bool > activeThisEvent_
int find(unsigned int jd, int i=0) const
const PixelClusterParameterEstimator * pixelCPE() const
std::vector< BadStripBlock > const & badStripBlocks(int i) const
std::vector< bool > activeThisEvent_
int find(unsigned int jd, int i=0) const
const ClusterParameterEstimator< Phase2TrackerCluster1D > * theCPE
void setActiveThisEvent(bool active)
BadStripCuts badStripCuts_[4]
void setActive(int i, bool active)
Turn on/off the module for reconstruction, for the full run or lumi (using info from DB...
edm::Handle< edmNew::DetSetVector< SiStripCluster > > & handle()
void set128StripStatus(int i, bool good, int idx=-1)
const PixelDetSet & detSet(int i) const
Phase2OTMeasurementDetSet(const Phase2OTMeasurementConditionSet &cond)
std::vector< std::pair< unsigned int, unsigned int > > stripRegions_
std::vector< int > detIndex_
unsigned int id(int i) const
void update(int i, const Phase2DetSet &detSet)
std::vector< PixelDetSet > detSet_
const SiStripRecHitMatcher * theMatcher
edmNew::DetSet< SiPixelCluster > PixelDetSet
const std::vector< uint32_t > & rawInactiveStripDetIds() const
unsigned char subId(int i) const
const std::vector< uint8_t > & amplitudes() const
std::vector< bool > stripUpdated_
bool bad128Strip(int offset) const
note: index is 6*detector index + offset!
const bool stripDefined(int i) const
const Phase2OTMeasurementConditionSet * conditionSet_
std::unordered_map< int, BadFEDChannelPositions > badFEDChannelPositionsSet_
bool isActiveThisPeriod(int i) const
Phase2OTMeasurementConditionSet(const ClusterParameterEstimator< Phase2TrackerCluster1D > *cpe)
const PxMeasurementConditionSet & conditions() const
edm::Handle< edmNew::DetSetVector< SiPixelCluster > > & handle()