ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerMetaInfos.cc
Revision: 1.2
Committed: Fri Jun 20 17:52:57 2008 UTC (16 years, 10 months ago) by loizides
Content type: text/plain
Branch: MAIN
Changes since 1.1: +43 -16 lines
Log Message:
First proof-of-principle implementation of MetaInfo.

File Contents

# User Rev Content
1 loizides 1.2 // $Id: FillerMetaInfos.cc,v 1.1 2008/06/19 16:53:43 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     evtName_(Conf().getUntrackedParameter<string>("evtName",Names::gkEvtHeaderBrn)),
16     runName_(Conf().getUntrackedParameter<string>("runName",Names::gkRunInfoBrn)),
17     eventHeader_(new EventHeader()),
18     runInfo_(new RunInfo()),
19     runTree_(0),
20     runEntries_(0)
21 loizides 1.1 {
22     }
23    
24     //-------------------------------------------------------------------------------------------------
25     FillerMetaInfos::~FillerMetaInfos()
26     {
27 loizides 1.2 delete eventHeader_;
28     eventHeader_=0;
29     delete runInfo_;
30     runInfo_=0;
31     runTree_=0;
32 loizides 1.1 }
33    
34     //-------------------------------------------------------------------------------------------------
35 loizides 1.2 void FillerMetaInfos::BookDataBlock(TreeWriter &tws)
36 loizides 1.1 {
37 loizides 1.2 tws.AddBranch(evtName_.c_str(),"mithep::EventHeader",&eventHeader_);
38     tws.AddBranchToTree(Names::gkRunTreeName, runName_.c_str(),"mithep::RunInfo",&runInfo_);
39     tws.SetAutoFill(Names::gkRunTreeName,0);
40     runTree_=tws.GetTree(Names::gkRunTreeName);
41 loizides 1.1 }
42    
43     //-------------------------------------------------------------------------------------------------
44     void FillerMetaInfos::FillDataBlock(const edm::Event &event,
45     const edm::EventSetup &setup)
46     {
47 loizides 1.2 // fill event header
48     eventHeader_->SetEvtNum(event.id().event());
49     eventHeader_->SetLumiSec(event.luminosityBlock());
50     UInt_t runnum = event.id().run();
51     eventHeader_->SetRunNum(runnum);
52    
53     // should check here if file was closed and
54     // reset map if needed. This will all come,
55     // eventually split over methods or even in
56     // separate filler.
57    
58     map<UInt_t,Int_t>::iterator riter = runmap_.find(runnum);
59     if (riter != runmap_.end()) {
60     Int_t runentry = riter->second;
61     eventHeader_->SetRunEntry(runentry);
62     return;
63     }
64 loizides 1.1
65 loizides 1.2 // fill new run info
66     Int_t runentry = runEntries_;
67     eventHeader_->SetRunEntry(runentry);
68     runmap_.insert(pair<UInt_t,Int_t>(runnum,runentry));
69    
70     runInfo_->SetRunNum(runnum);
71     runTree_->Fill();
72     ++runEntries_;
73 loizides 1.1 }