def init(self):
        self.correctors = []
        with open(self.jecDefPath) as inf:
            for l in inf:
                #c = LinearCorrector(l)
                c = FancyCorrector(l)
                self.correctors.append((c, c.etas[0], c.etas[1]))

        print self.correctors

        #self.jetBranch = "hltAK4PFJetsCorrected"
        self.jetBranch = "hltAK4PFJets"
        #self.jetBranch = "pfAK4CHS"
        self.jets = GenericGetter(self.jetBranch, "eta")

        self.hist = {}
        self.hist["pt"] = ROOT.TH1F("pt", "pt", 100, -0.5, 99.5)
        self.hist["ptGen"] = ROOT.TH1F("ptGen", "ptGen", 100, -0.5, 99.5)
        self.hist["rho"] = ROOT.TH1F("rho", "rho", 100, -0.5, 99.5)
        self.hist["area"] = ROOT.TH1F("area", "area", 100, 0, 1)
        self.hist["eta"] = ROOT.TH1F("eta", "eta", 100, -5.5, 5.5)
        self.hist["bestdr"] = ROOT.TH1F("bestdr", "bestdr", 100, 0, 2)
        self.hist["ptGenVsPtRec"] = ROOT.TH2F("ptGenVsPtRec", "ptGenVsPtRec",
                                              100, 0, 100, 100, 0, 100)
        self.hist["ptGenVsPtRecPR"] = ROOT.TProfile("ptGenVsPtRecPR",
                                                    "ptGenVsPtRecPR", 100, 0,
                                                    1000, 0, 1000)
        self.hist["deltaPtGenRecVsRho"] = ROOT.TProfile(
            "deltaPtGenRecVsRho", "deltaPtGenRecVsRho", 100, 0, 100)
        self.hist["deltaPtGenRecVsRhoArea"] = ROOT.TProfile(
            "deltaPtGenRecVsRhoArea", "deltaPtGenRecVsRhoArea", 100, 0, 100)

        self.ptPoints = [15, 20, 25, 30, 35, 40, 45]
        for p in self.ptPoints:
            n1 = "deltaPtGenRecVsRho_" + str(p)
            n2 = "deltaPtGenRecVsRhoArea_" + str(p)
            n3 = "deltaR_" + str(p)
            self.hist[n1] = ROOT.TProfile(n1, n1, 100, 0, 100)
            self.hist[n2] = ROOT.TProfile(n2, n2, 100, 0, 100)
            self.hist[n3] = ROOT.TH1F(n3, n3, 100, 0, 2)

        self.rhoPoints = [20, 25, 30, 35, 40]
        for p in self.rhoPoints:
            n1 = "ptGenVsPtRecPR_" + str(p)
            self.hist[n1] = ROOT.TProfile(n1, n1, 100, 0, 1000, 0, 1000)

        prefixes = ["", "my_"]
        for p in prefixes:
            self.hist[p + "response"] = ROOT.TH1F(p + "response",
                                                  p + "response", 100, 0, 2)
            self.hist[p + "responseVsGenPT"] = ROOT.TProfile(
                p + "responseVsGenPT", p + "responseVsGenPT", 100, 0, 100, 0,
                10)
            self.hist[p + "responseVsEta"] = ROOT.TProfile(
                p + "responseVsEta", p + "responseVsEta", 20, -5.5, 5.5, 0, 10)
            self.hist[p + "responseVsPU"] = ROOT.TProfile(
                p + "responseVsPU", p + "responseVsPU", 20, 0, 100, 0, 10)
            # PU, genPT -> response
            self.hist[p+"responseVsPUVsGenPT"] = ROOT.TProfile2D(p+"responseVsPUVsGenPT", p+"responseVsPUVsGenPT", 20, 0, 100,  \
                                                                                                                 100, 0, 100, \
                                                                                                                 0, 10)
        '''
            area
            bestdr
            eta
            pt
            ptGen
            ptGenRatio
            rho
        '''

        self.trees = {}
        self.trees["fit"] = ROOT.TTree("dataFit", "dataFit")
        self.GetOutputList().Add(self.trees["fit"])
        self.trees["val"] = ROOT.TTree("dataVal", "dataVal")
        self.GetOutputList().Add(self.trees["val"])

        self.var = {}
        self.var["weight"] = array('d', [0])
        self.var["ptRaw"] = array('d', [0])
        self.var["ptGen"] = array('d', [0])
        self.var["eta"] = array('d', [0])
        self.var["rho"] = array('d', [0])
        self.var["area"] = array('d', [0])
        self.var["rhoarea"] = array('d', [0])
        self.var["deltaPtRawGen"] = array('d', [0])
        for v in self.var:
            self.trees["fit"].Branch(v, self.var[v], v + "/D")
            self.trees["val"].Branch(v, self.var[v], v + "/D")

        for h in self.hist:
            self.hist[h].Sumw2()
            self.GetOutputList().Add(self.hist[h])