ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerEvtSelData.cc
Revision: 1.7
Committed: Thu Oct 31 14:22:47 2013 UTC (11 years, 6 months ago) by paus
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_032, HEAD
Changes since 1.6: +103 -27 lines
Log Message:
Last CVS version - 032.

File Contents

# User Rev Content
1 paus 1.7 // $Id: FillerEvtSelData.cc,v 1.6 2010/03/18 20:21:00 bendavid Exp $
2 loizides 1.1
3     #include "MitProd/TreeFiller/interface/FillerEvtSelData.h"
4     #include "MitAna/DataTree/interface/Names.h"
5     #include "MitAna/DataTree/interface/EvtSelData.h"
6     #include "MitProd/ObjectService/interface/ObjectService.h"
7 paus 1.7 #include "DataFormats/METReco/interface/BeamHaloSummary.h"
8     #include <bitset>
9 loizides 1.1
10     using namespace std;
11     using namespace edm;
12     using namespace mithep;
13    
14     //--------------------------------------------------------------------------------------------------
15     FillerEvtSelData::FillerEvtSelData(const ParameterSet &cfg, const char *name, bool active) :
16     BaseFiller(cfg,"EvtSelData",active),
17     mitName_(Conf().getUntrackedParameter<string>("mitName",Names::gkEvtSelDataBrn)),
18 paus 1.7 HBHENoiseFilterName_ (Conf().getUntrackedParameter<edm::InputTag>("HBHENoiseFilterName",
19     edm::InputTag("HBHENoiseFilterResultProducer"))),
20     ECALDeadCellFilterName_ (Conf().getUntrackedParameter<edm::InputTag>("ECALDeadCellFilterName",
21     edm::InputTag("EcalDeadCellTriggerPrimitiveFilter"))),
22     trackingFailureFilterName_ (Conf().getUntrackedParameter<edm::InputTag>("trackingFailureFilterName",
23     edm::InputTag("trackingFailureFilter"))),
24     EEBadScFilterName_ (Conf().getUntrackedParameter<edm::InputTag>("EEBadScFilterName",
25     edm::InputTag("eeBadScFilter"))),
26     ECALaserCorrFilterName_ (Conf().getUntrackedParameter<edm::InputTag>("ECALaserCorrFilterName",
27     edm::InputTag("ecalLaserCorrFilter"))),
28     tkManyStripClusName_ (Conf().getUntrackedParameter<edm::InputTag>("tkManyStripClusName",
29     edm::InputTag("manystripclus53X"))),
30     tkTooManyStripClusName_ (Conf().getUntrackedParameter<edm::InputTag>("tkTooManyStripClusName",
31     edm::InputTag("toomanystripclus53X"))),
32     tkLogErrorTooManyClustersName_ (Conf().getUntrackedParameter<edm::InputTag>("tkLogErrorTooManyClustersName",
33     edm::InputTag("logErrorTooManyClusters"))),
34     BeamHaloSummaryName_ (Conf().getUntrackedParameter<edm::InputTag>("BeamHaloSummaryName",
35     edm::InputTag("BeamHaloSummary"))),
36 loizides 1.1 evtSelData_(new EvtSelData())
37     {
38     // Constructor.
39     }
40    
41     //--------------------------------------------------------------------------------------------------
42     FillerEvtSelData::~FillerEvtSelData()
43     {
44     // Destructor.
45    
46     delete evtSelData_;
47     }
48    
49     //--------------------------------------------------------------------------------------------------
50 bendavid 1.6 void FillerEvtSelData::BookDataBlock(TreeWriter &tws)
51 loizides 1.1 {
52     // Book our branch.
53    
54     tws.AddBranch(mitName_,&evtSelData_);
55     OS()->add<mithep::EvtSelData>(evtSelData_,mitName_);
56     }
57    
58     //--------------------------------------------------------------------------------------------------
59     void FillerEvtSelData::FillDataBlock(const edm::Event &event,
60     const edm::EventSetup &setup)
61     {
62 paus 1.7 //Read the MET filters boolean decisions
63     edm::Handle<bool> HBHENoiseFilterHandle;
64     event.getByLabel(HBHENoiseFilterName_, HBHENoiseFilterHandle);
65     bool isHBHENoiseFilter = *HBHENoiseFilterHandle;
66    
67     edm::Handle<bool> ECALDeadCellFilterHandle;
68     event.getByLabel(ECALDeadCellFilterName_, ECALDeadCellFilterHandle);
69     bool isECALDeadCellFilter = *ECALDeadCellFilterHandle;
70    
71     edm::Handle<bool> trackingFailureFilterHandle;
72     event.getByLabel(trackingFailureFilterName_, trackingFailureFilterHandle);
73     bool isTrackingFailureFilter = *trackingFailureFilterHandle;
74    
75     edm::Handle<bool> EEBadScFilterHandle;
76     event.getByLabel(EEBadScFilterName_, EEBadScFilterHandle);
77     bool isEEBadScFilter = *EEBadScFilterHandle;
78    
79     edm::Handle<bool> ECALaserCorrFilterHandle;
80     event.getByLabel(ECALaserCorrFilterName_, ECALaserCorrFilterHandle);
81     bool isECALaserCorrFilter = *ECALaserCorrFilterHandle;
82    
83     edm::Handle<bool> tkManyStripClusHandle;
84     event.getByLabel(tkManyStripClusName_, tkManyStripClusHandle);
85     edm::Handle<bool> tkTooManyStripClusHandle;
86     event.getByLabel(tkTooManyStripClusName_, tkTooManyStripClusHandle);
87     edm::Handle<bool> tkLogErrorTooManyClustersHandle;
88     event.getByLabel(tkLogErrorTooManyClustersName_, tkLogErrorTooManyClustersHandle);
89     //Odd tracking filter :three filters (with inverted logic)
90     bool isTkOddManyStripClusFilter = !(*tkManyStripClusHandle);
91     bool isTkOddTooManyStripClusFilter = !(*tkTooManyStripClusHandle);
92     bool isTkOddLogErrorTooManyClustersFilter = !(*tkLogErrorTooManyClustersHandle);
93    
94     //Read the beam halo summary
95     edm::Handle<reco::BeamHaloSummary> BeamHaloSummaryHandle;
96     event.getByLabel(BeamHaloSummaryName_ , BeamHaloSummaryHandle);
97     bool isCSCTightHaloFilter = !BeamHaloSummaryHandle->CSCTightHaloId();
98     bool isCSCLooseHaloFilter = !BeamHaloSummaryHandle->CSCLooseHaloId();
99    
100     //Crwate the bit word
101     int thisEventWord = GetMetFiltersWord (
102     isHBHENoiseFilter, isECALDeadCellFilter,
103     isTrackingFailureFilter, isEEBadScFilter,
104     isECALaserCorrFilter, isTkOddManyStripClusFilter,
105     isTkOddTooManyStripClusFilter, isTkOddLogErrorTooManyClustersFilter,
106     isCSCTightHaloFilter, isCSCLooseHaloFilter);
107    
108     //Store the bit word in the container
109     evtSelData_->SetFiltersWord(thisEventWord);
110     }
111 loizides 1.1
112 paus 1.7 //--------------------------------------------------------------------------------------------------
113     int FillerEvtSelData::GetMetFiltersWord(
114     Bool_t HBHENoiseFilter, Bool_t ECALDeadCellFilter,
115     Bool_t trackingFailureFilter, Bool_t EEBadScFilter,
116     Bool_t ECALaserCorrFilter, Bool_t tkOddManyStripClusFilter,
117     Bool_t tkOddTooManyStripClusFilter, Bool_t tkOddLogErrorTooManyClustersFilter,
118     Bool_t CSCTightHaloFilter, Bool_t CSCLooseHaloFilter)
119    
120     {
121     // This function creates the word containing the bit decisions.
122     // The bit ordering follows the order of the parameters passed
123     // to this function. For more information about the bit meaning go to
124     // https://twiki.cern.ch/twiki/bin/viewauth/CMS/MissingETOptionalFilters
125    
126     //Initialize the word
127     int theWord = 0;
128     //Initialize the vector of bits
129     std::vector<int> theBits;
130     theBits.push_back((int) HBHENoiseFilter);
131     theBits.push_back((int) ECALDeadCellFilter);
132     theBits.push_back((int) trackingFailureFilter);
133     theBits.push_back((int) EEBadScFilter);
134     theBits.push_back((int) ECALaserCorrFilter);
135     theBits.push_back((int) tkOddManyStripClusFilter);
136     theBits.push_back((int) tkOddTooManyStripClusFilter);
137     theBits.push_back((int) tkOddLogErrorTooManyClustersFilter);
138     theBits.push_back((int) CSCTightHaloFilter);
139     theBits.push_back((int) CSCLooseHaloFilter);
140     //Create the word
141     for (unsigned int iBit = 0; iBit < theBits.size(); iBit++)
142     theWord |= theBits[iBit] << iBit;
143    
144     return theWord;
145 loizides 1.1 }