CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
hltExoticaValidator_cfi.py
Go to the documentation of this file.
1 ### Configuration Fragment Include for HLTExoticaValidator module.
2 ### In this file we instantiate the HLTExoticaValidator, with
3 ### some default configurations. The specific analyses are loaded
4 ### as cms.PSets, which are then added to this module with
5 ### specific names. The canonical example is
6 #
7 # from HLTriggerOffline.Exotica.hltExoticaHighPtDimuon_cff import HighPtDimuonPSet
8 #
9 # which is then made known to the module by the line
10 #
11 # analysis = cms.vstring("HighPtDimuon"),
12 #
13 
14 import FWCore.ParameterSet.Config as cms
15 
16 # Validation categories (sub-analyses)
17 from HLTriggerOffline.Exotica.analyses.hltExoticaLowPtTrimuon_cff import LowPtTrimuonPSet
18 from HLTriggerOffline.Exotica.analyses.hltExoticaHighPtDimuon_cff import HighPtDimuonPSet
19 from HLTriggerOffline.Exotica.analyses.hltExoticaHighPtDielectron_cff import HighPtDielectronPSet
20 from HLTriggerOffline.Exotica.analyses.hltExoticaLowPtDimuon_cff import LowPtDimuonPSet
21 from HLTriggerOffline.Exotica.analyses.hltExoticaLowPtDielectron_cff import LowPtDielectronPSet
22 from HLTriggerOffline.Exotica.analyses.hltExoticaHighPtElectron_cff import HighPtElectronPSet
23 from HLTriggerOffline.Exotica.analyses.hltExoticaLowPtElectron_cff import LowPtElectronPSet
24 from HLTriggerOffline.Exotica.analyses.hltExoticaHighPtPhoton_cff import HighPtPhotonPSet
25 from HLTriggerOffline.Exotica.analyses.hltExoticaDiPhoton_cff import DiPhotonPSet
26 from HLTriggerOffline.Exotica.analyses.hltExoticaPFHT_cff import PFHTPSet
27 from HLTriggerOffline.Exotica.analyses.hltExoticaCaloHT_cff import CaloHTPSet
28 from HLTriggerOffline.Exotica.analyses.hltExoticaJetNoBptx_cff import JetNoBptxPSet
29 from HLTriggerOffline.Exotica.analyses.hltExoticaMuonNoBptx_cff import MuonNoBptxPSet
30 from HLTriggerOffline.Exotica.analyses.hltExoticaDisplacedMuEG_cff import DisplacedMuEGPSet
31 from HLTriggerOffline.Exotica.analyses.hltExoticaDisplacedDimuon_cff import DisplacedDimuonPSet
32 from HLTriggerOffline.Exotica.analyses.hltExoticaPureMET_cff import PureMETPSet
33 from HLTriggerOffline.Exotica.analyses.hltExoticaMETplusTrack_cff import METplusTrackPSet
34 from HLTriggerOffline.Exotica.analyses.hltExoticaMonojet_cff import MonojetPSet
35 from HLTriggerOffline.Exotica.analyses.hltExoticaMonojetBackup_cff import MonojetBackupPSet
36 from HLTriggerOffline.Exotica.analyses.hltExoticaEleMu_cff import EleMuPSet
37 from HLTriggerOffline.Exotica.analyses.hltExoticaHTDisplacedJets_cff import HTDisplacedJetsPSet
38 from HLTriggerOffline.Exotica.analyses.hltExoticaPhotonMET_cff import PhotonMETPSet
39 from HLTriggerOffline.Exotica.analyses.hltExoticaSingleMuon_cff import SingleMuonPSet
40 from HLTriggerOffline.Exotica.analyses.hltExoticaDSTJets_cff import DSTJetsPSet
41 from HLTriggerOffline.Exotica.analyses.hltExoticaDSTMuons_cff import DSTMuonsPSet
42 from HLTriggerOffline.Exotica.analyses.hltExoticaTracklessJets_cff import TracklessJetsPSet
43 
44 from DQMServices.Core.DQMEDAnalyzer import DQMEDAnalyzer
45 hltExoticaValidator = DQMEDAnalyzer(
46 
47  "HLTExoticaValidator",
48 
49  hltProcessName = cms.string("HLT"),
50 
51  # -- The name of the analysis. This is the name that
52  # appears in Run summary/Exotica/ANALYSIS_NAME
53 
54  analyses = cms.vstring(
55  "LowPtTrimuon",
56  "HighPtDimuon",
57  "HighPtDielectron",
58  "LowPtDimuon",
59  "LowPtDielectron",
60  "HighPtElectron",
61  "LowPtElectron",
62  "HighPtPhoton",
63  "DiPhoton",
64  "SingleMuon",
65  "JetNoBptx",
66  "MuonNoBptx",
67  "PFHT",
68  "CaloHT",
69  "DisplacedMuEG",
70  "DisplacedDimuon",
71  "PureMET",
72  "METplusTrack",
73  "Monojet",
74  "MonojetBackup",
75  "EleMu",
76  "PhotonMET",
77  "HTDisplacedJets",
78  "DSTJets",
79  "DSTMuons",
80  "TracklessJets"
81  ),
82 
83  # -- The instance name of the reco::GenParticles collection
84  genParticleLabel = cms.string("genParticles"),
85 
86  # -- The instance name of the reco::BeamSpot collection
87  beamSpotLabel = cms.string("offlineBeamSpot"),
88 
89  # -- The binning of the Pt efficiency plots
90  # NOTICE: these DEFINITELY should be tuned for the different analyses.
91  # What we have there is a generic, 0-100 GeV uniform binning.
92  parametersTurnOn = cms.vdouble( 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20,
93  22, 24, 26, 28, 30, 32, 34, 36, 38, 40,
94  42, 44, 46, 48, 50, 52, 54, 56, 58, 60,
95  62, 64, 66, 68, 70, 72, 74, 76, 78, 80,
96  82, 84, 86, 88, 90, 92, 94, 96, 98, 100,
97  ),
98 
99  # TurnOn for SumEt
100  parametersTurnOnSumEt = cms.vdouble( 0, 100, 200, 300, 400, 500, 600, 700, 800, 900,
101  1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900,
102  2000, 2100, 2200, 2300, 2400, 2500, 2600, 2700, 2800, 2900,
103  3000, 3100, 3200, 3300, 3400, 3500, 3600, 3700, 3800, 3900,
104  4000, 4100, 4200, 4300, 4400, 4500, 4600, 4700, 4800, 4900,
105  5000, 5100, 5200, 5300, 5400, 5500, 5600, 5700, 5800, 5900,
106  6000, 6100, 6200, 6300, 6400, 6500, 6600, 6700, 6800, 6900,
107  7000
108  ),
109 
110  # -- (NBins, minVal, maxValue) for the Eta and Phi efficiency plots
111  parametersEta = cms.vdouble(48, -2.400, 2.400),
112  parametersPhi = cms.vdouble(50, -3.142, 3.142),
113  parametersDxy = cms.vdouble(50, -0.015, 0.015),
114 
115  # Definition of generic cuts on generated and reconstructed objects (note that
116  # these cuts can be overloaded inside a particular analysis)
117  # Objects recognized: Mu Ele Photon PFTau Jet MET => recognized by the method EVTColContainer::getTypeString
118  # Syntax in the strings: valid syntax of the StringCutObjectSelector class
119 
120  # --- Muons
121  Mu_genCut = cms.string("pt > 10 && abs(eta) < 2.4 && abs(pdgId) == 13 && (isPromptFinalState || isDirectPromptTauDecayProductFinalState)"),
122  Mu_recCut = cms.string("pt > 10 && abs(eta) < 2.4 && isPFMuon && (isTrackerMuon || isGlobalMuon)"), # Loose Muon
123 
124  # --- MuonTracks
125  #refittedStandAloneMuons_genCut = cms.string("pt > 10 && abs(eta) < 2.4 && abs(pdgId) == 13 && status == 1"),
126  refittedStandAloneMuons_genCut = cms.string("pt > 10 && abs(eta) < 2.4"),
127  #refittedStandAloneMuons_recCut = cms.string("pt > 10 && abs(eta) < 2.4 && isPFMuon && (isTrackerMuon || isGlobalMuon)"), # Loose Muon
128  refittedStandAloneMuons_recCut = cms.string("pt > 10 && abs(eta) < 2.4"),
129 
130  # --- Electrons
131  Ele_genCut = cms.string("pt > 10 && (abs(eta)<1.444 || abs(eta)>1.566) && abs(eta)<2.5 && abs(pdgId) == 11 && (isPromptFinalState||isDirectPromptTauDecayProductFinalState)"),
132  Ele_recCut = cms.string(
133  "pt > 10 && (abs(eta)<1.444 || abs(eta)>1.566) && abs(eta)< 2.5 "+
134  " && hadronicOverEm < 0.05 "+ #&& eSuperClusterOverP > 0.5 && eSuperClusterOverP < 1.5 "+
135  " && abs(deltaEtaSuperClusterTrackAtVtx)<0.007 && abs(deltaPhiSuperClusterTrackAtVtx)<0.06 "+
136  " && sigmaIetaIeta<0.03 "+
137  " && (pfIsolationVariables.sumChargedParticlePt + pfIsolationVariables.sumNeutralHadronEtHighThreshold + pfIsolationVariables.sumPhotonEtHighThreshold )/pt < 0.10 "+
138  " && abs(1/energy - 1/p)<0.05"),
139  #" && abs(trackPositionAtVtx.z-vertexPosition.z)<"),
140  #" && "), # Loose-like electron
141 
142  # --- Photons
143  Photon_genCut = cms.string("pt > 20 && abs(eta) < 2.4 && abs(pdgId) == 22 && isPromptFinalState"),
144  Photon_recCut = cms.string("pt > 20 && abs(eta) < 2.4"), # STILL MISSING THIS INFO
145  Photon_genCut_leading = cms.string("pt > 150 "),
146  Photon_recCut_leading = cms.string("pt > 150 "),
147 
148  # --- Taus:
149  PFTau_genCut = cms.string("pt > 20 && abs(eta) < 2.4 && abs(pdgId) == 15 && isPromptDecayed"),
150  PFTau_recCut = cms.string("pt > 20 && abs(eta) < 2.4"), # STILL MISSING THIS INFO
151 
152  # --- Jets:
153  PFJet_genCut = cms.string("pt > 30 && abs(eta) < 2.4"),
154  PFJet_recCut = cms.string("pt > 30 && abs(eta) < 2.4 &&"+
155  "(neutralHadronEnergy + HFHadronEnergy)/energy < 0.99 &&"+
156  "neutralEmEnergyFraction < 0.99 &&"+
157  "numberOfDaughters > 1 &&"+
158  "chargedHadronEnergyFraction > 0 &&"+
159  "chargedMultiplicity > 0 && "+
160  "chargedEmEnergyFraction < 0.99"), # Loose PFJet
161 
162  CaloJet_genCut = cms.string("pt > 30 && abs(eta) < 2.4"),
163  CaloJet_recCut = cms.string("pt > 30 && abs(eta) < 2.4"), # find realistic cuts
164 
165  # --- MET
166  MET_genCut = cms.string("pt > 75"),
167  MET_recCut = cms.string("pt > 75"),
168 
169  PFMET_genCut = cms.string("pt > 75"),
170  PFMET_recCut = cms.string("pt > 75"),
171 
172  PFMHT_genCut = cms.string("pt > 75"),
173  PFMHT_recCut = cms.string("pt > 75"),
174 
175  GenMET_genCut = cms.string("pt > 75"),
176  GenMET_recCut = cms.string("pt > 75"),
177 
178  Track_genCut = cms.string("pt > 50"),
179  Track_recCut = cms.string("pt > 50"),
180 
181  CaloMET_genCut = cms.string("pt > 75"),
182  CaloMET_recCut = cms.string("pt > 75"),
183 
184  CaloMHT_genCut = cms.string("pt > 75"),
185  CaloMHT_recCut = cms.string("pt > 75"),
186 
187  hltMET_genCut = cms.string("pt > 75"),
188  hltMET_recCut = cms.string("pt > 75"),
189 
190  l1MET_genCut = cms.string("pt > 75"),
191  l1MET_recCut = cms.string("pt > 75"),
192 
193  # The specific parameters per analysis: the name of the parameter set has to be
194  # the same as the defined ones in the 'analysis' datamember. Each analysis is a PSet
195  # with the mandatory attributes:
196  # - hltPathsToCheck (cms.vstring) : a list of all the trigger pats to be checked
197  # in this analysis. Up to the version number _v, but not including
198  # the number in order to avoid this version dependence. Example: HLT_Mu18_v
199  # - recVarLabel (cms.string): where Var is Mu, Ele, Photon, MET, Jet, PFTau, MET. This
200  # attribute is the name of the INSTANCE LABEL for each RECO collection to
201  # be considered in the analysis. Note that the trigger paths rely on some
202  # objects which need to be defined here, otherwise the code will complain.
203  # - minCandidates (cms.uint32): the minimum number of GEN/RECO objects in the event
204  # Besides the mandatory attributes, you can redefine the generation and reconstruction cuts
205  # for any object you want.
206  # * Var_genCut, Var_recCut (cms.string): where Var=Mu, Ele, Photon, Jet, PFTau, MET (see above)
207 
208  LowPtTrimuon = LowPtTrimuonPSet,
209  HighPtDimuon = HighPtDimuonPSet,
210  HighPtDielectron = HighPtDielectronPSet,
211  LowPtDimuon = LowPtDimuonPSet,
212  LowPtDielectron = LowPtDielectronPSet,
213  HighPtElectron = HighPtElectronPSet,
214  LowPtElectron = LowPtElectronPSet,
215  HighPtPhoton = HighPtPhotonPSet,
216  DiPhoton = DiPhotonPSet,
217  SingleMuon = SingleMuonPSet,
218  JetNoBptx = JetNoBptxPSet,
219  MuonNoBptx = MuonNoBptxPSet,
220  DisplacedMuEG = DisplacedMuEGPSet,
221  DisplacedDimuon = DisplacedDimuonPSet,
222  PureMET = PureMETPSet,
223  METplusTrack = METplusTrackPSet,
224  Monojet = MonojetPSet,
225  MonojetBackup = MonojetBackupPSet,
226  PFHT = PFHTPSet,
227  CaloHT = CaloHTPSet,
228  EleMu = EleMuPSet,
229  PhotonMET = PhotonMETPSet,
230  HTDisplacedJets = HTDisplacedJetsPSet,
231  DSTJets = DSTJetsPSet,
232  DSTMuons = DSTMuonsPSet,
233  TracklessJets = TracklessJetsPSet
234 )
235 
236 from Configuration.Eras.Modifier_stage2L1Trigger_cff import stage2L1Trigger
237 stage2L1Trigger.toModify(hltExoticaValidator, METplusTrack = dict(l1METLabel = None))
238