ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerMetaInfos.cc
Revision: 1.13
Committed: Mon Aug 18 11:16:13 2008 UTC (16 years, 8 months ago) by sixie
Content type: text/plain
Branch: MAIN
Changes since 1.12: +15 -4 lines
Log Message:
Add hltactive.

File Contents

# User Rev Content
1 sixie 1.13 // $Id: FillerMetaInfos.cc,v 1.12 2008/07/31 12:34:04 loizides Exp $
2 loizides 1.1
3     #include "MitProd/TreeFiller/interface/FillerMetaInfos.h"
4     #include "FWCore/MessageLogger/interface/MessageLogger.h"
5 loizides 1.5 #include "FWCore/Framework/interface/TriggerNames.h"
6 loizides 1.1 #include "DataFormats/Common/interface/Handle.h"
7 loizides 1.5 #include "DataFormats/Common/interface/TriggerResults.h"
8 loizides 1.1 #include "MitAna/DataTree/interface/Names.h"
9 loizides 1.5 #include "MitAna/DataTree/interface/EventHeader.h"
10     #include "MitAna/DataTree/interface/LAHeader.h"
11     #include "MitAna/DataTree/interface/RunInfo.h"
12 loizides 1.8 #include <TObjectTable.h>
13    
14 sixie 1.13
15     //#include "DataFormats/HLTReco/interface/TriggerEvent.h"
16    
17    
18    
19 loizides 1.1 using namespace std;
20     using namespace edm;
21     using namespace mithep;
22    
23 loizides 1.12 bool mithep::FillerMetaInfos::instance_ = 0;
24    
25 loizides 1.8 //--------------------------------------------------------------------------------------------------
26 loizides 1.7 FillerMetaInfos::FillerMetaInfos(const ParameterSet &cfg, bool active) :
27 loizides 1.12 BaseFiller(cfg,"MetaInfos",(instance_==0||active?1:0)),
28 sixie 1.13 hltActive_(Conf().getUntrackedParameter<bool>("hltActive",true)),
29 loizides 1.2 evtName_(Conf().getUntrackedParameter<string>("evtName",Names::gkEvtHeaderBrn)),
30     runName_(Conf().getUntrackedParameter<string>("runName",Names::gkRunInfoBrn)),
31 loizides 1.4 lahName_(Conf().getUntrackedParameter<string>("lahName",Names::gkLAHeaderBrn)),
32 loizides 1.5 hltName_(Conf().getUntrackedParameter<string>("hltName","TriggerResults")),
33     l1tName_(Conf().getUntrackedParameter<string>("l1tName","todo")),
34     tws_(0),
35 loizides 1.2 eventHeader_(new EventHeader()),
36 loizides 1.3 evtLAHeader_(new LAHeader()),
37 loizides 1.2 runInfo_(new RunInfo()),
38     runTree_(0),
39 loizides 1.3 laTree_(0),
40     runEntries_(0),
41     fileNum_(0)
42 loizides 1.1 {
43 loizides 1.3 // Constructor.
44 loizides 1.12
45     instance_=1;
46 loizides 1.1 }
47    
48 loizides 1.8 //--------------------------------------------------------------------------------------------------
49 loizides 1.1 FillerMetaInfos::~FillerMetaInfos()
50     {
51 loizides 1.3 // Destructor.
52    
53 loizides 1.2 delete eventHeader_;
54 loizides 1.8 delete evtLAHeader_;
55 loizides 1.2 delete runInfo_;
56 loizides 1.3 eventHeader_ = 0;
57 loizides 1.8 evtLAHeader_ = 0;
58 loizides 1.3 runInfo_ = 0;
59     runTree_ = 0;
60     laTree_ = 0;
61 loizides 1.1 }
62    
63 loizides 1.8 //--------------------------------------------------------------------------------------------------
64 loizides 1.2 void FillerMetaInfos::BookDataBlock(TreeWriter &tws)
65 loizides 1.1 {
66 loizides 1.3 // Create run info tre and book our branches.
67    
68     // add branches to main tree
69 loizides 1.2 tws.AddBranch(evtName_.c_str(),"mithep::EventHeader",&eventHeader_);
70 loizides 1.3
71     // add branches to run info tree
72     tws.AddBranchToTree(Names::gkRunTreeName,runName_.c_str(),"mithep::RunInfo",&runInfo_);
73 loizides 1.2 tws.SetAutoFill(Names::gkRunTreeName,0);
74     runTree_=tws.GetTree(Names::gkRunTreeName);
75 loizides 1.3
76     // add branches to lookahead tree
77     tws.AddBranchToTree(Names::gkLATreeName,Names::gkLAHeaderBrn,"mithep::LAHeader",&evtLAHeader_);
78     tws.SetAutoFill(Names::gkLATreeName,0);
79     laTree_=tws.GetTree(Names::gkLATreeName);
80    
81     // store pointer to tree writer
82     tws_ = &tws;
83 loizides 1.1 }
84    
85 loizides 1.8 //--------------------------------------------------------------------------------------------------
86 loizides 1.5 void FillerMetaInfos::FillDataBlock(const edm::Event &event,
87 loizides 1.1 const edm::EventSetup &setup)
88     {
89 loizides 1.3 // Fill our data structures.
90    
91     // clear map if a new file was opened
92     if (tws_->GetFileNumber()!=fileNum_) {
93     runmap_.clear();
94     fileNum_ = tws_->GetFileNumber();
95     runEntries_ = 0;
96     }
97    
98     UInt_t runnum = event.id().run();
99    
100     // store look ahead information
101     if (runEntries_>0) {
102     evtLAHeader_->SetRunNum(runnum);
103     laTree_->Fill();
104 loizides 1.11 //if(laTree_->GetEntries() % 100==0)
105     // gObjectTable->Print();
106    
107 loizides 1.3 }
108    
109 loizides 1.2 // fill event header
110     eventHeader_->SetEvtNum(event.id().event());
111     eventHeader_->SetLumiSec(event.luminosityBlock());
112     eventHeader_->SetRunNum(runnum);
113    
114 sixie 1.13 if(hltActive_)
115     FillHltInfo(event,setup);
116 loizides 1.5
117 loizides 1.3 // look-up if entry is in map
118 loizides 1.2 map<UInt_t,Int_t>::iterator riter = runmap_.find(runnum);
119     if (riter != runmap_.end()) {
120     Int_t runentry = riter->second;
121     eventHeader_->SetRunEntry(runentry);
122     return;
123     }
124 loizides 1.1
125 loizides 1.2 // fill new run info
126     Int_t runentry = runEntries_;
127     eventHeader_->SetRunEntry(runentry);
128     runmap_.insert(pair<UInt_t,Int_t>(runnum,runentry));
129    
130     runInfo_->SetRunNum(runnum);
131     runTree_->Fill();
132 loizides 1.3
133 loizides 1.2 ++runEntries_;
134 loizides 1.1 }
135 loizides 1.5
136 loizides 1.8 //--------------------------------------------------------------------------------------------------
137 loizides 1.5 void FillerMetaInfos::FillHltInfo(const edm::Event &event,
138     const edm::EventSetup &setup)
139     {
140     //
141    
142     Handle<TriggerResults> triggerResultsHLT;
143     try {
144 sixie 1.13 GetProduct(hltName_, triggerResultsHLT, event);
145    
146     //event.getByLabel(hltName_, triggerResultsHLT);
147 loizides 1.10 } catch (cms::Exception &ex) {
148 loizides 1.5 edm::LogError("FillerMetaInfos") << "Error! Cannot get trigger results with label "
149     << hltName_ << endl;
150     throw edm::Exception(edm::errors::Configuration, "FillerMetaInfos::FillHltInfo\n")
151     << "Error! Cannot get trigger results with label " << hltName_ << endl;
152     }
153    
154 sixie 1.13 //This gives names of trigger paths and the accept bit.
155 loizides 1.5 TriggerNames triggerNames(*(triggerResultsHLT.product()));
156     for(UInt_t i=0;i<triggerNames.size();++i) {
157 sixie 1.13 //cout << i << " " << triggerNames.triggerName(i) << " " << (*triggerResultsHLT.product())[i].accept() << endl;
158 loizides 1.5 }
159 sixie 1.13
160 loizides 1.5 }