Nymph  v1.5.2
Flow-Based Data Processing Framework
KTCutFilter.cc
Go to the documentation of this file.
1 /*
2  * KTCutFilter.cc
3  *
4  * Created on: Oct 06, 2014
5  * Author: nsoblath
6  */
7 
8 #include "KTCutFilter.hh"
9 
10 #include "KTCut.hh"
11 
12 using std::string;
13 
14 
15 namespace Nymph
16 {
17  KTLOGGER(cutlog, "KTCutFilter");
18 
19  KT_REGISTER_PROCESSOR(KTCutFilter, "cut-filter");
20 
21  KTCutFilter::KTCutFilter(const std::string& name) :
22  KTProcessor(name),
23  fCutMask(),
24  fCutMaskInt(0),
25  fConvertToBitset(false),
26  fAllBits(true),
27  fAfterCutSignal("all", this),
28  fAfterCutPassSignal("pass", this),
29  fAfterCutFailSignal("fail", this)
30  {
31  RegisterSlot("filter", this, &KTCutFilter::FilterData);
32  }
33 
35  {
36  }
37 
38  bool KTCutFilter::Configure(const scarab::param_node& node)
39  {
40  // Config-file settings
41  if (node.has("cut-mask-int"))
42  {
43  SetCutMask(node["cut-mask-int"]().as_uint());
44  }
45  if (node.has("cut-mask"))
46  {
47  SetCutMask(KTCutStatus::bitset_type(node["cut-mask"]().as_string()));
48  }
49  if (node.get_value("cut-mask-all", false))
50  {
51  SetCutMaskAll();
52  }
53 
54  return true;
55  }
56 
58  {
59  if (fAllBits)
60  {
61  return data.GetCutStatus().IsCut();
62  }
63 
64  KTCutStatus& cutStatus = data.GetCutStatus();
65  if (fConvertToBitset)
66  {
67  fCutMask = cutStatus.ToBitset(fCutMaskInt);
68  }
69 
70  if (fCutMask.size() != cutStatus.size()) fCutMask.resize(cutStatus.size());
71 
72  return cutStatus.IsCut(fCutMask);
73  }
74 
76  {
77  // all KTDataPtr's have KTData, so we won't bother checking
78  if (Filter(dataPtr->Of< KTData >()))
79  {
80  fAfterCutFailSignal(dataPtr);
81  }
82  else
83  {
84  fAfterCutPassSignal(dataPtr);
85  }
86  fAfterCutSignal(dataPtr);
87 
88  return;
89  }
90 
91 
92 
93 } /* namespace Nymph */
bool Configure(const scarab::param_node &node)
Should perform parameter store and command-line configurations.
Definition: KTCutFilter.cc:38
KTSignalData fAfterCutSignal
Definition: KTCutFilter.hh:91
void SetCutMask(KTCutStatus::bitset_type mask)
Definition: KTCutFilter.hh:104
void RegisterSlot(std::string name, XTarget *target, XReturn(XTarget::*funcPtr)())
Definition: KTProcessor.hh:96
KTSignalData fAfterCutPassSignal
Definition: KTCutFilter.hh:92
void SetCutMaskAll()
Set the cut mask to use all cuts.
Definition: KTCutFilter.hh:128
KTCutFilter(const std::string &name="cut-filter")
Definition: KTCutFilter.cc:21
bool IsCut() const
Definition: KTCutStatus.hh:223
Provides easy access to cut information.
Definition: KTCutStatus.hh:54
KT_REGISTER_PROCESSOR(KTDataQueueProcessor, "data-queue")
KTLOGGER(applog, "KTApplication")
size_t size() const
Definition: KTCutStatus.hh:218
KTSignalData fAfterCutFailSignal
Definition: KTCutFilter.hh:93
virtual ~KTCutFilter()
Definition: KTCutFilter.cc:34
void FilterData(KTDataPtr)
Definition: KTCutFilter.cc:75
boost::shared_ptr< KTData > KTDataPtr
Definition: KTData.hh:67
bitset_type ToBitset(unsigned long long mask) const
Definition: KTCutStatus.hh:243
KTCutStatus::bitset_type fCutMask
Definition: KTCutFilter.hh:74
bool Filter(KTData &data)
Definition: KTCutFilter.cc:57
boost::dynamic_bitset< > bitset_type
Definition: KTCutStatus.hh:57