Skip to content

Commit

Permalink
Merge 532b816 into 44a51ca
Browse files Browse the repository at this point in the history
  • Loading branch information
RSalvatico committed Jul 3, 2020
2 parents 44a51ca + 532b816 commit 1773245
Show file tree
Hide file tree
Showing 72 changed files with 3,360 additions and 53 deletions.
8 changes: 8 additions & 0 deletions CalibFormats/CaloObjects/src/CaloTSamples_Ph2.cc
@@ -0,0 +1,8 @@
#include "CalibFormats/CaloObjects/interface/CaloTSamplesBase.icc"
#include "CalibFormats/CaloObjects/interface/CaloTSamples.icc"
#include "CondFormats/EcalObjects/interface/EcalConstants.h"

template class CaloTSamplesBase<float>;

template class CaloTSamples<float, ecalPh2::sampleSize>;
template class CaloTSamples<float, 3>;
6 changes: 6 additions & 0 deletions CondFormats/DataRecord/interface/EcalCATIAGainRatiosRcd.h
@@ -0,0 +1,6 @@
#ifndef CondFormats_DataRecord_EcalCATIAGainRatiosRcd_H
#define CondFormats_DataRecord_EcalCATIAGainRatiosRcd_H

#include "FWCore/Framework/interface/EventSetupRecordImplementation.h"
class EcalCATIAGainRatiosRcd : public edm::eventsetup::EventSetupRecordImplementation<EcalCATIAGainRatiosRcd> {};
#endif
6 changes: 6 additions & 0 deletions CondFormats/DataRecord/interface/EcalLiteDTUPedestalsRcd.h
@@ -0,0 +1,6 @@
#ifndef CondFormats_DataRecord_EcalLiteDTUPedestalsRcd_h
#define CondFormats_DataRecord_EcalLiteDTUPedestalsRcd_h

#include "FWCore/Framework/interface/EventSetupRecordImplementation.h"
class EcalLiteDTUPedestalsRcd : public edm::eventsetup::EventSetupRecordImplementation<EcalLiteDTUPedestalsRcd> {};
#endif
4 changes: 4 additions & 0 deletions CondFormats/DataRecord/src/EcalCATIAGainRatiosRcd.cc
@@ -0,0 +1,4 @@
#include "CondFormats/DataRecord/interface/EcalCATIAGainRatiosRcd.h"
#include "FWCore/Framework/interface/eventsetuprecord_registration_macro.h"

EVENTSETUP_RECORD_REG(EcalCATIAGainRatiosRcd);
4 changes: 4 additions & 0 deletions CondFormats/DataRecord/src/EcalLiteDTUPedestalsRcd.cc
@@ -0,0 +1,4 @@
#include "CondFormats/DataRecord/interface/EcalLiteDTUPedestalsRcd.h"
#include "FWCore/Framework/interface/eventsetuprecord_registration_macro.h"

EVENTSETUP_RECORD_REG(EcalLiteDTUPedestalsRcd);
10 changes: 10 additions & 0 deletions CondFormats/EcalObjects/interface/EcalCATIAGainRatios.h
@@ -0,0 +1,10 @@
#ifndef CondFormats_EcalObjects_EcalCATIAGainRatios_h
#define CondFormats_EcalObjects_EcalCATIAGainRatios_h

#include "CondFormats/EcalObjects/interface/EcalCondObjectContainer.h"

typedef float EcalCATIAGainRatio;
typedef EcalFloatCondObjectContainer EcalCATIAGainRatioMap;
typedef EcalCATIAGainRatioMap EcalCATIAGainRatios;

#endif
31 changes: 31 additions & 0 deletions CondFormats/EcalObjects/interface/EcalConstants.h
@@ -0,0 +1,31 @@
//Namespaces for Phase1 and Phase2
#ifndef CondFormats_EcalObject_EcalConstants_h
#define CondFormats_EcalObject_EcalConstants_h

class ecalPh2 {
public:
static constexpr double Samp_Period = 6.25;
static constexpr unsigned int NGAINS = 2;
static constexpr float gains[2] = {10., 1.};
static constexpr unsigned int gainId1 = 1;
static constexpr unsigned int gainId10 = 0;
static constexpr unsigned int sampleSize = 16;
static constexpr unsigned int NBITS = 12; // number of available bits
static constexpr unsigned int MAXADC = (1 << NBITS) - 1; // 2^12 -1, adc max range
static constexpr unsigned int kEBChannels = 61200;
static constexpr double maxEneEB = 2000.;
static constexpr unsigned int kNOffsets = 2000;
static constexpr unsigned int kAdcMask = 0xFFF;
static constexpr unsigned int kGainIdMask = 0x3;

}; // namespace ecalPh2

class ecalPh1 {
public:
static constexpr double Samp_Period = 25.;
static constexpr unsigned int NGAINS = 4;
static constexpr float gains[4] = {0., 12., 6., 1.};
static constexpr unsigned int sampleSize = 10;
static constexpr unsigned int kNOffsets = 2000;
}; // namespace ecalPh1
#endif
39 changes: 39 additions & 0 deletions CondFormats/EcalObjects/interface/EcalLiteDTUPedestals.h
@@ -0,0 +1,39 @@
#ifndef CondFormats_EcalObject_EcalLiteDTUPedestals_h
#define CondFormats_EcalObject_EcalLiteDTUPedestals_h

#include "CondFormats/Serialization/interface/Serializable.h"
#include "CondFormats/EcalObjects/interface/EcalCondObjectContainer.h"
#include "CondFormats/EcalObjects/interface/EcalConstants.h"

class EcalLiteDTUPedestals {
public:
float meanarray[2] = {13., 8.};
float rmsarray[2] = {2.8, 1.2};

int setMean(unsigned int i, float value) {
if (i >= ecalPh2::NGAINS)
return -1;
else
meanarray[i] = value;
return 1;
}

int setRMS(unsigned int i, float value) {
if (i >= ecalPh2::NGAINS)
return -1;
else
rmsarray[i] = value;
return 1;
}

float mean(unsigned int i) const { return meanarray[i]; }

float rms(unsigned int i) const { return rmsarray[i]; }

COND_SERIALIZABLE;
};

typedef EcalCondObjectContainer<EcalLiteDTUPedestals> EcalLiteDTUPedestalsMap;
typedef EcalLiteDTUPedestalsMap::const_iterator EcalLiteDTUPedestalsMapIterator;

#endif
1 change: 1 addition & 0 deletions CondFormats/EcalObjects/src/SerializationManual.h
Expand Up @@ -4,6 +4,7 @@ COND_SERIALIZATION_INSTANTIATE(EcalCondObjectContainer<EcalLaserAPDPNRatios::Eca
COND_SERIALIZATION_INSTANTIATE(EcalCondObjectContainer<EcalMappingElement>);
COND_SERIALIZATION_INSTANTIATE(EcalCondObjectContainer<EcalMGPAGainRatio>);
COND_SERIALIZATION_INSTANTIATE(EcalCondObjectContainer<EcalPedestal>);
COND_SERIALIZATION_INSTANTIATE(EcalCondObjectContainer<EcalLiteDTUPedestals>);
COND_SERIALIZATION_INSTANTIATE(EcalCondObjectContainer<EcalPulseShape>);
COND_SERIALIZATION_INSTANTIATE(EcalCondObjectContainer<EcalPulseCovariance>);
COND_SERIALIZATION_INSTANTIATE(EcalCondObjectContainer<EcalPulseSymmCovariance>);
Expand Down
@@ -0,0 +1,4 @@
#include "CondFormats/EcalObjects/interface/EcalLiteDTUPedestals.h"
#include "FWCore/Utilities/interface/typelookup.h"

TYPELOOKUP_DATA_REG(EcalLiteDTUPedestalsMap);
11 changes: 9 additions & 2 deletions CondFormats/EcalObjects/src/classes.h
@@ -1,4 +1,4 @@

#include <cstdint>
#include "CondFormats/EcalObjects/interface/EcalCondObjectContainer.h"
#include "CondFormats/EcalObjects/interface/EcalCondTowerObjectContainer.h"
#include "CondFormats/EcalObjects/interface/EcalPedestals.h"
Expand Down Expand Up @@ -64,7 +64,9 @@
#include "CondFormats/EcalObjects/interface/EcalTPGSpike.h"
#include "CondFormats/EcalObjects/interface/EcalSRSettings.h"
#include "CondFormats/EcalObjects/interface/EcalSimPulseShape.h"
#include <cstdint>
//ECAL PH2:
#include "CondFormats/EcalObjects/interface/EcalLiteDTUPedestals.h"
#include "CondFormats/EcalObjects/interface/EcalCATIAGainRatios.h"

namespace CondFormats_EcalObjects {
struct dictionary {
Expand Down Expand Up @@ -93,6 +95,11 @@ namespace CondFormats_EcalObjects {
EcalContainer<EBDetId, EcalPedestal> ec_ebDetId_ecalPedestal;
EcalCondObjectContainer<EcalPedestal> pedmap; //typedef EcalPedestals

//ECAL PH2:
std::vector<EcalLiteDTUPedestals> v_ecalDTUPedestals;
EcalContainer<EBDetId, EcalLiteDTUPedestals> ec_ebDetId_ecalLiteDTUPedestals;
EcalCondObjectContainer<EcalLiteDTUPedestals> pedmapDTU; //typedef EcalPedestals

std::vector<EcalTPGCrystalStatusCode> v_ecalTPGCrystalStatusCode;
EcalContainer<EEDetId, EcalTPGCrystalStatusCode> ec_eeDetId_ecalTPGCrystalStatusCode;
EcalContainer<EBDetId, EcalTPGCrystalStatusCode> ec_ebDetId_ecalTPGCrystalStatusCode;
Expand Down
8 changes: 8 additions & 0 deletions CondFormats/EcalObjects/src/classes_def.xml
Expand Up @@ -82,6 +82,14 @@
<field name = "ee_" mapping = "blob"/>
</class>

<class name="EcalLiteDTUPedestals"/>
<!-- templates for EcalCondObjectContainer having the class as template parameter -->
<class name="std::vector<EcalLiteDTUPedestals>"/>
<class name="EcalContainer<EBDetId,EcalLiteDTUPedestals>"/>
<class name="EcalCondObjectContainer<EcalLiteDTUPedestals>">
<field name = "eb_" mapping = "blob"/>
</class>

<!-- base class -->
<class name="EcalTPGCrystalStatusCode"/>
<!-- templates for EcalCondObjectContainer having the class as template parameter -->
Expand Down
8 changes: 8 additions & 0 deletions CondFormats/EcalObjects/xml/EcalLiteDTUPedestals_default.xml
@@ -0,0 +1,8 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE PoolDatabase SYSTEM "InMemory">
<PoolDatabase >
<PoolContainer name="EcalLiteDTUPedestals" >
<Class name="EcalLiteDTUPedestals" mapping_version="EcalLiteDTUPedestals_automatic_default" >
</Class >
</PoolContainer >
</PoolDatabase >
71 changes: 71 additions & 0 deletions Configuration/StandardSequences/python/Digi_Ph2_cff.py
@@ -0,0 +1,71 @@
import FWCore.ParameterSet.Config as cms

#
# Full-scale Digitization of the simulated hits
# in all CMS subdets : Tracker, ECAL, HCAl, Muon's;
# MixingModule (at least in zero-pileup mode) needs
# to be included to make Digi's operational, since
# it's required for ECAL/HCAL & Muon's
# Defined in a separate fragment
#
# Tracker Digis (Pixel + SiStrips) are now made in the mixing
# module, so the old "trDigi" sequence has been taken out.
#

# Calorimetry Digis (Ecal + Hcal) - * unsuppressed *
# returns sequence "calDigi"

from SimCalorimetry.Configuration.SimCalorimetry_Ph2_cff import *
# Muon Digis (CSC + DT + RPC)
# returns sequence "muonDigi"
#
from SimMuon.Configuration.SimMuon_cff import *
#
# TrackingParticle Producer is now part of the mixing module, so
# it is no longer run here.
#
from SimGeneral.Configuration.SimGeneral_cff import *

# add updating the GEN information by default
from Configuration.StandardSequences.Generator_cff import *
from GeneratorInterface.Core.generatorSmeared_cfi import *
from SimGeneral.PileupInformation.genPUProtons_cfi import *

doAllDigiTask = cms.Task(generatorSmeared, calDigiTask, muonDigiTask)
pdigiTask_nogen = cms.Task(generatorSmeared, cms.TaskPlaceholder("randomEngineStateProducer"), cms.TaskPlaceholder("mix"), doAllDigiTask, addPileupInfo, genPUProtons)
pdigiTask = cms.Task(pdigiTask_nogen, fixGenInfoTask)

doAllDigi = cms.Sequence(doAllDigiTask)
pdigi = cms.Sequence(pdigiTask)
pdigi_valid = cms.Sequence(pdigiTask)
pdigi_nogen=cms.Sequence(pdigiTask_nogen)
pdigi_valid_nogen=cms.Sequence(pdigiTask_nogen)

from GeneratorInterface.HiGenCommon.HeavyIon_cff import *
pdigiTask_hi = cms.Task(pdigiTask, heavyIon)
pdigiTask_hi_nogen = cms.Task(pdigiTask_nogen, genJetMETTask, heavyIon)
pdigi_hi=cms.Sequence(pdigiTask_hi)
pdigi_hi_nogen=cms.Sequence(pdigiTask_hi_nogen)

from Configuration.Eras.Modifier_fastSim_cff import fastSim
def _fastSimDigis(process):
import FastSimulation.Configuration.DigiAliases_cff as DigiAliases

# pretend these digis have been through digi2raw and raw2digi, by using the approprate aliases
# use an alias to make the mixed track collection available under the usual label
from FastSimulation.Configuration.DigiAliases_cff import loadDigiAliases
loadDigiAliases(process)
# no need for the aliases for premixing stage1
modifyDigi_fastSimDigis = (fastSim & ~premix_stage1).makeProcessModifier(_fastSimDigis)

#phase 2 common mods
def _modifyEnableHcalHardcode( theProcess ):
from CalibCalorimetry.HcalPlugins.Hcal_Conditions_forGlobalTag_cff import hcal_db_producer as _hcal_db_producer, es_hardcode as _es_hardcode, es_prefer_hcalHardcode as _es_prefer_hcalHardcode
theProcess.hcal_db_producer = _hcal_db_producer
theProcess.es_hardcode = _es_hardcode
theProcess.es_prefer_hcalHardcode = _es_prefer_hcalHardcode

from Configuration.Eras.Modifier_hcalHardcodeConditions_cff import hcalHardcodeConditions
modifyEnableHcalHardcode_ = hcalHardcodeConditions.makeProcessModifier( _modifyEnableHcalHardcode )


1 change: 1 addition & 0 deletions DataFormats/EcalDigi/interface/EBDataFrame.h
Expand Up @@ -3,6 +3,7 @@

#include "DataFormats/EcalDetId/interface/EBDetId.h"
#include "DataFormats/EcalDigi/interface/EcalDataFrame.h"
#include "DataFormats/EcalDigi/interface/EcalDataFrame_Ph2.h"
#include <iosfwd>

/** \class EBDataFrame
Expand Down
38 changes: 38 additions & 0 deletions DataFormats/EcalDigi/interface/EcalDataFrame_Ph2.h
@@ -0,0 +1,38 @@
#ifndef DataFormats_EcalDigi_EcalDataFrame_Ph2_h
#define DataFormats_EcalDigi_EcalDataFrame_Ph2_h
#include "DataFormats/EcalDigi/interface/EcalLiteDTUSample.h"
#include "DataFormats/DetId/interface/DetId.h"
#include "DataFormats/Common/interface/DataFrame.h"
#include "CondFormats/EcalObjects/interface/EcalConstants.h"

/** \class EcalDataFrame_Ph2
*/
class EcalDataFrame_Ph2 {
public:
EcalDataFrame_Ph2() {}
EcalDataFrame_Ph2(edm::DataFrame const& iframe) : m_data(iframe) {}

virtual ~EcalDataFrame_Ph2() {}

DetId id() const { return m_data.id(); }

int size() const { return m_data.size(); }

EcalLiteDTUSample operator[](int i) const { return m_data[i]; }
EcalLiteDTUSample sample(int i) const { return m_data[i]; }

// FIXME (shall we throw??)
void setSize(int) {}
void setSample(int i, EcalLiteDTUSample sam) { m_data[i] = sam; }

int MAXSAMPLES = ecalPh2::sampleSize;

edm::DataFrame const& frame() const { return m_data; }
edm::DataFrame& frame() { return m_data; }

private:
edm::DataFrame m_data;
};

#endif
27 changes: 27 additions & 0 deletions DataFormats/EcalDigi/interface/EcalDigiCollections.h
Expand Up @@ -18,6 +18,29 @@
#include "DataFormats/DetId/interface/DetId.h"
#include "DataFormats/EcalDetId/interface/EcalSubdetector.h"
#include "DataFormats/Common/interface/DataFrameContainer.h"
#include "CondFormats/EcalObjects/interface/EcalConstants.h"

class EcalDigiCollectionPh2 : public edm::DataFrameContainer {
public:
typedef edm::DataFrameContainer::size_type size_type;
static const size_type MAXSAMPLES = ecalPh2::sampleSize;
explicit EcalDigiCollectionPh2(size_type istride = MAXSAMPLES, int isubdet = 0)
: edm::DataFrameContainer(istride, isubdet) {}
void swap(DataFrameContainer& other) { this->DataFrameContainer::swap(other); }
};

class EBDigiCollectionPh2 : public EcalDigiCollectionPh2 {
public:
typedef edm::DataFrameContainer::size_type size_type;
typedef EBDataFrame Digi;
typedef Digi::key_type DetId;

EBDigiCollectionPh2(size_type istride = MAXSAMPLES) : EcalDigiCollectionPh2(istride, EcalBarrel) {}
void swap(EBDigiCollectionPh2& other) { this->EcalDigiCollectionPh2::swap(other); }
void push_back(const Digi& digi) { DataFrameContainer::push_back(digi.id(), digi.frame().begin()); }
void push_back(id_type iid) { DataFrameContainer::push_back(iid); }
void push_back(id_type iid, data_type const* idata) { DataFrameContainer::push_back(iid, idata); }
};

class EcalDigiCollection : public edm::DataFrameContainer {
public:
Expand Down Expand Up @@ -89,6 +112,10 @@ inline void swap(EEDigiCollection& lhs, EEDigiCollection& rhs) { lhs.swap(rhs);

inline void swap(ESDigiCollection& lhs, ESDigiCollection& rhs) { lhs.swap(rhs); }

inline void swap(EcalDigiCollectionPh2& lhs, EcalDigiCollectionPh2& rhs) { lhs.swap(rhs); }

inline void swap(EBDigiCollectionPh2& lhs, EBDigiCollectionPh2& rhs) { lhs.swap(rhs); }

typedef edm::SortedCollection<EcalTimeDigi> EcalTimeDigiCollection;
typedef edm::SortedCollection<EcalTriggerPrimitiveDigi> EcalTrigPrimDigiCollection;
typedef edm::SortedCollection<EcalEBTriggerPrimitiveDigi> EcalEBTrigPrimDigiCollection;
Expand Down
47 changes: 47 additions & 0 deletions DataFormats/EcalDigi/interface/EcalLiteDTUSample.h
@@ -0,0 +1,47 @@
#ifndef DataFormats_EcalDigi_EcalLiteDTUSample_h
#define DataFormats_EcalDigi_EcalLiteDTUSample_h

#include <iosfwd>
#include <cstdint>
#include "CondFormats/EcalObjects/interface/EcalConstants.h"

namespace ecalLiteDTU {
typedef uint16_t sample_type;

/// get the ADC sample (12 bits)
constexpr int adc(sample_type sample) { return sample & ecalPh2::kAdcMask; }
/// get the gainId (2 bits)
constexpr int gainId(sample_type sample) { return (sample >> ecalPh2::NBITS) & ecalPh2::kGainIdMask; }
constexpr sample_type pack(int adc, int gainId) {
return (adc & ecalPh2::kAdcMask) | ((gainId & ecalPh2::kGainIdMask) << ecalPh2::NBITS);
}
} // namespace ecalLiteDTU

/** \class EcalLiteDTUSample
* Simple container packer/unpacker for a single sample from the Lite_CATIA electronics
*
*
*/
class EcalLiteDTUSample {
public:
EcalLiteDTUSample() { theSample = 0; }
EcalLiteDTUSample(uint16_t data) { theSample = data; }
EcalLiteDTUSample(int adc, int gainId);

/// get the raw word
uint16_t raw() const { return theSample; }
/// get the ADC sample (12 bits)
int adc() const { return theSample & ecalPh2::kAdcMask; }
/// get the gainId (2 bits)
int gainId() const { return (theSample >> ecalPh2::NBITS) & ecalPh2::kGainIdMask; }
/// for streaming
uint16_t operator()() const { return theSample; }
operator uint16_t() const { return theSample; }

private:
uint16_t theSample;
};

std::ostream& operator<<(std::ostream&, const EcalLiteDTUSample&);

#endif
2 changes: 1 addition & 1 deletion DataFormats/EcalDigi/src/EBDataFrame.cc
@@ -1,7 +1,7 @@
#include "DataFormats/EcalDigi/interface/EBDataFrame.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include <iostream>

//#warning[DataFormats/EcalDigi/src/EBDataFrame.cc] spike estimator contains a suspicious 10
float EBDataFrame::spikeEstimator() const {
if (size() != 10) {
edm::LogError("InvalidNumberOfSamples")
Expand Down

0 comments on commit 1773245

Please sign in to comment.