ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerMetaInfos.cc
Revision: 1.3
Committed: Tue Jun 24 14:24:55 2008 UTC (16 years, 10 months ago) by loizides
Content type: text/plain
Branch: MAIN
Changes since 1.2: +46 -12 lines
Log Message:
Have RunInfo stored.

File Contents

# User Rev Content
1 loizides 1.3 // $Id: FillerMetaInfos.cc,v 1.2 2008/06/20 17:52:57 loizides Exp $
2 loizides 1.1
3     #include "MitProd/TreeFiller/interface/FillerMetaInfos.h"
4     #include "FWCore/MessageLogger/interface/MessageLogger.h"
5     #include "DataFormats/Common/interface/Handle.h"
6     #include "MitAna/DataTree/interface/Names.h"
7    
8     using namespace std;
9     using namespace edm;
10     using namespace mithep;
11    
12     //-------------------------------------------------------------------------------------------------
13     FillerMetaInfos::FillerMetaInfos(const ParameterSet &cfg) :
14 loizides 1.2 BaseFiller(cfg,"MetaInfos"),
15 loizides 1.3 tws_(0),
16 loizides 1.2 evtName_(Conf().getUntrackedParameter<string>("evtName",Names::gkEvtHeaderBrn)),
17     runName_(Conf().getUntrackedParameter<string>("runName",Names::gkRunInfoBrn)),
18     eventHeader_(new EventHeader()),
19 loizides 1.3 evtLAHeader_(new LAHeader()),
20 loizides 1.2 runInfo_(new RunInfo()),
21     runTree_(0),
22 loizides 1.3 laTree_(0),
23     runEntries_(0),
24     fileNum_(0)
25 loizides 1.1 {
26 loizides 1.3 // Constructor.
27 loizides 1.1 }
28    
29     //-------------------------------------------------------------------------------------------------
30     FillerMetaInfos::~FillerMetaInfos()
31     {
32 loizides 1.3 // Destructor.
33    
34 loizides 1.2 delete eventHeader_;
35     delete runInfo_;
36 loizides 1.3 eventHeader_ = 0;
37     runInfo_ = 0;
38     runTree_ = 0;
39     laTree_ = 0;
40 loizides 1.1 }
41    
42     //-------------------------------------------------------------------------------------------------
43 loizides 1.2 void FillerMetaInfos::BookDataBlock(TreeWriter &tws)
44 loizides 1.1 {
45 loizides 1.3 // Create run info tre and book our branches.
46    
47     // add branches to main tree
48 loizides 1.2 tws.AddBranch(evtName_.c_str(),"mithep::EventHeader",&eventHeader_);
49 loizides 1.3
50     // add branches to run info tree
51     tws.AddBranchToTree(Names::gkRunTreeName,runName_.c_str(),"mithep::RunInfo",&runInfo_);
52 loizides 1.2 tws.SetAutoFill(Names::gkRunTreeName,0);
53     runTree_=tws.GetTree(Names::gkRunTreeName);
54 loizides 1.3
55     // add branches to lookahead tree
56     tws.AddBranchToTree(Names::gkLATreeName,Names::gkLAHeaderBrn,"mithep::LAHeader",&evtLAHeader_);
57     tws.SetAutoFill(Names::gkLATreeName,0);
58     laTree_=tws.GetTree(Names::gkLATreeName);
59    
60     // store pointer to tree writer
61     tws_ = &tws;
62 loizides 1.1 }
63    
64     //-------------------------------------------------------------------------------------------------
65     void FillerMetaInfos::FillDataBlock(const edm::Event &event,
66     const edm::EventSetup &setup)
67     {
68 loizides 1.3 // Fill our data structures.
69    
70     // clear map if a new file was opened
71     if (tws_->GetFileNumber()!=fileNum_) {
72     runmap_.clear();
73     fileNum_ = tws_->GetFileNumber();
74     runEntries_ = 0;
75     }
76    
77     UInt_t runnum = event.id().run();
78    
79     // store look ahead information
80     if (runEntries_>0) {
81     evtLAHeader_->SetRunNum(runnum);
82     laTree_->Fill();
83     }
84    
85 loizides 1.2 // fill event header
86     eventHeader_->SetEvtNum(event.id().event());
87     eventHeader_->SetLumiSec(event.luminosityBlock());
88     eventHeader_->SetRunNum(runnum);
89    
90 loizides 1.3 // look-up if entry is in map
91 loizides 1.2 map<UInt_t,Int_t>::iterator riter = runmap_.find(runnum);
92     if (riter != runmap_.end()) {
93     Int_t runentry = riter->second;
94     eventHeader_->SetRunEntry(runentry);
95     return;
96     }
97 loizides 1.1
98 loizides 1.2 // fill new run info
99     Int_t runentry = runEntries_;
100     eventHeader_->SetRunEntry(runentry);
101     runmap_.insert(pair<UInt_t,Int_t>(runnum,runentry));
102    
103     runInfo_->SetRunNum(runnum);
104     runTree_->Fill();
105 loizides 1.3
106 loizides 1.2 ++runEntries_;
107 loizides 1.1 }