00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 from __future__ import division
00035 from math import *
00036
00037 OPTION = "StatisticalPlusSystematicAverage"
00038
00039
00040 print ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
00041 print ">>>>> METHOD TO AVERAGE MUONS AND ELECTRONS is: '%s'" % (OPTION)
00042 print ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"
00043
00044
00045
00046
00047
00048
00049 relSysLumi = 11e-2
00050
00051
00052 Wenu = 10.1447
00053 absStatWenu = 0.1123
00054 absCorrWenu = Wenu*sqrt(0.008**2+0.0116**2)
00055 absUncWenu = 0.5031
00056 print "\nWenu cross section = %.4f +- %.4f (stat.) +- %.4f (syst.) +- %.4f (theo.) +- %.4f (lumi.) [nb]" % (Wenu, absStatWenu, absUncWenu, absCorrWenu, Wenu*relSysLumi)
00057 print " Systematics >>>>>>>"
00058 print "\tUncorrelated with muons: %.2f %%" % (100./Wenu*absUncWenu)
00059 print "\tTheory: %.2f %%" % (100./Wenu*absCorrWenu)
00060 print "\tTOTAL (LUMI excluded): %.2f %%\n" % (100./Wenu*sqrt(absUncWenu**2+absCorrWenu**2))
00061
00062 Wplusenu = 5.9349
00063 absStatWplusenu = 0.0793
00064 absCorrWplusenu = Wplusenu*sqrt(0.009**2+0.0133**2)
00065 absUncWplusenu = 0.3446
00066 print "\nWplusenu cross section = %.4f +- %.4f (stat.) +- %.4f (syst.) +- %.4f (theo.) +- %.4f (lumi.) [nb]" % (Wplusenu, absStatWplusenu, absUncWplusenu, absCorrWplusenu, Wplusenu*relSysLumi)
00067 print " Systematics >>>>>>>"
00068 print "\tUncorrelated with muons: %.2f %%" % (100./Wplusenu*absUncWplusenu)
00069 print "\tTheory: %.2f %%" % (100./Wplusenu*absCorrWplusenu)
00070 print "\tTOTAL (LUMI excluded): %.2f %%\n" % (100./Wplusenu*sqrt(absUncWplusenu**2+absCorrWplusenu**2))
00071
00072 Wminusenu = 4.1401
00073 absStatWminusenu = 0.0690
00074 absCorrWminusenu = Wminusenu*sqrt(0.015**2+0.0090**2)
00075 absUncWminusenu = 0.2432
00076 print "\nWminusenu cross section = %.4f +- %.4f (stat.) +- %.4f (syst.) +- %.4f (theo.) +- %.4f (lumi.) [nb]" % (Wminusenu, absStatWminusenu, absUncWminusenu, absCorrWminusenu, Wminusenu*relSysLumi)
00077 print " Systematics >>>>>>>"
00078 print "\tUncorrelated with muons: %.2f %%" % (100./Wminusenu*absUncWminusenu)
00079 print "\tTheory: %.2f %%" % (100./Wminusenu*absCorrWminusenu)
00080 print "\tTOTAL (LUMI excluded): %.2f %%\n" % (100./Wminusenu*sqrt(absUncWminusenu**2+absCorrWminusenu**2))
00081
00082 Zee = 0.9595
00083 absStatZee = 0.0370
00084 absCorrZee = Zee*sqrt(0.011**2+0.0134**2)
00085 absUncZee = 0.0565
00086 print "\nZee cross section = %.4f +- %.4f (stat.) +- %.4f (syst.) +- %.4f (theo.) +- %.4f (lumi.) [nb]" % (Zee, absStatZee, absUncZee, absCorrZee, Zee*relSysLumi)
00087 print " Systematics >>>>>>>"
00088 print "\tUncorrelated with muons: %.2f %%" % (100./Zee*absUncZee)
00089 print "\tTheory: %.2f %%" % (100./Zee*absCorrZee)
00090 print "\tTOTAL (LUMI excluded): %.2f %%\n" % (100./Zee*sqrt(absUncZee**2+absCorrZee**2))
00091
00092 Ratioenu = Wplusenu/Wminusenu
00093 absStatRatioenu = 0.02883
00094 absCorrRatioenu = Ratioenu*sqrt(0.017**2+0.0127**2)
00095 absUncRatioenu = 0.076
00096 print "\nRatioenu cross section = %.4f +- %.4f (stat.) +- %.4f (syst.) +- %.4f (theo.)" % (Ratioenu, absStatRatioenu, absUncRatioenu, absCorrRatioenu)
00097 print " Systematics >>>>>>>"
00098 print "\tUncorrelated with muons: %.2f %%" % (100./Ratioenu*absUncRatioenu)
00099 print "\tTheory: %.2f %%" % (100./Ratioenu*absCorrRatioenu)
00100 print "\tTOTAL: %.2f %%\n" % (100./Ratioenu*sqrt(absUncRatioenu**2+absCorrRatioenu**2))
00101
00102 WZe = Wenu/Zee
00103 absStatWZe = 0.425
00104 absCorrWZe = WZe*sqrt(0.009**2+0.0103**2)
00105 absUncWZe = 0.524
00106 print "\nWZe cross section = %.4f +- %.4f (stat.) +- %.4f (syst.) +- %.4f (theo.)" % (WZe, absStatWZe, absUncWZe, absCorrWZe)
00107 print " Systematics >>>>>>>"
00108 print "\tUncorrelated with muons: %.2f %%" % (100./WZe*absUncWZe)
00109 print "\tTheory: %.2f %%" % (100./WZe*absCorrWZe)
00110 print "\tTOTAL: %.2f %%\n" % (100./WZe*sqrt(absUncWZe**2+absCorrWZe**2))
00111
00112
00113 Wmunu = 9.922
00114 absStatWmunu = 0.090
00115 absCorrWmunu = Wmunu*sqrt(0.011**2+0.0136**2)
00116 relUncFit = 1.3e-2
00117 relUncPreTrig = 0.5e-2
00118 relUncSysEff = 0.5e-2
00119 relUncEff = sqrt(relUncFit**2+relUncPreTrig**2+relUncSysEff**2)
00120 relUncMomRes = 0.3e-2
00121 relUncRecoil = 0.4e-2
00122 relUncMCStat = 1.4e-3/sqrt(2)
00123 relUncBkg = sqrt(2.0e-2**2+0.2e-2**2)
00124 absUncWmunu=Wmunu*sqrt(relUncEff**2+relUncMomRes**2+relUncRecoil**2+relUncMCStat**2+relUncBkg**2)
00125 print "\nWmunu cross section = %.4f +- %.4f (stat.) +- %.4f (syst.) +- %.4f (theo.) +- %.4f (lumi.) [nb]" % (Wmunu, absStatWmunu, absUncWmunu, absCorrWmunu, Wmunu*relSysLumi)
00126 print " Systematics >>>>>>>"
00127 print "\tEfficiency(Zfit,Pretrig,Z->W): %.2f %%" % (100*relUncEff)
00128 print "\tMomentum scale/resolution: %.2f %%" % (100*relUncMomRes)
00129 print "\tBackground subtraction: %.2f %%" % (100*relUncBkg)
00130 print "\tSignal Recoil modeling: %.2f %%" % (100*relUncRecoil)
00131 print "\tMC statistics (acceptance): %.2f %%" % (100*relUncMCStat)
00132 print "\tTheory: %.2f %%" % (100./Wmunu*absCorrWmunu)
00133 print "\tTOTAL (LUMI excluded): %.2f %%\n" % (100./Wmunu*sqrt(absUncWmunu**2+absCorrWmunu**2))
00134
00135 Wplusmunu = 5.844
00136 absStatWplusmunu = 0.069
00137 absCorrWplusmunu = Wplusmunu*sqrt(0.013**2+0.0142**2)
00138 relUncFit = 1.3e-2
00139 relUncPreTrig = 0.5e-2
00140 relUncSysEff = 0.5e-2
00141 relUncEff = sqrt(relUncFit**2+relUncPreTrig**2+relUncSysEff**2)
00142 relUncMomRes = 0.3e-2
00143 relUncRecoil = 0.4e-2
00144 relUncMCStat = 1.4e-3
00145 relUncBkg = sqrt(1.7e-2**2+0.2e-2**2)
00146 absUncWplusmunu=Wplusmunu*sqrt(relUncEff**2+relUncMomRes**2+relUncRecoil**2+relUncMCStat**2+relUncBkg**2)
00147 print "\nWplusmunu cross section = %.4f +- %.4f (stat.) +- %.4f (syst.) +- %.4f (theo.) +- %.4f (lumi.) [nb]" % (Wplusmunu, absStatWplusmunu, absUncWplusmunu, absCorrWplusmunu, Wplusmunu*relSysLumi)
00148 print " Systematics >>>>>>>"
00149 print "\tEfficiency(Zfit,Pretrig,Z->W): %.2f %%" % (100*relUncEff)
00150 print "\tMomentum scale/resolution: %.2f %%" % (100*relUncMomRes)
00151 print "\tBackground subtraction: %.2f %%" % (100*relUncBkg)
00152 print "\tSignal Recoil modeling: %.2f %%" % (100*relUncRecoil)
00153 print "\tMC statistics (acceptance): %.2f %%" % (100*relUncMCStat)
00154 print "\tTheory: %.2f %%" % (100./Wplusmunu*absCorrWplusmunu)
00155 print "\tTOTAL (LUMI excluded): %.2f %%\n" % (100./Wplusmunu*sqrt(absUncWplusmunu**2+absCorrWplusmunu**2))
00156
00157 Wminusmunu = 4.078
00158 absStatWminusmunu = 0.057
00159 absCorrWminusmunu = Wminusmunu*sqrt(0.019**2+0.0126**2)
00160 relUncFit = 1.3e-2
00161 relUncPreTrig = 0.5e-2
00162 relUncSysEff = 0.5e-2
00163 relUncEff = sqrt(relUncFit**2+relUncPreTrig**2+relUncSysEff**2)
00164 relUncMomRes = 0.3e-2
00165 relUncRecoil = 0.4e-2
00166 relUncMCStat = 1.4e-3
00167 relUncBkg = sqrt(2.3e-2**2+0.2e-2**2)
00168 absUncWminusmunu=Wminusmunu*sqrt(relUncEff**2+relUncMomRes**2+relUncRecoil**2+relUncMCStat**2+relUncBkg**2)
00169 print "\nWminusmunu cross section = %.4f +- %.4f (stat.) +- %.4f (syst.) +- %.4f (theo.) +- %.4f (lumi.) [nb]" % (Wminusmunu, absStatWminusmunu, absUncWminusmunu, absCorrWminusmunu, Wminusmunu*relSysLumi)
00170 print " Systematics >>>>>>>"
00171 print "\tEfficiency(Zfit,Pretrig,Z->W): %.2f %%" % (100*relUncEff)
00172 print "\tMomentum scale/resolution: %.2f %%" % (100*relUncMomRes)
00173 print "\tBackground subtraction: %.2f %%" % (100*relUncBkg)
00174 print "\tSignal Recoil modeling: %.2f %%" % (100*relUncRecoil)
00175 print "\tMC statistics (acceptance): %.2f %%" % (100*relUncMCStat)
00176 print "\tTheory: %.2f %%" % (100./Wminusmunu*absCorrWminusmunu)
00177 print "\tTOTAL (LUMI excluded): %.2f %%\n" % (100./Wminusmunu*sqrt(absUncWminusmunu**2+absCorrWminusmunu**2))
00178
00179 Zmumu = 0.924
00180 absStatZmumu = 0.031
00181 absCorrZmumu = Zmumu*sqrt(0.012**2+0.0158**2)
00182 relUncEff = 0.5e-2
00183 relUncFit= 1.0e-2
00184 relUncMomRes = 0.2e-2
00185 relUncMCStat = 0.4e-2
00186 relUncBkg = sqrt(relUncFit**2+0.2e-2**2)
00187 absUncZmumu=Zmumu*sqrt(relUncEff**2+relUncMomRes**2+relUncBkg**2+relUncMCStat**2)
00188 print "\nZmumu cross section = %.4f +- %.4f (stat.) +- %.4f (syst.) +- %.4f (theo.) +- %.4f (lumi.) [nb]" % (Zmumu, absStatZmumu, absUncZmumu, absCorrZmumu, Zmumu*relSysLumi)
00189 print " Systematics >>>>>>>"
00190 print "\tEfficiency(Pretriggering): %.2f %%" % (100*relUncEff)
00191 print "\tMomentum scale/resolution: %.2f %%" % (100*relUncMomRes)
00192 print "\tBackground subtraction/fit: %.2f %%" % (100*relUncBkg)
00193 print "\tMC statistics (acceptance): %.2f %%" % (100*relUncMCStat)
00194 print "\tTheory: %.2f %%" % (100./Zmumu*absCorrZmumu)
00195 print "\tTOTAL (LUMI excluded): %.2f %%\n" % (100./Zmumu*sqrt(absUncZmumu**2+absCorrZmumu**2))
00196
00197 Ratiomunu = Wplusmunu/Wminusmunu
00198 absStatRatiomunu = 0.026
00199 absCorrRatiomunu = Ratiomunu*sqrt(0.021**2+0.0119**2)
00200 relUncEff = 2.8e-2
00201 relUncMomRes = 0.3e-2
00202 relUncMCStat = sqrt(2)*1.4e-3
00203 relUncBkg = 0.7e-2
00204 absUncRatiomunu = Ratiomunu*sqrt(relUncEff**2+relUncMomRes**2+relUncMCStat**2+relUncBkg**2)
00205 print "\nRatiomunu cross section = %.4f +- %.4f (stat.) +- %.4f (syst.) +- %.4f (theo.)" % (Ratiomunu, absStatRatiomunu, absUncRatiomunu, absCorrRatiomunu)
00206 print " Systematics >>>>>>>"
00207 print "\tEfficiency(W+ versus W- tests): %.2f %%" % (100*relUncEff)
00208 print "\tMomentum scale/resolution: %.2f %%" % (100*relUncMomRes)
00209 print "\tBackground subtraction: %.2f %%" % (100*relUncBkg)
00210 print "\tMC statistics (acceptance): %.2f %%" % (100*relUncMCStat)
00211 print "\tTheory: %.2f %%" % (100./Ratiomunu*absCorrRatiomunu)
00212 print "\tTOTAL: %.2f %%\n" % (100./Ratiomunu*sqrt(absUncRatiomunu**2+absCorrRatiomunu**2))
00213
00214 WZmu = Wmunu/Zmumu
00215 absStatWZmu = 0.3675
00216 absCorrWZmu = WZmu*sqrt(0.011**2+0.0135**2)
00217 relUncEffW = 1.3e-2
00218 relUncMomResW = 0.3e-2
00219 relUncMomResZ = 0.2e-2
00220 relSysSubtract = sqrt(relUncEffW**2+relUncMomResW**2+relUncMomResZ**2)
00221 relSysAdd = abs(relUncMomResW-relUncMomResZ)
00222 absUncWZmu = WZmu*sqrt((absUncWmunu/Wmunu)**2 + (absUncZmumu/Zmumu)**2 - relSysSubtract**2 + relSysAdd**2)
00223 print "\nWZmu cross section = %.4f +- %.4f (stat.) +- %.4f (syst.) +- %.4f (theo.)" % (WZmu, absStatWZmu, absUncWZmu, absCorrWZmu)
00224 print " STATISTICAL UNCERTAINTY INCLUDES EFFICIENCY (via Zmumu fit)"
00225 print " Systematics >>>>>>>"
00226 print "\tUncorrelated with electrons: %.2f %%" % (100./WZmu*absUncWZmu)
00227 print "\tTheory: %.2f %%" % (100./WZmu*absCorrWZmu)
00228 print "\tTOTAL: %.2f %%\n" % (100./WZmu*sqrt(absUncWZmu**2+absCorrWZmu**2))
00229
00230
00231
00232
00233
00234
00235 def vbtfXSectionCheck(title, xsection, exsection, sysUnc, sysCor, relSysLumi):
00236 absSysLumi = xsection*relSysLumi
00237 print "VBTF inputs: %s = %.4f +- %.4f (stat.) +- %.4f (exp.) +- %.4f (the.) +- %.4f (lumi) [nb]" % (title, xsection, exsection, sysUnc, sysCor, absSysLumi)
00238
00239
00240 def vbtfXSectionAverage(title, xsection1, xsection2, exsection1, exsection2, sysUnc1, sysUnc2, sysCor1, sysCor2, relSysLumi):
00241 if OPTION== "StatisticalAverage":
00242 V11 = exsection1**2
00243 V22 = exsection2**2
00244 V12 = 0
00245 else:
00246 V11 = exsection1**2+sysUnc1**2+sysCor1**2
00247 V22 = exsection2**2+sysUnc2**2+sysCor2**2
00248 V12 = sysCor1*sysCor2
00249
00250 a1 = (V22-V12)/(V11+V22-2*V12)
00251 a2 = (V11-V12)/(V11+V22-2*V12)
00252 average = a1*xsection1 + a2*xsection2
00253 errstat = sqrt(a1**2*exsection1**2+a2**2*exsection2**2)
00254 errunco = sqrt(a1**2*sysUnc1**2 + a2**2*sysUnc2**2)
00255 errtheo = sqrt(a1**2*sysCor1**2 + a2**2*sysCor2**2 + 2*a1*a2*sysCor1*sysCor2)
00256 errsyst = sqrt(errunco**2+errtheo**2)
00257
00258 print "VBTF average: %s = %.4f +- %.4f (stat.) [nb]" % (title, average, errstat)
00259
00260 absSysLumi = average*relSysLumi
00261 print "\tVBTF systematics (1): +- %.4f (exp) +- %.4f (the) +- %.4f (lumi) [nb]" % (errunco, errtheo, absSysLumi)
00262 print "\tVBTF systematics (2): +- %.4f (exp+the) +- %.4f (lumi) [nb]" % (errsyst, absSysLumi)
00263
00264
00265 def vbtfRatioCheck(title, ratio, absStat, sysUnc, sysCor):
00266 print "VBTF inputs: %s = %.4f +- %.4f (stat.) +- %.4f (exp.) +- %.4f (the.)" % (title, ratio, absStat, sysUnc, sysCor)
00267
00268
00269 def vbtfRatioAverage(title, ratio1, ratio2, eratio1, eratio2, sysUnc1, sysUnc2, sysCor1, sysCor2):
00270 if OPTION== "StatisticalAverage":
00271 V11 = eratio1**2
00272 V22 = eratio2**2
00273 V12 = 0
00274 else:
00275 V11 = eratio1**2+(sysUnc1**2+sysCor1**2)
00276 V22 = eratio2**2+(sysUnc2**2+sysCor2**2)
00277 V12 = sysCor1*sysCor2
00278
00279 a1 = (V22-V12)/(V11+V22-2*V12)
00280 a2 = (V11-V12)/(V11+V22-2*V12)
00281 average = a1*ratio1 + a2*ratio2
00282 errstat = sqrt(a1**2*eratio1**2+a2**2*eratio2**2)
00283 errunco = sqrt(a1**2*sysUnc1**2 + a2**2*sysUnc2**2)
00284 errtheo = sqrt(a1**2*sysCor1**2 + a2**2*sysCor2**2 + 2*a1*a2*sysCor1*sysCor2)
00285 errsyst = sqrt(errunco**2+errtheo**2)
00286
00287 print "VBTF average: %s = %.4f +- %.4f (stat.)" % (title, average, errstat)
00288
00289 print "\tVBTF systematics (1): +- %.4f (exp) +- %.4f (the)" % (errunco, errtheo)
00290 print "\tVBTF systematics (2): +- %.4f (exp+the)" % (errsyst)
00291
00292
00293
00294
00295
00296
00297
00298
00299 print "\n>>>>>>>>>>>>>>>"
00300 vbtfXSectionCheck("W -> munu cross section",Wmunu,absStatWmunu,absUncWmunu,absCorrWmunu,relSysLumi)
00301 vbtfXSectionCheck("W -> enu cross section",Wenu,absStatWenu,absUncWenu,absCorrWenu,relSysLumi)
00302 vbtfXSectionAverage("W -> lnu cross section",Wmunu,Wenu,absStatWmunu,absStatWenu,absUncWmunu,absUncWenu,absCorrWmunu,absCorrWenu,relSysLumi)
00303
00304
00305
00306
00307 print "\n>>>>>>>>>>>>>>>"
00308 vbtfXSectionCheck("W+ -> munu cross section",Wplusmunu,absStatWplusmunu,absUncWplusmunu,absCorrWplusmunu,relSysLumi)
00309 vbtfXSectionCheck("W+ -> enu cross section",Wplusenu,absStatWplusenu,absUncWplusenu,absCorrWplusenu,relSysLumi)
00310 vbtfXSectionAverage("W+ -> lnu cross section",Wplusmunu,Wplusenu,absStatWplusmunu,absStatWplusenu,absUncWplusmunu,absUncWplusenu,absCorrWplusmunu,absCorrWplusenu,relSysLumi)
00311
00312
00313
00314
00315 print "\n>>>>>>>>>>>>>>>"
00316 vbtfXSectionCheck("W- -> munu cross section",Wminusmunu,absStatWminusmunu,absUncWminusmunu,absCorrWminusmunu,relSysLumi)
00317 vbtfXSectionCheck("W- -> enu cross section",Wminusenu,absStatWminusenu,absUncWminusenu,absCorrWminusenu,relSysLumi)
00318 vbtfXSectionAverage("W- -> lnu cross section",Wminusmunu,Wminusenu,absStatWminusmunu,absStatWminusenu,absUncWminusmunu,absUncWminusenu,absCorrWminusmunu,absCorrWminusenu,relSysLumi)
00319
00320
00321
00322
00323
00324 print "\n>>>>>>>>>>>>>>>"
00325 vbtfRatioCheck("W+ / W- cross section ratio, muon channel",Ratiomunu,absStatRatiomunu,absUncRatiomunu,absCorrRatiomunu)
00326 vbtfRatioCheck("W+ / W- cross section ratio, electron channel",Ratioenu,absStatRatioenu,absUncRatioenu,absCorrRatioenu)
00327 vbtfRatioAverage("W+ / W- cross section ratio",Ratiomunu,Ratioenu,absStatRatiomunu,absStatRatioenu,absUncRatiomunu,absUncRatioenu,absCorrRatiomunu,absCorrRatioenu)
00328
00329
00330
00331
00332
00333 print "\n>>>>>>>>>>>>>>>"
00334 vbtfXSectionCheck("Z -> mumu cross section",Zmumu,absStatZmumu,absUncZmumu,absCorrZmumu,relSysLumi)
00335 vbtfXSectionCheck("Z -> ee cross section",Zee,absStatZee,absUncZee,absCorrZee,relSysLumi)
00336 vbtfXSectionAverage("Z -> ll cross section",Zmumu,Zee,absStatZmumu,absStatZee,absUncZmumu,absUncZee,absCorrZmumu,absCorrZee,relSysLumi)
00337
00338
00339
00340
00341
00342 print "\n>>>>>>>>>>>>>>>"
00343 vbtfRatioCheck("W/Z ratio muons",WZmu,absStatWZmu,absUncWZmu,absCorrWZmu)
00344 vbtfRatioCheck("W/Z ratio electrons",WZe,absStatWZe,absUncWZe,absCorrWZe)
00345 vbtfRatioAverage("W/Z ratio",WZmu,WZe,absStatWZmu,absStatWZe,absUncWZmu,absUncWZe,absCorrWZmu,absCorrWZe)