ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/UHHAnalysis/SFrameTools/src/Selection.cxx
Revision: 1.6
Committed: Wed Jun 12 12:33:40 2013 UTC (11 years, 10 months ago) by peiffer
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.5: +4 -4 lines
Log Message:
removed ObjectHandler

File Contents

# User Rev Content
1 rkogler 1.2 #include <iomanip>
2    
3 peiffer 1.1 #include "../include/Selection.h"
4    
5     Selection::Selection(std::string name):
6     m_logger ( name.c_str() ){
7 rkogler 1.2
8     m_name = name.c_str();
9 peiffer 1.1 clearSelectionModulesList();
10 rkogler 1.2 Ntotal=0;
11 rkogler 1.5 m_isactive = true;
12 peiffer 1.1 }
13    
14 peiffer 1.4 void Selection::resetCutFlow(){
15     Ntotal=0;
16     for(unsigned int i=0; i<m_cuts.size(); ++i){
17     m_cutflow[i]=0;
18     }
19     }
20    
21 peiffer 1.1 void Selection::addSelectionModule(SelectionModule* sel){
22 peiffer 1.4 m_logger << DEBUG << "Adding selection module: " << sel->description() << SLogger::endmsg;
23 peiffer 1.1 m_cuts.push_back(sel);
24     m_cutflow.push_back(0);
25     }
26    
27     void Selection::clearSelectionModulesList(){
28     m_cuts.clear();
29     m_cutflow.clear();
30 rkogler 1.2 Ntotal=0;
31 peiffer 1.1 }
32    
33     bool Selection::passSelection(BaseCycleContainer *bcc){
34 rkogler 1.5
35     if (!m_isactive) return true; // always true if the selection is not active
36    
37 rkogler 1.2 Ntotal++;
38 peiffer 1.1 if(m_cuts.size()!=m_cutflow.size()){
39     m_logger << WARNING << "size of cut list != number of entries in cut flow table "<< SLogger::endmsg;
40     }
41     for(unsigned int i=0; i<m_cuts.size(); ++i){
42     if(!m_cuts[i]->pass(bcc)) return false;
43     m_cutflow[i]++;
44     }
45     return true;
46     }
47    
48     bool Selection::passInvertedSelection(BaseCycleContainer *bcc){
49 rkogler 1.5
50     if (!m_isactive) return true; // always true if the selection is not active
51 peiffer 1.1
52     for(unsigned int i=0; i<m_cuts.size(); ++i){
53     if(!m_cuts[i]->pass(bcc)) return true;
54     }
55     return false;
56     }
57    
58 peiffer 1.3 bool Selection::passSelection(){
59 peiffer 1.6 EventCalc* calc = EventCalc::Instance();
60     BaseCycleContainer* bcc = calc->GetBaseCycleContainer();
61 peiffer 1.3 return passSelection(bcc);
62     }
63    
64     bool Selection::passInvertedSelection(){
65 peiffer 1.6 EventCalc* calc = EventCalc::Instance();
66     BaseCycleContainer* bcc = calc->GetBaseCycleContainer();
67 peiffer 1.3 return passInvertedSelection(bcc);
68     }
69    
70 peiffer 1.1 void Selection::printCutFlow(){
71 rkogler 1.2
72     using namespace std;
73    
74 rkogler 1.5 m_logger << INFO << "--------------- Cut Flow Table of Selection " << m_name << " ---------------"<< SLogger::endmsg;
75     if (!m_isactive){
76     m_logger << INFO << "Selection was not active." << SLogger::endmsg;
77     m_logger << INFO << "-----------------------------------------------------------------------------"<< SLogger::endmsg;
78     return;
79     }
80    
81 peiffer 1.1 if(m_cuts.size()!=m_cutflow.size()){
82     m_logger << WARNING << "size of cut list != number of entries in cut flow table "<< SLogger::endmsg;
83     }
84     else{
85 rkogler 1.2 m_logger << INFO << setw(12) << "Events" << " | Description" << SLogger::endmsg;
86     m_logger << INFO << "-------------+-----------------------------------------------------"<< SLogger::endmsg;
87     m_logger << INFO << setw(12) << Ntotal << " | Events entered the selection. " << SLogger::endmsg;
88 peiffer 1.1 for(unsigned int i=0; i<m_cuts.size(); ++i){
89 rkogler 1.2 m_logger << INFO << setw(12) << m_cutflow[i] << " | left after: " << m_cuts[i]->description() << SLogger::endmsg;
90 peiffer 1.1 }
91     }
92 rkogler 1.5 m_logger << INFO << "-------------+---------------------------------------------------------------"<< SLogger::endmsg;
93 peiffer 1.1
94     }