CMS 3D CMS Logo

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