ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerMetaInfos.cc
Revision: 1.8
Committed: Thu Jul 3 07:56:14 2008 UTC (16 years, 10 months ago) by loizides
Content type: text/plain
Branch: MAIN
Changes since 1.7: +11 -8 lines
Log Message:
Coding Conventions

File Contents

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