Project
Loading...
Searching...
No Matches
KrClustererSpec.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
12#ifndef O2_TRD_KRCLUSTERERSPEC_H
13#define O2_TRD_KRCLUSTERERSPEC_H
14
18
19// input TRD digits, TRD trigger records
20// output Kr clusters
21
24#include "Framework/Task.h"
27#include "TStopwatch.h"
28#include <fairlogger/Logger.h>
29
30using namespace o2::framework;
31
32namespace o2
33{
34namespace trd
35{
37{
38 public:
40 ~TRDKrClustererDevice() override = default;
41 void init(InitContext& ic) final;
42 void run(ProcessingContext& pc) final;
44
45 private:
46 o2::trd::KrClusterFinder mKrClFinder;
47};
48
50{
51 mKrClFinder.init();
52}
53
55{
56 TStopwatch timer;
57
58 const auto digits = pc.inputs().get<gsl::span<Digit>>("digits");
59 const auto triggerRecords = pc.inputs().get<gsl::span<TriggerRecord>>("triggerRecords");
60
61 mKrClFinder.reset();
62 mKrClFinder.setInput(digits, triggerRecords);
63 timer.Start();
64 mKrClFinder.findClusters();
65 timer.Stop();
66
67 LOGP(info, "Found {} Kr clusters in {} input trigger records. Timing: CPU: {}, Real: {}",
68 mKrClFinder.getKrClusters().size(), triggerRecords.size(), timer.CpuTime(), timer.RealTime());
69
70 pc.outputs().snapshot(Output{o2::header::gDataOriginTRD, "KRCLUSTER", 0}, mKrClFinder.getKrClusters());
71 pc.outputs().snapshot(Output{o2::header::gDataOriginTRD, "TRGKRCLS", 0}, mKrClFinder.getKrTrigRecs());
72}
73
75{
76 LOG(info) << "Done with the cluster finding (EoS received)";
77}
78
80{
81 std::vector<InputSpec> inputs;
82 inputs.emplace_back("digits", ConcreteDataTypeMatcher{o2::header::gDataOriginTRD, "DIGITS"}, Lifetime::Timeframe);
83 inputs.emplace_back("triggerRecords", ConcreteDataTypeMatcher{o2::header::gDataOriginTRD, "TRKTRGRD"}, Lifetime::Timeframe);
84 std::vector<OutputSpec> outputs;
85 outputs.emplace_back(o2::header::gDataOriginTRD, "KRCLUSTER", 0, Lifetime::Timeframe);
86 outputs.emplace_back(o2::header::gDataOriginTRD, "TRGKRCLS", 0, Lifetime::Timeframe);
87
88 return DataProcessorSpec{
89 "trd-kr-clusterer",
90 inputs,
91 outputs,
92 AlgorithmSpec{adaptFromTask<o2::trd::TRDKrClustererDevice>()},
93 Options{}};
94}
95
96} // namespace trd
97
98} // namespace o2
99
100#endif // O2_TRD_KRCLUSTERERSPEC_H
The TRD Krypton cluster finder from digits.
Steers the TRD Krypton cluster finder.
void snapshot(const Output &spec, T const &object)
decltype(auto) get(R binding, int part=0) const
DataAllocator & outputs()
The data allocator is used to allocate memory for the output data.
InputRecord & inputs()
The inputs associated with this processing context.
void setInput(const gsl::span< const Digit > &digitsIn, const gsl::span< const TriggerRecord > &trigRecIn)
Provide digits and trigger records as input.
const std::vector< KrCluster > & getKrClusters() const
Output.
const std::vector< KrClusterTriggerRecord > & getKrTrigRecs() const
void init()
Initialization.
void endOfStream(framework::EndOfStreamContext &ec) final
This is invoked whenever we have an EndOfStream event.
~TRDKrClustererDevice() override=default
void init(InitContext &ic) final
void run(ProcessingContext &pc) final
constexpr o2::header::DataOrigin gDataOriginTRD
Definition DataHeader.h:577
Defining PrimaryVertex explicitly as messageable.
Definition TFIDInfo.h:20
std::vector< ConfigParamSpec > Options
framework::DataProcessorSpec getKrClustererSpec()
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"
std::vector< Digit > digits