16#include <fairlogger/Logger.h>
35 const gsl::span<const o2::ft0::ChannelData>&
channels,
36 std::vector<o2::ft0::RecPoints>& vecRecPoints,
37 std::vector<o2::ft0::ChannelDataFloat>& vecChData)
39 for (
const auto& digit :
digits) {
44 vecRecPoints.emplace_back(
processDigit(digit, channelsPerDigit, vecChData));
48 const gsl::span<const o2::ft0::ChannelData> inChData,
49 std::vector<o2::ft0::ChannelDataFloat>& outChData)
51 LOG(
debug) <<
"Running reconstruction on new event";
52 const int firstEntry = outChData.size();
53 unsigned int ndigitsA = 0;
54 unsigned int ndigitsC = 0;
61 for (
const auto& channelData : inChData) {
62 if (channelData.ChId >= NCHANNELS) {
68 outChData.emplace_back(channelData.ChId, timeInPS, (
float)channelData.QTCAmpl, channelData.ChainQTC);
73 if (channelData.ChId < nMCPsA) {
74 sideAtime += timeInPS;
77 sideCtime += timeInPS;
87 if (ndigitsA > 0 && ndigitsC > 0) {
88 mCollisionTime[
Vertex] = (mCollisionTime[
TimeA] - mCollisionTime[
TimeC]) / 2.;
105 float offsetChannel{0};
106 if (mTimeCalibObject) {
109 const auto& stat = mTimeCalibObject->
mTime[channelData.
ChId].mStat;
113 const auto& meanGaus = mTimeCalibObject->
mTime[channelData.
ChId].mGausMean;
114 const auto& meanHist = mTimeCalibObject->
mTime[channelData.
ChId].mStatMean;
115 const auto& sigmaGaus = mTimeCalibObject->
mTime[channelData.
ChId].mGausRMS;
116 const auto& rmsHist = mTimeCalibObject->
mTime[channelData.
ChId].mStatRMS;
117 const bool isGoodFitResult = (mTimeCalibObject->
mTime[channelData.
ChId].mStatusBits & 1) > 0;
120 if (isEnoughStat && isGoodFitResult && !isBadFit) {
121 offsetChannel = meanGaus;
122 }
else if ((isNotGoogStat || isEnoughStat) && isBadFit) {
123 offsetChannel = meanHist;
129 slewoffset = gr.Eval(channelData.
QTCAmpl);
132 const float globalOffset = offsetChannel + slewoffset;
Definition of the FDD reconstruction.
Configurable digitization parameters.
static const ChannelFilterParam & Instance()
float getTimeInPS(const o2::ft0::ChannelData &channelData)
o2::ft0::RecPoints processDigit(const o2::ft0::Digit &digit, const gsl::span< const o2::ft0::ChannelData > inChData, std::vector< o2::ft0::ChannelDataFloat > &outChData)
void processTF(const gsl::span< const o2::ft0::Digit > &digits, const gsl::span< const o2::ft0::ChannelData > &channels, std::vector< o2::ft0::RecPoints > &vecRecPoints, std::vector< o2::ft0::ChannelDataFloat > &vecChData)
static constexpr int NCellsA
static constexpr float ChannelWidth
static short constexpr sDummyCollissionTime
gsl::span< const ChannelDataFloat > getBunchChannelData(const gsl::span< const ChannelDataFloat > tfdata) const
std::size_t mMaxEntriesThreshold
std::size_t mMinEntriesThreshold
bool getFlag(EEventDataBit bitFlag) const
bool checkTCMbits(uint8_t tcmBits) const
o2::InteractionRecord mIntRecord
std::array< SpectraInfoObject, o2::ft0::Geometry::Nchannels > mTime
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"
std::vector< ChannelData > channels
std::vector< Digit > digits