47 mNbinsY = ic.options().get<
int>(
"number-bins");
48 mMinY = ic.options().get<
float>(
"low-edge");
49 mMaxY = ic.options().get<
float>(
"upper-edge");
52 param.printKeyValues();
67 const int nExtraSpectraSlots = 4;
68 auto digits = pc.inputs().get<gsl::span<o2::ft0::Digit>>(
"digits");
69 auto channels = pc.inputs().get<gsl::span<o2::ft0::ChannelData>>(
"channels");
71 for (
const auto& digit :
digits) {
72 const uint64_t trgWordExt = digit.mTriggers.getExtendedTrgWordFT0();
76 const auto& chan = digit.getBunchChannelData(
channels);
78 int NchanA{0}, NchanC{0};
79 for (
const auto& channel : chan) {
81 const auto result = timeSpectraInfoObject.fill(channel.ChId, channel.CFDTime);
84 timeA += channel.CFDTime;
87 timeC += channel.CFDTime;
93 const auto result = timeSpectraInfoObject.fill(kTimeA,
timeA);
97 const auto result = timeSpectraInfoObject.fill(kTimeC,
timeC);
99 const auto resultSum = timeSpectraInfoObject.fill(kSumTimeAC, (
timeA +
timeC) / 2);
100 const auto resultDiff = timeSpectraInfoObject.fill(kDiffTimeCA, (
timeC -
timeA) / 2.);
111void customize(std::vector<o2::framework::ConfigParamSpec>& workflowOptions)
113 std::vector<ConfigParamSpec> options;
114 options.push_back(
ConfigParamSpec{
"dispatcher-mode", VariantType::Bool,
false, {
"Dispatcher mode (FT0/SUB_DIGITSCH and FT0/SUB_DIGITSBC DPL channels should be applied as dispatcher output)."}});
115 options.push_back(
ConfigParamSpec{
"configKeyValues", VariantType::String,
"", {
"Semicolon separated key=value strings"}});
116 std::swap(workflowOptions, options);
124 if (cfgc.
options().
get<
bool>(
"dispatcher-mode")) {
125 inputs.push_back(
InputSpec{{
"channels"},
"FT0",
"SUB_DIGITSCH"});
126 inputs.push_back(
InputSpec{{
"digits"},
"FT0",
"SUB_DIGITSBC"});
128 inputs.push_back(
InputSpec{{
"channels"},
"FT0",
"DIGITSCH"});
129 inputs.push_back(
InputSpec{{
"digits"},
"FT0",
"DIGITSBC"});
133 "FT0TimeSpectraProcessor",
136 {{
"timeSpectra"},
"FT0",
"TIME_SPECTRA"}},
137 AlgorithmSpec{adaptFromTask<o2::ft0::FT0TimeSpectraProcessor>()},
138 Options{{
"number-bins", VariantType::Int, 400, {
"Number of bins along Y-axis"}},
139 {
"low-edge", VariantType::Float, -200.0f, {
"Lower edge of first bin along Y-axis"}},
140 {
"upper-edge", VariantType::Float, 200.0f, {
"Upper edge of last bin along Y-axis"}}}};
143 workflow.emplace_back(dataProcessorSpec);
void customize(std::vector< o2::framework::ConfigParamSpec > &workflowOptions)
WorkflowSpec defineDataProcessing(ConfigContext const &cfgc)
2D messeageable histo class
static const DigitFilterParam & Instance()
static void updateFromString(std::string const &)
ConfigParamRegistry & options() const
T get(const char *key) const
void init(o2::framework::InitContext &ic) final
static constexpr int sNCHANNELS_A
void run(o2::framework::ProcessingContext &pc) final
static constexpr int sNCHANNELS
static constexpr int NCellsA
static constexpr int Nchannels
constexpr o2::header::DataOrigin gDataOriginFT0
Defining PrimaryVertex explicitly as messageable.
std::vector< DataProcessorSpec > WorkflowSpec
std::vector< InputSpec > Inputs
std::vector< OutputSpec > Outputs
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"
std::vector< ChannelData > channels
std::vector< Digit > digits