37 lowRange, highRange = 0.0, 200.0
40 invMass =
ROOT.RooRealVar(
"invMass",
"M_inv", lowRange, highRange,
"GeV")
47 print(f
"make z model")
50 sigmaZ =
ROOT.RooRealVar(
"sigmaZ",
"Width of Gaussian", 2, 0, 10,
"GeV")
60 zIsolDecayConst =
ROOT.RooConstVar(
"zIsolDecayConst",
"z isolation decay constant", -1)
61 zIsolationModel =
ROOT.RooExponential(
"zIsolationModel",
"z isolation model", isolation, zIsolDecayConst)
69 print(f
"make qcd model")
76 "qcdMassDecayConst",
"Decay const for QCD mass spectrum", -0.01, -100, 100,
"1/GeV"
78 qcdMassModel =
ROOT.RooExponential(
"qcdMassModel",
"qcd Mass Model", invMass, qcdMassDecayConst)
84 qcdIsolDecayConst =
ROOT.RooConstVar(
"qcdIsolDecayConst",
"Et resolution constant", -0.1)
85 qcdIsolationModel =
ROOT.RooExponential(
"qcdIsolationModel",
"QCD isolation model", isolation, qcdIsolDecayConst)
88 qcdModel =
ROOT.RooProdPdf(
"qcdModel",
"2-d model for QCD", [qcdMassModel, qcdIsolationModel])
93 zYield =
ROOT.RooRealVar(
"zYield",
"fitted yield for Z", 500, 0.0, 5000)
94 qcdYield =
ROOT.RooRealVar(
"qcdYield",
"fitted yield for QCD", 1000, 0.0, 10000)
97 print(f
"make full model")
98 model =
ROOT.RooAddPdf(
"model",
"z+qcd background models", [zModel, qcdModel], [zYield, qcdYield])
99 massModel =
ROOT.RooAddPdf(
"massModel",
"z+qcd invariant mass model", [mZModel, qcdMassModel], [zYield, qcdYield])
104 print(f
"import model: ")
115 model = wspace[
"model"]
116 invMass = wspace[
"invMass"]
117 isolation = wspace[
"isolation"]
120 print(
"make data set and import to workspace")
127 print(f
"Calculate sWeights")
130 massModel = wspace[
"massModel"]
131 zYield = wspace[
"zYield"]
132 qcdYield = wspace[
"qcdYield"]
133 data = wspace[
"data"]
149 print(f
"\n\n------------------------------------------\nThe dataset before creating sWeights:\n")
157 sData =
ROOT.RooStats.SPlot(
"sData",
"An SPlot", data, massModel, [zYield, qcdYield], Strategy=0)
159 print(f
"\n\nThe dataset after creating sWeights:\n")
164 print(
"\n\n------------------------------------------\n\nCheck SWeights:")
165 print(
"Yield of Z is\t",
zYield.getVal(),
". From sWeights it is ")
168 print(
"Yield of QCD is\t",
qcdYield.getVal(),
". From sWeights it is : ")
191 model = wspace[
"model"]
192 zModel = wspace[
"zModel"]
193 qcdModel = wspace[
"qcdModel"]
195 isolation = wspace[
"isolation"]
196 invMass = wspace[
"invMass"]
199 data = wspace[
"dataWithSWeights"]
208 frame =
invMass.frame(Title=
"Fit of model to discriminating variable")
211 model.plotOn(frame, Components=zModel, LineStyle=
"--", LineColor=
"r", Name=
"ZModel")
212 model.plotOn(frame, Components=qcdModel, LineStyle=
"--", LineColor=
"g", Name=
"QCDModel")
235 frame2 =
isolation.frame(Title=
"Isolation distribution with s weights to project out Z")
247 frame3 =
isolation.frame(Title=
"Isolation distribution with s weights to project out QCD")
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.