Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
05fee66
Optional transfer of interpolated waveform for TDC channels
cortesep May 5, 2022
57f8fb7
Optional transfer of interpolated waveform for TDC channels
cortesep May 5, 2022
0648d45
WIP
cortesep May 5, 2022
ab53549
WIP
cortesep May 6, 2022
b5b2b68
WIP
cortesep May 9, 2022
7e03600
WIP
cortesep May 9, 2022
96003d0
WIP
cortesep May 10, 2022
5ac27a2
WIP
cortesep May 11, 2022
998d37c
WIP
cortesep May 12, 2022
dfb290b
WIP
cortesep May 12, 2022
cd4543a
EPN Waveform workflow
cortesep May 13, 2022
bc94ef2
EPN Waveform workflow
cortesep May 13, 2022
29860be
Correct trailing spaces
cortesep May 13, 2022
1552453
Add waveforms
cortesep May 13, 2022
3ee31eb
WIP
cortesep May 18, 2022
6a6664e
WIP
cortesep May 18, 2022
f75f101
WIP
cortesep May 19, 2022
c383d17
Full workflow
cortesep May 19, 2022
bea6b04
Fix whitespace
cortesep May 19, 2022
0713c4a
Fix whitespace
cortesep May 19, 2022
963e07c
Room to analyze waveform for all channels
cortesep May 19, 2022
02594c4
WIP
cortesep May 20, 2022
0cb1cda
WIP
cortesep May 20, 2022
5e5dc2a
WIP
cortesep May 20, 2022
88c9fad
Indroduced cuts on tower signals
cortesep May 23, 2022
2676d9c
Split WaveformCalibData into two classes
cortesep May 24, 2022
1084516
Improve printout
cortesep May 24, 2022
6938be1
Moving InterCalibData.h and InterCalibData.cxx to ZDCCalib
cortesep May 24, 2022
3382acb
Simplified class to store WaveformCalib output
cortesep May 24, 2022
4648932
Simplified class to store WaveformCalib output
cortesep May 24, 2022
aada04c
Simplified class to store WaveformCalib output
cortesep May 24, 2022
fa06c3b
Simplified class to store WaveformCalib output
cortesep May 24, 2022
9e14bb0
Fix whitespace
cortesep May 24, 2022
8af8bdb
Saving histograms from calibration object
cortesep May 24, 2022
c83d184
clang-format
cortesep May 24, 2022
80c9ccf
Fixed crash
cortesep May 25, 2022
e96371f
Fixing some compilation errors
cortesep May 25, 2022
4d383f3
clang-format
cortesep May 25, 2022
357a6af
Fixing some compilation errors
cortesep May 26, 2022
19db720
Corrected initialization
cortesep May 26, 2022
93e4943
Merge branch 'AliceO2Group:dev' into dev_shape
cortesep May 27, 2022
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
9 changes: 4 additions & 5 deletions DataFormats/Detectors/ZDC/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@

o2_add_library(DataFormatsZDC
SOURCES src/ChannelData.cxx src/BCData.cxx src/BCRecData.cxx src/RecEvent.cxx src/RecEventAux.cxx src/RawEventData.cxx
src/OrbitRawData.cxx src/OrbitRecData.cxx src/OrbitData.cxx src/ZDCTDCData.cxx src/ZDCEnergy.cxx
src/CTF.cxx src/RecEventFlat.cxx src/InterCalibData.cxx
src/OrbitRawData.cxx src/OrbitRecData.cxx src/OrbitData.cxx src/ZDCTDCData.cxx src/ZDCEnergy.cxx src/ZDCWaveform.cxx
src/CTF.cxx src/RecEventFlat.cxx
PUBLIC_LINK_LIBRARIES O2::CommonConstants O2::CommonDataFormat O2::DetectorsCalibration
O2::ZDCBase ROOT::MathCore FairRoot::Base
O2::SimulationDataFormat
Expand All @@ -24,6 +24,5 @@ o2_target_root_dictionary(DataFormatsZDC
include/DataFormatsZDC/OrbitData.h include/DataFormatsZDC/CTF.h
include/DataFormatsZDC/RecEvent.h include/DataFormatsZDC/RecEventAux.h include/DataFormatsZDC/RecEventFlat.h
include/DataFormatsZDC/OrbitRawData.h include/DataFormatsZDC/ZDCTDCData.h
include/DataFormatsZDC/BCRecData.h include/DataFormatsZDC/ZDCEnergy.h
include/DataFormatsZDC/OrbitRecData.h include/DataFormatsZDC/RawEventData.h
include/DataFormatsZDC/InterCalibData.h)
include/DataFormatsZDC/BCRecData.h include/DataFormatsZDC/ZDCEnergy.h include/DataFormatsZDC/ZDCWaveform.h
include/DataFormatsZDC/OrbitRecData.h include/DataFormatsZDC/RawEventData.h)
56 changes: 55 additions & 1 deletion DataFormats/Detectors/ZDC/include/DataFormatsZDC/BCRecData.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ struct BCRecData {
o2::dataformats::RangeRefComp<5> refe; // Reference to reconstructed energy
o2::dataformats::RangeRefComp<5> reft; // Reference to reconstructed TDC
o2::dataformats::RangeRefComp<5> refi; // Reference to reconstruction error/information flags
o2::dataformats::RangeRefComp<5> refw; // Reference to waveform interpolated data

BCRecData() = default;

Expand All @@ -47,6 +48,21 @@ struct BCRecData {
reft.setEntries(0);
refi.setFirstEntry(firsti);
refi.setEntries(0);
refw.setFirstEntry(0);
refw.setEntries(0);
ir = iRec;
}

BCRecData(int firste, int firstt, int firsti, int firstd, o2::InteractionRecord iRec)
{
refe.setFirstEntry(firste);
refe.setEntries(0);
reft.setFirstEntry(firstt);
reft.setEntries(0);
refi.setFirstEntry(firsti);
refi.setEntries(0);
refw.setFirstEntry(firstd);
refw.setEntries(0);
ir = iRec;
}

Expand All @@ -68,6 +84,12 @@ struct BCRecData {
refi.setEntries(refi.getEntries() + 1);
}

// Update counter of Waveform entries
inline void addWaveform()
{
refw.setEntries(refw.getEntries() + 1);
}

// Get information about event
inline void getRef(int& firste, int& ne, int& firstt, int& nt, int& firsti, int& ni)
{
Expand All @@ -79,9 +101,41 @@ struct BCRecData {
ni = refi.getEntries();
}

inline void getRef(int& firste, int& ne, int& firstt, int& nt, int& firsti, int& ni, int& firstw, int& nw)
{
firste = refe.getFirstEntry();
firstt = reft.getFirstEntry();
firsti = refi.getFirstEntry();
firstw = refw.getFirstEntry();
ne = refe.getEntries();
nt = reft.getEntries();
ni = refi.getEntries();
nw = refw.getEntries();
}
inline void getRefE(int& firste, int& ne)
{
firste = refe.getFirstEntry();
ne = refe.getEntries();
}
inline void getRefT(int& firstt, int& nt)
{
firstt = reft.getFirstEntry();
nt = reft.getEntries();
}
inline void getRefI(int& firsti, int& ni)
{
firsti = refi.getFirstEntry();
ni = refi.getEntries();
}
inline void getRefW(int& firstw, int& nw)
{
firstw = refw.getFirstEntry();
nw = refw.getEntries();
}

void print() const;

ClassDefNV(BCRecData, 1);
ClassDefNV(BCRecData, 2);
};
} // namespace zdc
} // namespace o2
Expand Down
6 changes: 3 additions & 3 deletions DataFormats/Detectors/ZDC/include/DataFormatsZDC/OrbitData.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.

#ifndef _ZDC_PEDESTAL_DATA_H_
#define _ZDC_PEDESTAL_DATA_H_
#ifndef _ZDC_ORBIT_DATA_H_
#define _ZDC_ORBIT_DATA_H_

#include "CommonDataFormat/InteractionRecord.h"
#include "ZDCBase/Constants.h"
#include <array>
#include <Rtypes.h>

/// \file Pedestal.h
/// \file OrbitData.h
/// \brief Class to describe pedestal data accumulated over the orbit
/// \author ruben.shahoyan@cern.ch

Expand Down
33 changes: 27 additions & 6 deletions DataFormats/Detectors/ZDC/include/DataFormatsZDC/RecEvent.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#include "DataFormatsZDC/BCRecData.h"
#include "DataFormatsZDC/ZDCEnergy.h"
#include "DataFormatsZDC/ZDCTDCData.h"
#include "DataFormatsZDC/ZDCWaveform.h"
#include "DataFormatsZDC/RecEventAux.h"
#include "ZDCBase/Constants.h"
#include "MathUtils/Cartesian.h"
Expand All @@ -34,20 +35,23 @@ namespace o2
namespace zdc
{
struct RecEvent {
std::vector<o2::zdc::BCRecData> mRecBC; /// Interaction record and references to data
std::vector<o2::zdc::ZDCEnergy> mEnergy; /// ZDC energy
std::vector<o2::zdc::ZDCTDCData> mTDCData; /// ZDC TDC
std::vector<uint16_t> mInfo; /// Event quality information
std::vector<o2::zdc::BCRecData> mRecBC; /// Interaction record and references to data
std::vector<o2::zdc::ZDCEnergy> mEnergy; /// ZDC energy
std::vector<o2::zdc::ZDCTDCData> mTDCData; /// ZDC TDC
std::vector<uint16_t> mInfo; /// Event quality information
std::vector<o2::zdc::ZDCWaveform> mWaveform; /// ZDC waveform

// Add new bunch crossing
inline void addBC(const RecEventAux& reca)
{
#ifdef O2_ZDC_DEBUG
printf("addBC %u.%-4u En_start:%-2lu TDC_start:%-2lu Info_start:%-2lu ch=0x%08x tr=0x%08x\n", reca.ir.orbit, reca.ir.bc, mEnergy.size(), mTDCData.size(), mInfo.size(), reca.channels, reca.triggers);
#endif
mRecBC.emplace_back(mEnergy.size(), mTDCData.size(), mInfo.size(), reca.ir);
mRecBC.emplace_back(mEnergy.size(), mTDCData.size(), mInfo.size(), mWaveform.size(), reca.ir);
mRecBC.back().channels = reca.channels;
mRecBC.back().triggers = reca.triggers;
}

// Add energy
inline void addEnergy(uint8_t ch, float energy)
{
Expand All @@ -57,6 +61,7 @@ struct RecEvent {
mEnergy.emplace_back(ch, energy);
mRecBC.back().addEnergy();
}

// Add TDC - int16_t
inline void addTDC(uint8_t ch, int16_t val, int16_t amp, bool isbeg = false, bool isend = false)
{
Expand All @@ -66,6 +71,7 @@ struct RecEvent {
mTDCData.emplace_back(ch, val, amp, isbeg, isend);
mRecBC.back().addTDC();
}

// Add TDC - float
inline void addTDC(uint8_t ch, float val, float amp, bool isbeg = false, bool isend = false)
{
Expand All @@ -75,6 +81,7 @@ struct RecEvent {
mTDCData.emplace_back(ch, val, amp, isbeg, isend);
mRecBC.back().addTDC();
}

// Add event information
inline void addInfo(uint16_t info)
{
Expand Down Expand Up @@ -102,9 +109,23 @@ struct RecEvent {
uint32_t addInfo(const RecEventAux& reca, const std::array<bool, NChannels>& vec, const uint16_t code);
uint32_t addInfos(const RecEventAux& reca);

// Add waveform
inline void addWaveform(uint8_t ch, std::vector<float>& wave)
{
#ifdef O2_ZDC_DEBUG
printf("ch:%-2u [%s] Waveform\n", ch, ChannelNames[ch].data());
#endif
if (wave.size() == NIS) {
mWaveform.emplace_back(ch, wave.data());
mRecBC.back().addWaveform();
} else {
LOG(error) << __func__ << ": ch " << int(ch) << " inconsistent waveform size " << wave.size();
}
}

void print() const;
// TODO: remove persitency of this object (here for debugging)
ClassDefNV(RecEvent, 1);
ClassDefNV(RecEvent, 2);
};

} // namespace zdc
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ namespace zdc
{

struct RecEventAux : public RecEventFlat {
uint32_t flags; /// reconstruction flags
uint32_t flags;
#ifdef O2_ZDC_TDC_C_ARRAY
int16_t tdcVal[NTDCChannels][MaxTDCValues]; /// TdcValues (encoded)
int16_t tdcAmp[NTDCChannels][MaxTDCValues]; /// TdcAmplitudes (encoded)
Expand All @@ -43,9 +43,7 @@ struct RecEventAux : public RecEventFlat {
uint32_t ref[NChannels]; /// Cache of references
std::array<bool, NChannels> err; /// Generic error condition
std::array<int16_t, NTimeBinsPerBC> data[NChannels] = {0}; /// Samples (raw or filtered)
#ifdef O2_ZDC_INTERP_DEBUG
float inter[NTDCChannels][NTimeBinsPerBC * TSN] = {0}; /// Interpolated samples
#endif

// Functions
RecEventAux()
{
Expand Down
29 changes: 28 additions & 1 deletion DataFormats/Detectors/ZDC/include/DataFormatsZDC/RecEventFlat.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,8 @@ struct RecEventFlat { // NOLINT: false positive in clang-tidy !!
NElem mNI = 0; //! N info
std::array<bool, NChannels> isBeg{}; //! Beginning of sequence
std::array<bool, NChannels> isEnd{}; //! End of sequence
o2::zdc::BCRecData mCurB; //! Current BC
BCRecData mCurB; //! Current BC
std::vector<float> inter[NChannels]; //! Interpolated samples

// Reconstruction messages
std::array<bool, NChannels> genericE{}; /// 0 Generic error
Expand Down Expand Up @@ -99,6 +100,32 @@ struct RecEventFlat { // NOLINT: false positive in clang-tidy !!
void init(const gsl::span<const o2::zdc::BCRecData> RecBC, const gsl::span<const o2::zdc::ZDCEnergy> Energy, const gsl::span<const o2::zdc::ZDCTDCData> TDCData, const gsl::span<const uint16_t> Info);

int next();
int at(int ientry);

void allocate(int isig)
{
if (inter[isig].size() != NIS) {
inter[isig].resize(NIS);
for (int iis = 0; iis < NIS; iis++) {
inter[isig][iis] = 0;
}
}
}

BCRecData& getCurB()
{
return mCurB;
}

inline int getEntries() const
{
return mNEntries;
}

inline int getNextEntry() const
{
return mEntry;
}

inline NElem getNEnergy() const
{
Expand Down
66 changes: 66 additions & 0 deletions DataFormats/Detectors/ZDC/include/DataFormatsZDC/ZDCWaveform.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
// All rights not expressly granted are reserved.
//
// This software is distributed under the terms of the GNU General Public
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
//
// In applying this license CERN does not waive the privileges and immunities
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.

#ifndef ZDC_WAVEFORM_H
#define ZDC_WAVEFORM_H

#include "ZDCBase/Constants.h"
#include <array>
#include <cmath>
#include <Rtypes.h>

/// \file ZDCWaveform.h
/// \brief Container class to store the interpolated waveform of the ZDC
/// \author pietro.cortese@cern.ch

namespace o2
{
namespace zdc
{

struct ZDCWaveform {

uint8_t sig = 0; /// Signal id
float inter[NTimeBinsPerBC * TSN] = {0};

ZDCWaveform() = default;

ZDCWaveform(uint8_t mych, float* waveform)
{
set(mych, waveform);
}

inline void set(uint8_t ch, float* waveform)
{
sig = ch;
for (int i = 0; i < (NTimeBinsPerBC * TSN); i++) {
inter[i] = waveform[i];
}
}

const float* waveform() const
{
return inter;
}

int ch() const
{
return sig;
}

void print() const;

ClassDefNV(ZDCWaveform, 1);
};
} // namespace zdc
} // namespace o2

#endif
5 changes: 3 additions & 2 deletions DataFormats/Detectors/ZDC/src/BCRecData.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,9 @@ using namespace o2::zdc;

void BCRecData::print() const
{
printf("Orbit %9u bc %4u nch %2d pos %d ntdc %2d pos %d nmsg %2d pos %d\n", ir.orbit, ir.bc,
printf("Orbit %9u bc %4u nch=%2d pos %d ntdc=%2d pos %d nmsg=%2d pos %d nwav=%d pos %d\n", ir.orbit, ir.bc,
refe.getEntries(), refe.getFirstEntry(),
reft.getEntries(), reft.getFirstEntry(),
refi.getEntries(), refi.getFirstEntry());
refi.getEntries(), refi.getFirstEntry(),
refw.getEntries(), refw.getFirstEntry());
}
3 changes: 2 additions & 1 deletion DataFormats/Detectors/ZDC/src/DataFormatsZDCLinkDef.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,14 @@
#pragma link C++ class o2::zdc::RecEventFlat + ;
#pragma link C++ class o2::zdc::ZDCEnergy + ;
#pragma link C++ class o2::zdc::ZDCTDCData + ;
#pragma link C++ class o2::zdc::InterCalibData + ;
#pragma link C++ class o2::zdc::ZDCWaveform + ;
#pragma link C++ class std::vector < o2::zdc::ChannelData> + ;
#pragma link C++ class std::vector < o2::zdc::BCData> + ;
#pragma link C++ class std::vector < o2::zdc::OrbitData> + ;
#pragma link C++ class std::vector < o2::zdc::BCRecData> + ;
#pragma link C++ class std::vector < o2::zdc::ZDCEnergy> + ;
#pragma link C++ class std::vector < o2::zdc::ZDCTDCData> + ;
#pragma link C++ class std::vector < o2::zdc::ZDCWaveform> + ;
#pragma link C++ class std::vector < o2::zdc::RecEvent> + ;
#pragma link C++ class std::vector < o2::zdc::RecEventAux> + ;
#pragma link C++ class std::vector < o2::zdc::OrbitRawData> + ;
Expand Down
6 changes: 6 additions & 0 deletions DataFormats/Detectors/ZDC/src/RecEventFlat.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@ void RecEventFlat::clearBitmaps()

int RecEventFlat::next()
{
return at(mEntry);
}

int RecEventFlat::at(int ientry)
{
mEntry = ientry;
ezdcDecoded = 0;
if (mEntry >= mNEntries) {
return 0;
Expand Down
Loading