8 self.
pt_bins_hf = np.array([20, 30, 40, 60, 100, 160, 10000])
14 self.
btag =
"pfCombinedInclusiveSecondaryVertexV2BJetTags"
15 self.
init(fn_hf, fn_lf)
18 return int(bvec.searchsorted(val) - 1)
20 def init(self, fn_hf, fn_lf) :
21 print "[BTagWeightCalculator]: Initializing from files", fn_hf, fn_lf
31 if not tf
or tf.IsZombie():
32 raise FileError(
"Could not open file {0}".
format(fn))
34 for k
in tf.GetListOfKeys():
36 if not (kn.startswith(
"csv_ratio")
or kn.startswith(
"c_csv_ratio") ):
39 is_c = 1
if kn.startswith(
"c_csv_ratio")
else 0
41 if spl[2+is_c] ==
"all":
47 ptbin = int(spl[2+is_c][2:])
48 etabin = int(spl[3+is_c][3:])
50 if len(spl)==(6+is_c):
54 ret[(ptbin, etabin, kind, syst)] = k.ReadObj().Clone()
60 fl =
abs(jet.hadronFlavour())
61 csv = jet.btag(self.
btag)
67 if is_b
and not (systematic
in [
"JESUp",
"JESDown",
"LFUp",
"LFDown",
68 "Stats1Up",
"Stats1Down",
"Stats2Up",
"Stats2Down",
71 if is_c
and not (systematic
in [
"cErr1Up",
"cErr1Down",
"cErr2Up",
"cErr2Down",
74 if is_l
and not (systematic
in [
"JESUp",
"JESDown",
"HFUp",
"HFDown",
75 "Stats1Up",
"Stats1Down",
"Stats2Up",
"Stats2Down",
87 if ptbin < 0
or etabin < 0:
90 k = (ptbin, etabin, kind, systematic)
91 hdict = self.
pdfs[
"lf"]
93 hdict = self.
pdfs[
"hf"]
94 h = hdict.get(k,
None)
100 csvbin = h.FindBin(csv)
102 if csvbin <= 0
or csvbin > h.GetNbinsX():
105 w = h.GetBinContent(csvbin)
114 wtot = np.prod(weights)
Abs< T >::type abs(const T &t)