Skip to content

Commit

Permalink
SIM/DIGI/RECO changes for HF QIE10 (part B)
Browse files Browse the repository at this point in the history
  • Loading branch information
kpedro88 committed Feb 18, 2016
1 parent aa97d14 commit 15d5123
Show file tree
Hide file tree
Showing 34 changed files with 377 additions and 53 deletions.
2 changes: 2 additions & 0 deletions CalibCalorimetry/HcalAlgos/interface/HcalDbHardcode.h
Expand Up @@ -13,6 +13,7 @@
#include "CondFormats/HcalObjects/interface/HcalGainWidth.h"
#include "CondFormats/HcalObjects/interface/HcalQIECoder.h"
#include "CondFormats/HcalObjects/interface/HcalQIEShape.h"
#include "CondFormats/HcalObjects/interface/HcalQIEType.h"
#include "CondFormats/HcalObjects/interface/HcalCalibrationQIECoder.h"
#include "CondFormats/HcalObjects/interface/HcalElectronicsMap.h"
#include "DataFormats/HcalDetId/interface/HcalDcsDetId.h"
Expand All @@ -38,6 +39,7 @@ namespace HcalDbHardcode {
HcalQIECoder makeQIECoder (HcalGenericDetId fId);
HcalCalibrationQIECoder makeCalibrationQIECoder (HcalGenericDetId fId);
HcalQIEShape makeQIEShape ();
HcalQIEType makeQIEType (HcalGenericDetId fId, bool testHFQIE10);
HcalRecoParam makeRecoParam (HcalGenericDetId fId);
HcalMCParam makeMCParam (HcalGenericDetId fId);
HcalTimingParam makeTimingParam (HcalGenericDetId fId);
Expand Down
22 changes: 22 additions & 0 deletions CalibCalorimetry/HcalAlgos/src/HcalDbHardcode.cc
Expand Up @@ -564,6 +564,28 @@ HcalQIECoder HcalDbHardcode::makeQIECoder (HcalGenericDetId fId) {
return result;
}

HcalQIEType HcalDbHardcode::makeQIEType (HcalGenericDetId fId, bool testHFQIE10) {
int qieType = HcalQIEType::QIE8; //default
if (testHFQIE10){ //2016 test
if(fId.genericSubdet() == HcalGenericDetId::HcalGenForward && fId.isHcalDetId()) {
HcalDetId hid(fId);
if(hid.depth()>=3) qieType = HcalQIEType::QIE10;
}
}
else { //generic upgrade case: QIE8 for HO, QIE10 for HF, QIE11 for HBHE
if (fId.genericSubdet() == HcalGenericDetId::HcalGenBarrel || fId.genericSubdet() == HcalGenericDetId::HcalGenEndcap) {
qieType = HcalQIEType::QIE11;
} else if (fId.genericSubdet() == HcalGenericDetId::HcalGenOuter) {
qieType = HcalQIEType::QIE8;
} else if (fId.genericSubdet() == HcalGenericDetId::HcalGenForward) {
qieType = HcalQIEType::QIE10;
}
}

HcalQIEType result(fId.rawId(),qieType);
return result;
}

HcalCalibrationQIECoder HcalDbHardcode::makeCalibrationQIECoder (HcalGenericDetId fId) {
HcalCalibrationQIECoder result (fId.rawId ());
float lowEdges [64];
Expand Down
Expand Up @@ -5,20 +5,21 @@
file = cms.untracked.string('')
)

from Geometry.HcalEventSetup.HcalRelabel_cfi import HcalReLabel
#------------------------- HARDCODED conditions

es_hardcode = cms.ESSource("HcalHardcodeCalibrations",
toGet = cms.untracked.vstring('GainWidths'),
#--- the following 5 parameters can be omitted in case of regular Geometry
iLumi = cms.double(-1.), # for Upgrade: fb-1
HcalReLabel = HcalReLabel, # for Upgrade
HERecalibration = cms.bool(False), # True for Upgrade
HEreCalibCutoff = cms.double(20.), # if above is True
HFRecalibration = cms.bool(False), # True for Upgrade
GainWidthsForTrigPrims = cms.bool(False) # True Upgrade
GainWidthsForTrigPrims = cms.bool(False),# True Upgrade
testHFQIE10 = cms.bool(False) # True 2016
)

from Configuration.StandardSequences.Eras import eras
eras.run2_HF_2016.toModify( es_hardcode, testHFQIE10=cms.bool(True) )

es_prefer_hcalHardcode = cms.ESPrefer("HcalHardcodeCalibrations", "es_hardcode")

62 changes: 32 additions & 30 deletions CalibCalorimetry/HcalPlugins/src/HcalHardcodeCalibrations.cc
Expand Up @@ -24,8 +24,6 @@

#include "HcalHardcodeCalibrations.h"

//#define DebugLog

// class decleration
//

Expand All @@ -38,10 +36,10 @@ namespace {
int maxDepthHB=hcaltopology.maxDepthHB();
int maxDepthHE=hcaltopology.maxDepthHE();

#ifdef DebugLog
std::cout << std::endl << "HcalHardcodeCalibrations: maxDepthHB, maxDepthHE = "
<< maxDepthHB << ", " << maxDepthHE << std::endl;
#endif
/*
std::cout << std::endl << "HcalHardcodeCalibrations: maxDepthHB, maxDepthHE = "
<< maxDepthHB << ", " << maxDepthHE << std::endl;
*/

if (result.size () <= 0) {
for (int eta = -HcalDetId::kHcalEtaMask2;
Expand All @@ -50,14 +48,14 @@ namespace {
for (int depth = 1; depth < maxDepthHB + maxDepthHE; depth++) {
for (int det = 1; det <= HcalForward; det++) {
HcalDetId cell ((HcalSubdetector) det, eta, phi, depth);
if (hcaltopology.valid(cell)) {
result.push_back (cell);
#ifdef DebugLog
std::cout << " HcalHardcodedCalibrations: det|eta|phi|depth = "
<< det << "|" << eta << "|" << phi << "|"
<< depth << std::endl;
#endif
}
if (hcaltopology.valid(cell)) result.push_back (cell);

/*
if (hcaltopology.valid(cell))
std::cout << " HcalHardcodedCalibrations: det, eta, phi, depth = "
<< det << ", " << eta << ", " << phi << " , "
<< depth << std::endl;
*/
}
}
}
Expand Down Expand Up @@ -97,14 +95,7 @@ namespace {
eta <= HcalTrigTowerDetId::kHcalEtaMask; eta++) {
for (int phi = 1; phi <= HcalTrigTowerDetId::kHcalPhiMask; phi++) {
HcalTrigTowerDetId cell(eta, phi,depth,vers);
if (hcaltopology.validHT(cell)) {
result.push_back (cell);
#ifdef DebugLog
std::cout << " HcalHardcodedCalibrations: eta|phi|depth|vers = "
<< eta << "|" << phi << "|" << depth << "|" << vers
<< std::endl;
#endif
}
if (hcaltopology.validHT(cell)) result.push_back (cell);
}
}
}
Expand All @@ -115,7 +106,9 @@ namespace {

}

HcalHardcodeCalibrations::HcalHardcodeCalibrations ( const edm::ParameterSet& iConfig ): he_recalibration(0), hf_recalibration(0), setHEdsegm(false), setHBdsegm(false), SipmLumi(0.0) {
HcalHardcodeCalibrations::HcalHardcodeCalibrations ( const edm::ParameterSet& iConfig ):
he_recalibration(0), hf_recalibration(0), setHEdsegm(false), setHBdsegm(false), SipmLumi(0.0), testHFQIE10(iConfig.getParameter<bool>("testHFQIE10"))
{
edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::HcalHardcodeCalibrations->...";

if ( iConfig.exists("GainWidthsForTrigPrims") )
Expand All @@ -137,17 +130,12 @@ HcalHardcodeCalibrations::HcalHardcodeCalibrations ( const edm::ParameterSet& iC
}
if(hf_recalib) hf_recalibration = new HFRecalibration();

#ifdef DebugLog
std::cout << " HcalHardcodeCalibrations: iLumi = " << iLumi << std::endl;
#endif
// std::cout << " HcalHardcodeCalibrations: iLumi = " << iLumi << std::endl;
}

std::vector <std::string> toGet = iConfig.getUntrackedParameter <std::vector <std::string> > ("toGet");
for(std::vector <std::string>::iterator objectName = toGet.begin(); objectName != toGet.end(); ++objectName ) {
bool all = *objectName == "all";
#ifdef DebugLog
std::cout << "Load parameters for " << *objectName << std::endl;
#endif
if ((*objectName == "Pedestals") || all) {
setWhatProduced (this, &HcalHardcodeCalibrations::producePedestals);
findingRecord <HcalPedestalsRcd> ();
Expand Down Expand Up @@ -365,7 +353,7 @@ std::auto_ptr<HcalQIETypes> HcalHardcodeCalibrations::produceQIETypes (const Hca
std::auto_ptr<HcalQIETypes> result (new HcalQIETypes (topo));
std::vector <HcalGenericDetId> cells = allCells(*topo);
for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
HcalQIEType item(cell->rawId(),0);
HcalQIEType item = HcalDbHardcode::makeQIEType(*cell,testHFQIE10);
result->addValues(item);
}
return result;
Expand Down Expand Up @@ -758,3 +746,17 @@ std::auto_ptr<HcalCovarianceMatrices> HcalHardcodeCalibrations::produceCovarianc
}
return result;
}

void HcalHardcodeCalibrations::fillDescriptions(edm::ConfigurationDescriptions & descriptions){
edm::ParameterSetDescription desc;
desc.add<double>("iLumi",-1.);
desc.add<bool>("HERecalibration",false);
desc.add<double>("HEreCalibCutoff",20.);
desc.add<bool>("HFRecalibration",false);
desc.add<bool>("GainWidthsForTrigPrims",false);
desc.add<bool>("testHFQIE10",false);
desc.addUntracked<std::vector<std::string>>("toGet",std::vector<std::string>());
desc.addUntracked<bool>("fromDDD",false);

descriptions.addDefault(desc);
}
4 changes: 4 additions & 0 deletions CalibCalorimetry/HcalPlugins/src/HcalHardcodeCalibrations.h
Expand Up @@ -9,6 +9,8 @@
#include "FWCore/Framework/interface/ESProducer.h"
#include "FWCore/Framework/interface/EventSetupRecordIntervalFinder.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
#include "Geometry/CaloTopology/interface/HcalTopology.h"
#include "CondFormats/HcalObjects/interface/AllObjects.h"
#include "HERecalibration.h"
Expand Down Expand Up @@ -50,6 +52,7 @@ class HcalHardcodeCalibrations : public edm::ESProducer, public edm::EventSetupR
~HcalHardcodeCalibrations ();

void produce () {};
static void fillDescriptions(edm::ConfigurationDescriptions & descriptions);

protected:
virtual void setIntervalFor(const edm::eventsetup::EventSetupRecordKey&,
Expand Down Expand Up @@ -97,5 +100,6 @@ class HcalHardcodeCalibrations : public edm::ESProducer, public edm::EventSetupR
bool setHEdsegm;
bool setHBdsegm;
double SipmLumi;
bool testHFQIE10;
};

3 changes: 3 additions & 0 deletions CalibFormats/HcalObjects/interface/HcalCoder.h
Expand Up @@ -7,6 +7,7 @@
#include "DataFormats/HcalDigi/interface/HcalCalibDataFrame.h"
#include "DataFormats/HcalDigi/interface/ZDCDataFrame.h"
#include "DataFormats/HcalDigi/interface/HcalUpgradeDataFrame.h"
#include "DataFormats/HcalDigi/interface/QIE10DataFrame.h"
#include "CalibFormats/CaloObjects/interface/CaloSamples.h"

/** \class HcalCoder
Expand All @@ -23,12 +24,14 @@ class HcalCoder {
virtual void adc2fC(const ZDCDataFrame& df, CaloSamples& lf) const = 0;
virtual void adc2fC(const HcalCalibDataFrame& df, CaloSamples& lf) const = 0;
virtual void adc2fC(const HcalUpgradeDataFrame& df, CaloSamples& lf) const = 0;
virtual void adc2fC(const QIE10DataFrame& df, CaloSamples& lf) const = 0;
virtual void fC2adc(const CaloSamples& clf, HBHEDataFrame& df, int fCapIdOffset) const = 0;
virtual void fC2adc(const CaloSamples& clf, HFDataFrame& df, int fCapIdOffset) const = 0;
virtual void fC2adc(const CaloSamples& clf, HODataFrame& df, int fCapIdOffset) const = 0;
virtual void fC2adc(const CaloSamples& clf, ZDCDataFrame& df, int fCapIdOffset) const = 0;
virtual void fC2adc(const CaloSamples& clf, HcalCalibDataFrame& df, int fCapIdOffset) const = 0;
virtual void fC2adc(const CaloSamples& clf, HcalUpgradeDataFrame& df, int fCapIdOffset) const = 0;
virtual void fC2adc(const CaloSamples& clf, QIE10DataFrame& df, int fCapIdOffset) const = 0;
};

#endif
2 changes: 2 additions & 0 deletions CalibFormats/HcalObjects/interface/HcalCoderDb.h
Expand Up @@ -22,13 +22,15 @@ class HcalCoderDb : public HcalCoder {
virtual void adc2fC(const ZDCDataFrame& df, CaloSamples& lf) const;
virtual void adc2fC(const HcalCalibDataFrame& df, CaloSamples& lf) const;
virtual void adc2fC(const HcalUpgradeDataFrame& df, CaloSamples& lf) const;
virtual void adc2fC(const QIE10DataFrame& df, CaloSamples& lf) const;

virtual void fC2adc(const CaloSamples& clf, HBHEDataFrame& df, int fCapIdOffset) const;
virtual void fC2adc(const CaloSamples& clf, HFDataFrame& df, int fCapIdOffset) const;
virtual void fC2adc(const CaloSamples& clf, HODataFrame& df, int fCapIdOffset) const;
virtual void fC2adc(const CaloSamples& clf, ZDCDataFrame& df, int fCapIdOffset) const;
virtual void fC2adc(const CaloSamples& clf, HcalCalibDataFrame& df, int fCapIdOffset) const;
virtual void fC2adc(const CaloSamples& clf, HcalUpgradeDataFrame& df, int fCapIdOffset) const;
virtual void fC2adc(const CaloSamples& clf, QIE10DataFrame& df, int fCapIdOffset) const;

private:
template <class Digi> void adc2fC_ (const Digi& df, CaloSamples& clf) const;
Expand Down
3 changes: 2 additions & 1 deletion CalibFormats/HcalObjects/interface/HcalNominalCoder.h
Expand Up @@ -22,7 +22,8 @@ class HcalNominalCoder : public HcalCoder {
virtual void fC2adc(const CaloSamples& clf, HcalCalibDataFrame& df, int fCapIdOffset) const;
virtual void adc2fC(const HcalUpgradeDataFrame& df, CaloSamples& lf) const {}
virtual void fC2adc(const CaloSamples& clf, HcalUpgradeDataFrame& df, int fCapIdOffset) const { }

virtual void adc2fC(const QIE10DataFrame& df, CaloSamples& lf) const {}
virtual void fC2adc(const CaloSamples& clf, QIE10DataFrame& df, int fCapIdOffset) const { }
};

#endif
17 changes: 17 additions & 0 deletions CalibFormats/HcalObjects/src/HcalCoderDb.cc
Expand Up @@ -21,6 +21,13 @@ template <class Digi> void HcalCoderDb::adc2fC_ (const Digi& df, CaloSamples& cl
clf.setPresamples(df.presamples());
}

template <> void HcalCoderDb::adc2fC_<QIE10DataFrame> (const QIE10DataFrame& df, CaloSamples& clf) const {
clf=CaloSamples(df.id(),df.samples());
for (int i=0; i<df.samples(); i++) {
clf[i]=mCoder->charge (*mShape, df[i].adc (), df[i].capid ());
}
}

template <class Digi> void HcalCoderDb::fC2adc_ (const CaloSamples& clf, Digi& df, int fCapIdOffset) const {
df = Digi (clf.id ());
df.setSize (clf.size ());
Expand All @@ -40,18 +47,28 @@ template <class Digi> void HcalCoderDb::fCUpgrade2adc_ (const CaloSamples& clf,
}
}

template <> void HcalCoderDb::fC2adc_<QIE10DataFrame> (const CaloSamples& clf, QIE10DataFrame& df, int fCapIdOffset) const {
int presample = clf.presamples ();
for (int i=0; i<clf.size(); i++) {
int capId = (fCapIdOffset + i) % 4;
bool soi = (i==presample);
df.setSample(i, mCoder->adc(*mShape, clf[i], capId), 0, 0, capId, soi, true);
}
}

void HcalCoderDb::adc2fC(const HBHEDataFrame& df, CaloSamples& lf) const {adc2fC_ (df, lf);}
void HcalCoderDb::adc2fC(const HODataFrame& df, CaloSamples& lf) const {adc2fC_ (df, lf);}
void HcalCoderDb::adc2fC(const HFDataFrame& df, CaloSamples& lf) const {adc2fC_ (df, lf);}
void HcalCoderDb::adc2fC(const ZDCDataFrame& df, CaloSamples& lf) const {adc2fC_ (df, lf);}
void HcalCoderDb::adc2fC(const HcalCalibDataFrame& df, CaloSamples& lf) const {adc2fC_ (df, lf);}
void HcalCoderDb::adc2fC(const HcalUpgradeDataFrame& df, CaloSamples& lf) const {adc2fC_ (df, lf);}
void HcalCoderDb::adc2fC(const QIE10DataFrame& df, CaloSamples& lf) const {adc2fC_ (df, lf);}

void HcalCoderDb::fC2adc(const CaloSamples& clf, HBHEDataFrame& df, int fCapIdOffset) const {fC2adc_ (clf, df, fCapIdOffset);}
void HcalCoderDb::fC2adc(const CaloSamples& clf, HFDataFrame& df, int fCapIdOffset) const {fC2adc_ (clf, df, fCapIdOffset);}
void HcalCoderDb::fC2adc(const CaloSamples& clf, HODataFrame& df, int fCapIdOffset) const {fC2adc_ (clf, df, fCapIdOffset);}
void HcalCoderDb::fC2adc(const CaloSamples& clf, ZDCDataFrame& df, int fCapIdOffset) const {fC2adc_ (clf, df, fCapIdOffset);}
void HcalCoderDb::fC2adc(const CaloSamples& clf, HcalCalibDataFrame& df, int fCapIdOffset) const {fC2adc_ (clf, df, fCapIdOffset);}
void HcalCoderDb::fC2adc(const CaloSamples& clf, HcalUpgradeDataFrame& df, int fCapIdOffset) const {fCUpgrade2adc_ (clf, df, fCapIdOffset);}
void HcalCoderDb::fC2adc(const CaloSamples& clf, QIE10DataFrame& df, int fCapIdOffset) const {fC2adc_ (clf, df, fCapIdOffset);}

1 change: 1 addition & 0 deletions CondFormats/HcalObjects/interface/HcalQIEType.h
Expand Up @@ -12,6 +12,7 @@ contains the QIE Typese + corresponding DetId
class HcalQIEType
{
public:
enum {QIE8=0, QIE10=1, QIE11=2};
HcalQIEType(): mId(0), mValue(0) {}
HcalQIEType(unsigned long fid, int value): mId(fid), mValue(value) {}

Expand Down
3 changes: 2 additions & 1 deletion Configuration/EventContent/python/EventContent_cff.py
Expand Up @@ -303,7 +303,7 @@
FEVTDEBUGHLTEventContent = cms.PSet(
outputCommands = cms.untracked.vstring('drop *'),
splitLevel = cms.untracked.int32(0),
eventAutoFlushCompressedSize=cms.untracked.int32(10*1024*1024)
eventAutoFlushCompressedSize=cms.untracked.int32(1*1024*1024)
)

#
Expand Down Expand Up @@ -359,6 +359,7 @@
'keep HBHEDataFramesSorted_hcalDigis_*_*',
'keep HFDataFramesSorted_hcalDigis_*_*',
'keep HODataFramesSorted_hcalDigis_*_*',
'keep QIE10DataFrameHcalDataFrameContainer_hcalDigis_*_*',
'keep ZDCDataFramesSorted_hcalDigis_*_*',
'keep CastorDataFramesSorted_castorDigis_*_*',
'keep EBDigiCollection_ecalDigis_*_*',
Expand Down
5 changes: 4 additions & 1 deletion Configuration/StandardSequences/python/Eras.py
Expand Up @@ -11,6 +11,7 @@ def __init__(self):
self.run2_25ns_specific = cms.Modifier()
self.run2_50ns_specific = cms.Modifier()
self.run2_HI_specific = cms.Modifier()
self.run2_HF_2016 = cms.Modifier()
self.stage1L1Trigger = cms.Modifier()
self.stage2L1Trigger = cms.Modifier()
self.phase1Pixel = cms.Modifier()
Expand Down Expand Up @@ -46,7 +47,7 @@ def __init__(self):
self.Run2_50ns = cms.ModifierChain( self.run2_common, self.run2_50ns_specific, self.stage1L1Trigger )
self.Run2_HI = cms.ModifierChain( self.run2_common, self.run2_HI_specific, self.stage1L1Trigger )
# Future Run 2 scenarios.
self.Run2_2016 = cms.ModifierChain( self.run2_common, self.run2_25ns_specific, self.stage2L1Trigger )
self.Run2_2016 = cms.ModifierChain( self.run2_common, self.run2_25ns_specific, self.stage2L1Trigger, self.run2_HF_2016 )
self.Run2_2017 = cms.ModifierChain( self.Run2_2016, self.phase1Pixel )
# Scenarios further afield.
# Phase2 is everything for the 2023 (2026?) detector that works so far in this release.
Expand All @@ -61,6 +62,8 @@ def __init__(self):
self.internalUseEras = [self.run2_common, self.run2_25ns_specific,
self.run2_50ns_specific, self.run2_HI_specific,
self.stage1L1Trigger, self.fastSim,
self.run2_HF_2016, self.stage2L1Trigger,
self.phase1Pixel,
self.phase2_common, self.phase2_tracker,
self.phase2_hgc, self.phase2_muon,
self.phase2dev_common, self.phase2dev_tracker,
Expand Down
2 changes: 2 additions & 0 deletions RecoLocalCalo/HcalRecAlgos/interface/HcalSimpleRecAlgo.h
Expand Up @@ -5,6 +5,7 @@
#include "boost/shared_ptr.hpp"

#include "DataFormats/HcalDigi/interface/HcalUpgradeDataFrame.h"
#include "DataFormats/HcalDigi/interface/QIE10DataFrame.h"
#include "DataFormats/HcalDigi/interface/HBHEDataFrame.h"
#include "DataFormats/HcalDigi/interface/HFDataFrame.h"
#include "DataFormats/HcalDigi/interface/HODataFrame.h"
Expand Down Expand Up @@ -71,6 +72,7 @@ class HcalSimpleRecAlgo {
HBHERecHit reconstructHBHEUpgrade(const HcalUpgradeDataFrame& digi, int first, int toadd, const HcalCoder& coder, const HcalCalibrations& calibs) const;

HFRecHit reconstruct(const HFDataFrame& digi, int first, int toadd, const HcalCoder& coder, const HcalCalibrations& calibs) const;
HFRecHit reconstructQIE10(const QIE10DataFrame& digi, int first, int toadd, const HcalCoder& coder, const HcalCalibrations& calibs) const;
HFRecHit reconstructHFUpgrade(const HcalUpgradeDataFrame& digi, int first, int toadd, const HcalCoder& coder, const HcalCalibrations& calibs) const;

HORecHit reconstruct(const HODataFrame& digi, int first, int toadd, const HcalCoder& coder, const HcalCalibrations& calibs) const;
Expand Down

0 comments on commit 15d5123

Please sign in to comment.