12#ifndef O2_CALIBRATION_PHOSENERGY_CALIBRATOR_H
13#define O2_CALIBRATION_PHOSENERGY_CALIBRATOR_H
29#include <TLorentzVector.h>
71 void fill(
const gsl::span<const Cluster>&
clusters,
const gsl::span<const CluElement>& cluelements,
const gsl::span<const TriggerRecord>& cluTR);
72 void fill(
const gsl::span<const Cluster>& ){};
83 void setCuts(
float ptMin,
float eminHGTime,
float eminLGTime,
float eDigMin,
float eCluMin)
86 mEminHGTime = eminHGTime;
87 mEminLGTime = eminLGTime;
89 mClusterEmin = eCluMin;
93 void fillTimeMassHisto(
const Cluster&
clu,
const gsl::span<const CluElement>& cluelements);
95 float Nonlinearity(
float en);
97 long mRunStartTime = 0;
98 std::unique_ptr<RingBuffer> mBuffer;
102 std::unique_ptr<ETCalibHistos> mHistos;
104 uint32_t mEvOrbit = 0;
107 float mEminHGTime = 2.;
108 float mEminLGTime = 6.;
109 float mDigitEmin = 0.005;
110 float mClusterEmin = 0.4;
111 bool mFillDigitsTree =
false;
112 std::vector<uint32_t> mDigits;
126 bool process(uint64_t
tf,
const gsl::span<const Cluster>&
clusters,
const gsl::span<const CluElement>& cluelements,
const gsl::span<const TriggerRecord>& cluTR, std::vector<uint32_t>& outputDigits);
134 void setCuts(
float ptMin,
float eminHGTime,
float eminLGTime,
float eDigMin,
float eCluMin)
137 mEminHGTime = eminHGTime;
138 mEminLGTime = eminLGTime;
139 mDigitEmin = eDigMin;
140 mClusterEmin = eCluMin;
144 bool calculateCalibrations();
147 long mRunStartTime = 0;
149 float mEminHGTime = 1.5;
150 float mEminLGTime = 5.5;
151 float mDigitEmin = 0.05;
152 float mClusterEmin = 0.4;
155 bool mFillDigitsTree =
false;
156 std::unique_ptr<ETCalibHistos> mHistos;
Device to collect energy and time PHOS energy and time calibration.
CCDB container for bad (masked) channels in PHOS.
Contains PHOS cluster parameters.
void finalizeSlot(Slot &slot) final
void setCalibration(const CalibParams *c)
void setFillDigitsTree(bool toFill)
void setBadMap(const BadChannelsMap *map)
const ETCalibHistos * getCollectedHistos() const
void setCuts(float ptMin, float eminHGTime, float eminLGTime, float eDigMin, float eCluMin)
Slot & emplaceNewSlot(bool front, TFType tstart, TFType tend) final
bool hasEnoughData(const Slot &slot) const final
static constexpr short kMaxCluInEvent
void setCalibration(const CalibParams *c)
void setRunStartTime(long tf)
const ETCalibHistos * getCollectedHistos() const
void setCuts(float ptMin, float eminHGTime, float eminLGTime, float eDigMin, float eCluMin)
const std::vector< uint32_t > & getCollectedDigits() const
PHOSEnergySlot()
maximal number of clusters per event to separate digits from them (7 bits in digit map)
void setBadMap(const BadChannelsMap *map)
void fill(const gsl::span< const Cluster > &clusters, const gsl::span< const CluElement > &cluelements, const gsl::span< const TriggerRecord > &cluTR)
~PHOSEnergySlot()=default
void merge(const PHOSEnergySlot *)
void setFillDigitsTree(bool toFill)
void fill(const gsl::span< const Cluster > &)
Defining PrimaryVertex explicitly as messageable.
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
std::unique_ptr< GPUReconstructionTimeframe > tf
VectorOfTObjectPtrs other
std::vector< Cluster > clusters
uint32_t mHgLg
Bit 24: LG/HG.
uint32_t mCluster
Bits 25-32: index of cluster in event.
uint32_t mAddress
Bits 0 - 13: Hardware address.
uint32_t mAdcAmp
Bits 14 - 23: ADC counts.