12#ifndef ALICEO2_FT0_DIGITIZER_H
13#define ALICEO2_FT0_DIGITIZER_H
49 void process(
const std::vector<o2::ft0::HitType>* hits, std::vector<o2::ft0::Digit>& digitsBC,
50 std::vector<o2::ft0::ChannelData>& digitsCh,
51 std::vector<o2::ft0::DetTrigInput>& digitsTrig,
53 void flush(std::vector<o2::ft0::Digit>& digitsBC,
54 std::vector<o2::ft0::ChannelData>& digitsCh,
55 std::vector<o2::ft0::DetTrigInput>& digitsTrig,
57 void flush_all(std::vector<o2::ft0::Digit>& digitsBC,
58 std::vector<o2::ft0::ChannelData>& digitsCh,
59 std::vector<o2::ft0::DetTrigInput>& digitsTrig,
69 uint16_t
getBC()
const {
return mIntRecord.
bc; }
76 caliboffsets) { mCalibOffset = caliboffsets; };
94 return (
a.hit_ch !=
b.hit_ch) ? (
a.hit_ch <
b.hit_ch) : (
a.hit_time <
b.hit_time);
97 std::vector<particle>
hits;
112 int const index = std::floor(
y);
114 return mSignalTable.back();
116 float const rem =
y -
index;
117 return mSignalTable[
index] + rem * (mSignalTable[
index + 1] - mSignalTable[
index]);
120 template <
typename VcType>
125 typename VcType::IndexType
const index = floor(
y);
126 auto const rem =
y -
index;
128 for (
size_t i = 0;
i < VcType::size(); ++
i) {
135 val[
i] = mSignalTable.back();
148 bool mIsContinuous =
true;
151 std::deque<BCCache> mCache;
152 std::array<GoodInteractionTimeRecord, NCHANNELS> mDeadTimes;
156 NoiseRandomRingType mRndGaus;
157 int mNumNoiseSamples;
158 std::vector<float> mNoiseSamples;
160 std::array<float, DP::SIGNAL_TABLE_SIZE> mSignalTable;
161 std::vector<float> mSignalCache;
163 void storeBC(BCCache&
bc,
164 std::vector<o2::ft0::Digit>& digitsBC,
165 std::vector<o2::ft0::ChannelData>& digitsCh,
166 std::vector<o2::ft0::DetTrigInput>& digitsTrig,
std::vector< unsigned long > times
Dead channel map for FIT.
Definition of the Detector class.
Configurable digitization parameters.
Definition of a container to keep Monte Carlo truth external to simulation objects.
static const FT0DigParam & Instance()
void flush(std::vector< o2::ft0::Digit > &digitsBC, std::vector< o2::ft0::ChannelData > &digitsCh, std::vector< o2::ft0::DetTrigInput > &digitsTrig, o2::dataformats::MCTruthContainer< o2::ft0::MCLabel > &label)
uint32_t getOrbit() const
void printParameters() const
double getTimeOffsetWrtBC() const
void setContinuous(bool v=true)
void setDeadChannelMap(o2::fit::DeadChannelMap const *deadChannelMap)
CFDOutput get_time(const std::vector< float > ×, float deadTime)
VcType signalFormVc(VcType x) const
bool isContinuous() const
void setInteractionRecord(const o2::InteractionTimeRecord &src)
const o2::InteractionRecord & getInteractionRecord() const
void flush_all(std::vector< o2::ft0::Digit > &digitsBC, std::vector< o2::ft0::ChannelData > &digitsCh, std::vector< o2::ft0::DetTrigInput > &digitsTrig, o2::dataformats::MCTruthContainer< o2::ft0::MCLabel > &label)
void SetChannelOffset(o2::ft0::FT0ChannelTimeCalibrationObject const *caliboffsets)
double measure_amplitude(const std::vector< float > ×) const
o2::InteractionRecord & getInteractionRecord(o2::InteractionRecord &src)
void setEventID(Int_t id)
float signalForm(float x) const
static constexpr int Nchannels
GLboolean GLboolean GLboolean b
GLuint GLsizei const GLchar * label
GLboolean GLboolean GLboolean GLboolean a
struct o2::upgrades_utils::@462 ft0
structure to keep V0C information
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
uint16_t bc
bunch crossing ID of interaction
double getTimeOffsetWrtBC() const
static constexpr int SINC_TABLE_SIZE
static constexpr int SIGNAL_TABLE_SIZE
static constexpr int NOISE_RANDOM_RING_SIZE
friend bool operator<(particle const &a, particle const &b)
std::set< ft0::MCLabel > labels
std::vector< particle > hits
std::optional< double > particle
o2::InteractionRecord intrec