ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/UHHAnalysis/SFrameTools/src/Selection.cxx
Revision: 1.4
Committed: Fri Jun 8 14:01:43 2012 UTC (12 years, 11 months ago) by peiffer
Content type: text/plain
Branch: MAIN
CVS Tags: Jan-17-2013-v2, Jan-17-2013-v1, Jan-16-2012-v1, Jan-09-2012-v2, Jan-09-2012-v1, Dec-26-2012-v1, Dec-20-2012-v1, Dec-17-2012-v1, Nov-30-2012-v2, Nov-30-2012-v1
Changes since 1.3: +8 -0 lines
Log Message:
update for cut flow table with parallel jobs

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 peiffer 1.1 }
12    
13 peiffer 1.4 void Selection::resetCutFlow(){
14     Ntotal=0;
15     for(unsigned int i=0; i<m_cuts.size(); ++i){
16     m_cutflow[i]=0;
17     }
18     }
19    
20 peiffer 1.1 void Selection::addSelectionModule(SelectionModule* sel){
21 peiffer 1.4 m_logger << DEBUG << "Adding selection module: " << sel->description() << SLogger::endmsg;
22 peiffer 1.1 m_cuts.push_back(sel);
23     m_cutflow.push_back(0);
24     }
25    
26     void Selection::clearSelectionModulesList(){
27     m_cuts.clear();
28     m_cutflow.clear();
29 rkogler 1.2 Ntotal=0;
30 peiffer 1.1 }
31    
32     bool Selection::passSelection(BaseCycleContainer *bcc){
33 rkogler 1.2 Ntotal++;
34 peiffer 1.1 if(m_cuts.size()!=m_cutflow.size()){
35     m_logger << WARNING << "size of cut list != number of entries in cut flow table "<< SLogger::endmsg;
36     }
37     for(unsigned int i=0; i<m_cuts.size(); ++i){
38     if(!m_cuts[i]->pass(bcc)) return false;
39     m_cutflow[i]++;
40     }
41     return true;
42     }
43    
44     bool Selection::passInvertedSelection(BaseCycleContainer *bcc){
45    
46     for(unsigned int i=0; i<m_cuts.size(); ++i){
47     if(!m_cuts[i]->pass(bcc)) return true;
48     }
49     return false;
50     }
51    
52 peiffer 1.3 bool Selection::passSelection(){
53     ObjectHandler* objs = ObjectHandler::Instance();
54     BaseCycleContainer* bcc = objs->GetBaseCycleContainer();
55     return passSelection(bcc);
56     }
57    
58     bool Selection::passInvertedSelection(){
59     ObjectHandler* objs = ObjectHandler::Instance();
60     BaseCycleContainer* bcc = objs->GetBaseCycleContainer();
61     return passInvertedSelection(bcc);
62     }
63    
64 peiffer 1.1 void Selection::printCutFlow(){
65 rkogler 1.2
66     using namespace std;
67    
68     m_logger << INFO << "-------------------------- Cut Flow Table -------------------------"<< SLogger::endmsg;
69 peiffer 1.1 if(m_cuts.size()!=m_cutflow.size()){
70     m_logger << WARNING << "size of cut list != number of entries in cut flow table "<< SLogger::endmsg;
71     }
72     else{
73 rkogler 1.2 m_logger << INFO << setw(12) << "Events" << " | Description" << SLogger::endmsg;
74     m_logger << INFO << "-------------+-----------------------------------------------------"<< SLogger::endmsg;
75     m_logger << INFO << setw(12) << Ntotal << " | Events entered the selection. " << SLogger::endmsg;
76 peiffer 1.1 for(unsigned int i=0; i<m_cuts.size(); ++i){
77 rkogler 1.2 m_logger << INFO << setw(12) << m_cutflow[i] << " | left after: " << m_cuts[i]->description() << SLogger::endmsg;
78 peiffer 1.1 }
79     }
80 rkogler 1.2 m_logger << INFO << "-------------+-----------------------------------------------------"<< SLogger::endmsg;
81 peiffer 1.1
82     }