ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerMCEventInfo.cc
Revision: 1.7
Committed: Thu Jun 18 23:03:22 2009 UTC (15 years, 10 months ago) by bendavid
Content type: text/plain
Branch: MAIN
Changes since 1.6: +2 -2 lines
Log Message:
Updated includes for new GeneratorProducts package

File Contents

# User Rev Content
1 bendavid 1.7 // $Id: FillerMCEventInfo.cc,v 1.6 2009/06/15 15:00:26 loizides Exp $
2 loizides 1.1
3     #include "MitProd/TreeFiller/interface/FillerMCEventInfo.h"
4     #include "FWCore/MessageLogger/interface/MessageLogger.h"
5     #include "DataFormats/Common/interface/Handle.h"
6 loizides 1.3 #include "DataFormats/HepMCCandidate/interface/PdfInfo.h"
7 bendavid 1.7 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
8 loizides 1.1 #include "MitAna/DataTree/interface/Names.h"
9     #include "MitAna/DataTree/interface/MCEventInfo.h"
10 loizides 1.6 #include "MitProd/ObjectService/interface/ObjectService.h"
11 loizides 1.1
12     using namespace std;
13     using namespace edm;
14     using namespace mithep;
15    
16     //--------------------------------------------------------------------------------------------------
17 loizides 1.3 FillerMCEventInfo::FillerMCEventInfo(const ParameterSet &cfg, const char *name, bool active) :
18 loizides 1.1 BaseFiller(cfg,"MCEventInfo",active),
19     evtName_(Conf().getUntrackedParameter<string>("evtName",Names::gkMCEvtInfoBrn)),
20 loizides 1.4 genHepMCEvName_(Conf().getUntrackedParameter<string>("genHepMCEventEdmName","source")),
21 loizides 1.3 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 loizides 1.1 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 loizides 1.2 tws.AddBranch(evtName_,&eventInfo_);
44     OS()->add<mithep::MCEventInfo>(eventInfo_,evtName_);
45 loizides 1.1 }
46    
47     //--------------------------------------------------------------------------------------------------
48     void FillerMCEventInfo::FillDataBlock(const edm::Event &event,
49     const edm::EventSetup &setup)
50     {
51     // Fill our data structures.
52    
53 loizides 1.3 if (event.isRealData()) {
54     PrintErrorAndExit("Expected monte-carlo record, but did not get it. Aborting.");
55     }
56    
57 loizides 1.4 Handle<edm::HepMCProduct> hHepMCProduct;
58 loizides 1.5 if (genHepMCEvName_.empty() || !GetProductSafe(genHepMCEvName_, hHepMCProduct, event)) {
59 loizides 1.4
60 loizides 1.5 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 loizides 1.4 } 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 loizides 1.1 }