def METHOD_NAME(self, fn):
    """
    Initialized the lookup table for b-tag weight histograms based on jet
    pt, eta and flavour.
    The format of the weight file is similar to:
     KEY: TH1D     csv_ratio_Pt0_Eta0_final;1
     KEY: TH1D     csv_ratio_Pt0_Eta0_final_JESUp;1
     KEY: TH1D     csv_ratio_Pt0_Eta0_final_JESDown;1
     KEY: TH1D     csv_ratio_Pt0_Eta0_final_LFUp;1
     KEY: TH1D     csv_ratio_Pt0_Eta0_final_LFDown;1
     KEY: TH1D     csv_ratio_Pt0_Eta0_final_Stats1Up;1
     KEY: TH1D     csv_ratio_Pt0_Eta0_final_Stats1Down;1
     KEY: TH1D     csv_ratio_Pt0_Eta0_final_Stats2Up;1
     KEY: TH1D     csv_ratio_Pt0_Eta0_final_Stats2Down;1
     KEY: TH1D     c_csv_ratio_Pt0_Eta0_final;2
     KEY: TH1D     c_csv_ratio_Pt0_Eta0_final;1
     KEY: TH1D     c_csv_ratio_Pt0_Eta0_final_cErr1Up;1
     KEY: TH1D     c_csv_ratio_Pt0_Eta0_final_cErr1Down;1
     KEY: TH1D     c_csv_ratio_Pt0_Eta0_final_cErr2Up;1
     KEY: TH1D     c_csv_ratio_Pt0_Eta0_final_cErr2Down;1
    """
    ret = {}
    tf = ROOT.TFile(fn)
    if not tf or tf.IsZombie():
        raise FileNotFoundError("Could not open file {0}".format(fn))
    ROOT.gROOT.cd()
    for k in tf.GetListOfKeys():
        kn = k.GetName()
        if not (kn.startswith("csv_ratio") or kn.startswith("c_csv_ratio") ):
            continue
        spl = kn.split("_")
        is_c = 1 if kn.startswith("c_csv_ratio") else 0
        if spl[2+is_c] == "all":
            ptbin = -1
            etabin = -1
            kind = "all"
            syst = "nominal"
        else:
            ptbin = int(spl[2+is_c][2:])
            etabin = int(spl[3+is_c][3:])
            kind = spl[4+is_c]
            if len(spl)==(6+is_c):
                syst = spl[5+is_c]
            else:
                syst = "nominal"
        ret[(is_c, ptbin, etabin, kind, syst)] = k.ReadObj().Clone()
    return ret