From 047e688aa955bfc62eb737aae35f47dd9d8c14c6 Mon Sep 17 00:00:00 2001 From: Simon Rothman Date: Mon, 4 Oct 2021 10:51:49 -0500 Subject: [PATCH] Looping over scs, but weird segfaults --- Progression/EGM_DRN/plugins/DRNCorrector.cc | 66 +++--- Progression/EGM_DRN/plugins/DRNCorrector.h | 13 +- Progression/EGM_DRN/plugins/DRNProducer.cc | 45 +++- .../EGM_DRN/test/Electron_RecHit_AOD_cfg.py | 207 ++++++++++++++++++ Progression/EGM_DRN/test/tritonTest_cfg.py | 58 ++++- 5 files changed, 332 insertions(+), 57 deletions(-) create mode 100644 Progression/EGM_DRN/test/Electron_RecHit_AOD_cfg.py diff --git a/Progression/EGM_DRN/plugins/DRNCorrector.cc b/Progression/EGM_DRN/plugins/DRNCorrector.cc index 0cc7cc0fcb8a4..f9f3050eded94 100644 --- a/Progression/EGM_DRN/plugins/DRNCorrector.cc +++ b/Progression/EGM_DRN/plugins/DRNCorrector.cc @@ -124,38 +124,42 @@ void DRNCorrector::setEvent(const edm::Event& event) { } } -std::pair DRNCorrector::getCorrections(const reco::SuperCluster& sc) const { -//TODO: implement this part - - std::pair corrEnergyAndRes = {-1, -1}; - - return corrEnergyAndRes; -} - -void DRNCorrector::make_input(const edm::Event& iEvent, TritonInputMap& iInput) const { +void DRNCorrector::make_input(const edm::Event& iEvent, TritonInputMap& iInput, const reco::SuperClusterCollection& inputSCs ) const { //get event-based seed for RNG unsigned int runNum_uint = static_cast(iEvent.id().run()); unsigned int lumiNum_uint = static_cast(iEvent.id().luminosityBlock()); unsigned int evNum_uint = static_cast(iEvent.id().event()); std::uint32_t seed = (lumiNum_uint << 10) + (runNum_uint << 20) + evNum_uint; std::mt19937 rng(seed); - std::uniform_int_distribution randint1(1, 200); + + std::vector nHits = {}; + unsigned totalHits = 0; + unsigned n; + for(const auto& inputSC : inputSCs){ + n = randint1(rng); + totalHits+=n; + nHits.push_back(n); + } + + if(nHits.size() ==0) + return; + int nnodes = randint1(rng); //set shapes auto& input1 = iInput.at("x__0"); - input1.setShape(0, nnodes); + input1.setShape(0, totalHits); auto data1 = input1.allocate(); auto& vdata1 = (*data1)[0]; auto& input2 = iInput.at("batch__1"); - input2.setShape(0, nnodes); + input2.setShape(0, totalHits); auto data2 = input2.allocate(); auto& vdata2 = (*data2)[0]; auto& input3 = iInput.at("graphx__2"); - input3.setShape(0, 2); + input3.setShape(0, 2*nHits.size()); auto data3 = input3.allocate(); auto& vdata3 = (*data3)[0]; @@ -165,8 +169,16 @@ void DRNCorrector::make_input(const edm::Event& iEvent, TritonInputMap& iInput) vdata1.push_back(randx(rng)); } - for (unsigned i = 0; i < input2.sizeShape(); ++i) { - vdata2.push_back(0); + //for (unsigned i = 0; i < input2.sizeShape(); ++i) { + // vdata2.push_back(0); + //} + unsigned k=0; + for(unsigned sc=0; sc DRNCorrector::get_output(const TritonOutputMap& iOutput) { //check the results const auto& output1 = iOutput.begin()->second; // convert from server format - const auto& tmp = output1.fromServer(); + const auto& serverout = output1.fromServer(); //if (brief_) - std::cout << "output shape: " << output1.shape()[0] << "," << output1.shape()[1]; -} + edm::LogPrint("test") << "output shape: " << output1.shape()[0] << "," << output1.shape()[1] << std::endl; -void DRNCorrector::modifyObject(reco::SuperCluster& sc) const { - std::pair cor = getCorrections(sc); - if (cor.first < 0) - return; - sc.setEnergy(cor.first); - sc.setCorrectedEnergy(cor.first); - if (cor.second >= 0) { - sc.setCorrectedEnergyUncertainty(cor.second); - } + return serverout; } + diff --git a/Progression/EGM_DRN/plugins/DRNCorrector.h b/Progression/EGM_DRN/plugins/DRNCorrector.h index 3c2ca3ca26e6c..8a9e58ee440f1 100644 --- a/Progression/EGM_DRN/plugins/DRNCorrector.h +++ b/Progression/EGM_DRN/plugins/DRNCorrector.h @@ -16,7 +16,6 @@ #include "HeterogeneousCore/SonicTriton/interface/TritonEDProducer.h" -#include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/EventSetup.h" #include "FWCore/Framework/interface/ESHandle.h" #include "FWCore/Framework/interface/ConsumesCollector.h" @@ -32,6 +31,7 @@ #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h" #include "DataFormats/EcalDetId/interface/EcalSubdetector.h" #include "DataFormats/ParticleFlowReco/interface/PFRecHit.h" +#include "DataFormats/EgammaReco/interface/SuperClusterFwd.h" #include "DataFormats/VertexReco/interface/VertexFwd.h" #include "CondFormats/GBRForest/interface/GBRForestD.h" @@ -61,12 +61,12 @@ class DRNCorrector { void setEventSetup(const edm::EventSetup& es); void setEvent(const edm::Event& e); - std::pair getCorrections(const reco::SuperCluster& sc) const; + //std::pair getCorrections(const reco::SuperCluster& sc) const; - void make_input(const edm::Event& iEvent, TritonInputMap& iInput) const; - void get_output(const TritonOutputMap& iOutput) const; + void make_input(const edm::Event& iEvent, TritonInputMap& iInput, const reco::SuperClusterCollection& inputSCs) const; + TritonOutput get_output(const TritonOutputMap& iOutput); - void modifyObject(reco::SuperCluster& sc) const; + //void modifyObject(reco::SuperCluster& sc) const; std::vector getRegData(const reco::SuperCluster& sc) const; @@ -95,6 +95,9 @@ class DRNCorrector { float hitsEnergyThreshold_; float hgcalCylinderR_; HGCalShowerShapeHelper hgcalShowerShapes_; + + std::vector means; + std::vector sigmas; }; template diff --git a/Progression/EGM_DRN/plugins/DRNProducer.cc b/Progression/EGM_DRN/plugins/DRNProducer.cc index 14bc5a36d7d02..08249cfd76c29 100644 --- a/Progression/EGM_DRN/plugins/DRNProducer.cc +++ b/Progression/EGM_DRN/plugins/DRNProducer.cc @@ -1,4 +1,5 @@ #include "HeterogeneousCore/SonicTriton/interface/TritonEDProducer.h" +#include "HeterogeneousCore/SonicTriton/interface/TritonData.h" #include "FWCore/Framework/interface/stream/EDProducer.h" #include "FWCore/Framework/interface/Event.h" @@ -56,35 +57,55 @@ void DRNProducer::beginLuminosityBlock(const edm::LuminosityBlock& iLumi, const } void DRNProducer::acquire(edm::Event const& iEvent, edm::EventSetup const& iSetup, Input& iInput){ + edm::LogPrint(debugName_) << std::endl; + edm::LogPrint(debugName_) << "acquiring..." << std::endl; + auto inputSCs = iEvent.get(inputSCToken_); + if(inputSCs.size() ==0){ + edm::LogPrint(debugName_) << "skipped acquire for empty event" << std::endl; + return; + } energyCorrector_.setEvent(iEvent); - energyCorrector_.make_input(iEvent, iInput); + energyCorrector_.make_input(iEvent, iInput, inputSCs); + edm::LogPrint(debugName_) << "acquired" << std::endl; } void DRNProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup, Output const& iOutput){ - energyCorrector_.get_output(iOutput); - + edm::LogPrint(debugName_) << "producing..." << std::endl; auto inputSCs = iEvent.get(inputSCToken_); + if(inputSCs.size() ==0){ + edm::LogPrint(debugName_) << "skipped produce for empty event" << std::endl; + return; + } + + const auto& serverout = energyCorrector_.get_output(iOutput); + edm::LogPrint(debugName_) << "got from server" << std::endl; + + //assert(inputSCs.size() == serverout.shape()[0]); + + //auto inputSCs = iEvent.get(inputSCToken_); auto corrSCs = std::make_unique(); - std::vector> scFeatures; + unsigned i=0; for (const auto& inputSC : inputSCs) { + edm::LogPrint(debugName_) << "doing a supercluster" << std::endl; corrSCs->push_back(inputSC); - energyCorrector_.modifyObject(corrSCs->back()); + corrSCs->back().setEnergy(serverout[i][0]); + corrSCs->back().setCorrectedEnergy(serverout[i][0]); + corrSCs->back().setCorrectedEnergyUncertainty(serverout[i][1]); + //energyCorrector_.modifyObject(corrSCs->back()); + ++i; } + edm::LogPrint(debugName_) << "putting into event" << std::endl; + auto scHandle = iEvent.put(std::move(corrSCs)); - if (writeFeatures_) { - auto valMap = std::make_unique>>(); - edm::ValueMap>::Filler filler(*valMap); - filler.insert(scHandle, scFeatures.begin(), scFeatures.end()); - filler.fill(); - iEvent.put(std::move(valMap), "features"); - } + edm::LogPrint(debugName_) << "produced" << std::endl; } void DRNProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription desc; desc.add("correctorCfg", DRNCorrector::makePSetDescription()); + TritonClient::fillPSetDescription(desc); desc.add("writeFeatures", false); desc.add("inputSCs", edm::InputTag("particleFlowSuperClusterECAL")); descriptions.add("scEnergyCorrectorProducer", desc); diff --git a/Progression/EGM_DRN/test/Electron_RecHit_AOD_cfg.py b/Progression/EGM_DRN/test/Electron_RecHit_AOD_cfg.py new file mode 100644 index 0000000000000..9bac5bda05ab3 --- /dev/null +++ b/Progression/EGM_DRN/test/Electron_RecHit_AOD_cfg.py @@ -0,0 +1,207 @@ +import FWCore.ParameterSet.Config as cms +import FWCore.ParameterSet.VarParsing as VarParsing + +from Configuration.ProcessModifiers.enableSonicTriton_cff import enableSonicTriton +process = cms.Process("Demo",enableSonicTriton) + +process.load("HeterogeneousCore.SonicTriton.TritonService_cff") + +process.load("FWCore.MessageService.MessageLogger_cfi") + +process.load("Configuration.StandardSequences.GeometryRecoDB_cff") + +process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(10) ) + +process.TritonService.verbose = True +process.TritonService.fallback.verbose = True +process.TritonService.fallback.useDocker = False +process.TritonService.fallback.useGPU = False + + +process.MessageLogger.cerr.FwkReport.reportEvery = cms.untracked.int32(1) + +options = VarParsing.VarParsing('standard') + +options.register('inputFile', + "~/", + VarParsing.VarParsing.multiplicity.singleton, + VarParsing.VarParsing.varType.string, + "File containing a list of the EXACT location of the output file (default = ~/)" + ) + + +options.parseArguments() +options.inputFile = 'root://eoscms//' + options.inputFile +print(options.inputFile) +process.source = cms.Source("PoolSource", + # replace 'myfile.root' with the source file you want to use + fileNames = cms.untracked.vstring( +'root://cms-xrd-global.cern.ch///store/mc/RunIISummer19UL18RECO/DYJetsToEE_M-50_TuneCP5_13TeV-madgraphMLM-pythia8/AODSIM/NoPUECAL4BX25_106X_upgrade2018_realistic_v11_Ecal4-v2/20000/D2F029DD-CACC-AA48-BC51-D1987DD92E26.root' + ) + ) + +process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") + +from Configuration.AlCa.GlobalTag import GlobalTag +#process.GlobalTag = GlobalTag(process.GlobalTag, '106X_upgrade2018_realistic_v11_Ecal5', '') + + +from CondCore.DBCommon.CondDBSetup_cfi import * +process.GlobalTag = cms.ESSource("PoolDBESSource", + CondDBSetup, + connect = cms.string('frontier://FrontierProd/CMS_CONDITIONS'), + globaltag = cms.string('106X_upgrade2018_realistic_v11_Ecal4'), + toGet = cms.VPSet( + + + cms.PSet(record = cms.string("GBRDWrapperRcd"), + tag = cms.string("DoubleElectron_FlatPt-1To300_FlatPU0to70_ECAL5_106X_upgrade2018_realistic_v11_L1v1-v2"), + label = cms.untracked.string("pfscecal_EBCorrection_offline_v2"), + connect = cms.string("sqlite_file:DBFiles/correctedECALSampleDBFile_EB.db") + ), + + cms.PSet(record = cms.string("GBRDWrapperRcd"), + tag = cms.string("DoubleElectron_FlatPt-1To300_FlatPU0to70_ECAL5_106X_upgrade2018_realistic_v11_L1v1-v2"), + label = cms.untracked.string("pfscecal_EBUncertainty_offline_v2"), + connect = cms.string("sqlite_file:DBFiles/correctedECALSampleDBFile_EB.db") + ), + + + cms.PSet(record = cms.string("GBRDWrapperRcd"), + tag = cms.string("DoubleElectron_FlatPt-1To300_FlatPU0to70_ECAL5_106X_upgrade2018_realistic_v11_L1v1-v2"), + label = cms.untracked.string("pfscecal_EECorrection_offline_v2"), + connect = cms.string("sqlite_file:DBFiles/correctedECALSampleDBFile_EE.db") + ), + + + cms.PSet(record = cms.string("GBRDWrapperRcd"), + tag = cms.string("DoubleElectron_FlatPt-1To300_FlatPU0to70_ECAL5_106X_upgrade2018_realistic_v11_L1v1-v2"), + label = cms.untracked.string("pfscecal_EEUncertainty_offline_v2"), + connect = cms.string("sqlite_file:DBFiles/correctedECALSampleDBFile_EE.db") + ) + + + + ) + + ) + + + +process.DRNProducerEB = cms.EDProducer('DRNProducer', + correctorCfg = cms.PSet( + isHLT = cms.bool(False), + isPhaseII = cms.bool(False), + applySigmaIetaIphiBug = cms.bool(False), + ecalRecHitsEE = cms.InputTag('reducedEcalRecHitsEE'), + ecalRecHitsEB = cms.InputTag('reducedEcalRecHitsEB'), + regressionKeyEB = cms.string('pfscecal_EBCorrection_offline_v2'), + regressionKeyEE = cms.string('pfscecal_EECorrection_offline_v2'), + uncertaintyKeyEB = cms.string('pfscecal_EBUncertainty_offline_v2'), + uncertaintyKeyEE = cms.string('pfscecal_EEUncertainty_offline_v2'), + regressionMinEB = cms.double(0.2), + regressionMaxEB = cms.double(2), + regressionMinEE = cms.double(0.2), + regressionMaxEE = cms.double(2), + uncertaintyMinEB = cms.double(0.0002), + uncertaintyMaxEB = cms.double(0.5), + uncertaintyMinEE = cms.double(0.0002), + uncertaintyMaxEE = cms.double(0.5), + vertexCollection = cms.InputTag('offlinePrimaryVertices'), + eRecHitThreshold = cms.double(1), + hgcalRecHits = cms.InputTag(''), + hgcalCylinderR = cms.double(2.7999999523162842) + ), + writeFeatures = cms.bool(False), + inputSCs = cms.InputTag('particleFlowSuperClusterECAL','particleFlowSuperClusterECALBarrel'), + mightGet = cms.optional.untracked.vstring, + Client = cms.PSet( + mode = cms.string("Sync"), + preferredServer = cms.untracked.string(""), + timeout = cms.untracked.uint32(10), + modelName = cms.string("EGM_DRN"), + modelVersion = cms.string(""), + modelConfigPath = cms.FileInPath("Progression/EGM_DRN/data/models/{}/config.pbtxt".format('EGM_DRN')), + verbose = cms.untracked.bool(True), + allowedTries = cms.untracked.uint32(1), + useSharedMemory = cms.untracked.bool(True), + compression = cms.untracked.string(""), + ), + + ) + + +process.DRNProducerEE = cms.EDProducer('DRNProducer', + correctorCfg = cms.PSet( + isHLT = cms.bool(False), + isPhaseII = cms.bool(False), + applySigmaIetaIphiBug = cms.bool(False), + ecalRecHitsEE = cms.InputTag('reducedEcalRecHitsEE'), + ecalRecHitsEB = cms.InputTag('reducedEcalRecHitsEB'), + regressionKeyEB = cms.string('pfscecal_EBCorrection_offline_v2'), + regressionKeyEE = cms.string('pfscecal_EECorrection_offline_v2'), + uncertaintyKeyEB = cms.string('pfscecal_EBUncertainty_offline_v2'), + uncertaintyKeyEE = cms.string('pfscecal_EEUncertainty_offline_v2'), + regressionMinEB = cms.double(0.2), + regressionMaxEB = cms.double(2), + regressionMinEE = cms.double(0.2), + regressionMaxEE = cms.double(2), + uncertaintyMinEB = cms.double(0.0002), + uncertaintyMaxEB = cms.double(0.5), + uncertaintyMinEE = cms.double(0.0002), + uncertaintyMaxEE = cms.double(0.5), + vertexCollection = cms.InputTag('offlinePrimaryVertices'), + eRecHitThreshold = cms.double(1), + hgcalRecHits = cms.InputTag(''), + hgcalCylinderR = cms.double(2.7999999523162842) + ), + writeFeatures = cms.bool(False), + inputSCs = cms.InputTag('particleFlowSuperClusterECAL','particleFlowSuperClusterECALEndcapWithPreshower'), + mightGet = cms.optional.untracked.vstring, + Client = cms.PSet( + mode = cms.string("Sync"), + preferredServer = cms.untracked.string(""), + timeout = cms.untracked.uint32(10), + modelName = cms.string('EGM_DRN'), + modelVersion = cms.string(""), + modelConfigPath = cms.FileInPath("Progression/EGM_DRN/data/models/{}/config.pbtxt".format('EGM_DRN')), + verbose = cms.untracked.bool(True), + allowedTries = cms.untracked.uint32(1), + useSharedMemory = cms.untracked.bool(True), + compression = cms.untracked.string(""), + ), + + ) + +from PhysicsTools.SelectorUtils.tools.vid_id_tools import * +dataFormat = DataFormat.AOD +switchOnVIDElectronIdProducer(process, dataFormat) + +# define which IDs we want to produce +my_id_modules = ['RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V2_cff'] + +for idmod in my_id_modules: + setupAllVIDIdsInModule(process, idmod, setupVIDElectronSelection) + + +process.nTuplelize = cms.EDAnalyzer('Electron_RecHit_NTuplizer', + vertexCollection = cms.InputTag('offlinePrimaryVertices'), + rhoFastJet = cms.InputTag("fixedGridRhoFastjetAll"), + pileupInfo = cms.InputTag("addPileupInfo"), + electrons = cms.InputTag("gedGsfElectrons"), + genParticles = cms.InputTag("genParticles"), + #Cut Based Id + eleLooseIdMap = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-loose"), + eleMediumIdMap = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-medium"), + eleTightIdMap = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-tight"), + + tracks = cms.InputTag("globalTracks") + ) + + +process.TFileService = cms.Service("TFileService", + fileName = cms.string("nTupleMC.root"), + closeFileFast = cms.untracked.bool(True) + ) + +process.p = cms.Path(process.DRNProducerEB*process.DRNProducerEE*process.egmGsfElectronIDSequence*process.nTuplelize) diff --git a/Progression/EGM_DRN/test/tritonTest_cfg.py b/Progression/EGM_DRN/test/tritonTest_cfg.py index f32ec08bb7762..0db0dc153d491 100644 --- a/Progression/EGM_DRN/test/tritonTest_cfg.py +++ b/Progression/EGM_DRN/test/tritonTest_cfg.py @@ -126,11 +126,29 @@ useSharedMemory = cms.untracked.bool(options.shm), compression = cms.untracked.string(options.compression), ), - nodeMin = cms.uint32(1), - nodeMax = cms.uint32(200), - brief = cms.bool(options.brief), - - batchSize = cms.uint32(options.batchSize), + correctorCfg = cms.PSet( + isHLT = cms.bool(False), + isPhaseII = cms.bool(False), + applySigmaIetaIphiBug = cms.bool(False), + ecalRecHitsEE = cms.InputTag('reducedEcalRecHitsEE'), + ecalRecHitsEB = cms.InputTag('reducedEcalRecHitsEB'), + regressionKeyEB = cms.string('pfscecal_EBCorrection_offline_v2'), + regressionKeyEE = cms.string('pfscecal_EECorrection_offline_v2'), + uncertaintyKeyEB = cms.string('pfscecal_EBUncertainty_offline_v2'), + uncertaintyKeyEE = cms.string('pfscecal_EEUncertainty_offline_v2'), + regressionMinEB = cms.double(0.2), + regressionMaxEB = cms.double(2), + regressionMinEE = cms.double(0.2), + regressionMaxEE = cms.double(2), + uncertaintyMinEB = cms.double(0.0002), + uncertaintyMaxEB = cms.double(0.5), + uncertaintyMinEE = cms.double(0.0002), + uncertaintyMaxEE = cms.double(0.5), + vertexCollection = cms.InputTag('offlinePrimaryVertices'), + eRecHitThreshold = cms.double(1), + hgcalRecHits = cms.InputTag(''), + hgcalCylinderR = cms.double(2.7999999523162842) + ), inputSCs = cms.InputTag('particleFlowSuperClusterECAL','particleFlowSuperClusterECALBarrel'), ) @@ -148,11 +166,30 @@ useSharedMemory = cms.untracked.bool(options.shm), compression = cms.untracked.string(options.compression), ), - nodeMin = cms.uint32(1), - nodeMax = cms.uint32(200), - brief = cms.bool(options.brief), - batchSize = cms.uint32(options.batchSize), + correctorCfg = cms.PSet( + isHLT = cms.bool(False), + isPhaseII = cms.bool(False), + applySigmaIetaIphiBug = cms.bool(False), + ecalRecHitsEE = cms.InputTag('reducedEcalRecHitsEE'), + ecalRecHitsEB = cms.InputTag('reducedEcalRecHitsEB'), + regressionKeyEB = cms.string('pfscecal_EBCorrection_offline_v2'), + regressionKeyEE = cms.string('pfscecal_EECorrection_offline_v2'), + uncertaintyKeyEB = cms.string('pfscecal_EBUncertainty_offline_v2'), + uncertaintyKeyEE = cms.string('pfscecal_EEUncertainty_offline_v2'), + regressionMinEB = cms.double(0.2), + regressionMaxEB = cms.double(2), + regressionMinEE = cms.double(0.2), + regressionMaxEE = cms.double(2), + uncertaintyMinEB = cms.double(0.0002), + uncertaintyMaxEB = cms.double(0.5), + uncertaintyMinEE = cms.double(0.0002), + uncertaintyMaxEE = cms.double(0.5), + vertexCollection = cms.InputTag('offlinePrimaryVertices'), + eRecHitThreshold = cms.double(1), + hgcalRecHits = cms.InputTag(''), + hgcalCylinderR = cms.double(2.7999999523162842) + ), inputSCs = cms.InputTag('particleFlowSuperClusterECAL','particleFlowSuperClusterECALEndcapWithPreshower'), ) @@ -163,6 +200,7 @@ from Configuration.AlCa.GlobalTag import GlobalTag from CondCore.DBCommon.CondDBSetup_cfi import * + process.GlobalTag = cms.ESSource("PoolDBESSource", CondDBSetup, connect = cms.string('frontier://FrontierProd/CMS_CONDITIONS'), @@ -202,6 +240,8 @@ ) +process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") + from PhysicsTools.SelectorUtils.tools.vid_id_tools import * dataFormat = DataFormat.AOD switchOnVIDElectronIdProducer(process, dataFormat)