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.221
00053 absStatWenu = 0.034
00054 absCorrWenu = 0.144
00055 absUncWenu = 0.309
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 = 6.045
00063 absStatWplusenu = 0.026
00064 absCorrWplusenu = 0.097
00065 absUncWplusenu = 0.187
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.196
00073 absStatWminusenu = 0.022
00074 absCorrWminusenu = 0.073
00075 absUncWminusenu = 0.130
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.9892
00083 absStatZee = 0.0109
00084 absCorrZee = 0.01715
00085 absUncZee = 0.0446
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.0097
00094 absCorrRatioenu = 0.0306
00095 absUncRatioenu = 0.0453
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.1190
00104 absCorrWZe = 0.1413
00105 absUncWZe = 0.2329
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 = 10.03115
00114 absStatWmunu = 0.02690
00115 absCorrWmunu = Wmunu*sqrt(0.018**2+0.015**2)
00116 relUncFit = 0.4e-2
00117 relUncPreTrig = 0.5e-2
00118 relUncSysEff = 0.4e-2
00119 relUncEff = sqrt(relUncFit**2+relUncPreTrig**2+relUncSysEff**2)
00120 relUncMomRes = 0.1e-2
00121 relUncRecoil = 0.4e-2
00122 relUncMCStat = 1.4e-3/sqrt(2)
00123 relUncBkg = 1.5e-2
00124 absUncWmunu=Wmunu*sqrt(relUncEff**2+relUncMomRes**2+relUncRecoil**2+relUncMCStat**2+relUncBkg**2)
00125 absUncWmunu=Wmunu*sqrt(relUncEff**2+relUncMomRes**2+relUncRecoil**2+relUncBkg**2)
00126 print "\nWmunu cross section = %.4f +- %.4f (stat.) +- %.4f (syst.) +- %.4f (theo.) +- %.4f (lumi.) [nb]" % (Wmunu, absStatWmunu, absUncWmunu, absCorrWmunu, Wmunu*relSysLumi)
00127 print " Systematics >>>>>>>"
00128 print "\tEfficiency(Zfit,Pretrig,Z->W): %.2f %%" % (100*relUncEff)
00129 print "\tMomentum scale/resolution: %.2f %%" % (100*relUncMomRes)
00130 print "\tBackground subtraction: %.2f %%" % (100*relUncBkg)
00131 print "\tSignal Recoil modeling: %.2f %%" % (100*relUncRecoil)
00132 print "\tMC statistics (acceptance): %.2f %%" % (100*relUncMCStat)
00133 print "\tTheory: %.2f %%" % (100./Wmunu*absCorrWmunu)
00134 print "\tTOTAL (LUMI excluded): %.2f %%\n" % (100./Wmunu*sqrt(absUncWmunu**2+absCorrWmunu**2))
00135
00136 Wplusmunu = 5.93821
00137 absStatWplusmunu = 0.02033
00138 absCorrWplusmunu = Wplusmunu*sqrt(0.013**2+0.014**2)
00139 relUncFit = 1.3e-2
00140 relUncPreTrig = 0.5e-2
00141 relUncSysEff = 0.4e-2
00142 relUncEff = sqrt(relUncFit**2+relUncPreTrig**2+relUncSysEff**2)
00143 relUncMomRes = 0.1e-2
00144 relUncRecoil = 0.4e-2
00145 relUncMCStat = 1.4e-3
00146 relUncBkg = 1.7e-2
00147 absUncWplusmunu=Wplusmunu*sqrt(relUncEff**2+relUncMomRes**2+relUncRecoil**2+relUncMCStat**2+relUncBkg**2)
00148 print "\nWplusmunu cross section = %.4f +- %.4f (stat.) +- %.4f (syst.) +- %.4f (theo.) +- %.4f (lumi.) [nb]" % (Wplusmunu, absStatWplusmunu, absUncWplusmunu, absCorrWplusmunu, Wplusmunu*relSysLumi)
00149 print " Systematics >>>>>>>"
00150 print "\tEfficiency(Zfit,Pretrig,Z->W): %.2f %%" % (100*relUncEff)
00151 print "\tMomentum scale/resolution: %.2f %%" % (100*relUncMomRes)
00152 print "\tBackground subtraction: %.2f %%" % (100*relUncBkg)
00153 print "\tSignal Recoil modeling: %.2f %%" % (100*relUncRecoil)
00154 print "\tMC statistics (acceptance): %.2f %%" % (100*relUncMCStat)
00155 print "\tTheory: %.2f %%" % (100./Wplusmunu*absCorrWplusmunu)
00156 print "\tTOTAL (LUMI excluded): %.2f %%\n" % (100./Wplusmunu*sqrt(absUncWplusmunu**2+absCorrWplusmunu**2))
00157
00158 Wminusmunu = 4.09297
00159 absStatWminusmunu = 0.01662
00160 absCorrWminusmunu = Wminusmunu*sqrt(0.019**2+0.013**2)
00161 relUncFit = 1.3e-2
00162 relUncPreTrig = 0.5e-2
00163 relUncSysEff = 0.4e-2
00164 relUncEff = sqrt(relUncFit**2+relUncPreTrig**2+relUncSysEff**2)
00165 relUncMomRes = 0.1e-2
00166 relUncRecoil = 0.4e-2
00167 relUncMCStat = 1.4e-3
00168 relUncBkg = 2.3e-2
00169 absUncWminusmunu=Wminusmunu*sqrt(relUncEff**2+relUncMomRes**2+relUncRecoil**2+relUncMCStat**2+relUncBkg**2)
00170 print "\nWminusmunu cross section = %.4f +- %.4f (stat.) +- %.4f (syst.) +- %.4f (theo.) +- %.4f (lumi.) [nb]" % (Wminusmunu, absStatWminusmunu, absUncWminusmunu, absCorrWminusmunu, Wminusmunu*relSysLumi)
00171 print " Systematics >>>>>>>"
00172 print "\tEfficiency(Zfit,Pretrig,Z->W): %.2f %%" % (100*relUncEff)
00173 print "\tMomentum scale/resolution: %.2f %%" % (100*relUncMomRes)
00174 print "\tBackground subtraction: %.2f %%" % (100*relUncBkg)
00175 print "\tSignal Recoil modeling: %.2f %%" % (100*relUncRecoil)
00176 print "\tMC statistics (acceptance): %.2f %%" % (100*relUncMCStat)
00177 print "\tTheory: %.2f %%" % (100./Wminusmunu*absCorrWminusmunu)
00178 print "\tTOTAL (LUMI excluded): %.2f %%\n" % (100./Wminusmunu*sqrt(absUncWminusmunu**2+absCorrWminusmunu**2))
00179
00180 Zmumu = 0.961
00181 absStatZmumu = 0.008
00182 absCorrZmumu = Zmumu*sqrt(0.012**2+0.016**2)
00183 relUncEff = 0.5e-2
00184
00185 relUncMomRes = 0.35e-2
00186 relUncTrigChanges = 0.1e-2
00187 relUncBkg = 0.28e-2
00188 absUncZmumu=Zmumu*sqrt(relUncEff**2+relUncMomRes**2+relUncBkg**2+relUncTrigChanges**2)
00189 print "\nZmumu cross section = %.4f +- %.4f (stat.) +- %.4f (syst.) +- %.4f (theo.) +- %.4f (lumi.) [nb]" % (Zmumu, absStatZmumu, absUncZmumu, absCorrZmumu, Zmumu*relSysLumi)
00190 print " Systematics >>>>>>>"
00191 print "\tEfficiency(Pretriggering): %.2f %%" % (100*relUncEff)
00192 print "\tMomentum scale/resolution: %.2f %%" % (100*relUncMomRes)
00193 print "\tBackground subtraction/fit: %.2f %%" % (100*relUncBkg)
00194 print "\tMC statistics (acceptance): %.2f %%" % (100*relUncMCStat)
00195 print "\tTheory: %.2f %%" % (100./Zmumu*absCorrZmumu)
00196 print "\tTOTAL (LUMI excluded): %.2f %%\n" % (100./Zmumu*sqrt(absUncZmumu**2+absCorrZmumu**2))
00197
00198 Ratiomunu = Wplusmunu/Wminusmunu
00199 absStatRatiomunu = 0.0078
00200 absCorrRatiomunu = Ratiomunu*sqrt(0.021**2+0.0129**2)
00201 relUncEff = 2.8e-2
00202 relUncMomRes = 0.3e-2
00203 relUncMCStat = sqrt(2)*1.4e-3
00204 relUncBkg = 0.7e-2
00205 absUncRatiomunu = Ratiomunu*sqrt(relUncEff**2+relUncMomRes**2+relUncMCStat**2+relUncBkg**2)
00206 print "\nRatiomunu cross section = %.4f +- %.4f (stat.) +- %.4f (syst.) +- %.4f (theo.)" % (Ratiomunu, absStatRatiomunu, absUncRatiomunu, absCorrRatiomunu)
00207 print " Systematics >>>>>>>"
00208 print "\tEfficiency(W+ versus W- tests): %.2f %%" % (100*relUncEff)
00209 print "\tMomentum scale/resolution: %.2f %%" % (100*relUncMomRes)
00210 print "\tBackground subtraction: %.2f %%" % (100*relUncBkg)
00211 print "\tMC statistics (acceptance): %.2f %%" % (100*relUncMCStat)
00212 print "\tTheory: %.2f %%" % (100./Ratiomunu*absCorrRatiomunu)
00213 print "\tTOTAL: %.2f %%\n" % (100./Ratiomunu*sqrt(absUncRatiomunu**2+absCorrRatiomunu**2))
00214
00215 WZmu = Wmunu/Zmumu
00216 absStatWZmu = WZmu*sqrt((absStatWmunu/Wmunu)**2+(absStatZmumu/Zmumu)**2)
00217 absCorrWZmu = WZmu*sqrt(0.011**2+0.0135**2)
00218 relUncEffW = 1.3e-2
00219 relUncMomResW = 0.3e-2
00220 relUncMomResZ = 0.2e-2
00221 relSysSubtract = sqrt(relUncEffW**2+relUncMomResW**2+relUncMomResZ**2)
00222 relSysAdd = abs(relUncMomResW-relUncMomResZ)
00223 absUncWZmu = WZmu*sqrt((absUncWmunu/Wmunu)**2 + (absUncZmumu/Zmumu)**2 - relSysSubtract**2 + relSysAdd**2)
00224 print "\nWZmu cross section = %.4f +- %.4f (stat.) +- %.4f (syst.) +- %.4f (theo.)" % (WZmu, absStatWZmu, absUncWZmu, absCorrWZmu)
00225 print " STATISTICAL UNCERTAINTY INCLUDES EFFICIENCY (via Zmumu fit)"
00226 print " Systematics >>>>>>>"
00227 print "\tUncorrelated with electrons: %.2f %%" % (100./WZmu*absUncWZmu)
00228 print "\tTheory: %.2f %%" % (100./WZmu*absCorrWZmu)
00229 print "\tTOTAL: %.2f %%\n" % (100./WZmu*sqrt(absUncWZmu**2+absCorrWZmu**2))
00230
00231
00232
00233
00234
00235
00236 def vbtfXSectionCheck(title, xsection, exsection, sysUnc, sysCor, relSysLumi):
00237 absSysLumi = xsection*relSysLumi
00238 print "VBTF inputs: %s = %.4f +- %.4f (stat.) +- %.4f (exp.) +- %.4f (the.) +- %.4f (lumi) [nb]" % (title, xsection, exsection, sysUnc, sysCor, absSysLumi)
00239
00240
00241 def vbtfXSectionAverage(title, xsection1, xsection2, exsection1, exsection2, sysUnc1, sysUnc2, sysCor1, sysCor2, relSysLumi):
00242 if OPTION== "StatisticalAverage":
00243 V11 = exsection1**2
00244 V22 = exsection2**2
00245 V12 = 0
00246 else:
00247 V11 = exsection1**2+sysUnc1**2+sysCor1**2
00248 V22 = exsection2**2+sysUnc2**2+sysCor2**2
00249 V12 = sysCor1*sysCor2
00250
00251 a1 = (V22-V12)/(V11+V22-2*V12)
00252 a2 = (V11-V12)/(V11+V22-2*V12)
00253 average = a1*xsection1 + a2*xsection2
00254 errstat = sqrt(a1**2*exsection1**2+a2**2*exsection2**2)
00255 errunco = sqrt(a1**2*sysUnc1**2 + a2**2*sysUnc2**2)
00256 errtheo = sqrt(a1**2*sysCor1**2 + a2**2*sysCor2**2 + 2*a1*a2*sysCor1*sysCor2)
00257 errsyst = sqrt(errunco**2+errtheo**2)
00258
00259 print "VBTF average: %s = %.4f +- %.4f (stat.) [nb]" % (title, average, errstat)
00260
00261 absSysLumi = average*relSysLumi
00262 print "\tVBTF systematics (1): +- %.4f (exp) +- %.4f (the) +- %.4f (lumi) [nb]" % (errunco, errtheo, absSysLumi)
00263 print "\tVBTF systematics (2): +- %.4f (exp+the) +- %.4f (lumi) [nb]" % (errsyst, absSysLumi)
00264
00265
00266 def vbtfRatioCheck(title, ratio, absStat, sysUnc, sysCor):
00267 print "VBTF inputs: %s = %.4f +- %.4f (stat.) +- %.4f (exp.) +- %.4f (the.)" % (title, ratio, absStat, sysUnc, sysCor)
00268
00269
00270 def vbtfRatioAverage(title, ratio1, ratio2, eratio1, eratio2, sysUnc1, sysUnc2, sysCor1, sysCor2):
00271 if OPTION== "StatisticalAverage":
00272 V11 = eratio1**2
00273 V22 = eratio2**2
00274 V12 = 0
00275 else:
00276 V11 = eratio1**2+(sysUnc1**2+sysCor1**2)
00277 V22 = eratio2**2+(sysUnc2**2+sysCor2**2)
00278 V12 = sysCor1*sysCor2
00279
00280 a1 = (V22-V12)/(V11+V22-2*V12)
00281 a2 = (V11-V12)/(V11+V22-2*V12)
00282 average = a1*ratio1 + a2*ratio2
00283 errstat = sqrt(a1**2*eratio1**2+a2**2*eratio2**2)
00284 errunco = sqrt(a1**2*sysUnc1**2 + a2**2*sysUnc2**2)
00285 errtheo = sqrt(a1**2*sysCor1**2 + a2**2*sysCor2**2 + 2*a1*a2*sysCor1*sysCor2)
00286 errsyst = sqrt(errunco**2+errtheo**2)
00287
00288 print "VBTF average: %s = %.4f +- %.4f (stat.)" % (title, average, errstat)
00289
00290 print "\tVBTF systematics (1): +- %.4f (exp) +- %.4f (the)" % (errunco, errtheo)
00291 print "\tVBTF systematics (2): +- %.4f (exp+the)" % (errsyst)
00292
00293
00294
00295
00296
00297
00298
00299
00300 print "\n>>>>>>>>>>>>>>>"
00301 vbtfXSectionCheck("W -> munu cross section",Wmunu,absStatWmunu,absUncWmunu,absCorrWmunu,relSysLumi)
00302 vbtfXSectionCheck("W -> enu cross section",Wenu,absStatWenu,absUncWenu,absCorrWenu,relSysLumi)
00303 vbtfXSectionAverage("W -> lnu cross section",Wmunu,Wenu,absStatWmunu,absStatWenu,absUncWmunu,absUncWenu,absCorrWmunu,absCorrWenu,relSysLumi)
00304
00305
00306
00307
00308 print "\n>>>>>>>>>>>>>>>"
00309 vbtfXSectionCheck("W+ -> munu cross section",Wplusmunu,absStatWplusmunu,absUncWplusmunu,absCorrWplusmunu,relSysLumi)
00310 vbtfXSectionCheck("W+ -> enu cross section",Wplusenu,absStatWplusenu,absUncWplusenu,absCorrWplusenu,relSysLumi)
00311 vbtfXSectionAverage("W+ -> lnu cross section",Wplusmunu,Wplusenu,absStatWplusmunu,absStatWplusenu,absUncWplusmunu,absUncWplusenu,absCorrWplusmunu,absCorrWplusenu,relSysLumi)
00312
00313
00314
00315
00316 print "\n>>>>>>>>>>>>>>>"
00317 vbtfXSectionCheck("W- -> munu cross section",Wminusmunu,absStatWminusmunu,absUncWminusmunu,absCorrWminusmunu,relSysLumi)
00318 vbtfXSectionCheck("W- -> enu cross section",Wminusenu,absStatWminusenu,absUncWminusenu,absCorrWminusenu,relSysLumi)
00319 vbtfXSectionAverage("W- -> lnu cross section",Wminusmunu,Wminusenu,absStatWminusmunu,absStatWminusenu,absUncWminusmunu,absUncWminusenu,absCorrWminusmunu,absCorrWminusenu,relSysLumi)
00320
00321
00322
00323
00324
00325 print "\n>>>>>>>>>>>>>>>"
00326 vbtfRatioCheck("W+ / W- cross section ratio, muon channel",Ratiomunu,absStatRatiomunu,absUncRatiomunu,absCorrRatiomunu)
00327 vbtfRatioCheck("W+ / W- cross section ratio, electron channel",Ratioenu,absStatRatioenu,absUncRatioenu,absCorrRatioenu)
00328 vbtfRatioAverage("W+ / W- cross section ratio",Ratiomunu,Ratioenu,absStatRatiomunu,absStatRatioenu,absUncRatiomunu,absUncRatioenu,absCorrRatiomunu,absCorrRatioenu)
00329
00330
00331
00332
00333
00334 print "\n>>>>>>>>>>>>>>>"
00335 vbtfXSectionCheck("Z -> mumu cross section",Zmumu,absStatZmumu,absUncZmumu,absCorrZmumu,relSysLumi)
00336 vbtfXSectionCheck("Z -> ee cross section",Zee,absStatZee,absUncZee,absCorrZee,relSysLumi)
00337 vbtfXSectionAverage("Z -> ll cross section",Zmumu,Zee,absStatZmumu,absStatZee,absUncZmumu,absUncZee,absCorrZmumu,absCorrZee,relSysLumi)
00338
00339
00340
00341
00342
00343 print "\n>>>>>>>>>>>>>>>"
00344 vbtfRatioCheck("W/Z ratio muons",WZmu,absStatWZmu,absUncWZmu,absCorrWZmu)
00345 vbtfRatioCheck("W/Z ratio electrons",WZe,absStatWZe,absUncWZe,absCorrWZe)
00346 vbtfRatioAverage("W/Z ratio",WZmu,WZe,absStatWZmu,absStatWZe,absUncWZmu,absUncWZe,absCorrWZmu,absCorrWZe)