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 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237
### Configuration Fragment Include for HLTExoticaValidator module.
### In this file we instantiate the HLTExoticaValidator, with
### some default configurations. The specific analyses are loaded
### as cms.PSets, which are then added to this module with
### specific names. The canonical example is 
#
# from HLTriggerOffline.Exotica.hltExoticaHighPtDimuon_cff import HighPtDimuonPSet
#
# which is then made known to the module by the line
#
# analysis       = cms.vstring("HighPtDimuon"),
#

import FWCore.ParameterSet.Config as cms

# Validation categories (sub-analyses)
from HLTriggerOffline.Exotica.analyses.hltExoticaLowPtTrimuon_cff      import LowPtTrimuonPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaHighPtDimuon_cff      import HighPtDimuonPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaHighPtDielectron_cff  import HighPtDielectronPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaLowPtDimuon_cff       import LowPtDimuonPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaLowPtDielectron_cff   import LowPtDielectronPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaHighPtElectron_cff    import HighPtElectronPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaLowPtElectron_cff     import LowPtElectronPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaHighPtPhoton_cff      import HighPtPhotonPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaDiPhoton_cff          import DiPhotonPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaDisplacedDiPhoton_cff import DisplacedDiPhotonPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaPFHT_cff              import PFHTPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaCaloHT_cff            import CaloHTPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaJetNoBptx_cff         import JetNoBptxPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaMuonNoBptx_cff        import MuonNoBptxPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaDisplacedMuEG_cff     import DisplacedMuEGPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaDisplacedDimuon_cff   import DisplacedDimuonPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaDisplacedL2Dimuon_cff import DisplacedL2DimuonPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaPureMET_cff           import PureMETPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaMETplusTrack_cff      import METplusTrackPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaMonojet_cff           import MonojetPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaMonojetBackup_cff     import MonojetBackupPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaEleMu_cff             import EleMuPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaHTDisplacedJets_cff   import HTDisplacedJetsPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaPhotonMET_cff         import PhotonMETPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaSingleMuon_cff        import SingleMuonPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaDSTJets_cff           import DSTJetsPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaDSTMuons_cff          import DSTMuonsPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaTracklessJets_cff     import TracklessJetsPSet

from DQMServices.Core.DQMEDAnalyzer import DQMEDAnalyzer
hltExoticaValidator = DQMEDAnalyzer(

    "HLTExoticaValidator",
		
    hltProcessName = cms.string("HLT"),
    
    # -- The name of the analysis. This is the name that
    # appears in Run summary/Exotica/ANALYSIS_NAME

    analyses       = cms.vstring(
        "LowPtTrimuon",
        "HighPtDimuon",
        "HighPtDielectron",
        "LowPtDimuon",
        "LowPtDielectron",
        "HighPtElectron",
        "LowPtElectron",
        "HighPtPhoton",
        "DiPhoton",
        "DisplacedDiPhoton",
        "SingleMuon",
        "JetNoBptx",
        "MuonNoBptx",
        "PFHT",
        "CaloHT",
        "DisplacedMuEG",
        "DisplacedDimuon",
        "DisplacedL2Dimuon",
        "PureMET",
        "METplusTrack",
        "Monojet",
        "MonojetBackup",
        "EleMu",
        "PhotonMET",
        "HTDisplacedJets",
        "DSTJets",
        "DSTMuons",
        "TracklessJets"
        ),
    
    # -- The instance name of the reco::GenParticles collection
    genParticleLabel = cms.string("genParticles"),

    # -- The instance name of the reco::BeamSpot collection
    beamSpotLabel = cms.string("offlineBeamSpot"),

    # -- The binning of the Pt efficiency plots
    # NOTICE: these DEFINITELY should be tuned for the different analyses.
    # What we have there is a generic, 0-100 GeV uniform binning.
    parametersTurnOn = cms.vdouble( 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20,
                                   22, 24, 26, 28, 30, 32, 34, 36, 38, 40,
                                   42, 44, 46, 48, 50, 52, 54, 56, 58, 60,
                                   62, 64, 66, 68, 70, 72, 74, 76, 78, 80,
                                   82, 84, 86, 88, 90, 92, 94, 96, 98, 100,
                                   ),

    # TurnOn for SumEt
    parametersTurnOnSumEt = cms.vdouble(    0,  100,  200,  300,  400,  500,  600,  700,  800,  900,
                                         1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900,  
                                         2000, 2100, 2200, 2300, 2400, 2500, 2600, 2700, 2800, 2900,  
                                         3000, 3100, 3200, 3300, 3400, 3500, 3600, 3700, 3800, 3900,  
                                         4000, 4100, 4200, 4300, 4400, 4500, 4600, 4700, 4800, 4900,  
                                         5000, 5100, 5200, 5300, 5400, 5500, 5600, 5700, 5800, 5900,  
                                         6000, 6100, 6200, 6300, 6400, 6500, 6600, 6700, 6800, 6900,  
                                         7000
                                       ),

    # -- (NBins, minVal, maxValue) for the Eta and Phi efficiency plots
    parametersEta      = cms.vdouble(48, -2.400, 2.400),
    parametersPhi      = cms.vdouble(50, -3.142, 3.142),
    parametersDxy      = cms.vdouble(50, -0.015, 0.015),

    # Definition of generic cuts on generated and reconstructed objects (note that
    # these cuts can be overloaded inside a particular analysis)
    # Objects recognized: Mu Ele Photon PFTau Jet MET => recognized by the method EVTColContainer::getTypeString
    # Syntax in the strings: valid syntax of the StringCutObjectSelector class

    # --- Muons
    Mu_genCut     = cms.string("pt > 10 && abs(eta) < 2.4 && abs(pdgId) == 13 && (isPromptFinalState || isDirectPromptTauDecayProductFinalState)"),
    Mu_recCut     = cms.string("pt > 10 && abs(eta) < 2.4 && isPFMuon && (isTrackerMuon || isGlobalMuon)"), # Loose Muon
    
    # --- MuonTracks
    #refittedStandAloneMuons_genCut  = cms.string("pt > 10 && abs(eta) < 2.4 && abs(pdgId) == 13 && status == 1"),
    refittedStandAloneMuons_genCut  = cms.string("pt > 10 && abs(eta) < 2.4"),
    #refittedStandAloneMuons_recCut  = cms.string("pt > 10 && abs(eta) < 2.4 && isPFMuon && (isTrackerMuon || isGlobalMuon)"), # Loose Muon
    refittedStandAloneMuons_recCut  = cms.string("pt > 10 && abs(eta) < 2.4"), 

    # --- Electrons
    Ele_genCut      = cms.string("pt > 10 && (abs(eta)<1.444 || abs(eta)>1.566) && abs(eta)<2.5 && abs(pdgId) == 11 && (isPromptFinalState||isDirectPromptTauDecayProductFinalState)"),
    Ele_recCut      = cms.string(
        "pt > 10 && (abs(eta)<1.444 || abs(eta)>1.566) && abs(eta)< 2.5 "+
        " && hadronicOverEm < 0.05 "+ #&& eSuperClusterOverP > 0.5 && eSuperClusterOverP < 1.5 "+
        " && abs(deltaEtaSuperClusterTrackAtVtx)<0.007 &&  abs(deltaPhiSuperClusterTrackAtVtx)<0.06 "+
        " && sigmaIetaIeta<0.03 "+
        " && (pfIsolationVariables.sumChargedParticlePt + pfIsolationVariables.sumNeutralHadronEtHighThreshold + pfIsolationVariables.sumPhotonEtHighThreshold )/pt < 0.10 "+
        " && abs(1/energy - 1/p)<0.05"),
        #" && abs(trackPositionAtVtx.z-vertexPosition.z)<"),
    #" && "), # Loose-like electron

    # --- Photons
    Photon_genCut     = cms.string("pt > 20 && abs(eta) < 2.4 && abs(pdgId) == 22 && isPromptFinalState"),
    Photon_recCut     = cms.string("pt > 20 && abs(eta) < 2.4"), # STILL MISSING THIS INFO
    Photon_genCut_leading  = cms.string("pt > 150 "),
    Photon_recCut_leading  = cms.string("pt > 150 "),
   
    # --- Taus: 
    PFTau_genCut      = cms.string("pt > 20 && abs(eta) < 2.4 && abs(pdgId) == 15 && isPromptDecayed"),
    PFTau_recCut      = cms.string("pt > 20 && abs(eta) < 2.4"),  # STILL MISSING THIS INFO
   
    # --- Jets: 
    PFJet_genCut      = cms.string("pt > 30 && abs(eta) < 2.4"),
    PFJet_recCut      = cms.string("pt > 30 && abs(eta) < 2.4 &&"+
                                     "(neutralHadronEnergy + HFHadronEnergy)/energy < 0.99 &&"+
                                     "neutralEmEnergyFraction < 0.99 &&"+
                                     "numberOfDaughters > 1 &&"+
                                     "chargedHadronEnergyFraction > 0 &&"+
                                     "chargedMultiplicity > 0 && "+
                                     "chargedEmEnergyFraction < 0.99"),  # Loose PFJet

    CaloJet_genCut      = cms.string("pt > 30 && abs(eta) < 2.4"),
    CaloJet_recCut      = cms.string("pt > 30 && abs(eta) < 2.4"), # find realistic cuts
   
    # --- MET 
    MET_genCut      = cms.string("pt > 75"),
    MET_recCut      = cms.string("pt > 75"),  
   
    PFMET_genCut    = cms.string("pt > 75"),
    PFMET_recCut    = cms.string("pt > 75"),  

    PFMHT_genCut    = cms.string("pt > 75"),
    PFMHT_recCut    = cms.string("pt > 75"),  
   
    GenMET_genCut   = cms.string("pt > 75"),
    GenMET_recCut   = cms.string("pt > 75"),  
   
    Track_genCut      = cms.string("pt > 50"),
    Track_recCut      = cms.string("pt > 50"),
    
    CaloMET_genCut  = cms.string("pt > 75"),
    CaloMET_recCut  = cms.string("pt > 75"),

    CaloMHT_genCut  = cms.string("pt > 75"),
    CaloMHT_recCut  = cms.string("pt > 75"),  
   
    hltMET_genCut   = cms.string("pt > 75"),
    hltMET_recCut   = cms.string("pt > 75"),  
   
    # The specific parameters per analysis: the name of the parameter set has to be 
    # the same as the defined ones in the 'analysis' datamember. Each analysis is a PSet
    # with the mandatory attributes:
    #    - hltPathsToCheck (cms.vstring) : a list of all the trigger pats to be checked 
    #                 in this analysis. Up to the version number _v, but not including 
    #                 the number in order to avoid this version dependence. Example: HLT_Mu18_v
    #    - recVarLabel (cms.string): where Var is Mu, Ele, Photon, MET, Jet, PFTau, MET. This
    #                 attribute is the name of the INSTANCE LABEL for each RECO collection to 
    #                 be considered in the analysis. Note that the trigger paths rely on some 
    #                 objects which need to be defined here, otherwise the code will complain. 
    #    - minCandidates (cms.uint32): the minimum number of GEN/RECO objects in the event
    # Besides the mandatory attributes, you can redefine the generation and reconstruction cuts
    # for any object you want.
    #    * Var_genCut, Var_recCut (cms.string): where Var=Mu, Ele, Photon, Jet, PFTau, MET (see above)

    LowPtTrimuon     = LowPtTrimuonPSet,
    HighPtDimuon     = HighPtDimuonPSet,
    HighPtDielectron = HighPtDielectronPSet,
    LowPtDimuon      = LowPtDimuonPSet,
    LowPtDielectron  = LowPtDielectronPSet,
    HighPtElectron   = HighPtElectronPSet,
    LowPtElectron    = LowPtElectronPSet,
    HighPtPhoton     = HighPtPhotonPSet,                                 
    DiPhoton         = DiPhotonPSet,                                 
    DisplacedDiPhoton = DisplacedDiPhotonPSet,
    SingleMuon       = SingleMuonPSet,
    JetNoBptx        = JetNoBptxPSet,
    MuonNoBptx       = MuonNoBptxPSet,
    DisplacedMuEG    = DisplacedMuEGPSet,
    DisplacedDimuon  = DisplacedDimuonPSet,
    DisplacedL2Dimuon = DisplacedL2DimuonPSet,
    PureMET          = PureMETPSet,                                 
    METplusTrack     = METplusTrackPSet,                                 
    Monojet          = MonojetPSet,
    MonojetBackup    = MonojetBackupPSet,
    PFHT             = PFHTPSet,
    CaloHT           = CaloHTPSet,
    EleMu            = EleMuPSet,
    PhotonMET        = PhotonMETPSet,
    HTDisplacedJets  = HTDisplacedJetsPSet, 
    DSTJets          = DSTJetsPSet, 
    DSTMuons         = DSTMuonsPSet,
    TracklessJets    = TracklessJetsPSet
)