12#ifndef ALICEO2_PHOS_RAWWRITER_H
13#define ALICEO2_PHOS_RAWWRITER_H
38static constexpr short kNPHOSSAMPLES = 30;
39static constexpr short kNPRESAMPLES = 2;
40static constexpr short kOVERFLOW = 970;
41static constexpr float kPHOSTIMETICK = 100.;
50 std::map<short, std::vector<o2::phos::Digit*>>
mChannels;
71 void digitsToRaw(gsl::span<o2::phos::Digit>
digits, gsl::span<o2::phos::TriggerRecord> triggers);
75 const char*
ptr,
int maxSize,
int splitID,
76 std::vector<char>& trailer, std::vector<char>& header)
const;
79 void createTRUBunches(
short truId,
const std::vector<o2::phos::Digit*>& channelDigits, std::vector<o2::phos::AltroBunch>& bunchs);
80 void createRawBunches(
short absId,
const std::vector<o2::phos::Digit*>&
digits, std::vector<o2::phos::AltroBunch>& bunchHG,
81 std::vector<o2::phos::AltroBunch>& bunchLG,
bool& isLGFilled);
88 std::vector<char>
createRCUTrailer(
int payloadsize,
int feca,
int fecb,
double timesample,
double l1phase);
92 std::string mOutputLocation =
"./";
93 std::unique_ptr<const CalibParams> mCalibParams;
94 gsl::span<o2::phos::Digit> mDigits;
95 std::vector<SRUDigitContainer> mSRUdata;
96 std::vector<SRUDigitContainer> mTRUdata;
97 std::unique_ptr<o2::raw::RawFileWriter> mRawWriter;
Utility class to write detectors data to (multiple) raw data file(s) respecting CRU format.
void createTRUBunches(short truId, const std::vector< o2::phos::Digit * > &channelDigits, std::vector< o2::phos::AltroBunch > &bunchs)
void createRawBunches(short absId, const std::vector< o2::phos::Digit * > &digits, std::vector< o2::phos::AltroBunch > &bunchHG, std::vector< o2::phos::AltroBunch > &bunchLG, bool &isLGFilled)
std::vector< char > createRCUTrailer(int payloadsize, int feca, int fecb, double timesample, double l1phase)
o2::raw::RawFileWriter & getWriter() const
void fillGamma2(float amp, float time, short *samples)
void setFileFor(FileFor_t filefor)
void setOutputLocation(const char *outputdir)
void digitsToRaw(gsl::span< o2::phos::Digit > digits, gsl::span< o2::phos::TriggerRecord > triggers)
std::vector< uint32_t > encodeBunchData(const std::vector< uint32_t > &data)
bool processTrigger(const gsl::span< o2::phos::Digit > digitsbranch, const o2::phos::TriggerRecord &trg)
int carryOverMethod(const header::RDHAny *rdh, const gsl::span< char > data, const char *ptr, int maxSize, int splitID, std::vector< char > &trailer, std::vector< char > &header) const
RawWriter(const char *outputdir)
Header for data corresponding to the same hardware trigger adapted from DataFormatsEMCAL/TriggerRecor...
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
std::map< short, std::vector< o2::phos::Digit * > > mChannels
std::vector< Digit > digits