ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/UHHAnalysis/SFrameTools/include/Selection.h
Revision: 1.7
Committed: Tue Jan 29 10:35:33 2013 UTC (12 years, 3 months ago) by rkogler
Content type: text/plain
Branch: MAIN
CVS Tags: Makefile, v1-00, Feb-15-2013-v1, Feb-14-2013, Feb-07-2013-v1
Changes since 1.6: +8 -0 lines
Log Message:
added possibility to disable selections

File Contents

# User Rev Content
1 rkogler 1.3 // Dear emacs, this is -*- c++ -*-
2 peiffer 1.1 #ifndef Selection_H
3     #define Selection_H
4    
5 rkogler 1.3 #include <TString.h>
6 peiffer 1.1 #include "Objects.h"
7     #include "BaseCycleContainer.h"
8 peiffer 1.4 #include "ObjectHandler.h"
9 peiffer 1.2 #include "../../core/include/SLogger.h"
10 peiffer 1.1
11 peiffer 1.6 /**
12     * @short basic class for selection modules
13     * @author Thomas Peiffer
14     */
15    
16 peiffer 1.1 class SelectionModule{
17     public:
18 peiffer 1.6 //Default constructor
19 peiffer 1.1 SelectionModule(){};
20 peiffer 1.6 //Default destructor
21 peiffer 1.1 virtual ~SelectionModule(){};
22    
23     virtual bool pass(BaseCycleContainer*)=0;
24     virtual std::string description()=0;
25     };
26    
27 peiffer 1.6 /**
28     * @short basic class for a selection
29     *
30     * contains a list of SelectionModules
31     * and produces cut flow tables
32     *
33     * @author Thomas Peiffer
34     */
35 peiffer 1.1
36     class Selection{
37     public:
38    
39     //Selection(){};
40 peiffer 1.6 /// Default constructor
41 rkogler 1.3 Selection(std::string name);
42 peiffer 1.6 /// Default destructor
43 peiffer 1.1 ~Selection(){};
44    
45 peiffer 1.6 /// add a new SelectionModule to the event selection
46 peiffer 1.1 void addSelectionModule(SelectionModule*);
47 peiffer 1.6 /// remove all booked SelectionModules
48 peiffer 1.1 void clearSelectionModulesList();
49 peiffer 1.6 /// set all entries in the cut flow table to 0
50 peiffer 1.5 void resetCutFlow();
51 peiffer 1.6
52     /**
53     * loop over all booked SelectionModules and call the pass() routine of each module for a given BaseCycleContainer
54     * @see passSelection()
55     * @see SelectionModule::pass(BaseCycleContainer*)
56     */
57 peiffer 1.1 bool passSelection(BaseCycleContainer *bcc);
58     bool passInvertedSelection(BaseCycleContainer *bcc);
59 peiffer 1.6 /**
60     * same as passSelection(BaseCycleContainer *bcc) but takes BaseCycleContainer from ObjectHandler
61     * @see passSelection(BaseCycleContainer *bcc)
62     */
63 peiffer 1.4 bool passSelection();
64     bool passInvertedSelection();
65 peiffer 1.1
66 rkogler 1.7 /**
67     * enable or disable the selection, the selection is enabled by default
68     */
69     void DisableSelection(){m_isactive = false;}
70     void EnableSelection(){m_isactive = true;}
71     bool IsActive(){return m_isactive;}
72    
73 peiffer 1.6 /// print the cut-flow table for the booked SelectionModules, to be called in the EndInputData routine of a cycle
74 peiffer 1.1 void printCutFlow();
75    
76 rkogler 1.3 TString GetName() {return m_name;}
77     void SetName(TString name) { m_name = name;}
78    
79 peiffer 1.1 private:
80 rkogler 1.3 TString m_name;
81 peiffer 1.1 mutable SLogger m_logger;
82     std::vector<SelectionModule*> m_cuts;
83     std::vector<int> m_cutflow;
84 rkogler 1.3 int Ntotal;
85 rkogler 1.7 bool m_isactive;
86 peiffer 1.4
87 peiffer 1.1 };
88    
89    
90    
91 rkogler 1.3 #endif // Selection_H