Skip to content

Commit

Permalink
introduce hcalSkipPacker Era and HcalRawToDigiFake
Browse files Browse the repository at this point in the history
  • Loading branch information
kpedro88 committed Jul 12, 2017
1 parent a4c0b99 commit 7ecc573
Show file tree
Hide file tree
Showing 7 changed files with 143 additions and 8 deletions.
4 changes: 2 additions & 2 deletions Configuration/Eras/python/Era_Phase2_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
from Configuration.Eras.Modifier_run3_GEM_cff import run3_GEM
from Configuration.Eras.Modifier_stage2L1Trigger_cff import stage2L1Trigger
from Configuration.Eras.Modifier_hcalHardcodeConditions_cff import hcalHardcodeConditions
from Configuration.Eras.Modifier_hcalSkipPacker_cff import hcalSkipPacker

Phase2 = cms.ModifierChain(run2_common, phase2_common, phase2_tracker, trackingPhase2PU140, phase2_ecal,
run2_HE_2017, run2_HF_2017, run2_HCAL_2017, run3_HB, phase2_hcal, phase2_hgcal, phase2_muon, run3_GEM, stage2L1Trigger,
hcalHardcodeConditions
hcalHardcodeConditions, hcalSkipPacker,
)

5 changes: 5 additions & 0 deletions Configuration/Eras/python/Modifier_hcalSkipPacker_cff.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import FWCore.ParameterSet.Config as cms

# This modifier skips the HCAL packer and runs a fake unpacker so all expected collections are still available

hcalSkipPacker = cms.Modifier()
2 changes: 1 addition & 1 deletion Configuration/Geometry/python/dict2023Geometry.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@
'from Geometry.EcalMapping.EcalMapping_cfi import *',
'from Geometry.EcalMapping.EcalMappingRecord_cfi import *',
],
"era" : "run2_HE_2017, run2_HF_2017, run2_HCAL_2017, run3_HB, phase2_hcal, phase2_hgcal, hcalHardcodeConditions",
"era" : "run2_HE_2017, run2_HF_2017, run2_HCAL_2017, run3_HB, phase2_hcal, phase2_hgcal, hcalHardcodeConditions, hcalSkipPacker",
}
}

Expand Down
2 changes: 1 addition & 1 deletion Configuration/StandardSequences/python/Eras.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ def __init__(self):
'phase2_timing_layer','phase2_hcal',
'trackingLowPU', 'trackingPhase1', 'trackingPhase1QuadProp', 'ctpps_2016', 'trackingPhase2PU140',
'tracker_apv_vfp30_2016', 'run2_miniAOD_80XLegacy',
'hcalHardcodeConditions']
'hcalHardcodeConditions', 'hcalSkipPacker']
internalUseModChains = ['run2_2017_noTrackingModifier']


Expand Down
4 changes: 0 additions & 4 deletions Configuration/StandardSequences/python/RawToDigi_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,6 @@
from Configuration.Eras.Modifier_phase2_common_cff import phase2_common
phase2_common.toReplaceWith(RawToDigi, RawToDigi.copyAndExclude([castorDigis]))

# until we have hcal raw data for phase 2...
from Configuration.Eras.Modifier_phase2_hcal_cff import phase2_hcal
phase2_hcal.toReplaceWith(RawToDigi, RawToDigi.copyAndExclude([hcalDigis]))

from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker
# Remove siPixelDigis until we have phase1 pixel digis
phase2_tracker.toReplaceWith(RawToDigi, RawToDigi.copyAndExclude([siPixelDigis])) # FIXME
Expand Down
133 changes: 133 additions & 0 deletions EventFilter/HcalRawToDigi/plugins/HcalRawToDigiFake.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
#include "FWCore/Framework/interface/global/EDProducer.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/Framework/interface/MakerMacros.h"
#include "DataFormats/Common/interface/Handle.h"
#include "DataFormats/HcalDigi/interface/HcalDigiCollections.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include <iostream>
#include <unordered_set>
#include <string>

//helper
namespace raw_impl {
template <class T>
void get(edm::EDGetTokenT<T> tok, edm::Event& e, const std::string& productName="")
{
edm::Handle<T> h_coll;
e.getByToken(tok, h_coll);
auto o_coll = std::make_unique<T>();
if(h_coll.isValid()){
//copy constructor
o_coll = std::make_unique<T>(*(h_coll.product()));
}
if(productName.size()) e.put(std::move(o_coll),productName);
else e.put(std::move(o_coll));
}
}

class HcalRawToDigiFake : public edm::global::EDProducer<>
{
public:
explicit HcalRawToDigiFake(const edm::ParameterSet& ps);
virtual ~HcalRawToDigiFake();
static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
virtual void produce(edm::StreamID id, edm::Event& e, const edm::EventSetup& c) const override;
private:
//members
edm::EDGetTokenT<QIE10DigiCollection> tok_QIE10DigiCollection_;
edm::EDGetTokenT<QIE11DigiCollection> tok_QIE11DigiCollection_;
edm::EDGetTokenT<HBHEDigiCollection> tok_HBHEDigiCollection_;
edm::EDGetTokenT<HFDigiCollection> tok_HFDigiCollection_;
edm::EDGetTokenT<HODigiCollection> tok_HODigiCollection_;
edm::EDGetTokenT<HcalTrigPrimDigiCollection> tok_TPDigiCollection_;
edm::EDGetTokenT<HOTrigPrimDigiCollection> tok_HOTPDigiCollection_;
edm::EDGetTokenT<HcalCalibDigiCollection> tok_CalibDigiCollection_;
edm::EDGetTokenT<ZDCDigiCollection> tok_ZDCDigiCollection_;
edm::EDGetTokenT<QIE10DigiCollection> tok_ZDCQIE10DigiCollection_;
edm::EDGetTokenT<HcalTTPDigiCollection> tok_TTPDigiCollection_;
const bool unpackCalib_, unpackZDC_, unpackTTP_;
};


HcalRawToDigiFake::HcalRawToDigiFake(edm::ParameterSet const& conf):
tok_QIE10DigiCollection_ (consumes<QIE10DigiCollection >(conf.getParameter<edm::InputTag>("QIE10"))),
tok_QIE11DigiCollection_ (consumes<QIE11DigiCollection >(conf.getParameter<edm::InputTag>("QIE11"))),
tok_HBHEDigiCollection_ (consumes<HBHEDigiCollection >(conf.getParameter<edm::InputTag>("HBHE"))),
tok_HFDigiCollection_ (consumes<HFDigiCollection >(conf.getParameter<edm::InputTag>("HF"))),
tok_HODigiCollection_ (consumes<HODigiCollection >(conf.getParameter<edm::InputTag>("HO"))),
tok_TPDigiCollection_ (consumes<HcalTrigPrimDigiCollection>(conf.getParameter<edm::InputTag>("TRIG"))),
tok_HOTPDigiCollection_ (consumes<HOTrigPrimDigiCollection >(conf.getParameter<edm::InputTag>("HOTP"))),
tok_CalibDigiCollection_ (consumes<HcalCalibDigiCollection >(conf.getParameter<edm::InputTag>("CALIB"))),
tok_ZDCDigiCollection_ (consumes<ZDCDigiCollection >(conf.getParameter<edm::InputTag>("ZDC"))),
tok_ZDCQIE10DigiCollection_(consumes<QIE10DigiCollection >(conf.getParameter<edm::InputTag>("ZDCQIE10"))),
tok_TTPDigiCollection_ (consumes<HcalTTPDigiCollection >(conf.getParameter<edm::InputTag>("TTP"))),
unpackCalib_(conf.getParameter<bool>("UnpackCalib")),
unpackZDC_(conf.getParameter<bool>("UnpackZDC")),
unpackTTP_(conf.getParameter<bool>("UnpackTTP"))
{
// products produced...
produces<QIE10DigiCollection>();
produces<QIE11DigiCollection>();
produces<HBHEDigiCollection>();
produces<HFDigiCollection>();
produces<HODigiCollection>();
produces<HcalTrigPrimDigiCollection>();
produces<HOTrigPrimDigiCollection>();
if (unpackCalib_)
produces<HcalCalibDigiCollection>();
if (unpackZDC_)
produces<ZDCDigiCollection>();
if (unpackTTP_)
produces<HcalTTPDigiCollection>();
produces<QIE10DigiCollection>("ZDC");
}

// Virtual destructor needed.
HcalRawToDigiFake::~HcalRawToDigiFake() { }

void HcalRawToDigiFake::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
edm::ParameterSetDescription desc;
desc.add<bool>("UnpackZDC",true);
desc.add<bool>("UnpackCalib",true);
desc.add<bool>("UnpackTTP",true);
//empty tag = not usually produced by simulation
desc.add<edm::InputTag>("QIE10", edm::InputTag("simHcalDigis", "HFQIE10DigiCollection"));
desc.add<edm::InputTag>("QIE11", edm::InputTag("simHcalDigis", "HBHEQIE11DigiCollection"));
desc.add<edm::InputTag>("HBHE", edm::InputTag("simHcalDigis"));
desc.add<edm::InputTag>("HF", edm::InputTag("simHcalDigis"));
desc.add<edm::InputTag>("HO", edm::InputTag("simHcalDigis"));
desc.add<edm::InputTag>("TRIG", edm::InputTag("simHcalTriggerPrimitiveDigis"));
desc.add<edm::InputTag>("HOTP", edm::InputTag(""));
desc.add<edm::InputTag>("CALIB", edm::InputTag(""));
desc.add<edm::InputTag>("ZDC", edm::InputTag("simHcalUnsuppressedDigis"));
desc.add<edm::InputTag>("ZDCQIE10", edm::InputTag(""));
desc.add<edm::InputTag>("TTP", edm::InputTag(""));
//not used, just for compatibility
desc.add<edm::InputTag>("InputLabel",edm::InputTag("rawDataCollector"));
descriptions.add("HcalRawToDigiFake",desc);
}


// Functions that gets called by framework every event
void HcalRawToDigiFake::produce(edm::StreamID id, edm::Event& e, const edm::EventSetup& es) const
{
//handle each collection
raw_impl::get(tok_QIE10DigiCollection_,e);
raw_impl::get(tok_QIE11DigiCollection_,e);
raw_impl::get(tok_HBHEDigiCollection_,e);
raw_impl::get(tok_HFDigiCollection_,e);
raw_impl::get(tok_HODigiCollection_,e);
raw_impl::get(tok_TPDigiCollection_,e);
raw_impl::get(tok_HOTPDigiCollection_,e);
if(unpackCalib_) raw_impl::get(tok_CalibDigiCollection_,e);
if(unpackZDC_) raw_impl::get(tok_ZDCDigiCollection_,e);
raw_impl::get(tok_ZDCQIE10DigiCollection_,e,"ZDC");
if(unpackTTP_) raw_impl::get(tok_TTPDigiCollection_,e);
}

DEFINE_FWK_MODULE(HcalRawToDigiFake);
1 change: 1 addition & 0 deletions EventFilter/HcalRawToDigi/python/HcalRawToDigi_cfi.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
# will be copied to the digi
hcalDigis.firstSample = cms.int32(0)

import EventFilter.HcalRawToDigi.HcalRawToDigiFake_cfi
_hcalDigisFake = EventFilter.HcalRawToDigi.HcalRawToDigiFake_cfi.HcalRawToDigiFake.clone()
from Configuration.Eras.Modifier_hcalSkipPacker_cff import hcalSkipPacker
hcalSkipPacker.toReplaceWith(hcalDigis, _hcalDigisFake)
Expand Down

0 comments on commit 7ecc573

Please sign in to comment.