ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerMetaInfos.cc
Revision: 1.4
Committed: Wed Jun 25 07:39:57 2008 UTC (16 years, 10 months ago) by loizides
Content type: text/plain
Branch: MAIN
Changes since 1.3: +2 -1 lines
Log Message:
Also have LAHeader configurable.

File Contents

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