Skip to content
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.
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 @@ -2296,11 +2296,13 @@ def setup_(self, step, stepName, stepDict, k, properties):
mods = {'--era': stepDict[step][k]['--era']+',phase2_ecal_devel'}
if 'Digi' in step:
mods['-s'] = 'DIGI:pdigi_valid,DIGI2RAW'
mods['--custom_conditions'] = 'EcalSimPulseShapePhaseII,EcalSimPulseShapeRcd,frontier://FrontierProd/CMS_CONDITIONS'
mods |= self.__digi
elif 'Reco' in step:
mods['-s'] = 'RAW2DIGI,RECO:reconstruction_ecalOnly,VALIDATION:@ecalOnlyValidation,DQM:@ecalOnly'
mods['-s'] = 'RAW2DIGI:RawToDigi_ecalOnly,RECO:reconstruction_ecalOnly,VALIDATION:@ecalOnlyValidation,DQM:@ecalOnly'
mods['--datatier'] = 'GEN-SIM-RECO,DQMIO'
mods['--eventcontent'] = 'FEVTDEBUGHLT,DQM'
mods['--custom_conditions'] = 'EcalSimPulseShapePhaseII,EcalSimPulseShapeRcd,frontier://FrontierProd/CMS_CONDITIONS'
mods |= self.__reco
elif 'HARVEST' in step:
mods['-s'] = 'HARVESTING:@ecalOnlyValidation+@ecal'
Expand Down
5 changes: 5 additions & 0 deletions Configuration/StandardSequences/python/RawToDigi_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,3 +133,8 @@
from Configuration.Eras.Modifier_phase2_hfnose_cff import phase2_hfnose
phase2_hfnose.toReplaceWith(RawToDigiTask,_hfnose_RawToDigiTask)

# No preshower for Phase 2 ECAL
from Configuration.Eras.Modifier_phase2_ecal_devel_cff import phase2_ecal_devel
phase2_ecal_devel.toReplaceWith(RawToDigiTask, RawToDigiTask.copyAndExclude([ecalPreshowerDigis]))
phase2_ecal_devel.toReplaceWith(RawToDigiTask_ecalOnly, RawToDigiTask_ecalOnly.copyAndExclude([ecalPreshowerDigis]))

7 changes: 6 additions & 1 deletion Configuration/StandardSequences/python/Reconstruction_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -236,8 +236,13 @@
)
reconstruction_ecalOnly = cms.Sequence(reconstruction_ecalOnlyTask)

reconstruction_ecalOnlyPhase2Task = cms.Task(
bunchSpacingProducer,
ecalOnlyLocalRecoTask,
ecalClustersNoPFBoxTask
)
from Configuration.Eras.Modifier_phase2_ecal_devel_cff import phase2_ecal_devel
phase2_ecal_devel.toReplaceWith(reconstruction_ecalOnlyTask, reconstruction_ecalOnlyTask.copyAndExclude([pfClusteringPSTask, pfClusteringECALTask, particleFlowSuperClusterECALOnly]))
phase2_ecal_devel.toReplaceWith(reconstruction_ecalOnlyTask, reconstruction_ecalOnlyPhase2Task)

reconstruction_hcalOnlyTask = cms.Task(
bunchSpacingProducer,
Expand Down
20 changes: 20 additions & 0 deletions DQM/EcalMonitorClient/python/EcalMonitorClient_cff.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import FWCore.ParameterSet.Config as cms

from DQM.EcalMonitorClient.EcalMonitorClient_cfi import *

ecalMonitorClientPhase2 = ecalMonitorClient.clone(
workers = cms.untracked.vstring(
"OccupancyClient",
"TimingClient",
"SummaryClient"
),
# task parameters (included from indivitual cfis)
workerParameters = cms.untracked.PSet(
OccupancyClient = ecalOccupancyClient,
TimingClient = ecalTimingClient,
SummaryClient = ecalSummaryClient
),
commonParameters = ecalCommonParams,
verbosity = cms.untracked.int32(0)
)

11 changes: 11 additions & 0 deletions DQM/EcalMonitorTasks/python/CollectionTags_cfi.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,14 @@
EBGpuRecHit = cms.untracked.InputTag("ecalRecHit", "EcalRecHitsEB"),
EEGpuRecHit = cms.untracked.InputTag("ecalRecHit", "EcalRecHitsEE")
)

ecalDQMCollectionTagsPhase2 = cms.PSet(
EBUncalibRecHit = cms.untracked.InputTag("ecalUncalibRecHitPhase2", "EcalUncalibRecHitsEB"),
EEUncalibRecHit = cms.untracked.InputTag("None"),
EBRecHit = cms.untracked.InputTag("ecalRecHit", "EcalRecHitsEB"),
EERecHit = cms.untracked.InputTag("None"),
EBBasicCluster = cms.untracked.InputTag("hybridSuperClusters", "hybridBarrelBasicClusters"),
EEBasicCluster = cms.untracked.InputTag("None"),
EBSuperCluster = cms.untracked.InputTag("hybridSuperClusters"),
EESuperCluster = cms.untracked.InputTag("None")
)
34 changes: 29 additions & 5 deletions DQM/EcalMonitorTasks/python/EcalMonitorTaskEcalOnly_cfi.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,33 @@
from DQM.EcalMonitorTasks.EcalMonitorTask_cfi import ecalMonitorTask as _ecalMonitorTask

ecalMonitorTaskEcalOnly = _ecalMonitorTask.clone(
collectionTags = dict(
EBSuperCluster = ("particleFlowSuperClusterECALOnly","particleFlowSuperClusterECALBarrel"),
EESuperCluster = ("particleFlowSuperClusterECALOnly","particleFlowSuperClusterECALEndcapWithPreshower")
),
workerParameters = dict(ClusterTask = dict(params = dict(doExtra = False)))
collectionTags = dict(
EBSuperCluster = ("particleFlowSuperClusterECALOnly","particleFlowSuperClusterECALBarrel"),
EESuperCluster = ("particleFlowSuperClusterECALOnly","particleFlowSuperClusterECALEndcapWithPreshower")
),
workerParameters = dict(ClusterTask = dict(params = dict(doExtra = False)))
)

# Changes for Phase 2
from DQM.EcalMonitorTasks.CollectionTags_cfi import ecalDQMCollectionTagsPhase2
from DQM.EcalMonitorTasks.ClusterTask_cfi import ecalClusterTask
from DQM.EcalMonitorTasks.EnergyTask_cfi import ecalEnergyTask
from DQM.EcalMonitorTasks.TimingTask_cfi import ecalTimingTask
from DQM.EcalMonitorTasks.ecalPiZeroTask_cfi import ecalPiZeroTask

ecalMonitorTaskEcalOnlyPhase2 = ecalMonitorTaskEcalOnly.clone(
workers = cms.untracked.vstring(
"ClusterTask",
"EnergyTask",
"TimingTask",
"PiZeroTask"
),
workerParameters = cms.untracked.PSet(
ClusterTask = ecalClusterTask,
EnergyTask = ecalEnergyTask,
TimingTask = ecalTimingTask,
PiZeroTask = ecalPiZeroTask
),
collectionTags = ecalDQMCollectionTagsPhase2,
skipCollections = cms.untracked.vstring('EcalRawData')
)
19 changes: 19 additions & 0 deletions DQM/EcalMonitorTasks/python/EcalMonitorTask_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,22 @@

from Configuration.ProcessModifiers.alpaka_cff import alpaka
alpaka.toModify(ecalMonitorTask.skipCollections, func = lambda skipCollections: skipCollections.append("EcalRawData"))

# Changes for Phase 2
from DQM.EcalMonitorTasks.CollectionTags_cfi import ecalDQMCollectionTagsPhase2
ecalMonitorTaskPhase2 = ecalMonitorTask.clone(
workers = cms.untracked.vstring(
"ClusterTask",
"EnergyTask",
"TimingTask",
"PiZeroTask"
),
workerParameters = cms.untracked.PSet(
ClusterTask = ecalClusterTask,
EnergyTask = ecalEnergyTask,
TimingTask = ecalTimingTask,
PiZeroTask = ecalPiZeroTask
),
collectionTags = ecalDQMCollectionTagsPhase2,
skipCollections = cms.untracked.vstring('EcalRawData')
)
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
DQMCertEcal = cms.Sequence(ecalDaqInfoTask * ecalPreshowerDaqInfoTask *
ecalDcsInfoTask * ecalPreshowerDcsInfoTask *
ecalCertification * ecalPreshowerDataCertificationTask)
from Configuration.Eras.Modifier_phase2_ecal_devel_cff import phase2_ecal_devel
phase2_ecal_devel.toReplaceWith(DQMCertEcal, DQMCertEcal.copyAndExclude([ecalPreshowerDaqInfoTask, ecalPreshowerDcsInfoTask, ecalPreshowerDataCertificationTask]))

DQMCertJetMET = cms.Sequence(dataCertificationJetMETSequence)

Expand Down
3 changes: 3 additions & 0 deletions DQMOffline/Configuration/python/DQMOffline_SecondStep_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@

DQMOffline_SecondStepEcal = cms.Sequence( ecal_dqm_client_offline *
es_dqm_client_offline )
from Configuration.Eras.Modifier_phase2_ecal_devel_cff import phase2_ecal_devel
phase2_ecal_devel.toReplaceWith(DQMOffline_SecondStepEcal, DQMOffline_SecondStepEcal.copyAndExclude([es_dqm_client_offline]))

DQMOffline_SecondStepTrackerStrip = cms.Sequence( SiStripOfflineDQMClient )

Expand Down Expand Up @@ -257,6 +259,7 @@
DQMHarvestEcal = cms.Sequence( ecal_dqm_client_offline *
es_dqm_client_offline
)
phase2_ecal_devel.toReplaceWith(DQMHarvestEcal, DQMHarvestEcal.copyAndExclude([es_dqm_client_offline]))

DQMHarvestHcal = cms.Sequence( hcalOfflineHarvesting )

Expand Down
1 change: 1 addition & 0 deletions DQMOffline/Configuration/python/DQMOffline_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@

from Configuration.Eras.Modifier_phase2_ecal_devel_cff import phase2_ecal_devel
phase2_ecal_devel.toReplaceWith(DQMOfflineEcalOnly, DQMOfflineEcalOnly.copyAndExclude([es_dqm_source_offline]))
phase2_ecal_devel.toReplaceWith(DQMOfflineEcal, DQMOfflineEcal.copyAndExclude([es_dqm_source_offline]))

#offline version of the online DQM: used in validation/certification
DQMOfflineHcal = cms.Sequence( hcalOfflineSourceSequence )
Expand Down
6 changes: 5 additions & 1 deletion DQMOffline/Ecal/python/ecal_dqm_client_offline_cff.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import FWCore.ParameterSet.Config as cms

from DQM.EcalMonitorClient.EcalMonitorClient_cfi import *
from DQM.EcalMonitorClient.EcalMonitorClient_cff import *
from DQM.EcalCommon.EcalMEFormatter_cfi import ecalMEFormatter

from DQMOffline.Ecal.EcalZmassClient_cfi import *
Expand All @@ -24,3 +24,7 @@
)

ecalMonitorClient.workerParameters.TrigPrimClient.params.sourceFromEmul = False

from Configuration.Eras.Modifier_phase2_ecal_devel_cff import phase2_ecal_devel
phase2_ecal_devel.toReplaceWith(ecalMonitorClient, ecalMonitorClientPhase2)
phase2_ecal_devel.toReplaceWith(ecal_dqm_client_offline, ecal_dqm_client_offline.copyAndExclude([ecalzmassclient]))
15 changes: 15 additions & 0 deletions DQMOffline/Ecal/python/ecal_dqm_source_offline_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,21 @@
ecalzmasstask
)

# Phase 2
ecal_dqm_source_offline_phase2 = cms.Sequence(
dqmInfoEcal +
ecalMonitorTaskPhase2
)

ecalOnly_dqm_source_offline_phase2 = cms.Sequence(
dqmInfoEcal +
ecalMonitorTaskEcalOnlyPhase2
)

from Configuration.Eras.Modifier_phase2_ecal_devel_cff import phase2_ecal_devel
phase2_ecal_devel.toReplaceWith(ecal_dqm_source_offline, ecal_dqm_source_offline_phase2)
phase2_ecal_devel.toReplaceWith(ecalOnly_dqm_source_offline, ecalOnly_dqm_source_offline_phase2)

ecalMonitorTask.workerParameters.TrigPrimTask.params.runOnEmul = False
ecalMonitorTaskEcalOnly.workerParameters.TrigPrimTask.params.runOnEmul = False
ecalMonitorTaskEcalOnly.workerParameters.RecoSummaryTask.params.fillRecoFlagReduced = False
16 changes: 13 additions & 3 deletions EventFilter/EcalRawToDigi/python/ecalDigis_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@
ecalDigis
)

# remove unpacker until a Phase 2 version exists
from Configuration.Eras.Modifier_phase2_ecal_devel_cff import phase2_ecal_devel
phase2_ecal_devel.toReplaceWith(ecalDigisTask, ecalDigisTask.copyAndExclude([ecalDigis]))

from Configuration.StandardSequences.Accelerators_cff import *

# process modifier to run alpaka implementation
Expand All @@ -35,17 +39,23 @@
)
alpaka.toReplaceWith(ecalDigis, _ecalDigisFromPortable.clone())

alpaka.toReplaceWith(ecalDigisTask, cms.Task(
ecalDigisTask_alpaka = cms.Task(
# ECAL conditions used by the portable unpacker
ecalDigisPortableConditions,
# run the portable ECAL unpacker
ecalDigisPortable,
# convert them from SoA to legacy format
ecalDigis
))
)

# remove portable unpacker until a Phase 2 version exists
phase2_ecal_devel.toReplaceWith(ecalDigisTask_alpaka, ecalDigisTask_alpaka.copyAndExclude([ecalDigisPortableConditions, ecalDigisPortable, ecalDigis]))

alpaka.toReplaceWith(ecalDigisTask, ecalDigisTask_alpaka)

# for alpaka validation compare the legacy CPU module with the alpaka module
from Configuration.ProcessModifiers.alpakaValidationEcal_cff import alpakaValidationEcal
_ecalDigisTaskValidation = ecalDigisTask.copy()
_ecalDigisTaskValidation = ecalDigisTask_alpaka.copy()
_ecalDigisTaskValidation.add(ecalDigisLegacy)
alpakaValidationEcal.toReplaceWith(ecalDigisTask, _ecalDigisTaskValidation)

2 changes: 2 additions & 0 deletions RecoEcal/Configuration/python/RecoEcal_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA
from Configuration.Eras.Modifier_pp_on_XeXe_2017_cff import pp_on_XeXe_2017
from Configuration.Eras.Modifier_ppRef_2017_cff import ppRef_2017
from Configuration.Eras.Modifier_phase2_ecal_devel_cff import phase2_ecal_devel
phase2_ecal_devel.toReplaceWith(ecalClustersNoPFBoxTask, ecalClustersNoPFBoxTask.copyAndExclude([multi5x5ClusteringTask, multi5x5PreshowerClusteringTask]))

from RecoEcal.EgammaClusterProducers.islandClusteringSequence_cff import *

Expand Down
5 changes: 4 additions & 1 deletion RecoEcal/EgammaCoreTools/interface/EcalClusterLazyTools.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ class EcalClusterLazyToolsBase {
EcalClusterLazyToolsBase(const edm::Event &ev,
ESData const &esData,
edm::EDGetTokenT<EcalRecHitCollection> token1,
edm::EDGetTokenT<EcalRecHitCollection> token2,
std::optional<edm::EDGetTokenT<EcalRecHitCollection>> token2,
std::optional<edm::EDGetTokenT<EcalRecHitCollection>> token3);

// get time of basic cluster seed crystal
Expand Down Expand Up @@ -136,6 +136,9 @@ class EcalClusterLazyToolsBase {
template <class ClusterTools>
class EcalClusterLazyToolsT : public EcalClusterLazyToolsBase {
public:
EcalClusterLazyToolsT(const edm::Event &ev, ESData const &esData, edm::EDGetTokenT<EcalRecHitCollection> token1)
: EcalClusterLazyToolsBase(ev, esData, token1, std::nullopt, std::nullopt) {}

EcalClusterLazyToolsT(const edm::Event &ev,
ESData const &esData,
edm::EDGetTokenT<EcalRecHitCollection> token1,
Expand Down
9 changes: 7 additions & 2 deletions RecoEcal/EgammaCoreTools/src/EcalClusterLazyTools.cc
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@
EcalClusterLazyToolsBase::EcalClusterLazyToolsBase(const edm::Event &ev,
ESData const &esData,
edm::EDGetTokenT<EcalRecHitCollection> token1,
edm::EDGetTokenT<EcalRecHitCollection> token2,
std::optional<edm::EDGetTokenT<EcalRecHitCollection>> token2,
std::optional<edm::EDGetTokenT<EcalRecHitCollection>> token3)
: geometry_(&esData.caloGeometry),
topology_(&esData.caloTopology),
ebRecHits_(&edm::get(ev, token1)),
eeRecHits_(&edm::get(ev, token2)) {
eeRecHits_{token2 ? &edm::get(ev, *token2) : nullptr} {
if (token3) {
if (geometry_->getSubdetectorGeometry(DetId::Ecal, EcalPreshower)) {
ecalPS_topology_ = std::make_unique<EcalPreshowerTopology>();
Expand Down Expand Up @@ -82,6 +82,11 @@ const EcalRecHitCollection *EcalClusterLazyToolsBase::getEcalRecHitCollection(co
if (id.subdetId() == EcalBarrel) {
recHits = ebRecHits_;
} else if (id.subdetId() == EcalEndcap) {
if (!eeRecHits_) {
throw cms::Exception("MissingCollection")
<< "The subdetId() " << id.subdetId()
<< " corresponds to the ECALEndcap but no ECALEndcap RecHit collection is set up";
}
recHits = eeRecHits_;
} else {
throw cms::Exception("InvalidSubdetector")
Expand Down
4 changes: 2 additions & 2 deletions Validation/Configuration/python/ecalSimValid_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
)

validationECALPhase2 = cms.Sequence(
ecalSimHitsValidationSequence*
ecalDigisValidationSequence*
ecalSimHitsValidationSequencePhase2*
ecalDigisValidationSequencePhase2*
ecalRecHitsValidationSequencePhase2*
ecalClustersValidationSequence*
ecalDQMSequencePhase2
Expand Down
4 changes: 4 additions & 0 deletions Validation/Configuration/python/globalValidation_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,14 +165,18 @@
+ ecalRecHitsValidationSequence
+ ecalClustersValidationSequence
)

globalValidationECALOnly = cms.Sequence(
ecalSimHitsValidationSequence
+ ecalDigisValidationSequence
+ ecalRecHitsValidationSequence
+ pfClusterCaloOnlyValidationSequence
)
from Configuration.Eras.Modifier_phase2_ecal_devel_cff import phase2_ecal_devel
phase2_ecal_devel.toReplaceWith(ecalSimHitsValidationSequence, ecalSimHitsValidationSequencePhase2)
phase2_ecal_devel.toReplaceWith(ecalDigisValidationSequence, ecalDigisValidationSequencePhase2)
phase2_ecal_devel.toReplaceWith(ecalRecHitsValidationSequence, ecalRecHitsValidationSequencePhase2)
phase2_ecal_devel.toReplaceWith(pfClusterCaloOnlyValidationSequence, ecalClustersValidationSequence)

# HCAL local reconstruction
globalPrevalidationHCAL = cms.Sequence()
Expand Down
20 changes: 11 additions & 9 deletions Validation/EcalClusters/interface/EgammaBasicClusters.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,21 @@ class EgammaBasicClusters : public DQMEDAnalyzer {
explicit EgammaBasicClusters(const edm::ParameterSet &);
~EgammaBasicClusters() override;

static void fillDescriptions(edm::ConfigurationDescriptions &);
void analyze(const edm::Event &, const edm::EventSetup &) override;
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override;

private:
edm::EDGetTokenT<reco::BasicClusterCollection> barrelBasicClusterCollection_;
edm::EDGetTokenT<reco::BasicClusterCollection> endcapBasicClusterCollection_;

HistSpec hsSize_;
HistSpec hsNumRecHits_;
HistSpec hsET_;
HistSpec hsEta_;
HistSpec hsPhi_;
HistSpec hsR_;
const bool enableEndcaps_;
const edm::EDGetTokenT<reco::BasicClusterCollection> barrelBasicClusterCollection_;
const edm::EDGetTokenT<reco::BasicClusterCollection> endcapBasicClusterCollection_;

const HistSpec hsSize_;
const HistSpec hsNumRecHits_;
const HistSpec hsET_;
const HistSpec hsEta_;
const HistSpec hsPhi_;
const HistSpec hsR_;

MonitorElement *hist_EB_BC_Size_;
MonitorElement *hist_EE_BC_Size_;
Expand Down
Loading