Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

esConsumes migration for EDModules in SiStrip packages, part 1 #31826

Merged
merged 22 commits into from
Nov 12, 2020
Merged
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
731d603
AnalysisAlgos/SiStripClusterInfoProducer: migrate SiStripProcessedRaw…
pieterdavid Oct 7, 2020
6329907
esConsumes migration for CalibTracker/SiStripChannelGain
pieterdavid Oct 8, 2020
8510fae
esConsumes migration for CalibTracker/SiStripCommon
pieterdavid Oct 8, 2020
23ea3e5
esConsumes migration for CalibTracker/SiStripDCS
pieterdavid Oct 8, 2020
e4a205b
esConsumes migration for CalibTracker/SiStripESProducers
pieterdavid Oct 8, 2020
576a53d
esConsumes migration for CalibTracker/SiStripLorentzAngle
pieterdavid Oct 9, 2020
130373c
esConsumes migration for CalibTracker/SiStripQuality
pieterdavid Oct 9, 2020
5a40184
esConsumes migration for EventFilter/SiStripChannelChargeFilter
pieterdavid Oct 9, 2020
aced459
esConsumes migration for EventFilter/SiStripRawToDigi
pieterdavid Oct 9, 2020
4f3b4da
esConsumes migration for RecoLocalTracker/SistripClusterizer
pieterdavid Oct 9, 2020
85053fb
Remove some (now unnecessary) ESHandle includes in CalibTracker/SiStr…
pieterdavid Oct 9, 2020
ac8c339
esConsumes migration for DPGAnalysis/SiStripTools
pieterdavid Oct 11, 2020
258b00a
esConsumes migration for CondTools/SiStrip
pieterdavid Oct 12, 2020
4e6a19c
esConsumes migration for RecoLocalTracker/SiStripZeroSuppression
pieterdavid Oct 15, 2020
293962a
Update other SiStripRawProcessingFactory uses, one Handle->product
pieterdavid Oct 16, 2020
133eb5d
fix ESInputTag construction
pieterdavid Oct 16, 2020
a600842
remove SiStripClusterizerFromRaw::beginRun (initialize is called for …
pieterdavid Oct 16, 2020
75d3207
Use label in DPGAnalysis/SiStripTools/plugins/APVCyclePhaseProducerFr…
pieterdavid Oct 19, 2020
d854f37
Avoid ESHandle where possible
pieterdavid Oct 24, 2020
c3c0e56
SiStripZeroSuppression: pass ConsumesCollector by value
pieterdavid Nov 2, 2020
e1b35ad
make esConsumes (and watcher construction) optional where controlled …
pieterdavid Nov 2, 2020
4318783
fix clang warnings
pieterdavid Nov 3, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,21 @@
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/Utilities/interface/transform.h"

#include "CalibFormats/SiStripObjects/interface/SiStripGain.h"
#include "CalibTracker/Records/interface/SiStripGainRcd.h"

#include "DataFormats/SiStripDigi/interface/SiStripDigi.h"
#include "DataFormats/SiStripDigi/interface/SiStripRawDigi.h"
#include "DataFormats/SiStripDigi/interface/SiStripProcessedRawDigi.h"

#include <functional>

SiStripProcessedRawDigiProducer::SiStripProcessedRawDigiProducer(edm::ParameterSet const& conf)
: inputTags(conf.getParameter<std::vector<edm::InputTag> >("DigiProducersList")),
inputTokensDigi(edm::vector_transform(
inputTags, [this](edm::InputTag const& tag) { return consumes<edm::DetSetVector<SiStripDigi> >(tag); })),
inputTokensRawDigi(edm::vector_transform(
inputTags, [this](edm::InputTag const& tag) { return consumes<edm::DetSetVector<SiStripRawDigi> >(tag); })),
subtractorPed(SiStripRawProcessingFactory::create_SubtractorPed(conf)),
subtractorCMN(SiStripRawProcessingFactory::create_SubtractorCMN(conf)) {
: inputTags_(conf.getParameter<std::vector<edm::InputTag> >("DigiProducersList")),
inputTokensDigi_(edm::vector_transform(
inputTags_, [this](edm::InputTag const& tag) { return consumes<edm::DetSetVector<SiStripDigi> >(tag); })),
inputTokensRawDigi_(edm::vector_transform(
inputTags_, [this](edm::InputTag const& tag) { return consumes<edm::DetSetVector<SiStripRawDigi> >(tag); })),
gainToken_(esConsumes()),
subtractorPed_(SiStripRawProcessingFactory::create_SubtractorPed(conf, consumesCollector())),
subtractorCMN_(SiStripRawProcessingFactory::create_SubtractorCMN(conf, consumesCollector())) {
produces<edm::DetSetVector<SiStripProcessedRawDigi> >("");
}

Expand All @@ -31,17 +29,17 @@ void SiStripProcessedRawDigiProducer::produce(edm::Event& e, const edm::EventSet
edm::Handle<edm::DetSetVector<SiStripDigi> > inputDigis;
edm::Handle<edm::DetSetVector<SiStripRawDigi> > inputRawdigis;

es.get<SiStripGainRcd>().get(gainHandle);
subtractorPed->init(es);
subtractorCMN->init(es);
const auto& gain = es.getData(gainToken_);
subtractorPed_->init(es);
subtractorCMN_->init(es);

std::string label = findInput(inputRawdigis, inputTokensRawDigi, e);
std::string label = findInput(inputRawdigis, inputTokensRawDigi_, e);
if ("VirginRaw" == label)
vr_process(*inputRawdigis, *output);
vr_process(*inputRawdigis, *output, gain);
else if ("ProcessedRaw" == label)
pr_process(*inputRawdigis, *output);
else if ("ZeroSuppressed" == findInput(inputDigis, inputTokensDigi, e))
zs_process(*inputDigis, *output);
pr_process(*inputRawdigis, *output, gain);
else if ("ZeroSuppressed" == findInput(inputDigis, inputTokensDigi_, e))
zs_process(*inputDigis, *output, gain);
else
edm::LogError("Input Not Found");

Expand All @@ -57,55 +55,59 @@ inline std::string SiStripProcessedRawDigiProducer::findInput(edm::Handle<T>& ha
unsigned index(token - tokens.begin());
e.getByToken(*token, handle);
if (handle.isValid() && !handle->empty()) {
edm::LogInfo("Input") << inputTags.at(index);
return inputTags.at(index).instance();
edm::LogInfo("Input") << inputTags_.at(index);
return inputTags_.at(index).instance();
}
}
return "Input Not Found";
}

void SiStripProcessedRawDigiProducer::zs_process(const edm::DetSetVector<SiStripDigi>& input,
edm::DetSetVector<SiStripProcessedRawDigi>& output) {
edm::DetSetVector<SiStripProcessedRawDigi>& output,
const SiStripGain& gain) {
std::vector<float> digis;
for (edm::DetSetVector<SiStripDigi>::const_iterator detset = input.begin(); detset != input.end(); ++detset) {
digis.clear();
for (edm::DetSet<SiStripDigi>::const_iterator digi = detset->begin(); digi != detset->end(); ++digi) {
digis.resize(digi->strip(), 0);
digis.push_back(digi->adc());
}
common_process(detset->id, digis, output);
common_process(detset->id, digis, output, gain);
}
}

void SiStripProcessedRawDigiProducer::pr_process(const edm::DetSetVector<SiStripRawDigi>& input,
edm::DetSetVector<SiStripProcessedRawDigi>& output) {
edm::DetSetVector<SiStripProcessedRawDigi>& output,
const SiStripGain& gain) {
for (edm::DetSetVector<SiStripRawDigi>::const_iterator detset = input.begin(); detset != input.end(); ++detset) {
std::vector<float> digis;
transform(
detset->begin(), detset->end(), back_inserter(digis), std::bind(&SiStripRawDigi::adc, std::placeholders::_1));
subtractorCMN->subtract(detset->id, 0, digis);
common_process(detset->id, digis, output);
subtractorCMN_->subtract(detset->id, 0, digis);
common_process(detset->id, digis, output, gain);
}
}

void SiStripProcessedRawDigiProducer::vr_process(const edm::DetSetVector<SiStripRawDigi>& input,
edm::DetSetVector<SiStripProcessedRawDigi>& output) {
edm::DetSetVector<SiStripProcessedRawDigi>& output,
const SiStripGain& gain) {
for (edm::DetSetVector<SiStripRawDigi>::const_iterator detset = input.begin(); detset != input.end(); ++detset) {
std::vector<int16_t> int_digis(detset->size());
subtractorPed->subtract(*detset, int_digis);
subtractorPed_->subtract(*detset, int_digis);
std::vector<float> digis(int_digis.begin(), int_digis.end());
subtractorCMN->subtract(detset->id, 0, digis);
common_process(detset->id, digis, output);
subtractorCMN_->subtract(detset->id, 0, digis);
common_process(detset->id, digis, output, gain);
}
}

void SiStripProcessedRawDigiProducer::common_process(const uint32_t detId,
std::vector<float>& digis,
edm::DetSetVector<SiStripProcessedRawDigi>& output) {
edm::DetSetVector<SiStripProcessedRawDigi>& output,
const SiStripGain& gain) {
//Apply Gains
SiStripApvGain::Range detGainRange = gainHandle->getRange(detId);
SiStripApvGain::Range detGainRange = gain.getRange(detId);
for (std::vector<float>::iterator it = digis.begin(); it < digis.end(); ++it)
(*it) /= (gainHandle->getStripGain(it - digis.begin(), detGainRange));
(*it) /= (gain.getStripGain(it - digis.begin(), detGainRange));

//Insert as DetSet
edm::DetSet<SiStripProcessedRawDigi> ds(detId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,21 @@

#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/EDProducer.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/Utilities/interface/InputTag.h"

#include "RecoLocalTracker/SiStripZeroSuppression/interface/SiStripPedestalsSubtractor.h"
#include "RecoLocalTracker/SiStripZeroSuppression/interface/SiStripCommonModeNoiseSubtractor.h"
#include "RecoLocalTracker/SiStripZeroSuppression/interface/SiStripRawProcessingFactory.h"

#include "CalibFormats/SiStripObjects/interface/SiStripGain.h"
#include "CalibTracker/Records/interface/SiStripGainRcd.h"

#include "DataFormats/Common/interface/DetSetVector.h"
#include "DataFormats/SiStripDigi/interface/SiStripDigi.h"
#include "DataFormats/SiStripDigi/interface/SiStripRawDigi.h"
#include <memory>
#include <string>

class SiStripGain;
class SiStripProcessedRawDigi;

class SiStripProcessedRawDigiProducer : public edm::EDProducer {
Expand All @@ -28,17 +29,26 @@ class SiStripProcessedRawDigiProducer : public edm::EDProducer {
template <class T>
std::string findInput(edm::Handle<T>& handle, const std::vector<edm::EDGetTokenT<T> >& tokens, const edm::Event& e);

void vr_process(const edm::DetSetVector<SiStripRawDigi>&, edm::DetSetVector<SiStripProcessedRawDigi>&);
void pr_process(const edm::DetSetVector<SiStripRawDigi>&, edm::DetSetVector<SiStripProcessedRawDigi>&);
void zs_process(const edm::DetSetVector<SiStripDigi>&, edm::DetSetVector<SiStripProcessedRawDigi>&);
void common_process(const uint32_t, std::vector<float>&, edm::DetSetVector<SiStripProcessedRawDigi>&);

std::vector<edm::InputTag> inputTags;
std::vector<edm::EDGetTokenT<edm::DetSetVector<SiStripDigi> > > inputTokensDigi;
std::vector<edm::EDGetTokenT<edm::DetSetVector<SiStripRawDigi> > > inputTokensRawDigi;
edm::ESHandle<SiStripGain> gainHandle;

std::unique_ptr<SiStripPedestalsSubtractor> subtractorPed;
std::unique_ptr<SiStripCommonModeNoiseSubtractor> subtractorCMN;
void vr_process(const edm::DetSetVector<SiStripRawDigi>&,
edm::DetSetVector<SiStripProcessedRawDigi>&,
const SiStripGain&);
void pr_process(const edm::DetSetVector<SiStripRawDigi>&,
edm::DetSetVector<SiStripProcessedRawDigi>&,
const SiStripGain&);
void zs_process(const edm::DetSetVector<SiStripDigi>&,
edm::DetSetVector<SiStripProcessedRawDigi>&,
const SiStripGain&);
void common_process(const uint32_t,
std::vector<float>&,
edm::DetSetVector<SiStripProcessedRawDigi>&,
const SiStripGain&);

std::vector<edm::InputTag> inputTags_;
std::vector<edm::EDGetTokenT<edm::DetSetVector<SiStripDigi> > > inputTokensDigi_;
std::vector<edm::EDGetTokenT<edm::DetSetVector<SiStripRawDigi> > > inputTokensRawDigi_;
edm::ESGetToken<SiStripGain, SiStripGainRcd> gainToken_;

std::unique_ptr<SiStripPedestalsSubtractor> subtractorPed_;
std::unique_ptr<SiStripCommonModeNoiseSubtractor> subtractorCMN_;
};
#endif
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@

// CMSSW includes
#include "CondFormats/SiStripObjects/interface/SiStripApvGain.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/MakerMacros.h"
Expand All @@ -29,6 +28,12 @@
#include "DQMServices/Core/interface/DQMStore.h"
#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
#include "DataFormats/TrackerCommon/interface/TrackerTopology.h"
#include "Geometry/Records/interface/TrackerTopologyRcd.h"
#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
#include "CalibFormats/SiStripObjects/interface/SiStripGain.h"
#include "CalibFormats/SiStripObjects/interface/SiStripQuality.h"
#include "CalibTracker/Records/interface/SiStripGainRcd.h"
#include "CalibTracker/Records/interface/SiStripQualityRcd.h"

// user includes
#include "CalibTracker/SiStripChannelGain/interface/APVGainStruct.h"
Expand Down Expand Up @@ -88,10 +93,14 @@ class SiStripGainsPCLHarvester : public DQMEDHarvester {

int CalibrationLevel;

edm::ESHandle<TrackerGeometry> tkGeom_;
const TrackerGeometry* bareTkGeomPtr_; // ugly hack to fill APV colls only once, but checks
const TrackerTopology* tTopo_;
const TrackerGeometry* bareTkGeomPtr_ = nullptr; // ugly hack to fill APV colls only once, but checks
const TrackerTopology* tTopo_ = nullptr;

std::vector<std::shared_ptr<stAPVGain> > APVsCollOrdered;
std::unordered_map<unsigned int, std::shared_ptr<stAPVGain> > APVsColl;

edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> tTopoToken_;
edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> tkGeomToken_;
edm::ESGetToken<SiStripGain, SiStripGainRcd> gainToken_;
edm::ESGetToken<SiStripQuality, SiStripQualityRcd> qualityToken_;
};
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@
#include "DataFormats/TrackerRecHit2D/interface/SiStripMatchedRecHit2D.h"
#include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit1D.h"
#include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit2D.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/MakerMacros.h"
Expand Down Expand Up @@ -139,6 +138,11 @@ class SiStripGainsPCLWorker : public DQMGlobalEDAnalyzer<APVGain::APVGainHistogr
edm::EDGetTokenT<std::vector<double> > gainused_token_;
edm::EDGetTokenT<std::vector<double> > gainusedTick_token_;

edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> tTopoToken_;
edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> tkGeomToken_;
edm::ESGetToken<SiStripGain, SiStripGainRcd> gainToken_;
edm::ESGetToken<SiStripQuality, SiStripQualityRcd> qualityToken_;

std::string EventPrefix_; //("");
std::string EventSuffix_; //("");
std::string TrackPrefix_; //("track");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
#include "DataFormats/TrackReco/interface/Track.h"
#include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h"

#include "FWCore/Framework/interface/ESHandle.h"
#include "Geometry/CommonDetUnit/interface/GluedGeomDet.h"
#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
Expand All @@ -37,6 +36,7 @@ DeDxDiscriminatorLearner::DeDxDiscriminatorLearner(const edm::ParameterSet& iCon
m_tracksTag = consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("tracks"));
m_trajTrackAssociationTag =
consumes<TrajTrackAssociationCollection>(iConfig.getParameter<edm::InputTag>("trajectoryTrackAssociation"));
m_tkGeomToken = esConsumes<edm::Transition::BeginRun>();

P_Min = iConfig.getParameter<double>("P_Min");
P_Max = iConfig.getParameter<double>("P_Max");
Expand Down Expand Up @@ -82,11 +82,11 @@ void DeDxDiscriminatorLearner::algoBeginJob(const edm::EventSetup& iSetup) {
Charge_Max);

if (useCalibration && calibGains.empty()) {
edm::ESHandle<TrackerGeometry> tkGeom;
iSetup.get<TrackerDigiGeometryRecord>().get(tkGeom);
m_off = tkGeom->offsetDU(GeomDetEnumerators::PixelBarrel); //index start at the first pixel
const auto& tkGeom = iSetup.getData(m_tkGeomToken);

DeDxTools::makeCalibrationMap(m_calibrationPath, *tkGeom, calibGains, m_off);
m_off = tkGeom.offsetDU(GeomDetEnumerators::PixelBarrel); //index start at the first pixel

DeDxTools::makeCalibrationMap(m_calibrationPath, tkGeom, calibGains, m_off);
}

//Read the calibTree if in calibTree mode
Expand Down Expand Up @@ -237,8 +237,7 @@ void DeDxDiscriminatorLearner::processHit(const TrackingRecHit* recHit,

//this function is only used when we run over a calibTree instead of running over EDM files
void DeDxDiscriminatorLearner::algoAnalyzeTheTree(const edm::EventSetup& iSetup) {
edm::ESHandle<TrackerGeometry> tkGeom;
iSetup.get<TrackerDigiGeometryRecord>().get(tkGeom);
const auto& tkGeom = iSetup.getData(m_tkGeomToken);

unsigned int NEvent = 0;
for (unsigned int i = 0; i < VInputFiles.size(); i++) {
Expand Down Expand Up @@ -321,7 +320,7 @@ void DeDxDiscriminatorLearner::algoAnalyzeTheTree(const edm::EventSetup& iSetup)

int Charge = 0;
if (useCalibration) {
auto& gains = calibGains[tkGeom->idToDetUnit(DetId((*rawid)[c]))->index() - m_off];
auto& gains = calibGains[tkGeom.idToDetUnit(DetId((*rawid)[c]))->index() - m_off];
auto& gain = gains[(*firststrip)[c] / 128];
for (unsigned int s = 0; s < (*nstrips)[c]; s++) {
int StripCharge = (*amplitude)[FirstAmplitude - (*nstrips)[c] + s];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ class DeDxDiscriminatorLearner : public ConditionDBWriter<PhysicsTools::Calibrat
edm::EDGetTokenT<TrajTrackAssociationCollection> m_trajTrackAssociationTag;
edm::EDGetTokenT<reco::TrackCollection> m_tracksTag;

edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> m_tkGeomToken;

float MinTrackMomentum;
float MaxTrackMomentum;
float MinTrackEta;
Expand Down
Loading