Skip to content
Open
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
6 changes: 6 additions & 0 deletions CondCore/HGCalPlugins/plugins/BuildFile.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<library file="plugin.cc" name="CondCoreHGCalPlugins">
<use name="CondCore/ESSources"/>
<use name="CondFormats/DataRecord"/>
<use name="CondFormats/HGCalObjects"/>
<flags EDM_PLUGIN="1"/>
</library>
5 changes: 5 additions & 0 deletions CondCore/HGCalPlugins/plugins/plugin.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#include "CondCore/ESSources/interface/registration_macros.h"
#include "CondFormats/DataRecord/interface/HGCalCalibrationRcd.h"
#include "CondFormats/HGCalObjects/interface/HGCalCalibrationPayload.h"

REGISTER_PLUGIN(HGCalCalibrationRcd, HGCalCalibrationPayload);
20 changes: 20 additions & 0 deletions CondFormats/DataRecord/interface/HGCalCalibrationRcd.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#ifndef CondFormats_DataRecord_HGCalCalibrationRcd_h
#define CondFormats_DataRecord_HGCalCalibrationRcd_h

#include "CondFormats/DataRecord/interface/HGCalElectronicsMappingRcd.h"
#include "FWCore/Framework/interface/DependentRecordImplementation.h"
#include "FWCore/Utilities/interface/mplVector.h"

/**
* EventSetup record carrying the persistent HGCal calibration payload.
*
* It depends on the electronics mapping record because the typed
* calibration payload must be expanded into the channel-indexed
* HGCalCalibParamHost representation.
*/
class HGCalCalibrationRcd
: public edm::eventsetup::DependentRecordImplementation<
HGCalCalibrationRcd,
edm::mpl::Vector<HGCalElectronicsMappingRcd>> {};

#endif
4 changes: 4 additions & 0 deletions CondFormats/DataRecord/src/HGCalCalibrationRcd.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#include "CondFormats/DataRecord/interface/HGCalCalibrationRcd.h"
#include "FWCore/Framework/interface/eventsetuprecord_registration_macro.h"

EVENTSETUP_RECORD_REG(HGCalCalibrationRcd);
67 changes: 67 additions & 0 deletions CondFormats/HGCalObjects/interface/HGCalCalibrationPayload.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#ifndef CondFormats_HGCalObjects_HGCalCalibrationPayload_h
#define CondFormats_HGCalObjects_HGCalCalibrationPayload_h

#include "CondFormats/Serialization/interface/Serializable.h"

#include <string>
#include <vector>

/**
* Channel-level calibration constants belonging to one HGCal module
* typecode.
*
* TOA correction vectors are stored in flattened form:
* toaCTDC.size() = number of channels * 32
* toaFTDC.size() = number of channels * 8
* toaTW.size() = number of channels * 3
*/
struct HGCalCalibrationModulePayload {
static constexpr unsigned int kCTDCSize = 32;
static constexpr unsigned int kFTDCSize = 8;
static constexpr unsigned int kTWSize = 3;

std::string typecode;

std::vector<int> channel;

std::vector<float> adcPed;
std::vector<float> noise;
std::vector<float> cmPed;
std::vector<float> cmSlope;

std::vector<float> bxm1Slope;
std::vector<float> bxm1Ped;

std::vector<float> totToADC;
std::vector<float> totPed;
std::vector<float> totLin;
std::vector<float> totP0;
std::vector<float> totP1;
std::vector<float> totP2;

std::vector<float> toaCTDC;
std::vector<float> toaFTDC;
std::vector<float> toaTW;

std::vector<float> mipsScale;
std::vector<unsigned char> valid;

COND_SERIALIZABLE;
};

/**
* Persistent HGCal calibration conditions payload.
*
* This object contains typed C++ calibration data. It does not contain
* JSON text.
*/
class HGCalCalibrationPayload {
public:
HGCalCalibrationPayload() = default;

std::vector<HGCalCalibrationModulePayload> modules;

COND_SERIALIZABLE;
};

#endif
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#include "CondFormats/HGCalObjects/interface/HGCalCalibrationPayload.h"
#include "FWCore/Utilities/interface/typelookup.h"

TYPELOOKUP_DATA_REG(HGCalCalibrationPayload);
28 changes: 28 additions & 0 deletions CondFormats/HGCalObjects/src/classes_def.xml
Original file line number Diff line number Diff line change
Expand Up @@ -72,4 +72,32 @@
<field name="vmax_" mapping="blob"/>
</class>


<!-- HGCal channel calibration conditions -->
<class name="HGCalCalibrationModulePayload" class_version="0">
<field name="typecode" mapping="blob"/>
<field name="channel" mapping="blob"/>
<field name="adcPed" mapping="blob"/>
<field name="noise" mapping="blob"/>
<field name="cmPed" mapping="blob"/>
<field name="cmSlope" mapping="blob"/>
<field name="bxm1Slope" mapping="blob"/>
<field name="bxm1Ped" mapping="blob"/>
<field name="totToADC" mapping="blob"/>
<field name="totPed" mapping="blob"/>
<field name="totLin" mapping="blob"/>
<field name="totP0" mapping="blob"/>
<field name="totP1" mapping="blob"/>
<field name="totP2" mapping="blob"/>
<field name="toaCTDC" mapping="blob"/>
<field name="toaFTDC" mapping="blob"/>
<field name="toaTW" mapping="blob"/>
<field name="mipsScale" mapping="blob"/>
<field name="valid" mapping="blob"/>
</class>

<class name="HGCalCalibrationPayload" class_version="0">
<field name="modules" mapping="blob"/>
</class>

</lcgdict>
1 change: 1 addition & 0 deletions CondFormats/HGCalObjects/src/headers.h
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#include "CondFormats/HGCalObjects/interface/HGCalCalibrationPayload.h"
#include "CondFormats/HGCalObjects/interface/HGCalConfiguration.h"
#include "CondFormats/HGCalObjects/interface/HGCalDenseIndexerBase.h"
#include "CondFormats/HGCalObjects/interface/HGCalMappingCellIndexer.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
#include "CondFormats/HGCalObjects/src/headers.h"

int main() {
// calibration conditions
testSerialization<HGCalCalibrationModulePayload>();
testSerialization<HGCalCalibrationPayload>();

//dense indexers
testSerialization<HGCalDenseIndexerBase>();
testSerialization<HGCalMappingCellIndexer>();
Expand Down
4 changes: 4 additions & 0 deletions CondTools/HGCal/BuildFile.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<use name="CondFormats/HGCalObjects"/>
<export>
<lib name="1"/>
</export>
12 changes: 12 additions & 0 deletions CondTools/HGCal/plugins/BuildFile.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<use name="CondCore/DBOutputService"/>
<use name="CondFormats/HGCalObjects"/>
<use name="FWCore/Framework"/>
<use name="FWCore/MessageLogger"/>
<use name="FWCore/ParameterSet"/>
<use name="FWCore/ServiceRegistry"/>
<use name="FWCore/Utilities"/>
<use name="json"/>

<library file="*.cc" name="CondToolsHGCalPlugins">
<flags EDM_PLUGIN="1"/>
</library>
Loading