Skip to content

Commit

Permalink
Merge pull request #38368 from Dr15Jones/improveSiStripDigitizer
Browse files Browse the repository at this point in the history
Improved use of EventSetup in SiStripDigitizer
  • Loading branch information
cmsbuild committed Jun 14, 2022
2 parents e0e63fa + f620b40 commit 9827a42
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 18 deletions.
28 changes: 16 additions & 12 deletions SimTracker/SiStripDigitizer/plugins/SiStripDigitizer.cc
Expand Up @@ -70,7 +70,8 @@ SiStripDigitizer::SiStripDigitizer(const edm::ParameterSet& conf,
gainToken_(iC.esConsumes(edm::ESInputTag("", conf.getParameter<std::string>("Gain")))),
noiseToken_(iC.esConsumes()),
thresholdToken_(iC.esConsumes()),
pedestalToken_(iC.esConsumes()) {
pedestalToken_(iC.esConsumes()),
deadChannelToken_(iC.esConsumes()) {
if (useConfFromDB) {
detCablingToken_ = iC.esConsumes();
}
Expand Down Expand Up @@ -214,20 +215,23 @@ void SiStripDigitizer::initializeEvent(edm::Event const& iEvent, edm::EventSetup
pDD = &iSetup.getData(pDDToken_);
pSetup = &iSetup.getData(pSetupToken_);

// FIX THIS! We only need to clear and (re)fill detectorUnits when the geometry type IOV changes. Use ESWatcher to determine this.
bool changes = true;
if (changes) { // Replace with ESWatcher
// We only need to clear and (re)fill detectorUnits when the geometry type IOV changes.
auto ddCache = iSetup.get<TrackerDigiGeometryRecord>().cacheIdentifier();
auto deadChannelCache = iSetup.get<SiStripBadChannelRcd>().cacheIdentifier();
if (ddCache != ddCacheID_ or deadChannelCache != deadChannelCacheID_) {
ddCacheID_ = ddCache;
deadChannelCacheID_ = deadChannelCache;
detectorUnits.clear();
}
for (const auto& iu : pDD->detUnits()) {
unsigned int detId = iu->geographicalId().rawId();
if (iu->type().isTrackerStrip()) {
auto stripdet = dynamic_cast<StripGeomDetUnit const*>(iu);
assert(stripdet != nullptr);
if (changes) { // Replace with ESWatcher

auto const& deadChannel = iSetup.getData(deadChannelToken_);
for (const auto& iu : pDD->detUnits()) {
unsigned int detId = iu->geographicalId().rawId();
if (iu->type().isTrackerStrip()) {
auto stripdet = dynamic_cast<StripGeomDetUnit const*>(iu);
assert(stripdet != nullptr);
detectorUnits.insert(std::make_pair(detId, stripdet));
theDigiAlgo->initializeDetUnit(stripdet, deadChannel);
}
theDigiAlgo->initializeDetUnit(stripdet, iSetup);
}
}
}
Expand Down
5 changes: 5 additions & 0 deletions SimTracker/SiStripDigitizer/plugins/SiStripDigitizer.h
Expand Up @@ -44,6 +44,7 @@ class PSimHit;
class SiStripDigitizerAlgorithm;
class StripGeomDetUnit;
class TrackerGeometry;
class SiStripBadStrip;

/** @brief Accumulator to perform digitisation on the strip tracker sim hits.
*
Expand Down Expand Up @@ -103,9 +104,13 @@ class SiStripDigitizer : public DigiAccumulatorMixMod {
const edm::ESGetToken<SiStripNoises, SiStripNoisesRcd> noiseToken_;
const edm::ESGetToken<SiStripThreshold, SiStripThresholdRcd> thresholdToken_;
const edm::ESGetToken<SiStripPedestals, SiStripPedestalsRcd> pedestalToken_;
const edm::ESGetToken<SiStripBadStrip, SiStripBadChannelRcd> deadChannelToken_;
edm::ESGetToken<SiStripDetCabling, SiStripDetCablingRcd> detCablingToken_;
edm::ESGetToken<SiStripApvSimulationParameters, SiStripApvSimulationParametersRcd> apvSimulationParametersToken_;

unsigned long long ddCacheID_ = 0;
unsigned long long deadChannelCacheID_ = 0;

///< Whether or not to create the association to sim truth collection. Set in configuration.
/** @brief Offset to add to the index of each sim hit to account for which crossing it's in.
*
Expand Down
Expand Up @@ -60,7 +60,6 @@ SiStripDigitizerAlgorithm::SiStripDigitizerAlgorithm(const edm::ParameterSet& co
inefficiency(conf.getParameter<double>("Inefficiency")),
pedOffset((unsigned int)conf.getParameter<double>("PedestalsOffset")),
PreMixing_(conf.getParameter<bool>("PreMixingMode")),
deadChannelToken_(iC.esConsumes()),
pdtToken_(iC.esConsumes()),
lorentzAngleToken_(iC.esConsumes(edm::ESInputTag("", conf.getParameter<std::string>("LorentzAngle")))),
theSiHitDigitizer(new SiHitDigitizer(conf)),
Expand Down Expand Up @@ -108,9 +107,7 @@ SiStripDigitizerAlgorithm::SiStripDigitizerAlgorithm(const edm::ParameterSet& co

SiStripDigitizerAlgorithm::~SiStripDigitizerAlgorithm() {}

void SiStripDigitizerAlgorithm::initializeDetUnit(StripGeomDetUnit const* det, const edm::EventSetup& iSetup) {
auto const& deadChannel = iSetup.getData(deadChannelToken_);

void SiStripDigitizerAlgorithm::initializeDetUnit(StripGeomDetUnit const* det, const SiStripBadStrip& deadChannel) {
unsigned int detId = det->geographicalId().rawId();
int numStrips = (det->specificTopology()).nstrips();

Expand Down
Expand Up @@ -67,7 +67,7 @@ class SiStripDigitizerAlgorithm {
// Destructor
~SiStripDigitizerAlgorithm();

void initializeDetUnit(StripGeomDetUnit const* det, const edm::EventSetup& iSetup);
void initializeDetUnit(StripGeomDetUnit const* det, SiStripBadStrip const&);

void initializeEvent(const edm::EventSetup& iSetup);

Expand Down Expand Up @@ -134,7 +134,6 @@ class SiStripDigitizerAlgorithm {
const double inefficiency;
const double pedOffset;
const bool PreMixing_;
const edm::ESGetToken<SiStripBadStrip, SiStripBadChannelRcd> deadChannelToken_;
const edm::ESGetToken<HepPDT::ParticleDataTable, PDTRecord> pdtToken_;
const edm::ESGetToken<SiStripLorentzAngle, SiStripLorentzAngleSimRcd> lorentzAngleToken_;

Expand Down

0 comments on commit 9827a42

Please sign in to comment.