Beispiel #1
0
    def init(self):
        self.a4 = OutputStream(open(self.file_name, "w"), "AOD2A4", Event, EventStreamInfo)

        import PyCintex
        PyCintex.loadDict("egammaAnalysisTools")
        self.tool_ciwt = PyAthena.py_tool("CaloIsolationWrapperTool", iface="ICaloIsolationWrapperTool")
        assert bool(self.tool_ciwt)
        PyCintex.loadDictionary("TrigMuonEvent")
        PyCintex.loadDictionary("TrigObjectMatching")
        self.tmefih = PyCintex.makeClass("TrigMatch::TrigMuonEFInfoHelper")

        from ROOT import vector

        PyCintex.loadDictionary("JetUtils")

        from ROOT import JetCaloHelper, JetCaloQualityUtils, Long, CaloSampling
        self.jet_emf = lambda jet : JetCaloHelper.jetEMFraction(jet)
        self.jet_hecF = lambda jet : JetCaloQualityUtils.hecF(jet)
        ### smax needed for jet cealning
        #### FIX THIS: don't know either getNumberOfSamplings() or Unknown
        #### UPDATE: getNumberOfSamplings just returns Unknown!
        self.jet_smax = Long(CaloSampling.getNumberOfSamplings())
        self.jet_fmax = lambda jet : JetCaloQualityUtils.fracSamplingMax(jet, Long(CaloSampling.Unknown))
        self.jet_time = lambda jet : JetCaloQualityUtils.jetTimeCells(jet)
        self.jet_quality_lar = lambda jet : JetCaloQualityUtils.jetQualityLAr(jet)
        self.jet_quality_hec = lambda jet : JetCaloQualityUtils.jetQualityHEC(jet)

        self.jet_bad = lambda jet : JetCaloQualityUtils.isBad(jet, False)
        self.jet_ugly = lambda jet : JetCaloQualityUtils.isUgly(jet, False)

        PyCintex.loadDictionary("egammaEnumsDict")
        PyCintex.loadDictionary("muonEventDict")
        PyCintex.loadDictionary("egammaAnalysisUtils")
        
        PyCintex.loadDictionary("MissingETEvent")
        from ROOT import MuonParameters, egammaParameters, egammaPID
        from ROOT import ElectronMCChargeCorrector
        self.MuonParameters = MuonParameters
        self.egammaParameters = egammaParameters
        self.egammaPID = egammaPID
        self.empp_helper = PyCintex.makeClass("isEMPlusPlusHelper")()

        if self.year == 2010: 
            gROOT.ProcessLine(".L checkOQ.C++")
            from ROOT import egammaOQ
            self.egOQ = egammaOQ()
            self.egOQ.initialize()

        self.tool_ttv = PyAthena.py_tool("Reco::TrackToVertex", iface="Reco::ITrackToVertex")
        self.tool_tdt = PyAthena.py_tool('Trig::TrigDecisionTool/TrigDecisionTool')
        self.tool_tmt = PyAthena.py_tool("TrigMatchTool/TrigMatchTool")
        self.tool_hfor= PyAthena.py_tool("HforTool",iface="IHforTool")
        self.tool_timing = PyAthena.py_tool("Rec::MuonCombinedTimingTool/MuonCombinedTimingTool", iface="Rec::IMuonCombinedTimingTool")
        PyCintex.loadDictionary("TrkSpaceTimePoint")
Beispiel #2
0
    def electron_cuts(self, cg):
    # container selection electrons - all standalone
        # Electron Filters:
        import PyCintex
        PyCintex.loadDictionary('egammaEnumsDict')
        gROOT.ProcessLine(".L checkOQ.C+")
        from ROOT import egammaParameters, egammaOQ
        egOQ = egammaOQ()
        egOQ.initialize()
        from robustIsEMDefs import elRobusterTight

        cg(Cut("author", lambda el : el.author() in (1,3)))

        def author(el):
            return el.author() in (1,3)

        def pass_otx(el):
            rn = 999999 if self.is_mc else self.run_number
            eta, phi = el.cluster().eta(), el.cluster().phi()
            return egOQ.checkOQClusterElectron(rn, eta, phi) != 3
        cg(Cut("otx", pass_otx, dep=author))

        def cluster_pt(el):
            return el.cluster().e()*sin(theta_from_eta(el.cluster().eta()))
        cg(Cut("pt", lambda el : cluster_pt(el) > 20*GeV, dep=author))


        def eta_in_range(eta):
            return abs(eta) < 2.47 and not (1.37 <= abs(eta) <= 1.52)
        cg(Cut("eta", lambda el: eta_in_range(el.cluster().eta()), dep=author))

        cg(Cut("robusterTight", lambda el : elRobusterTight(el), dep=author))

        def vertex0_d0_sig(el):
            assert self.vertices
            assert self.vertices[0]
            assert self.vertices[0].recVertex()
            assert self.vertices[0].recVertex().position()
            assert el.trackParticle()    
            vxp = self.vertices[0].recVertex().position()
            pavV0 = self.tool_ttv.perigeeAtVertex(el.trackParticle(), vxp)
            return pavV0.parameters()[0]/pavV0.localErrorMatrix().error(0)

        cg(Cut("vertex_d0", lambda el : abs(vertex0_d0_sig(el)) < 10, 
                            dep=lambda el : author(el) and self.vertices))

        cg(Cut("etiso30", lambda el : el.detailValue(egammaParameters.etcone30) < 6*GeV))
        return cg