CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
SiPhase2BadStripChannelBuilder Class Reference
Inheritance diagram for SiPhase2BadStripChannelBuilder:
ConditionDBWriter< SiStripBadStrip > edm::one::EDAnalyzer< edm::one::WatchRuns, edm::one::WatchLuminosityBlocks, edm::one::SharedResources > edm::one::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

 SiPhase2BadStripChannelBuilder (const edm::ParameterSet &)
 
 ~SiPhase2BadStripChannelBuilder () override=default
 
- Public Member Functions inherited from ConditionDBWriter< SiStripBadStrip >
 ConditionDBWriter (const edm::ParameterSet &iConfig)
 
 ~ConditionDBWriter () override
 
- Public Member Functions inherited from edm::one::EDAnalyzer< edm::one::WatchRuns, edm::one::WatchLuminosityBlocks, edm::one::SharedResources >
 EDAnalyzer ()=default
 
 EDAnalyzer (const EDAnalyzer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
const EDAnalyzeroperator= (const EDAnalyzer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDAnalyzerBase () override
 
- 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
 
ESResolverIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESResolverIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
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::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, 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
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProductResolverIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from ConditionDBWriter< SiStripBadStrip >
static void fillPSetDescription (edm::ParameterSetDescription &desc)
 
- Static Public Member Functions inherited from edm::one::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

void algoAnalyze (const edm::Event &event, const edm::EventSetup &es) override
 
void algoBeginRun (const edm::Run &run, const edm::EventSetup &es) override
 
std::map< unsigned short, unsigned short > clusterizeBadChannels (const std::vector< Phase2TrackerDigi::PackedDigiType > &maskedChannels)
 
std::unique_ptr< SiStripBadStripgetNewObject () override
 

Private Attributes

const float badComponentsFraction_
 
std::mt19937 engine_
 
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecordgeomToken_
 
const unsigned int popConAlgo_
 
const bool printdebug_
 
badChannelAlgo theBCAlgo_
 
std::vector< const Phase2TrackerGeomDetUnit * > theOTDets
 
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcdtopoToken_
 
std::unique_ptr< TrackerTopologytTopo_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from ConditionDBWriter< SiStripBadStrip >
void setDoStore (const bool doStore)
 When set to false the payload will not be written to the db. More...
 
void storeOnDbNow ()
 
cond::Time_t timeOfLastIOV ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
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 ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
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)
 
void resetItemsToGetFrom (BranchType iType)
 

Detailed Description

Definition at line 38 of file SiPhase2BadStripChannelBuilder.cc.

Constructor & Destructor Documentation

◆ SiPhase2BadStripChannelBuilder()

SiPhase2BadStripChannelBuilder::SiPhase2BadStripChannelBuilder ( const edm::ParameterSet iConfig)
explicit

Definition at line 100 of file SiPhase2BadStripChannelBuilder.cc.

References badComponentsFraction_, Exception, popConAlgo_, and theBCAlgo_.

102  topoToken_(esConsumes<edm::Transition::BeginRun>()),
103  geomToken_(esConsumes<edm::Transition::BeginRun>()),
104  printdebug_(iConfig.getUntrackedParameter<bool>("printDebug", false)),
105  popConAlgo_(iConfig.getParameter<unsigned int>("popConAlgo")),
106  badComponentsFraction_(iConfig.getParameter<double>("badComponentsFraction")) {
108  throw cms::Exception("Inconsistent configuration")
109  << "[SiPhase2BadStripChannelBuilder::c'tor] the requested fraction of bad components is unphysical. \n";
110  }
111  theBCAlgo_ = static_cast<badChannelAlgo>(popConAlgo_);
112 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > topoToken_
T getUntrackedParameter(std::string const &, T const &) const
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geomToken_

◆ ~SiPhase2BadStripChannelBuilder()

SiPhase2BadStripChannelBuilder::~SiPhase2BadStripChannelBuilder ( )
overridedefault

Member Function Documentation

◆ algoAnalyze()

void SiPhase2BadStripChannelBuilder::algoAnalyze ( const edm::Event event,
const edm::EventSetup es 
)
inlineoverrideprivatevirtual

Reimplemented from ConditionDBWriter< SiStripBadStrip >.

Definition at line 75 of file SiPhase2BadStripChannelBuilder.cc.

References engine_.

75  {
76  // deterministic seed from the event number
77  // should not bias the result as the event number is already
78  // assigned randomly-enough
79  engine_.seed(event.id().event() + (event.id().luminosityBlock() << 10) + (event.id().run() << 20));
80  }
Definition: event.py:1

◆ algoBeginRun()

void SiPhase2BadStripChannelBuilder::algoBeginRun ( const edm::Run run,
const edm::EventSetup es 
)
inlineoverrideprivatevirtual

Reimplemented from ConditionDBWriter< SiStripBadStrip >.

Definition at line 48 of file SiPhase2BadStripChannelBuilder.cc.

References cms::cuda::assert(), DetId::det(), geomToken_, edm::EventSetup::getData(), LogDebug, TrackerGeometry::Ph2PSS, TrackerGeometry::Ph2SS, nano_mu_digi_cff::rawId, DetId::rawId(), DetId::subdetId(), theOTDets, StripSubdetector::TID, StripSubdetector::TOB, topoToken_, align::Tracker, and tTopo_.

48  {
49  if (!tTopo_) {
50  tTopo_ = std::make_unique<TrackerTopology>(es.getData(topoToken_));
51  const TrackerGeometry* tkGeom_ = &es.getData(geomToken_);
52 
53  edm::LogInfo("SiPhase2BadStripChannelBuilder")
54  << " There are " << tkGeom_->detUnits().size() << " modules in this geometry.";
55 
56  for (auto const& det_u : tkGeom_->detUnits()) {
57  const DetId detid = det_u->geographicalId();
58  uint32_t rawId = detid.rawId();
59  int subid = detid.subdetId();
60  if (detid.det() == DetId::Detector::Tracker) {
61  const Phase2TrackerGeomDetUnit* pixdet = dynamic_cast<const Phase2TrackerGeomDetUnit*>(det_u);
62  assert(pixdet);
63  LogDebug("SiPhase2BadStripChannelBuilder") << rawId << " is a " << subid << " det";
64  if (subid == StripSubdetector::TOB || subid == StripSubdetector::TID) {
65  if (tkGeom_->getDetectorType(rawId) == TrackerGeometry::ModuleType::Ph2PSS ||
66  tkGeom_->getDetectorType(rawId) == TrackerGeometry::ModuleType::Ph2SS) {
67  theOTDets.push_back(pixdet);
68  }
69  } // if it's a Strip module
70  } // if it's OT
71  } // if it's Tracker
72  } // loop of geomdets
73  };
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > topoToken_
std::vector< const Phase2TrackerGeomDetUnit * > theOTDets
assert(be >=bs)
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
std::unique_ptr< TrackerTopology > tTopo_
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:48
static constexpr auto TOB
Log< level::Info, false > LogInfo
Definition: DetId.h:17
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geomToken_
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
static constexpr auto TID
#define LogDebug(id)

◆ clusterizeBadChannels()

std::map< unsigned short, unsigned short > SiPhase2BadStripChannelBuilder::clusterizeBadChannels ( const std::vector< Phase2TrackerDigi::PackedDigiType > &  maskedChannels)
private

Definition at line 242 of file SiPhase2BadStripChannelBuilder.cc.

References data, HLT_2023v12_cff::distance, L1Scalers_cfi::maskedChannels, printdebug_, mps_fire::result, submitPVValidationJobs::text, and to_string().

Referenced by getNewObject().

243  {
244  // Here we will store the result
245  std::map<unsigned short, unsigned short> result{};
246  std::map<int, std::string> printresult{};
247 
248  // Sort and remove duplicates.
249  std::set data(maskedChannels.begin(), maskedChannels.end());
250 
251  // We will start the evaluation at the beginning of our data
252  auto startOfSequence = data.begin();
253 
254  // Find all sequences
255  while (startOfSequence != data.end()) {
256  // FInd first value that is not greate than one
257  auto endOfSequence =
258  std::adjacent_find(startOfSequence, data.end(), [](const auto& v1, const auto& v2) { return v2 != v1 + 1; });
259  if (endOfSequence != data.end())
260  std::advance(endOfSequence, 1);
261 
262  auto consecutiveStrips = std::distance(startOfSequence, endOfSequence);
263  result[*startOfSequence] = consecutiveStrips;
264 
265  if (printdebug_) {
266  // Build resulting string
267  std::ostringstream oss{};
268  bool writeDash = false;
269  for (auto it = startOfSequence; it != endOfSequence; ++it) {
270  oss << (writeDash ? "-" : "") << std::to_string(*it);
271  writeDash = true;
272  }
273 
274  // Copy result to map
275  for (auto it = startOfSequence; it != endOfSequence; ++it)
276  printresult[*it] = oss.str();
277  }
278 
279  // Continue to search for the next sequence
280  startOfSequence = endOfSequence;
281  }
282 
283  if (printdebug_) {
284  // Show result on the screen. Or use the map in whichever way you want.
285  for (const auto& [value, text] : printresult)
286  edm::LogInfo("SiPhase2BadStripChannelBuilder") << std::left << std::setw(2) << value << " -> " << text << "\n";
287  }
288 
289  return result;
290 }
static std::string to_string(const XMLCh *ch)
Definition: value.py:1
Log< level::Info, false > LogInfo
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:80

◆ fillDescriptions()

void SiPhase2BadStripChannelBuilder::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 293 of file SiPhase2BadStripChannelBuilder.cc.

References edm::ConfigurationDescriptions::addWithDefaultLabel(), submitPVResolutionJobs::desc, and ConditionDBWriter< T >::fillPSetDescription().

293  {
295  desc.setComment("Module to build SiStripBadStrip Payloads for the Phase-2 Outer Tracker");
296  ConditionDBWriter::fillPSetDescription(desc); // inherited from mother class
297  desc.addUntracked<bool>("printDebug", false)->setComment("maximum amount of print-outs");
298  desc.add<unsigned int>("popConAlgo", 1)->setComment("algorithm to populate the payload: 1=NAIVE,2=RANDOM");
299  desc.add<double>("badComponentsFraction", 0.01)->setComment("fraction of bad components to populate the payload");
300  descriptions.addWithDefaultLabel(desc);
301 }
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
static void fillPSetDescription(edm::ParameterSetDescription &desc)

◆ getNewObject()

std::unique_ptr< SiStripBadStrip > SiPhase2BadStripChannelBuilder::getNewObject ( )
overrideprivatevirtual

Implements ConditionDBWriter< SiStripBadStrip >.

Definition at line 115 of file SiPhase2BadStripChannelBuilder.cc.

References cond::service::PoolDBOutputService::appendOneIOV(), badComponentsFraction_, cond::service::PoolDBOutputService::beginOfTime(), clusterizeBadChannels(), cond::service::PoolDBOutputService::createOneIOV(), cond::service::PoolDBOutputService::currentTime(), TauDecayModes::dec, engine_, Exception, f, spr::find(), dqmdumpme::first, edm::Service< T >::isAvailable(), cond::service::PoolDBOutputService::isNewTagRequest(), LogDebug, hgcalPlots::ncols, NONE, PixelTopology::nrows(), getGTfromDQMFile::obj, Phase2TrackerDigi::pixelToChannel(), printdebug_, FastTimerService_cff::range, nano_mu_digi_cff::rawId, theBCAlgo_, and theOTDets.

115  {
116  edm::LogInfo("SiPhase2BadStripChannelBuilder") << "... creating dummy SiStripBadStrip Data";
117 
118  auto obj = std::make_unique<SiStripBadStrip>();
119 
120  // early return with nullptr if fraction is ==0.
121  if (badComponentsFraction_ == 0.f) {
122  return obj;
123  }
124 
125  for (auto const& pixdet : theOTDets) {
126  uint32_t rawId = pixdet->geographicalId().rawId();
127  int subid = pixdet->geographicalId().subdetId();
128 
129  const PixelTopology& topol(pixdet->specificTopology());
130 
131  const int nrows = topol.nrows();
132  const int ncols = topol.ncolumns();
133 
134  LogDebug("SiPhase2BadStripChannelBuilder")
135  << "DetId: " << rawId << " subdet: " << subid << " nrows: " << nrows << " ncols: " << ncols;
136 
137  std::vector<unsigned int> theSiStripVector;
138 
139  switch (theBCAlgo_) {
140  case NAIVE: {
141  LogDebug("SiPhase2BadStripChannelBuilder") << "using the NAIVE algorithm";
142 
143  auto dis1 = std::uniform_int_distribution<>(0, nrows - 1); // [0, nrows]
144  auto dis2 = std::uniform_int_distribution<>(1, 10); // [1, 10]
145 
146  unsigned short firstBadStrip = std::floor(dis1(engine_));
147  unsigned short NconsecutiveBadStrips = std::floor(dis2(engine_));
148 
149  // if the interval exceeds the end of the module
150  if (firstBadStrip + NconsecutiveBadStrips > nrows) {
151  NconsecutiveBadStrips = nrows - firstBadStrip;
152  }
153 
154  unsigned int theBadStripRange;
155  theBadStripRange = obj->encodePhase2(firstBadStrip, NconsecutiveBadStrips);
156 
157  if (printdebug_)
158  edm::LogInfo("SiPhase2BadStripChannelBuilder")
159  << "detid " << rawId << " \t"
160  << " firstBadStrip " << firstBadStrip << "\t "
161  << " NconsecutiveBadStrips " << NconsecutiveBadStrips << "\t "
162  << " packed integer " << std::hex << theBadStripRange << std::dec;
163 
164  theSiStripVector.push_back(theBadStripRange);
165  break;
166  }
167  case RANDOM: {
168  LogDebug("SiPhase2BadStripChannelBuilder") << "using the RANDOM algorithm";
169 
170  // auxilliary vector to check if the channels were already used
171  std::vector<Phase2TrackerDigi::PackedDigiType> usedChannels;
172 
173  size_t nmaxBadStrips = std::floor(nrows * ncols * badComponentsFraction_);
174 
175  LogDebug("SiPhase2BadStripChannelBuilder")
176  << __FUNCTION__ << " " << __LINE__ << " will mask: " << nmaxBadStrips << " strips";
177 
178  auto disRows = std::uniform_int_distribution<>(0, nrows - 1); // [0, nrows]
179  auto disCols = std::uniform_int_distribution<>(0, ncols - 1); // [0, ncols]
180 
181  while (usedChannels.size() < nmaxBadStrips) {
182  unsigned short badStripRow = std::floor(disRows(engine_));
183  unsigned short badStripCol = std::floor(disCols(engine_));
184 
185  const auto& badChannel = Phase2TrackerDigi::pixelToChannel(badStripRow, badStripCol);
186 
187  LogDebug("SiPhase2BadStripChannelBuilder") << __FUNCTION__ << " " << __LINE__ << ": masking channel "
188  << badChannel << " (" << badStripRow << "," << badStripCol << ")";
189 
190  if (std::find(usedChannels.begin(), usedChannels.end(), badChannel) == usedChannels.end()) {
191  usedChannels.push_back(badChannel);
192  }
193  }
194 
195  const auto badChannelsGroups = this->clusterizeBadChannels(usedChannels);
196  // loop over the groups of bad strips
197  for (const auto& [first, consec] : badChannelsGroups) {
198  unsigned int theBadChannelsRange;
199  theBadChannelsRange = obj->encodePhase2(first, consec);
200 
201  if (printdebug_) {
202  edm::LogInfo("SiPhase2BadStripChannelBuilder")
203  << "detid " << rawId << " \t"
204  << " firstBadStrip " << first << "\t "
205  << " NconsecutiveBadStrips " << consec << "\t "
206  << " packed integer " << std::hex << theBadChannelsRange << std::dec;
207  }
208  theSiStripVector.push_back(theBadChannelsRange);
209  }
210  break;
211  }
212  case NONE:
213  [[fallthrough]];
214  default:
215  throw cms::Exception("Inconsistent configuration") << "Did not specifiy the right algorithm to be run";
216  }
217 
218  SiStripBadStrip::Range range(theSiStripVector.begin(), theSiStripVector.end());
219  if (!obj->put(rawId, range))
220  edm::LogError("SiPhase2BadStripChannelBuilder")
221  << "[SiPhase2BadStripChannelBuilder::getNewObject] detid already exists";
222 
223  } // loop of geomdets
224 
225  //End now write sistripbadChannel data in DB
227 
228  if (mydbservice.isAvailable()) {
229  if (mydbservice->isNewTagRequest("SiStripBadStripRcd")) {
230  mydbservice->createOneIOV<SiStripBadStrip>(*obj, mydbservice->beginOfTime(), "SiStripBadStripRcd");
231  } else {
232  mydbservice->appendOneIOV<SiStripBadStrip>(*obj, mydbservice->currentTime(), "SiStripBadStripRcd");
233  }
234  } else {
235  edm::LogError("SiPhase2BadStripChannelBuilder") << "Service is unavailable";
236  }
237 
238  return obj;
239 }
virtual int nrows() const =0
Log< level::Error, false > LogError
std::vector< const Phase2TrackerGeomDetUnit * > theOTDets
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
void createOneIOV(const T &payload, cond::Time_t firstSinceTime, const std::string &recordName)
void appendOneIOV(const T &payload, cond::Time_t sinceTime, const std::string &recordName)
bool isNewTagRequest(const std::string &recordName)
static PackedDigiType pixelToChannel(unsigned int row, unsigned int col)
double f[11][100]
Log< level::Info, false > LogInfo
std::map< unsigned short, unsigned short > clusterizeBadChannels(const std::vector< Phase2TrackerDigi::PackedDigiType > &maskedChannels)
std::pair< ContainerIterator, ContainerIterator > Range
bool isAvailable() const
Definition: Service.h:40
Definition: TkAlStyle.h:43
#define LogDebug(id)

Member Data Documentation

◆ badComponentsFraction_

const float SiPhase2BadStripChannelBuilder::badComponentsFraction_
private

◆ engine_

std::mt19937 SiPhase2BadStripChannelBuilder::engine_
private

Definition at line 87 of file SiPhase2BadStripChannelBuilder.cc.

Referenced by algoAnalyze(), and getNewObject().

◆ geomToken_

const edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> SiPhase2BadStripChannelBuilder::geomToken_
private

Definition at line 90 of file SiPhase2BadStripChannelBuilder.cc.

Referenced by algoBeginRun().

◆ popConAlgo_

const unsigned int SiPhase2BadStripChannelBuilder::popConAlgo_
private

Definition at line 92 of file SiPhase2BadStripChannelBuilder.cc.

Referenced by SiPhase2BadStripChannelBuilder().

◆ printdebug_

const bool SiPhase2BadStripChannelBuilder::printdebug_
private

Definition at line 91 of file SiPhase2BadStripChannelBuilder.cc.

Referenced by clusterizeBadChannels(), and getNewObject().

◆ theBCAlgo_

badChannelAlgo SiPhase2BadStripChannelBuilder::theBCAlgo_
private

◆ theOTDets

std::vector<const Phase2TrackerGeomDetUnit*> SiPhase2BadStripChannelBuilder::theOTDets
private

Definition at line 96 of file SiPhase2BadStripChannelBuilder.cc.

Referenced by algoBeginRun(), and getNewObject().

◆ topoToken_

const edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> SiPhase2BadStripChannelBuilder::topoToken_
private

Definition at line 89 of file SiPhase2BadStripChannelBuilder.cc.

Referenced by algoBeginRun().

◆ tTopo_

std::unique_ptr<TrackerTopology> SiPhase2BadStripChannelBuilder::tTopo_
private

Definition at line 86 of file SiPhase2BadStripChannelBuilder.cc.

Referenced by algoBeginRun().