Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
import FWCore.ParameterSet.Config as cms
from DQMServices.Core.DQMEDHarvester import DQMEDHarvester

from DQMOffline.Trigger.HLTTauDQMOffline_cfi import *

def makeInclusiveAnalyzer(monitorModule):
    m1 = DQMEDHarvester("DQMGenericClient",
        subDirs        = cms.untracked.vstring(monitorModule.DQMBaseFolder.value()+"/"+monitorModule.PathSummaryPlotter.DQMFolder.value()),
        verbose        = cms.untracked.uint32(0), # Set to 2 for all messages
        outputFileName = cms.untracked.string(''),
        resolution     = cms.vstring(),
        efficiency     = cms.vstring(),
        efficiencyProfile = cms.untracked.vstring(
            "PathEfficiency 'Accepted Events per Path;;' helpers/PathTriggerBits helpers/RefEvents"
        ),
    )

    m2 = DQMEDHarvester("HLTTauPostProcessor",
        DQMBaseFolder = cms.untracked.string(monitorModule.DQMBaseFolder.value())
    )

    return (m1, m2)

def makePFTauAnalyzer(monitorModule):
    (m1, m2) = makeInclusiveAnalyzer(monitorModule)
    m1.subDirs.extend([monitorModule.DQMBaseFolder.value()+"/HLT_.*",
                       monitorModule.DQMBaseFolder.value()+"/"+monitorModule.L1Plotter.DQMFolder.value(),
                       monitorModule.DQMBaseFolder.value()+"/.*"])

    def _addEfficiencies(level, quantities, nameFormat, titleObject="#tau", postfix=""):
        if postfix != "":
            postfix = " "+postfix
        for quantity, titleLabel in quantities:
            name = nameFormat % (level, quantity)
            title = "%s %s %s efficiency%s" % (level, titleObject, titleLabel, postfix)
            m1.efficiencyProfile.append("%s '%s' helpers/%sNum helpers/%sDenom" % (name, title, name, name))

    _addEfficiencies("L1", [("Et", "E_{T}"),
                            ("Eta", "#eta"),
                            ("Phi", "#phi")], "%sTau%sEff")
    _addEfficiencies("L1", [("Et", "E_{T}"),
                            ("Eta", "#eta"),
                            ("Phi", "#phi")], "%sIsoTau%sEff")
    _addEfficiencies("L1", [("HighEt", "E_{T}")], "%sTau%sEff", postfix="(high E_{T})")

    _addEfficiencies("L1", [("Et", "E_{T}")], "%sETM%sEff", "ETM")

    _addEfficiencies("L2", [("Et", "E_{T}"),
                            ("Phi", "#phi")], "%sTrigMET%sEff", "MET")
    _addEfficiencies("tau", [("Et", "E_{T}"),("Eta", "#eta"),("Phi", "#phi")], "%s%sEff", titleObject="")
    _addEfficiencies("muon", [("Et", "E_{T}"),("Eta", "#eta"),("Phi", "#phi")], "%s%sEff", titleObject="")
    _addEfficiencies("electron", [("Et", "E_{T}"),("Eta", "#eta"),("Phi", "#phi")], "%s%sEff", titleObject="")
    _addEfficiencies("met", [("Et", "E_{T}"),("Phi", "#phi")], "%s%sEff", titleObject="")

    for level in ["L2", "L3"]:
        _addEfficiencies(level, [("Et", "p_{T}"),
                                 ("Eta", "#eta"),
                                 ("Phi", "#phi")], "%sTrigTau%sEff")
        _addEfficiencies(level, [("HighEt", "p_{T}")], "%sTrigTau%sEff", postfix="(high p_{T})")
        _addEfficiencies(level, [("Et", "p_{T}"),
                                 ("Eta", "#eta"),
                                 ("Phi", "#phi")], "%sTrigElectron%sEff", "electron")
        _addEfficiencies(level, [("Et", "p_{T}"),
                                 ("Eta", "#eta"),
                                 ("Phi", "#phi")], "%sTrigMuon%sEff", "muon")

    m1.efficiency.append("L3EtaPhiEfficiency 'eta phi eff; #eta; #phi' helpers/L3TrigTauEtaPhiEffNum helpers/L3TrigTauEtaPhiEffDenom")
    m1.efficiency.append("tauEtaPhiEfficiency 'eta phi eff; #eta; #phi' helpers/tauEtaPhiEffNum helpers/tauEtaPhiEffDenom")
    m1.efficiency.append("muonEtaPhiEfficiency 'eta phi eff; #eta; #phi' helpers/muonEtaPhiEffNum helpers/muonEtaPhiEffDenom")
    m1.efficiency.append("electronEtaPhiEfficiency 'eta phi eff; #eta; #phi' helpers/electronEtaPhiEffNum helpers/electronEtaPhiEffDenom")

    return (m1, m2)


(HLTTauPostAnalysisInclusive, HLTTauPostAnalysisInclusive2) = makeInclusiveAnalyzer(hltTauOfflineMonitor_Inclusive)
(HLTTauPostAnalysisPFTaus, HLTTauPostAnalysisPFTaus2) = makePFTauAnalyzer(hltTauOfflineMonitor_PFTaus)
(HLTTauPostAnalysisPNetTaus, HLTTauPostAnalysisPNetTaus2) = makePFTauAnalyzer(hltTauOfflineMonitor_PNetTaus)
(HLTTauPostAnalysisTP, HLTTauPostAnalysisTP2) = makePFTauAnalyzer(hltTauOfflineMonitor_TagAndProbe)

HLTTauPostSeq = cms.Sequence(
    HLTTauPostAnalysisInclusive+HLTTauPostAnalysisInclusive2+
    HLTTauPostAnalysisPFTaus+HLTTauPostAnalysisPFTaus2+
    HLTTauPostAnalysisPNetTaus+HLTTauPostAnalysisPNetTaus2+
    HLTTauPostAnalysisTP+HLTTauPostAnalysisTP2
)