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