Skip to content

Commit

Permalink
Merge pull request #29565 from mmusich/fixPhase2InnerTrackerPremixing
Browse files Browse the repository at this point in the history
Fix phase2 tracker premixed digis
  • Loading branch information
cmsbuild committed Apr 30, 2020
2 parents c2aa3d9 + 66a11ff commit 519b025
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 15 deletions.
Expand Up @@ -224,7 +224,8 @@
pixelPileInputTag = cms.InputTag("simSiPixelDigis:Pixel"),
trackerLabelSig = cms.InputTag("simSiPixelDigis:Tracker"),
trackerPileInputTag = cms.InputTag("simSiPixelDigis:Tracker"),
premixStage1ElectronPerAdc = cms.double(_phase2TrackerPremixStage1ModifyDict["PixelDigitizerAlgorithm"]["ElectronPerAdc"])
pixelPmxStage1ElectronPerAdc = cms.double(phase2TrackerDigitizer.PixelDigitizerAlgorithm.ElectronPerAdc.value()),
trackerPmxStage1ElectronPerAdc = cms.double(phase2TrackerDigitizer.PSPDigitizerAlgorithm.ElectronPerAdc.value())
),
pixelSimLink = dict(
labelSig = "simSiPixelDigis:Pixel",
Expand Down
Expand Up @@ -31,15 +31,16 @@ class PreMixingPhase2TrackerWorker : public PreMixingWorker {
void put(edm::Event& e, edm::EventSetup const& iSetup, std::vector<PileupSummaryInfo> const& ps, int bs) override;

private:
void accumulate(const edm::DetSetVector<PixelDigi>& digis);
void accumulate(const edm::DetSetVector<PixelDigi>& digis, const float electronsPerADC);

cms::Phase2TrackerDigitizer digitizer_;

edm::EDGetTokenT<edm::DetSetVector<PixelDigi>> pixelSignalToken_;
edm::EDGetTokenT<edm::DetSetVector<PixelDigi>> trackerSignalToken_;
edm::InputTag pixelPileupLabel_;
edm::InputTag trackerPileupLabel_;
float electronPerAdc_;
float pixelElectronPerAdc_;
float trackerElectronPerAdc_;

// Maybe map of maps is not that bad for this add once, update once,
// read once workflow?
Expand All @@ -55,7 +56,8 @@ PreMixingPhase2TrackerWorker::PreMixingPhase2TrackerWorker(const edm::ParameterS
trackerSignalToken_(iC.consumes<edm::DetSetVector<PixelDigi>>(ps.getParameter<edm::InputTag>("trackerLabelSig"))),
pixelPileupLabel_(ps.getParameter<edm::InputTag>("pixelPileInputTag")),
trackerPileupLabel_(ps.getParameter<edm::InputTag>("trackerPileInputTag")),
electronPerAdc_(ps.getParameter<double>("premixStage1ElectronPerAdc")) {}
pixelElectronPerAdc_(ps.getParameter<double>("pixelPmxStage1ElectronPerAdc")),
trackerElectronPerAdc_(ps.getParameter<double>("trackerPmxStage1ElectronPerAdc")) {}

void PreMixingPhase2TrackerWorker::beginLuminosityBlock(edm::LuminosityBlock const& lumi, edm::EventSetup const& es) {
digitizer_.beginLuminosityBlock(lumi, es);
Expand All @@ -68,29 +70,29 @@ void PreMixingPhase2TrackerWorker::initializeEvent(edm::Event const& e, edm::Eve
void PreMixingPhase2TrackerWorker::addSignals(edm::Event const& e, edm::EventSetup const& es) {
edm::Handle<edm::DetSetVector<PixelDigi>> hdigis;
e.getByToken(pixelSignalToken_, hdigis);
accumulate(*hdigis);
accumulate(*hdigis, pixelElectronPerAdc_);

e.getByToken(trackerSignalToken_, hdigis);
accumulate(*hdigis);
accumulate(*hdigis, trackerElectronPerAdc_);
}

void PreMixingPhase2TrackerWorker::addPileups(PileUpEventPrincipal const& pep, edm::EventSetup const& es) {
edm::Handle<edm::DetSetVector<PixelDigi>> hdigis;
pep.getByLabel(pixelPileupLabel_, hdigis);
accumulate(*hdigis);
accumulate(*hdigis, pixelElectronPerAdc_);

pep.getByLabel(trackerPileupLabel_, hdigis);
accumulate(*hdigis);
accumulate(*hdigis, trackerElectronPerAdc_);
}

void PreMixingPhase2TrackerWorker::accumulate(const edm::DetSetVector<PixelDigi>& digis) {
void PreMixingPhase2TrackerWorker::accumulate(const edm::DetSetVector<PixelDigi>& digis, const float electronPerADC) {
for (const auto& detset : digis) {
auto& accDet = accumulator_[detset.detId()];
for (const auto& digi : detset) {
// note: according to C++ standard operator[] does
// value-initializiation, which for float means initial value of 0
auto& acc = accDet[digi.channel()];
acc += digi.adc() * electronPerAdc_;
acc += digi.adc() * electronPerADC;
}
}
}
Expand Down
Expand Up @@ -246,9 +246,6 @@
# - do not apply inefficiency (to be done in stage2)
# - disable threshold smearing
#
# For inner pixel
# - extend the dynamic range of ADCs
#
# For outer tracker
# - force analog readout to get the ADCs
#
Expand All @@ -260,8 +257,6 @@
AddNoisyPixels = False,
AddInefficiency = False,
AddThresholdSmearing = False,
ElectronPerAdc = phase2TrackerDigitizer.PSPDigitizerAlgorithm.ElectronPerAdc.value(),
AdcFullScale = phase2TrackerDigitizer.PSPDigitizerAlgorithm.AdcFullScale.value(),
),
PSPDigitizerAlgorithm = dict(
AddNoisyPixels = False,
Expand All @@ -272,6 +267,7 @@
AddNoisyPixels = False,
AddInefficiency = False,
AddThresholdSmearing = False,
Phase2ReadoutMode = -1
),
SSDigitizerAlgorithm = dict(
AddNoisyPixels = False,
Expand Down

0 comments on commit 519b025

Please sign in to comment.