# interactive

import ROOT
inputFile = ROOT.TFile("outDelphes.root")
tree = inputFile.Get("inclusive/tree")
tree.Show(0)
'''
======> EVENT:0
 massReco        = 92.4257
 xsec            = 842.92
 N               = 0
 eventWeight     = 0.084292
''' 
massReco = ROOT.RooRealVar("massReco","massReco", 0, 300)
'''
RooFit v3.60 -- Developed by Wouter Verkerke and David Kirkby 
                Copyright (C) 2000-2013 NIKHEF, University of California & Stanford University
                All rights reserved, please read http://roofit.sourceforge.net/license.txt
'''
eventWeight = ROOT.RooRealVar("eventWeight","eventWeight", 0, 1)
dataset = ROOT.RooDataSet("dataset","dataset", {massReco,eventWeight}, Import=tree)
dataset.Print()
'''
RooDataSet::dataset[eventWeight,massReco] = 3818 entries
'''
dataset.Print("v")
'''
DataStore dataset (dataset)
  Contains 3818 entries
  Observables: 
    1)  eventWeight = 0.084292  L(0 - 1)  "eventWeight"
    2)     massReco = 81.7025  L(0 - 300)  "massReco"
'''
dataset.get(0)
'''
<cppyy.gbl.RooArgSet object at 0x55cfe58ba2e8>
'''
obs = dataset.get(0)
obs.find("massReco").getVal()
'''
92.42565069491252
'''
obs.find("eventWeight").getVal()
'''
0.08429199829101562
'''
lumi = ROOT.RootRealVar("lumi","integrated luminosity",0, 300)
lumi.setVal(150)
lumi.setConstant(True)
weight = ROOT.RooFormulaVar("weight","1000*lumi*eventWeight", ROOT.RooArgSet(lumi,eventWeight))
dataset.weight()
'''
1.0
'''
dataset.isWeighted()
'''
False
'''
dataset.addColumn(weight)
'''
<cppyy.gbl.RooRealVar object at 0x55cfe56de900>
'''
dataset.Print()
'''
RooDataSet::dataset[eventWeight,massReco,weight] = 3818 entries
'''
dataset.Print("v")
'''
DataStore dataset (dataset)
  Contains 3818 entries
  Observables: 
    1)  eventWeight = 0.084292  L(0 - 1)  "eventWeight"
    2)     massReco = 81.7025  L(0 - 300)  "massReco"
    3)       weight = 12643.8 C  L(-INF - +INF)  "1000*lumi*eventWeight"
'''
obs = dataset.get(0)
obs.find("weight")
'''
<cppyy.gbl.RooRealVar object at 0x55cfe56de900>
'''
obs.find("weight").getVal()
12643.799743652344
dataset.isWeighted()
'''
False
'''
# produce weighted data with 
dataset_weighted = ROOT.RooDataSet(dataset.GetName()+"weighted", dataset.GetTitle(), dataset, dataset.get(), "", weight.GetName())
dataset_weighted.Print()
'''
RooDataSet::datasetweighted[eventWeight,massReco,weight:weight] = 3818 entries (4.8274e+07 weighted)
'''
dataset_weighted.Print("v")
'''
DataStore datasetweighted (dataset)
  Contains 3818 entries
  Observables: 
    1)  eventWeight = 0.084292  L(0 - 1)  "eventWeight"
    2)     massReco = 81.7025  L(0 - 300)  "massReco"
  Dataset variable "weight" is interpreted as the event weight
'''
dataset_weighted.weight()
'''
12643.799743652344
'''
dataset_weighted.get(0)
'''
<cppyy.gbl.RooArgSet object at 0x55cfe58babe8>
'''
obs = dataset_weighted.get(0)
obs.find("weight")
'''
<cppyy.gbl.RooAbsArg object at 0x(nil)>
'''

