ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtDataReductionTask.h
Go to the documentation of this file.
1 #ifndef ATDATAREDUCTIONTSAK_H
2 #define ATDATAREDUCTIONTSAK_H
3 
4 #include <FairTask.h>
5 
6 #include <Rtypes.h>
7 #include <TString.h>
8 
9 #include <algorithm> // for max
10 #include <functional> // for function
11 #include <utility> // for move
12 #include <vector> // for vector
13 
14 class AtBaseEvent;
15 class TClonesArray;
16 class TBuffer;
17 class TClass;
18 class TMemberInspector;
19 
27 class AtDataReductionTask : public FairTask {
28 private:
29  using ReductionFunction = std::function<bool()>;
30 
31  ReductionFunction fReductionFunc{nullptr};
32 
33  TClonesArray *fInputEventArray{nullptr}; //< AtRawEvent branch object
34  TString fInputBranchName{"AtRawEvent"}; //< Name of AtRawEvent branch to mark as good/not good
35  AtBaseEvent *fEvent;
36  std::vector<TString> fOutputBranchs;
37 
38 public:
39  AtDataReductionTask() = default;
40  ~AtDataReductionTask() = default;
41 
42  void SetReductionFunction(ReductionFunction func) { fReductionFunc = std::move(func); }
43  void SetReductionFunction(std::function<bool(AtBaseEvent *)> func);
44 
46  template <class T>
47  void SetReductionFunction(std::function<bool(T *)> func)
48  {
49  fReductionFunc = [this, func]() { return func(dynamic_cast<T *>(fEvent)); };
50  }
51  void SetInputBranch(TString inputBranch)
52  {
53  fInputBranchName = inputBranch;
54  fOutputBranchs.push_back(inputBranch);
55  }
56  void SetOutputBranch(TString outputBranch) { fOutputBranchs.push_back(outputBranch); }
57 
58  virtual InitStatus Init() override;
59  virtual void Exec(Option_t *opt) override;
60 
61  ClassDefOverride(AtDataReductionTask, 2)
62 };
63 
64 #endif //#ifndef ATDATAREDUCTIONTSAK_H
AtDataReductionTask::SetOutputBranch
void SetOutputBranch(TString outputBranch)
Definition: AtDataReductionTask.h:56
AtDataReductionTask::Exec
virtual void Exec(Option_t *opt) override
Definition: AtDataReductionTask.cxx:39
AtDataReductionTask
Definition: AtDataReductionTask.h:27
AtDataReductionTask::~AtDataReductionTask
~AtDataReductionTask()=default
AtDataReductionTask::Init
virtual InitStatus Init() override
Definition: AtDataReductionTask.cxx:22
AtDataReductionTask::AtDataReductionTask
AtDataReductionTask()=default
AtDataReductionTask::SetReductionFunction
void SetReductionFunction(ReductionFunction func)
Definition: AtDataReductionTask.h:42
AtBaseEvent
Base class for all event types in ATTPCROOT.
Definition: AtBaseEvent.h:20
AtDataReductionTask::SetInputBranch
void SetInputBranch(TString inputBranch)
Definition: AtDataReductionTask.h:51
AtDataReductionTask::SetReductionFunction
void SetReductionFunction(std::function< bool(T *)> func)
This will cast whatever is in the input array to type T and then call the passed function.
Definition: AtDataReductionTask.h:47