CMS 3D CMS Logo

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