Nymph  v1.5.2
Flow-Based Data Processing Framework
TestCutFilter.cc
Go to the documentation of this file.
1 /*
2  * TestCutFilter.cc
3  *
4  * Created on: Oct 07, 2014
5  * Author: nsoblath
6  */
7 
8 #include "KTTestCuts.hh"
9 
10 #include "KTApplyCut.hh"
11 #include "KTCutFilter.hh"
12 #include "KTLogger.hh"
13 
14 KTLOGGER(testlog, "TestCutFilter");
15 
16 using namespace Nymph;
17 using namespace std;
18 
19 int main()
20 {
21  KTDataPtr dataPtr(new KTData());
22  KTTestData& testData = dataPtr->Of< KTTestData >();
23 
24  KTCutStatus& cutStatus = dataPtr->GetCutStatus();
25  KTINFO(testlog, "Initial cut state: " << cutStatus.IsCut());
26 
27  KTApplyCut applyCut;
28 
29  KTINFO(testlog, "Applying awesome cut");
30  applyCut.SetCut(new KTAwesomeCut());
31  applyCut.ApplyCut(dataPtr);
32 
33  KTINFO(testlog, "Cuts present: " << cutStatus.CutResultsPresent())
34  KTINFO(testlog, "Has cut result \"awesome-cut\"? " << cutStatus.HasCutResult("awesome-cut"));
35  KTINFO(testlog, "Has cut result <KTAwesomeCut::Result>? " << cutStatus.HasCutResult< KTAwesomeCut::Result >());
36  KTINFO(testlog, "Cut state of \"awesome-cut\" is: " << cutStatus.GetCutState("awesome-cut"));
37  KTINFO(testlog, "Cut state of <KTAwesomeCut::Result> is: " << cutStatus.GetCutState< KTAwesomeCut::Result >());
38  KTINFO(testlog, "Is cut (all results)? " << cutStatus.IsCut());
39  KTINFO(testlog, "Is cut (with mask \"0\")? " << cutStatus.IsCut("0"));
40 
41  KTINFO(testlog, "Applying not-awesome cut");
42  applyCut.SelectCut("not-awesome-cut");
43  applyCut.ApplyCut(dataPtr);
44 
45  KTINFO(testlog, "Cuts present: " << cutStatus.CutResultsPresent())
46  KTINFO(testlog, "Has cut result \"awesome-cut\"? " << cutStatus.HasCutResult("awesome-cut"));
47  KTINFO(testlog, "Has cut result <KTAwesomeCut::Result>? " << cutStatus.HasCutResult< KTAwesomeCut::Result >());
48  KTINFO(testlog, "Cut state of \"awesome-cut\" is: " << cutStatus.GetCutState("awesome-cut"));
49  KTINFO(testlog, "Cut state of <KTAwesomeCut::Result> is: " << cutStatus.GetCutState< KTAwesomeCut::Result >());
50  KTINFO(testlog, "Has cut result \"not-awesome-cut\"? " << cutStatus.HasCutResult("not-awesome-cut"));
51  KTINFO(testlog, "Has cut result <KTNotAwesomeCut::Result>? " << cutStatus.HasCutResult< KTNotAwesomeCut::Result >());
52  KTINFO(testlog, "Cut state of \"not-awesome-cut\" is: " << cutStatus.GetCutState("not-awesome-cut"));
53  KTINFO(testlog, "Cut state of <KTNotAwesomeCut::Result> is: " << cutStatus.GetCutState< KTNotAwesomeCut::Result >());
54 
55  KTCutFilter cutFilter;
56  KTData& data = dataPtr->Of< KTData >();
57 
58  KTINFO(testlog, "Filtering with all cuts");
59  cutFilter.SetCutMaskAll();
60  KTINFO(testlog, "Is cut (all results)? " << cutFilter.Filter(data));
61 
62  KTINFO(testlog, "Testing filter set with a string");
63  cutFilter.SetCutMask("00");
64  KTINFO(testlog, "Is cut with mask \"00\"? " << cutFilter.Filter(data));
65  cutFilter.SetCutMask("01");
66  KTINFO(testlog, "Is cut with mask \"01\"? " << cutFilter.Filter(data));
67  cutFilter.SetCutMask("10");
68  KTINFO(testlog, "Is cut with mask \"10\"? " << cutFilter.Filter(data));
69  cutFilter.SetCutMask("11");
70  KTINFO(testlog, "Is cut with mask \"11\"? " << cutFilter.Filter(data));
71 
72  KTINFO(testlog, "Testing filter set with an integer");
73  cutFilter.SetCutMask(0);
74  KTINFO(testlog, "Is cut with mask 0? " << cutFilter.Filter(data));
75  cutFilter.SetCutMask(1);
76  KTINFO(testlog, "Is cut with mask 1? " << cutFilter.Filter(data));
77  cutFilter.SetCutMask(2);
78  KTINFO(testlog, "Is cut with mask 2? " << cutFilter.Filter(data));
79  cutFilter.SetCutMask(3);
80  KTINFO(testlog, "Is cut with mask 3? " << cutFilter.Filter(data));
81 
82  return 0;
83 }
#define KTINFO(...)
Definition: KTLogger.hh:344
int main()
void SetCutMask(KTCutStatus::bitset_type mask)
Definition: KTCutFilter.hh:104
KTLOGGER(testlog, "TestCutFilter")
STL namespace.
void SetCutMaskAll()
Set the cut mask to use all cuts.
Definition: KTCutFilter.hh:128
Provides easy access to cut information.
Definition: KTCutStatus.hh:54
XStructType & Of(void)
Returns a reference to the object of type XStructType; creates that object if it doesn&#39;t exist...
Filters data based on cuts already applied and a filter mask.
Definition: KTCutFilter.hh:57
Contains KTApplyCut.
Applies a cut to data.
Definition: KTApplyCut.hh:54
boost::shared_ptr< KTData > KTDataPtr
Definition: KTData.hh:67
bool Filter(KTData &data)
Definition: KTCutFilter.cc:57
Contains the logger class and macros, based on Kasper&#39;s KLogger class.