17#include <TDirectory.h>
18#include <TPaveStats.h>
33 if (mTDCCalibConfig ==
nullptr) {
34 LOG(fatal) <<
"o2::zdc::TDCCalibEPN: missing configuration object";
41 if (opt.debugOutput ==
true) {
46 auto* cfg = mTDCCalibConfig;
49 for (
int iTDC = 0; iTDC <
NTDC; iTDC++) {
63 const gsl::span<const o2::zdc::ZDCEnergy>& Energy,
64 const gsl::span<const o2::zdc::ZDCTDCData>& TDCData,
65 const gsl::span<const uint16_t>& Info)
74 ev.
init(RecBC, Energy, TDCData, Info);
78 for (uint16_t info : decodedInfo) {
79 uint8_t ch = (info >> 10) & 0x1f;
80 uint16_t code = info & 0x03ff;
97 for (
int itdc = 0; itdc <
NTDC; itdc++) {
98 int nhits = ev.
NtdcV(itdc);
116 for (
int ih = 0; ih <
NTDC; ih++) {
121 if (mSaveDebugHistos) {
131 for (int32_t ii = 0; ii <
NTDC; ii++) {
147 for (
int i = 0;
i < nHits;
i++) {
148 tdcVal[
i] = ev.
tdcV(iTDC,
i);
152 for (
int hit = 0; hit < nHits; hit++) {
153 mTDC[iTDC]->fill(tdcVal[hit]);
154 if (mSaveDebugHistos) {
155 mTDCSum[iTDC]->fill(tdcVal[hit]);
166 LOG(info) <<
"Saving EPN debug histograms on file " << fn;
168 TDirectory* cwd = gDirectory;
169 TFile*
f =
new TFile(fn.data(),
"recreate");
171 LOG(error) <<
"Cannot create file: " << fn;
174 for (int32_t ih = 0; ih <
NTDC; ih++) {
178 p->Write(
"", TObject::kOverwrite);
180 LOG(info) << p->GetName() <<
" entries: " << p->GetEntries();
ZDC calibration common parameters.
TDC calibration intermediate data.
Parameters to correct TDCs (produced by QA)
static const CalibParamZDC & Instance()
void setSaveDebugHistos()
int write(const std::string fn="ZDCTDCCalibEPN.root")
void fill1D(int iTDC, int nHits, o2::zdc::RecEventFlat ev)
std::array< o2::dataformats::FlatHisto1D< float > *, NTDC > mTDC
std::array< o2::dataformats::FlatHisto1D< float > *, NTDC > mTDCSum
int process(const gsl::span< const o2::zdc::BCRecData > &bcrec, const gsl::span< const o2::zdc::ZDCEnergy > &energy, const gsl::span< const o2::zdc::ZDCTDCData > &tdc, const gsl::span< const uint16_t > &info)
static constexpr int NTDC
uint16_t bc
bunch crossing ID of interaction
int NtdcV(uint8_t ich) const
float tdcV(uint8_t ich, uint64_t ipos) const
BCRecData mCurB
End of sequence.
void init(const std::vector< o2::zdc::BCRecData > *RecBC, const std::vector< o2::zdc::ZDCEnergy > *Energy, const std::vector< o2::zdc::ZDCTDCData > *TDCData, const std::vector< uint16_t > *Info)
Trigger mask for printout.
const std::vector< uint16_t > & getDecodedInfo()
double cutLow[NTDCChannels]
double cutHigh[NTDCChannels]
uint64_t mCTimeBeg
ZNAC, ZNAS, ZPAC, ZPAS, ZEM1, ZEM2, ZNCC, ZNCS, ZPCC, ZPCS.
uint64_t mCTimeEnd
Time of processed time frame.
static constexpr const char * CTDC[NTDC]
Time of processed time frame.
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"