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
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > 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
 
bool registeredToConsumeMany (TypeID const &, 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::ESRecordsToProxyIndices 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_
 
CLHEP::HepRandomEngine * engine_
 
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecordgeomToken_
 
const unsigned int popConAlgo_
 
const bool printdebug_
 
std::unique_ptr< TrackerGeometrytGeom_
 
badChannelAlgo theBCAlgo_
 
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 ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
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 37 of file SiPhase2BadStripChannelBuilder.cc.

Constructor & Destructor Documentation

◆ SiPhase2BadStripChannelBuilder()

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

Definition at line 78 of file SiPhase2BadStripChannelBuilder.cc.

References badComponentsFraction_, Exception, popConAlgo_, and theBCAlgo_.

80  topoToken_(esConsumes<edm::Transition::BeginRun>()),
81  geomToken_(esConsumes<edm::Transition::BeginRun>()),
82  printdebug_(iConfig.getUntrackedParameter<bool>("printDebug", false)),
83  popConAlgo_(iConfig.getParameter<unsigned int>("popConAlgo")),
84  badComponentsFraction_(iConfig.getParameter<double>("badComponentsFraction")) {
86  throw cms::Exception("Inconsistent configuration")
87  << "[SiPhase2BadStripChannelBuilder::c'tor] the requested fraction of bad components is unphysical. \n";
88  }
89  theBCAlgo_ = static_cast<badChannelAlgo>(popConAlgo_);
90 }
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 54 of file SiPhase2BadStripChannelBuilder.cc.

References engine_, and edm::RandomNumberGenerator::getEngine().

54  {
56  if (!engine_) {
57  engine_ = &rng->getEngine(event.streamID());
58  }
59  }
virtual CLHEP::HepRandomEngine & getEngine(StreamID const &)=0
Use this engine in event methods.
Definition: event.py:1

◆ algoBeginRun()

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

Reimplemented from ConditionDBWriter< SiStripBadStrip >.

Definition at line 47 of file SiPhase2BadStripChannelBuilder.cc.

References geomToken_, edm::EventSetup::getData(), tGeom_, topoToken_, and tTopo_.

47  {
48  if (!tTopo_) {
49  tTopo_ = std::make_unique<TrackerTopology>(es.getData(topoToken_));
50  tGeom_ = std::make_unique<TrackerGeometry>(es.getData(geomToken_));
51  }
52  };
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > topoToken_
std::unique_ptr< TrackerGeometry > tGeom_
std::unique_ptr< TrackerTopology > tTopo_
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geomToken_

◆ clusterizeBadChannels()

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

Definition at line 229 of file SiPhase2BadStripChannelBuilder.cc.

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

Referenced by getNewObject().

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

◆ fillDescriptions()

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

Definition at line 280 of file SiPhase2BadStripChannelBuilder.cc.

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

280  {
282  desc.setComment("Module to build SiStripBadStrip Payloads for the Phase-2 Outer Tracker");
283  ConditionDBWriter::fillPSetDescription(desc); // inherited from mother class
284  desc.addUntracked<bool>("printDebug", false)->setComment("maximum amount of print-outs");
285  desc.add<unsigned int>("popConAlgo", 1)->setComment("algorithm to populate the payload: 1=NAIVE,2=RANDOM");
286  desc.add<double>("badComponentsFraction", 0.01)->setComment("fraction of bad components to populate the payload");
287  descriptions.addWithDefaultLabel(desc);
288 }
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 93 of file SiPhase2BadStripChannelBuilder.cc.

References cond::service::PoolDBOutputService::appendOneIOV(), cms::cuda::assert(), badComponentsFraction_, cond::service::PoolDBOutputService::beginOfTime(), clusterizeBadChannels(), cond::service::PoolDBOutputService::createOneIOV(), cond::service::PoolDBOutputService::currentTime(), TauDecayModes::dec, DetId::det(), engine_, Exception, f, spr::find(), dqmdumpme::first, edm::Service< T >::isAvailable(), cond::service::PoolDBOutputService::isNewTagRequest(), LogDebug, hgcalPlots::ncols, NONE, PixelTopology::nrows(), getGTfromDQMFile::obj, TrackerGeometry::Ph2PSS, TrackerGeometry::Ph2SS, Phase2TrackerDigi::pixelToChannel(), printdebug_, FastTimerService_cff::range, DetId::rawId(), PixelGeomDetUnit::specificTopology(), DetId::subdetId(), tGeom_, theBCAlgo_, StripSubdetector::TID, StripSubdetector::TOB, and align::Tracker.

93  {
95  edm::LogInfo("SiPhase2BadStripChannelBuilder") << "... creating dummy SiStripBadStrip Data" << std::endl;
96 
97  auto obj = std::make_unique<SiStripBadStrip>();
98 
99  // early return with nullptr if fraction is ==0.
100  if (badComponentsFraction_ == 0.f) {
101  return obj;
102  }
103 
104  edm::LogInfo("SiPhase2BadStripChannelBuilder")
105  << " There are " << tGeom_->detUnits().size() << " modules in this geometry." << std::endl;
106 
107  for (auto const& det_u : tGeom_->detUnits()) {
108  const DetId detid = det_u->geographicalId();
109  uint32_t rawId = detid.rawId();
110  int subid = detid.subdetId();
111  if (detid.det() == DetId::Detector::Tracker) {
112  const Phase2TrackerGeomDetUnit* pixdet = dynamic_cast<const Phase2TrackerGeomDetUnit*>(det_u);
113  assert(pixdet);
114  LogDebug("SiPhase2BadStripChannelBuilder") << rawId << " is a " << subid << " det" << std::endl;
115  if (subid == StripSubdetector::TOB || subid == StripSubdetector::TID) {
116  if (tGeom_->getDetectorType(rawId) == TrackerGeometry::ModuleType::Ph2PSS ||
117  tGeom_->getDetectorType(rawId) == TrackerGeometry::ModuleType::Ph2SS) {
118  const PixelTopology& topol(pixdet->specificTopology());
119 
120  const int nrows = topol.nrows();
121  const int ncols = topol.ncolumns();
122 
123  LogDebug("SiPhase2BadStripChannelBuilder")
124  << "DetId: " << rawId << " subdet: " << subid << " nrows: " << nrows << " ncols: " << ncols << std::endl;
125 
126  std::vector<unsigned int> theSiStripVector;
127 
128  switch (theBCAlgo_) {
129  case NAIVE: {
130  LogDebug("SiPhase2BadStripChannelBuilder") << "using the NAIVE algorithm" << std::endl;
131 
132  unsigned short firstBadStrip = std::floor(CLHEP::RandFlat::shoot(engine_, 0, nrows));
133  unsigned short NconsecutiveBadStrips = std::floor(CLHEP::RandFlat::shoot(engine_, 1, 10));
134 
135  // if the interval exceeds the end of the module
136  if (firstBadStrip + NconsecutiveBadStrips > nrows) {
137  NconsecutiveBadStrips = nrows - firstBadStrip;
138  }
139 
140  unsigned int theBadStripRange;
141  theBadStripRange = obj->encodePhase2(firstBadStrip, NconsecutiveBadStrips);
142 
143  if (printdebug_)
144  edm::LogInfo("SiPhase2BadStripChannelBuilder")
145  << "detid " << rawId << " \t"
146  << " firstBadStrip " << firstBadStrip << "\t "
147  << " NconsecutiveBadStrips " << NconsecutiveBadStrips << "\t "
148  << " packed integer " << std::hex << theBadStripRange << std::dec << std::endl;
149 
150  theSiStripVector.push_back(theBadStripRange);
151  break;
152  }
153  case RANDOM: {
154  LogDebug("SiPhase2BadStripChannelBuilder") << "using the RANDOM algorithm" << std::endl;
155 
156  // auxilliary vector to check if the channels were already used
157  std::vector<Phase2TrackerDigi::PackedDigiType> usedChannels;
158 
159  size_t nmaxBadStrips = std::floor(nrows * ncols * badComponentsFraction_);
160 
161  LogDebug("SiPhase2BadStripChannelBuilder")
162  << __FUNCTION__ << " " << __LINE__ << " will mask: " << nmaxBadStrips << " strips" << std::endl;
163 
164  while (usedChannels.size() < nmaxBadStrips) {
165  unsigned short badStripRow = std::floor(CLHEP::RandFlat::shoot(engine_, 0, nrows));
166  unsigned short badStripCol = std::floor(CLHEP::RandFlat::shoot(engine_, 0, ncols));
167  const auto& badChannel = Phase2TrackerDigi::pixelToChannel(badStripRow, badStripCol);
168 
169  LogDebug("SiPhase2BadStripChannelBuilder")
170  << __FUNCTION__ << " " << __LINE__ << ": masking channel " << badChannel << " (" << badStripRow
171  << "," << badStripCol << ")" << std::endl;
172 
173  if (std::find(usedChannels.begin(), usedChannels.end(), badChannel) == usedChannels.end()) {
174  usedChannels.push_back(badChannel);
175  }
176  }
177 
178  const auto badChannelsGroups = this->clusterizeBadChannels(usedChannels);
179  // loop over the groups of bad strips
180  for (const auto& [first, consec] : badChannelsGroups) {
181  unsigned int theBadChannelsRange;
182  theBadChannelsRange = obj->encodePhase2(first, consec);
183 
184  if (printdebug_) {
185  edm::LogInfo("SiPhase2BadStripChannelBuilder")
186  << "detid " << rawId << " \t"
187  << " firstBadStrip " << first << "\t "
188  << " NconsecutiveBadStrips " << consec << "\t "
189  << " packed integer " << std::hex << theBadChannelsRange << std::dec << std::endl;
190  }
191  theSiStripVector.push_back(theBadChannelsRange);
192  }
193  break;
194  }
195  case NONE:
196  [[fallthrough]];
197  default:
198  throw cms::Exception("Inconsistent configuration") << "Did not specifiy the right algorithm to be run";
199  }
200 
201  SiStripBadStrip::Range range(theSiStripVector.begin(), theSiStripVector.end());
202  if (!obj->put(rawId, range))
203  edm::LogError("SiPhase2BadStripChannelBuilder")
204  << "[SiPhase2BadStripChannelBuilder::getNewObject] detid already exists" << std::endl;
205 
206  } // if it's a Strip module
207  } // if it's OT
208  } // if it's Tracker
209  } // loop of geomdets
210 
211  //End now write sistripbadChannel data in DB
213 
214  if (mydbservice.isAvailable()) {
215  if (mydbservice->isNewTagRequest("SiStripBadStripRcd")) {
216  mydbservice->createOneIOV<SiStripBadStrip>(*obj, mydbservice->beginOfTime(), "SiStripBadStripRcd");
217  } else {
218  mydbservice->appendOneIOV<SiStripBadStrip>(*obj, mydbservice->currentTime(), "SiStripBadStripRcd");
219  }
220  } else {
221  edm::LogError("SiPhase2BadStripChannelBuilder") << "Service is unavailable" << std::endl;
222  }
223 
224  tGeom_.release();
225  return obj;
226 }
virtual int nrows() const =0
Log< level::Error, false > LogError
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
assert(be >=bs)
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
void createOneIOV(const T &payload, cond::Time_t firstSinceTime, const std::string &recordName)
std::unique_ptr< TrackerGeometry > tGeom_
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]
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
std::map< unsigned short, unsigned short > clusterizeBadChannels(const std::vector< Phase2TrackerDigi::PackedDigiType > &maskedChannels)
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
virtual const PixelTopology & specificTopology() const
Returns a reference to the pixel proxy topology.
std::pair< ContainerIterator, ContainerIterator > Range
bool isAvailable() const
Definition: Service.h:40
Definition: TkAlStyle.h:43
static constexpr auto TID
#define LogDebug(id)

Member Data Documentation

◆ badComponentsFraction_

const float SiPhase2BadStripChannelBuilder::badComponentsFraction_
private

◆ engine_

CLHEP::HepRandomEngine* SiPhase2BadStripChannelBuilder::engine_
private

Definition at line 67 of file SiPhase2BadStripChannelBuilder.cc.

Referenced by algoAnalyze(), and getNewObject().

◆ geomToken_

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

Definition at line 70 of file SiPhase2BadStripChannelBuilder.cc.

Referenced by algoBeginRun().

◆ popConAlgo_

const unsigned int SiPhase2BadStripChannelBuilder::popConAlgo_
private

Definition at line 72 of file SiPhase2BadStripChannelBuilder.cc.

Referenced by SiPhase2BadStripChannelBuilder().

◆ printdebug_

const bool SiPhase2BadStripChannelBuilder::printdebug_
private

Definition at line 71 of file SiPhase2BadStripChannelBuilder.cc.

Referenced by clusterizeBadChannels(), and getNewObject().

◆ tGeom_

std::unique_ptr<TrackerGeometry> SiPhase2BadStripChannelBuilder::tGeom_
private

Definition at line 66 of file SiPhase2BadStripChannelBuilder.cc.

Referenced by algoBeginRun(), and getNewObject().

◆ theBCAlgo_

badChannelAlgo SiPhase2BadStripChannelBuilder::theBCAlgo_
private

◆ topoToken_

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

Definition at line 69 of file SiPhase2BadStripChannelBuilder.cc.

Referenced by algoBeginRun().

◆ tTopo_

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

Definition at line 65 of file SiPhase2BadStripChannelBuilder.cc.

Referenced by algoBeginRun().