Belle II Software development
RecordingFilter.icc.h
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8#pragma once
9
10#include <tracking/trackFindingCDC/filters/base/RecordingFilter.dcl.h>
11#include <tracking/trackFindingCDC/filters/base/FilterOnVarSet.icc.h>
12
13#include <tracking/trackFindingCDC/mva/Recorder.h>
14
15#include <framework/core/ModuleParamList.templateDetails.h>
16
17#include <tracking/trackFindingCDC/utilities/StringManipulation.h>
18
19#include <memory>
20
21namespace Belle2 {
26 namespace TrackFindingCDC {
27
28 /* Recording<> */
29 template <class AFilter>
30 Recording<AFilter>::Recording(std::unique_ptr<AVarSet> varSet,
31 const std::string& defaultRootFileName,
32 const std::string& defaultTreeName)
33 : Super(std::move(varSet))
34 , m_recorder(nullptr)
35 , m_param_rootFileName(defaultRootFileName)
36 , m_param_treeName(defaultTreeName)
37 , m_param_returnWeight(NAN)
38 {}
39
40 template <class AFilter>
42
43 template <class AFilter>
44 void Recording<AFilter>::exposeParameters(ModuleParamList* moduleParamList, const std::string& prefix)
45 {
46 Super::exposeParameters(moduleParamList, prefix);
47 moduleParamList->addParameter(prefixed(prefix, "rootFileName"),
48 m_param_rootFileName,
49 "Name of the ROOT file to be written",
50 m_param_rootFileName);
51
52 moduleParamList->addParameter(prefixed(prefix, "treeName"),
53 m_param_treeName,
54 "Name of the Tree to be written",
55 m_param_treeName);
56
57 moduleParamList->addParameter(prefixed(prefix, "returnWeight"),
58 m_param_returnWeight,
59 "Weight this filter should return when called. Defaults to NAN",
60 m_param_returnWeight);
61 }
62
63 template <class AFilter>
65 {
66 if (m_skimFilter) this->addProcessingSignalListener(m_skimFilter.get());
67 Super::initialize();
68 m_recorder.reset(new Recorder(Super::getVarSet().getNamedVariables(),
69 m_param_rootFileName,
70 m_param_treeName));
71 }
73 template <class AFilter>
75 {
76 m_recorder->write();
77 m_recorder.reset();
78 Super::terminate();
79 }
80
81 template <class AFilter>
83 {
84 if (m_skimFilter) {
85 Weight skimWeight = (*m_skimFilter)(obj);
86 if (std::isnan(skimWeight)) return NAN;
87 }
88
89 Weight extracted = Super::operator()(obj);
90 if (not std::isnan(extracted)) {
91 m_recorder->capture();
92 }
93
94 return m_param_returnWeight;
95 }
96
97 template <class AFilter>
98 MayBePtr<AFilter> Recording<AFilter>::getSkimFilter() const
99 {
100 return m_skimFilter.get();
101 }
102
103 template <class AFilter>
104 void Recording<AFilter>::setSkimFilter(std::unique_ptr<AFilter> skimFilter)
105 {
106 m_skimFilter = std::move(skimFilter);
107 }
108
109 /* RecordingFilter<> */
110 template <class AVarSet>
111 RecordingFilter<AVarSet>::RecordingFilter(const std::string& defaultRootFileName,
112 const std::string& defaultTreeName)
113 : Super(std::make_unique<AVarSet>(), defaultRootFileName, defaultTreeName)
114 {
115 }
116
117 template <class AVarSet>
119 }
121}
The Module parameter list class.
Filter adapter to make a filter work on a set of variables.
Class to fill a tree from a set of variables.
Definition: Recorder.h:29
RecordingFilter(const std::string &defaultRootFileName="records.root", const std::string &defaultTreeName="records")
Constructor of the filter.
Filter adapter to make a filter work on a set of variables and record the observed instances on invok...
void initialize() override
Initialize the recorder before event processing.
void terminate() override
Initialize the recorder after event processing.
Weight operator()(const Object &obj) final
Function to evaluate the cluster for its backgroundness.
~Recording()
Default destructor.
MayBePtr< AFilter > getSkimFilter() const
Getter for the skim filter to select objects to be recorded.
typename AFilter::Object Object
Type of the object to be analysed.
void setSkimFilter(std::unique_ptr< AFilter > skimFilter)
Setter for the skim filter to select objects to be recorded.
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) override
Expose the set of parameters of the filter to the module parameter list.
Recording(std::unique_ptr< AVarSet > varSet, const std::string &defaultRootFileName="records.root", const std::string &defaultTreeName="records")
Constructor of the filter.
void addParameter(const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module list.
Abstract base class for different kinds of events.
STL namespace.