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")
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