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

Modernize ESProducers in CalibTracker/SiPixelESProducers #27042

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Expand Up @@ -24,7 +24,6 @@
#include "FWCore/Framework/interface/ModuleFactory.h"
#include "FWCore/Framework/interface/ESProducer.h"

#include "FWCore/Framework/interface/ESHandle.h"
#include "CondFormats/DataRecord/interface/SiPixelStatusScenariosRcd.h"
#include "CondFormats/SiPixelObjects/interface/SiPixelFEDChannelContainer.h"
#include "CalibTracker/Records/interface/SiPixelFEDChannelContainerESProducerRcd.h"
Expand All @@ -47,14 +46,15 @@ class PixelFEDChannelCollectionProducer : public edm::ESProducer {
ReturnType produce(const SiPixelFEDChannelContainerESProducerRcd &);
private:
// ----------member data ---------------------------
edm::ESGetToken<SiPixelFEDChannelContainer, SiPixelStatusScenariosRcd> qualityToken_;
};


PixelFEDChannelCollectionProducer::PixelFEDChannelCollectionProducer(const edm::ParameterSet& iConfig)
{
//the following line is needed to tell the framework what
// data is being produced
setWhatProduced(this);
setWhatProduced(this).setConsumes(qualityToken_);

//now do what ever other initialization is needed
}
Expand All @@ -76,24 +76,23 @@ PixelFEDChannelCollectionProducer::~PixelFEDChannelCollectionProducer()
PixelFEDChannelCollectionProducer::ReturnType
PixelFEDChannelCollectionProducer::produce(const SiPixelFEDChannelContainerESProducerRcd& iRecord)
{
edm::ESHandle<SiPixelFEDChannelContainer> qualityCollectionHandle;
iRecord.getRecord<SiPixelStatusScenariosRcd>().get(qualityCollectionHandle);
const auto& qualityCollection = iRecord.get(qualityToken_);

PixelFEDChannelCollectionMap out;
auto out = std::make_unique<PixelFEDChannelCollectionMap>();

for(const auto& it : qualityCollectionHandle->getScenarioMap()){
for(const auto& it : qualityCollection.getScenarioMap()){

std::string scenario = it.first;
PixelFEDChannelCollection disabled_channelcollection;
auto SiPixelBadFedChannels = it.second;
const std::string& scenario = it.first;
// getScenarioMap() is an unordered_map<string, ...>, so each scenario appears exactly once
PixelFEDChannelCollection& disabled_channelcollection = (*out)[scenario];

const auto& SiPixelBadFedChannels = it.second;
for(const auto &entry : SiPixelBadFedChannels){
disabled_channelcollection.insert(entry.first, entry.second.data(), entry.second.size());
}
out.emplace(scenario,disabled_channelcollection);
}

auto product = std::make_unique<PixelFEDChannelCollectionMap>(out);
return product;
return out;
}

//define this as a plug-in
Expand Down
2 changes: 0 additions & 2 deletions CalibTracker/SiPixelESProducers/plugins/SealModules.cc
Expand Up @@ -12,7 +12,6 @@
#include "CalibTracker/SiPixelESProducers/interface/SiPixelDetInfoFileWriter.h"
#include "CalibTracker/SiPixelESProducers/interface/SiPixelFakeCPEGenericErrorParmESSource.h"
#include "CalibTracker/SiPixelESProducers/interface/SiPixelFakeTemplateDBObjectESSource.h"
#include "CalibTracker/SiPixelESProducers/interface/SiPixelQualityESProducer.h"
#include "CalibTracker/SiPixelESProducers/interface/SiPixelFakeQualityESSource.h"


Expand All @@ -23,5 +22,4 @@ DEFINE_FWK_EVENTSETUP_SOURCE(SiPixelFakeLorentzAngleESSource);
DEFINE_FWK_EVENTSETUP_SOURCE(SiPixelFakeQualityESSource);
DEFINE_FWK_EVENTSETUP_SOURCE(SiPixelFakeCPEGenericErrorParmESSource);
DEFINE_FWK_EVENTSETUP_SOURCE(SiPixelFakeTemplateDBObjectESSource);
DEFINE_FWK_EVENTSETUP_MODULE(SiPixelQualityESProducer);
DEFINE_FWK_MODULE(SiPixelDetInfoFileWriter);
@@ -1,27 +1,52 @@
// -*- C++ -*-
// Package: SiPixelESProducers
//
// Package: SiPixel2DTemplateDBObjectESProducer
// Class: SiPixel2DTemplateDBObjectESProducer
//
/**\class SiPixel2DTemplateDBObjectESProducer SiPixel2DTemplateDBObjectESProducer.cc CalibTracker/SiPixelESProducers/plugin/SiPixel2DTemplateDBObjectESProducer.cc

Description: ESProducer for magnetic-field-dependent local reco templates

Implementation: Used inside the RecoLocalTracker/Records/TkPixelRecord to select the correct db for given magnetic field
*/
//
// Original Author: D.Fehling
// Created: Tue Sep 29 14:49:31 CET 2009
//
//

#include "CalibTracker/SiPixelESProducers/interface/SiPixel2DTemplateDBObjectESProducer.h"

#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/Framework/interface/ESProducer.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Utilities/interface/do_nothing_deleter.h"
#include "FWCore/Framework/interface/ModuleFactory.h"

#include "MagneticField/Engine/interface/MagneticField.h"
#include "CondFormats/SiPixelObjects/interface/SiPixel2DTemplateDBObject.h"
#include "CalibTracker/Records/interface/SiPixel2DTemplateDBObjectESProducerRcd.h"

#include <memory>
#include "boost/mpl/vector.hpp"

#include "FWCore/Framework/interface/ModuleFactory.h"
#include "MagneticField/Engine/interface/MagneticField.h"

using namespace edm;


class SiPixel2DTemplateDBObjectESProducer : public edm::ESProducer {

public:

SiPixel2DTemplateDBObjectESProducer(const edm::ParameterSet& iConfig);
~SiPixel2DTemplateDBObjectESProducer() override;
std::shared_ptr<const SiPixel2DTemplateDBObject> produce(const SiPixel2DTemplateDBObjectESProducerRcd &);
private:
edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> magfieldToken_;
edm::ESGetToken<SiPixel2DTemplateDBObject, SiPixel2DTemplateDBObjectRcd> dbToken_;
};


SiPixel2DTemplateDBObjectESProducer::SiPixel2DTemplateDBObjectESProducer(const edm::ParameterSet& iConfig) {
setWhatProduced(this);
setWhatProduced(this)
.setConsumes(magfieldToken_)
.setConsumes(dbToken_, edm::ESInputTag{"", "numerator"}); // The correct default
}


Expand All @@ -32,23 +57,19 @@ SiPixel2DTemplateDBObjectESProducer::~SiPixel2DTemplateDBObjectESProducer(){


std::shared_ptr<const SiPixel2DTemplateDBObject> SiPixel2DTemplateDBObjectESProducer::produce(const SiPixel2DTemplateDBObjectESProducerRcd & iRecord) {

ESHandle<MagneticField> magfield;
iRecord.getRecord<IdealMagneticFieldRecord>().get(magfield);
const auto& magfield = iRecord.get(magfieldToken_);

GlobalPoint center(0.0, 0.0, 0.0);
float theMagField = magfield.product()->inTesla(center).mag();
float theMagField = magfield.inTesla(center).mag();

std::string label = "numerator"; // The correct default
if(theMagField>=4.1 || theMagField<-0.1) edm::LogWarning("UnexpectedMagneticFieldUsingDefaultPixel2DTemplate") << "Magnetic field is " << theMagField;

ESHandle<SiPixel2DTemplateDBObject> dbobject;
iRecord.getRecord<SiPixel2DTemplateDBObjectRcd>().get(label,dbobject);
const auto& dbobject = iRecord.get(dbToken_);

if(std::fabs(theMagField-dbobject->sVector()[22])>0.1)
edm::LogWarning("UnexpectedMagneticFieldUsingNonIdealPixel2DTemplate") << "Magnetic field is " << theMagField << " Template Magnetic field is " << dbobject->sVector()[22];
if(std::fabs(theMagField-dbobject.sVector()[22])>0.1)
edm::LogWarning("UnexpectedMagneticFieldUsingNonIdealPixel2DTemplate") << "Magnetic field is " << theMagField << " Template Magnetic field is " << dbobject.sVector()[22];

return std::shared_ptr<const SiPixel2DTemplateDBObject>(&(*dbobject), edm::do_nothing_deleter());
return std::shared_ptr<const SiPixel2DTemplateDBObject>(&dbobject, edm::do_nothing_deleter());
}

DEFINE_FWK_EVENTSETUP_MODULE(SiPixel2DTemplateDBObjectESProducer);
@@ -1,25 +1,46 @@
// -*- C++ -*-
// Package: SiPixelESProducers
//
// Package: SiPixelGenErrorDBObjectESProducer
// Class: SiPixelGenErrorDBObjectESProducer
//
/**\class SiPixelGenErrorDBObjectESProducer SiPixelGenErrorDBObjectESProducer.cc CalibTracker/SiPixelESProducers/plugin/SiPixelGenErrorDBObjectESProducer.cc

Description: ESProducer for magnetic-field-dependent local reco GenErrors

Implementation: Used inside the RecoLocalTracker/Records/TkPixelRecord to select the correct db for given magnetic field
*/
//
// Original Author: D.Fehling
// Created: Tue Sep 29 14:49:31 CET 2009
//
//

#include "CalibTracker/SiPixelESProducers/interface/SiPixelGenErrorDBObjectESProducer.h"

#include "FWCore/Framework/interface/ESProducer.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Utilities/interface/do_nothing_deleter.h"
#include "FWCore/Framework/interface/ModuleFactory.h"

#include "CondFormats/SiPixelObjects/interface/SiPixelGenErrorDBObject.h"
#include "CalibTracker/Records/interface/SiPixelGenErrorDBObjectESProducerRcd.h"
#include "MagneticField/Engine/interface/MagneticField.h"

#include <memory>
#include "boost/mpl/vector.hpp"

#include "FWCore/Framework/interface/ModuleFactory.h"
#include "MagneticField/Engine/interface/MagneticField.h"

using namespace edm;

class SiPixelGenErrorDBObjectESProducer : public edm::ESProducer {

public:

SiPixelGenErrorDBObjectESProducer(const edm::ParameterSet& iConfig);
~SiPixelGenErrorDBObjectESProducer() override;
std::shared_ptr<const SiPixelGenErrorDBObject> produce(const SiPixelGenErrorDBObjectESProducerRcd &);
};


SiPixelGenErrorDBObjectESProducer::SiPixelGenErrorDBObjectESProducer(const edm::ParameterSet& iConfig) {
setWhatProduced(this);
}
Expand Down