67 LOG(info) <<
"[HMPID Write Raw File From Digits vector - init()]";
68 mBaseFileName = ic.
options().
get<std::string>(
"out-file");
69 mSkipEmpty = ic.
options().
get<
bool>(
"skip-empty");
70 mFixedPacketLenght = ic.
options().
get<
bool>(
"fixed-lenght");
71 mOrderTheEvents = ic.
options().
get<
bool>(
"order-events");
85 std::vector<o2::hmpid::Trigger> triggers;
86 std::vector<o2::hmpid::Digit>
digits;
90 triggers = pc.
inputs().
get<std::vector<o2::hmpid::Trigger>>(
ref);
98 for (
int i = 0;
i < triggers.size();
i++) {
99 if (mOrderTheEvents) {
100 int first = mDigits.size();
101 mDigits.insert(mDigits.end(),
digits.begin() + triggers[
i].getFirstEntry(),
digits.begin() + triggers[
i].getLastEntry());
102 mEvents.push_back({triggers[
i].getIr(),
first,
int(mDigits.size() -
first)});
104 std::vector<o2::hmpid::Digit> dig = {
digits.begin() + triggers[
i].getFirstEntry(),
digits.begin() + triggers[
i].getLastEntry()};
108 mDigitsReceived +=
digits.size();
110 LOG(
debug) <<
"run() Digits received =" << mDigitsReceived <<
" frames = " << mFramesReceived;
118 std::vector<o2::hmpid::Digit> dig;
120 mExTimer.
logMes(
"Received an End Of Stream !");
121 if (mOrderTheEvents && mEvents.size() > 0) {
122 sort(mEvents.begin(), mEvents.end());
123 uint32_t
orbit = mEvents[0].getOrbit();
124 uint16_t
bc = mEvents[0].getBc();
125 for (
int idx = 0; idx < mEvents.size(); idx++) {
126 if (mSkipEmpty && (mEvents[idx].getNumberOfObjects() == 0 || mEvents[idx].
getOrbit() == 0)) {
131 LOG(info) <<
" Event :" << idx <<
" orbit=" <<
orbit <<
" bc=" <<
bc <<
" Digits:" << dig.size();
133 orbit = mEvents[idx].getOrbit();
134 bc = mEvents[idx].getBc();
136 for (
int i = mEvents[idx].getFirstEntry();
i <= mEvents[idx].getLastEntry();
i++) {
137 dig.push_back(mDigits[
i]);
141 LOG(info) <<
" Event :" << mEvents.size() - 1 <<
" orbit=" <<
orbit <<
" bc=" <<
bc <<
" Digits:" << dig.size();
154 std::vector<o2::framework::InputSpec> inputs;
158 std::vector<o2::framework::OutputSpec> outputs;
165 Options{{
"out-file", VariantType::String,
"hmpidRaw", {
"name of the output file"}},
166 {
"order-events", VariantType::Bool,
false, {
"order the events time"}},
167 {
"skip-empty", VariantType::Bool,
false, {
"skip empty events"}},
168 {
"fixed-lenght", VariantType::Bool,
false, {
"fixed lenght packets = 8K bytes"}}}};
A raw page parser for DPL input.
T get(const char *key) const
ConfigParamRegistry const & options()
InputRecord & inputs()
The inputs associated with this processing context.
void stop()
stop : stops the timer
void elapseMes(std::string const message)
void start()
start : starts the timer
void logMes(std::string const message)
static constexpr int MAXEQUIPMENTS
void codeEventChunkDigits(std::vector< o2::hmpid::Digit > &digits, InteractionRecord ir)
void dumpResults(const std::string &outputFileName)
Dumps the results of the last coding.
void setSkipEmptyEvents(bool Skip)
void openOutputStream(const std::string &outputFileName, const std::string &fileFor)
void closeOutputStream()
Close and flush the output streams.
void endOfStream(framework::EndOfStreamContext &ec) override
This is invoked whenever we have an EndOfStream event.
void init(framework::InitContext &ic) final
void run(framework::ProcessingContext &pc) final
constexpr o2::header::DataOrigin gDataOriginHMP
Defining PrimaryVertex explicitly as messageable.
std::vector< ConfigParamSpec > Options
o2::framework::DataProcessorSpec getWriteRawFileSpec(std::string inputSpec="HMP/DIGITS")
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
std::string to_string(gsl::span< T, Size > span)
static bool match(DataRef const &ref, const char *binding)
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"
std::vector< Digit > digits