ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerMCEventInfo.cc
Revision: 1.6
Committed: Mon Jun 15 15:00:26 2009 UTC (15 years, 10 months ago) by loizides
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_009c, Mit_009b
Changes since 1.5: +2 -1 lines
Log Message:
Added proper fwd defs plus split up complilation of MitAna/DataTree LinkDefs.

File Contents

# Content
1 // $Id: FillerMCEventInfo.cc,v 1.5 2009/03/22 10:00:29 loizides Exp $
2
3 #include "MitProd/TreeFiller/interface/FillerMCEventInfo.h"
4 #include "FWCore/MessageLogger/interface/MessageLogger.h"
5 #include "DataFormats/Common/interface/Handle.h"
6 #include "DataFormats/HepMCCandidate/interface/PdfInfo.h"
7 #include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h"
8 #include "MitAna/DataTree/interface/Names.h"
9 #include "MitAna/DataTree/interface/MCEventInfo.h"
10 #include "MitProd/ObjectService/interface/ObjectService.h"
11
12 using namespace std;
13 using namespace edm;
14 using namespace mithep;
15
16 //--------------------------------------------------------------------------------------------------
17 FillerMCEventInfo::FillerMCEventInfo(const ParameterSet &cfg, const char *name, bool active) :
18 BaseFiller(cfg,"MCEventInfo",active),
19 evtName_(Conf().getUntrackedParameter<string>("evtName",Names::gkMCEvtInfoBrn)),
20 genHepMCEvName_(Conf().getUntrackedParameter<string>("genHepMCEventEdmName","source")),
21 genEvWeightName_(Conf().getUntrackedParameter<string>("genEventWeightEdmName","genEventWeight")),
22 genEvScaleName_(Conf().getUntrackedParameter<string>("genEventScaleEdmName","genEventScale")),
23 genEvProcIdName_(Conf().getUntrackedParameter<string>("genEventProcIdEdmName","genEventProcID")),
24 genPdfInfoName_(Conf().getUntrackedParameter<string>("genPdfInfoEdmName","genEventPdfInfo")),
25 eventInfo_(new MCEventInfo())
26 {
27 // Constructor.
28 }
29
30 //--------------------------------------------------------------------------------------------------
31 FillerMCEventInfo::~FillerMCEventInfo()
32 {
33 // Destructor.
34
35 delete eventInfo_;
36 }
37
38 //--------------------------------------------------------------------------------------------------
39 void FillerMCEventInfo::BookDataBlock(TreeWriter &tws)
40 {
41 // Create run info tre and book our branches.
42
43 tws.AddBranch(evtName_,&eventInfo_);
44 OS()->add<mithep::MCEventInfo>(eventInfo_,evtName_);
45 }
46
47 //--------------------------------------------------------------------------------------------------
48 void FillerMCEventInfo::FillDataBlock(const edm::Event &event,
49 const edm::EventSetup &setup)
50 {
51 // Fill our data structures.
52
53 if (event.isRealData()) {
54 PrintErrorAndExit("Expected monte-carlo record, but did not get it. Aborting.");
55 }
56
57 Handle<edm::HepMCProduct> hHepMCProduct;
58 if (genHepMCEvName_.empty() || !GetProductSafe(genHepMCEvName_, hHepMCProduct, event)) {
59
60 if (!genEvWeightName_.empty()) {
61 Handle<double> genEventWeight;
62 GetProduct(genEvWeightName_, genEventWeight, event);
63 eventInfo_->SetWeight(*genEventWeight);
64 }
65
66 if (!genEvScaleName_.empty()) {
67 Handle<double> genEventScale;
68 GetProduct(genEvScaleName_, genEventScale, event);
69 eventInfo_->SetScale(*genEventScale);
70 }
71
72 if (!genEvProcIdName_.empty()) {
73 Handle<int> genEventProcId;
74 GetProduct(genEvProcIdName_, genEventProcId, event);
75 eventInfo_->SetProcessId(*genEventProcId);
76 }
77
78 if (!genPdfInfoName_.empty()) {
79 Handle<reco::PdfInfo> genPdfInfo;
80 GetProduct(genPdfInfoName_, genPdfInfo, event);
81 eventInfo_->SetId1(genPdfInfo->id1);
82 eventInfo_->SetId2(genPdfInfo->id2);
83 eventInfo_->SetPdf1(genPdfInfo->pdf1);
84 eventInfo_->SetPdf2(genPdfInfo->pdf2);
85 eventInfo_->SetScalePdf(genPdfInfo->scalePDF);
86 eventInfo_->SetX1(genPdfInfo->pdf1);
87 eventInfo_->SetX2(genPdfInfo->pdf2);
88 }
89 } else {
90 const HepMC::GenEvent *genEvt = hHepMCProduct->GetEvent();
91 eventInfo_->SetScale(genEvt->event_scale());
92 eventInfo_->SetProcessId(genEvt->signal_process_id());
93 HepMC::WeightContainer wc = genEvt->weights();
94 if (wc.size() > 0)
95 eventInfo_->SetWeight(wc[0]);
96 const HepMC::PdfInfo *genPdfInfo = genEvt->pdf_info();
97 eventInfo_->SetId1(genPdfInfo->id1());
98 eventInfo_->SetId2(genPdfInfo->id2());
99 eventInfo_->SetPdf1(genPdfInfo->pdf1());
100 eventInfo_->SetPdf2(genPdfInfo->pdf2());
101 eventInfo_->SetScalePdf(genPdfInfo->scalePDF());
102 eventInfo_->SetX1(genPdfInfo->pdf1());
103 eventInfo_->SetX2(genPdfInfo->pdf2());
104 }
105 }