CMS 3D CMS Logo

Functions
customizeHLTforCMSSW Namespace Reference

Functions

def checkHLTfor43774 (process)
 
def customiseBeamSpotFor2018Input (process)
 
def customiseCTPPSFor2018Input (process)
 
def customiseECALCalibrationsFor2018Input (process)
 
def customiseEGammaRecoFor2018Input (process)
 
def customiseFor2017DtUnpacking (process)
 
def customiseFor2018Input (process)
 
def customiseForOffline (process)
 
def customiseHCALFor2018Input (process)
 
def customisePixelGainForRun2Input (process)
 
def customisePixelL1ClusterThresholdForRun2Input (process)
 
def customizeHLTforCMSSW (process, menuType="GRun")
 

Function Documentation

◆ checkHLTfor43774()

def customizeHLTforCMSSW.checkHLTfor43774 (   process)

Definition at line 253 of file customizeHLTforCMSSW.py.

References common.filters_by_type(), and print().

Referenced by customizeHLTforCMSSW().

253 def checkHLTfor43774(process):
254  filt_types = ["HLTEgammaGenericFilter","HLTEgammaGenericQuadraticEtaFilter","HLTEgammaGenericQuadraticFilter","HLTElectronGenericFilter"]
255  absAbleVar = ["DEta","deta","DetaSeed","Dphi","OneOESuperMinusOneOP","OneOESeedMinusOneOP"]
256  for filt_type in filt_types:
257  for filt in filters_by_type(process, filt_type):
258  if filt.varTag.productInstanceLabel in absAbleVar:
259  if (filt.useAbs != cms.bool(True)):
260  print('# TSG WARNING: check value of parameter "useAbs" in',filt,'(expect True but is False)!')
261 
262  return process
263 
264 
265 # CMSSW version specific customizations
def filters_by_type(process, types)
Definition: common.py:13
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47

◆ customiseBeamSpotFor2018Input()

def customizeHLTforCMSSW.customiseBeamSpotFor2018Input (   process)
Customisation for the HLT BeamSpot when running on Run-2 (2018) data:
   - For Run-2 data, disable the use of the BS transient record, in order to read the BS record from SCAL.
   - Additionally, remove all instances of OnlineBeamSpotESProducer (not needed if useTransientRecord=False).
   - See CMSHLT-2271 and CMSHLT-2300 for further details.

Definition at line 159 of file customizeHLTforCMSSW.py.

References common.esproducers_by_type(), and customizeForNoTrackerDCS.producers_by_type().

Referenced by customiseFor2018Input().

159 def customiseBeamSpotFor2018Input(process):
160  """Customisation for the HLT BeamSpot when running on Run-2 (2018) data:
161  - For Run-2 data, disable the use of the BS transient record, in order to read the BS record from SCAL.
162  - Additionally, remove all instances of OnlineBeamSpotESProducer (not needed if useTransientRecord=False).
163  - See CMSHLT-2271 and CMSHLT-2300 for further details.
164  """
165  for prod in producers_by_type(process, 'BeamSpotOnlineProducer'):
166  prod.useTransientRecord = False
167  onlineBeamSpotESPLabels = [prod.label_() for prod in esproducers_by_type(process, 'OnlineBeamSpotESProducer')]
168  for espLabel in onlineBeamSpotESPLabels:
169  delattr(process, espLabel)
170 
171  # re-introduce SCAL digis, if missing
172  if not hasattr(process, 'hltScalersRawToDigi') and hasattr(process, 'HLTBeamSpot') and isinstance(process.HLTBeamSpot, cms.Sequence):
173 
174  if hasattr(process, 'hltOnlineBeamSpot'):
175  process.hltOnlineBeamSpot.src = 'hltScalersRawToDigi'
176 
177  if hasattr(process, 'hltPixelTrackerHVOn'):
178  process.hltPixelTrackerHVOn.DcsStatusLabel = 'hltScalersRawToDigi'
179 
180  if hasattr(process, 'hltStripTrackerHVOn'):
181  process.hltStripTrackerHVOn.DcsStatusLabel = 'hltScalersRawToDigi'
182 
183  process.hltScalersRawToDigi = cms.EDProducer( "ScalersRawToDigi",
184  scalersInputTag = cms.InputTag( "rawDataCollector" )
185  )
186 
187  process.HLTBeamSpot.insert(0, process.hltScalersRawToDigi)
188 
189  return process
190 
def producers_by_type(process, types)
def customiseBeamSpotFor2018Input(process)
def esproducers_by_type(process, types)
Definition: common.py:21

◆ customiseCTPPSFor2018Input()

def customizeHLTforCMSSW.customiseCTPPSFor2018Input (   process)

Definition at line 144 of file customizeHLTforCMSSW.py.

References customizeForNoTrackerDCS.producers_by_type().

Referenced by customiseFor2018Input().

144 def customiseCTPPSFor2018Input(process):
145  for prod in producers_by_type(process, 'CTPPSGeometryESModule'):
146  prod.isRun2 = True
147  for prod in producers_by_type(process, 'CTPPSPixelRawToDigi'):
148  prod.isRun3 = False
149 
150  return process
151 
def producers_by_type(process, types)
def customiseCTPPSFor2018Input(process)

◆ customiseECALCalibrationsFor2018Input()

def customizeHLTforCMSSW.customiseECALCalibrationsFor2018Input (   process)
Customisation to apply the ECAL Run-2 Ultra-Legacy calibrations (CMSHLT-2339)

Definition at line 191 of file customizeHLTforCMSSW.py.

References print().

Referenced by customiseFor2018Input().

192  """Customisation to apply the ECAL Run-2 Ultra-Legacy calibrations (CMSHLT-2339)"""
193  if hasattr(process, 'GlobalTag'):
194  if not hasattr(process.GlobalTag, 'toGet'):
195  process.GlobalTag.toGet = cms.VPSet()
196  process.GlobalTag.toGet += [
197  cms.PSet(
198  record = cms.string('EcalLaserAlphasRcd'),
199  tag = cms.string('EcalLaserAlphas_UL_Run1_Run2_2018_lastIOV_movedTo1')
200  ),
201  cms.PSet(
202  record = cms.string('EcalIntercalibConstantsRcd'),
203  tag = cms.string('EcalIntercalibConstants_UL_Run1_Run2_2018_lastIOV_movedTo1')
204  )
205  ]
206  else:
207  print('# customiseECALCalibrationsFor2018Input -- the process.GlobalTag ESSource does not exist: no customisation applied.')
208 
209  return process
210 
def customiseECALCalibrationsFor2018Input(process)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47

◆ customiseEGammaRecoFor2018Input()

def customizeHLTforCMSSW.customiseEGammaRecoFor2018Input (   process)

Definition at line 152 of file customizeHLTforCMSSW.py.

References customizeForNoTrackerDCS.producers_by_type().

Referenced by customiseFor2018Input().

153  for prod in producers_by_type(process, 'PFECALSuperClusterProducer'):
154  if hasattr(prod, 'regressionConfig'):
155  prod.regressionConfig.regTrainedWithPS = cms.bool(False)
156 
157  return process
158 
def producers_by_type(process, types)
def customiseEGammaRecoFor2018Input(process)

◆ customiseFor2017DtUnpacking()

def customizeHLTforCMSSW.customiseFor2017DtUnpacking (   process)
Adapt the HLT to run the legacy DT unpacking
for pre2018 data/MC workflows as the default

Definition at line 67 of file customizeHLTforCMSSW.py.

67 def customiseFor2017DtUnpacking(process):
68  """Adapt the HLT to run the legacy DT unpacking
69  for pre2018 data/MC workflows as the default"""
70 
71  if hasattr(process,'hltMuonDTDigis'):
72  process.hltMuonDTDigis = cms.EDProducer( "DTUnpackingModule",
73  useStandardFEDid = cms.bool( True ),
74  maxFEDid = cms.untracked.int32( 779 ),
75  inputLabel = cms.InputTag( "rawDataCollector" ),
76  minFEDid = cms.untracked.int32( 770 ),
77  dataType = cms.string( "DDU" ),
78  readOutParameters = cms.PSet(
79  localDAQ = cms.untracked.bool( False ),
80  debug = cms.untracked.bool( False ),
81  rosParameters = cms.PSet(
82  localDAQ = cms.untracked.bool( False ),
83  debug = cms.untracked.bool( False ),
84  writeSC = cms.untracked.bool( True ),
85  readDDUIDfromDDU = cms.untracked.bool( True ),
86  readingDDU = cms.untracked.bool( True ),
87  performDataIntegrityMonitor = cms.untracked.bool( False )
88  ),
89  performDataIntegrityMonitor = cms.untracked.bool( False )
90  ),
91  dqmOnly = cms.bool( False )
92  )
93 
94  return process
95 
def customiseFor2017DtUnpacking(process)

◆ customiseFor2018Input()

def customizeHLTforCMSSW.customiseFor2018Input (   process)
Customise the HLT to run on Run 2 data/MC

Definition at line 211 of file customizeHLTforCMSSW.py.

References customiseBeamSpotFor2018Input(), customiseCTPPSFor2018Input(), customiseECALCalibrationsFor2018Input(), customiseEGammaRecoFor2018Input(), customiseHCALFor2018Input(), customisePixelGainForRun2Input(), and customisePixelL1ClusterThresholdForRun2Input().

211 def customiseFor2018Input(process):
212  """Customise the HLT to run on Run 2 data/MC"""
213  process = customisePixelGainForRun2Input(process)
215  process = customiseHCALFor2018Input(process)
216  process = customiseCTPPSFor2018Input(process)
217  process = customiseEGammaRecoFor2018Input(process)
218  process = customiseBeamSpotFor2018Input(process)
219  process = customiseECALCalibrationsFor2018Input(process)
220 
221  return process
222 
223 
def customisePixelL1ClusterThresholdForRun2Input(process)
def customiseECALCalibrationsFor2018Input(process)
def customiseHCALFor2018Input(process)
def customiseCTPPSFor2018Input(process)
def customiseFor2018Input(process)
def customiseEGammaRecoFor2018Input(process)
def customiseBeamSpotFor2018Input(process)
def customisePixelGainForRun2Input(process)

◆ customiseForOffline()

def customizeHLTforCMSSW.customiseForOffline (   process)

Definition at line 224 of file customizeHLTforCMSSW.py.

References common.esproducers_by_type(), and createfilelist.int.

Referenced by customizeHLTforCMSSW().

224 def customiseForOffline(process):
225  # For running HLT offline on Run-3 Data, use "(OnlineBeamSpotESProducer).timeThreshold = 1e6",
226  # in order to pick the beamspot that was actually used by the HLT (instead of a "fake" beamspot).
227  # These same settings can be used offline for Run-3 Data and Run-3 MC alike.
228  # Note: the products of the OnlineBeamSpotESProducer are used only
229  # if the configuration uses "(BeamSpotOnlineProducer).useTransientRecord = True".
230  # See CMSHLT-2271 and CMSHLT-2300 for further details.
231  for prod in esproducers_by_type(process, 'OnlineBeamSpotESProducer'):
232  prod.timeThreshold = int(1e6)
233 
234  # For running HLT offline and relieve the strain on Frontier so it will no longer inject a
235  # transaction id which tells Frontier to add a unique "&freshkey" to many query URLs.
236  # That was intended as a feature to only be used by the Online HLT, to guarantee that fresh conditions
237  # from the database were loaded at each Lumi section
238  # Seee CMSHLT-3123 for further details
239  if hasattr(process, 'GlobalTag'):
240  # Set ReconnectEachRun and RefreshEachRun to False
241  process.GlobalTag.ReconnectEachRun = cms.untracked.bool(False)
242  process.GlobalTag.RefreshEachRun = cms.untracked.bool(False)
243 
244  if hasattr(process.GlobalTag, 'toGet'):
245  # Filter out PSet objects containing only 'record' and 'refreshTime'
246  process.GlobalTag.toGet = [
247  pset for pset in process.GlobalTag.toGet
248  if set(pset.parameterNames_()) != {'record', 'refreshTime'}
249  ]
250 
251  return process
252 
def esproducers_by_type(process, types)
Definition: common.py:21

◆ customiseHCALFor2018Input()

def customizeHLTforCMSSW.customiseHCALFor2018Input (   process)
Customise the HLT to run on Run 2 data/MC using the old readout for the HCAL barel

Definition at line 20 of file customizeHLTforCMSSW.py.

References customizeForNoTrackerDCS.producers_by_type().

Referenced by customiseFor2018Input().

20 def customiseHCALFor2018Input(process):
21  """Customise the HLT to run on Run 2 data/MC using the old readout for the HCAL barel"""
22 
23  for producer in producers_by_type(process, "HBHEPhase1Reconstructor"):
24  # switch on the QI8 processing for 2018 HCAL barrel
25  producer.processQIE8 = True
26 
27  # adapt CaloTowers threshold for 2018 HCAL barrel with only one depth
28  for producer in producers_by_type(process, "CaloTowersCreator"):
29  producer.HBThreshold1 = 0.7
30  producer.HBThreshold2 = 0.7
31  producer.HBThreshold = 0.7
32 
33  # adapt Particle Flow threshold for 2018 HCAL barrel with only one depth
34  from RecoParticleFlow.PFClusterProducer.particleFlowClusterHBHE_cfi import _thresholdsHB, _thresholdsHEphase1, _seedingThresholdsHB
35 
36  logWeightDenominatorHCAL2018 = cms.VPSet(
37  cms.PSet(
38  depths = cms.vint32(1, 2, 3, 4),
39  detector = cms.string('HCAL_BARREL1'),
40  logWeightDenominator = _thresholdsHB
41  ),
42  cms.PSet(
43  depths = cms.vint32(1, 2, 3, 4, 5, 6, 7),
44  detector = cms.string('HCAL_ENDCAP'),
45  logWeightDenominator = _thresholdsHEphase1
46  )
47  )
48 
49  for producer in producers_by_type(process, "PFRecHitProducer"):
50  if producer.producers[0].name.value() == 'PFHBHERecHitCreator':
51  producer.producers[0].qualityTests[0].cuts[0].threshold = _thresholdsHB
52 
53  for producer in producers_by_type(process, "PFClusterProducer"):
54  if producer.seedFinder.thresholdsByDetector[0].detector.value() == 'HCAL_BARREL1':
55  producer.seedFinder.thresholdsByDetector[0].seedingThreshold = _seedingThresholdsHB
56  producer.initialClusteringStep.thresholdsByDetector[0].gatheringThreshold = _thresholdsHB
57  producer.pfClusterBuilder.recHitEnergyNorms[0].recHitEnergyNorm = _thresholdsHB
58  producer.pfClusterBuilder.positionCalc.logWeightDenominatorByDetector = logWeightDenominatorHCAL2018
59  producer.pfClusterBuilder.allCellsPositionCalc.logWeightDenominatorByDetector = logWeightDenominatorHCAL2018
60 
61  for producer in producers_by_type(process, "PFMultiDepthClusterProducer"):
62  producer.pfClusterBuilder.allCellsPositionCalc.logWeightDenominatorByDetector = logWeightDenominatorHCAL2018
63 
64  # done
65  return process
66 
def producers_by_type(process, types)
def customiseHCALFor2018Input(process)

◆ customisePixelGainForRun2Input()

def customizeHLTforCMSSW.customisePixelGainForRun2Input (   process)
Customise the HLT to run on Run 2 data/MC using the old definition of the pixel calibrations

Up to 11.0.x, the pixel calibarations were fully specified in the configuration:
    VCaltoElectronGain      =   47
    VCaltoElectronGain_L1   =   50
    VCaltoElectronOffset    =  -60
    VCaltoElectronOffset_L1 = -670

Starting with 11.1.x, the calibrations for Run 3 were moved to the conditions, leaving in the configuration only:
    VCaltoElectronGain      =    1
    VCaltoElectronGain_L1   =    1
    VCaltoElectronOffset    =    0
    VCaltoElectronOffset_L1 =    0

Since the conditions for Run 2 have not been updated to the new scheme, the HLT configuration needs to be reverted.

Definition at line 96 of file customizeHLTforCMSSW.py.

References customizeForNoTrackerDCS.producers_by_type().

Referenced by customiseFor2018Input().

97  """Customise the HLT to run on Run 2 data/MC using the old definition of the pixel calibrations
98 
99  Up to 11.0.x, the pixel calibarations were fully specified in the configuration:
100  VCaltoElectronGain = 47
101  VCaltoElectronGain_L1 = 50
102  VCaltoElectronOffset = -60
103  VCaltoElectronOffset_L1 = -670
104 
105  Starting with 11.1.x, the calibrations for Run 3 were moved to the conditions, leaving in the configuration only:
106  VCaltoElectronGain = 1
107  VCaltoElectronGain_L1 = 1
108  VCaltoElectronOffset = 0
109  VCaltoElectronOffset_L1 = 0
110 
111  Since the conditions for Run 2 have not been updated to the new scheme, the HLT configuration needs to be reverted.
112  """
113  # revert the Pixel parameters to be compatible with the Run 2 conditions
114  for producer in producers_by_type(process, "SiPixelClusterProducer"):
115  producer.VCaltoElectronGain = 47
116  producer.VCaltoElectronGain_L1 = 50
117  producer.VCaltoElectronOffset = -60
118  producer.VCaltoElectronOffset_L1 = -670
119 
120  for pluginType in ["SiPixelRawToClusterCUDA", "SiPixelRawToClusterCUDAPhase1", "SiPixelRawToClusterCUDAHIonPhase1"]:
121  for producer in producers_by_type(process, pluginType):
122  producer.VCaltoElectronGain = 47
123  producer.VCaltoElectronGain_L1 = 50
124  producer.VCaltoElectronOffset = -60
125  producer.VCaltoElectronOffset_L1 = -670
126 
127  return process
128 
def producers_by_type(process, types)
def customisePixelGainForRun2Input(process)

◆ customisePixelL1ClusterThresholdForRun2Input()

def customizeHLTforCMSSW.customisePixelL1ClusterThresholdForRun2Input (   process)

Definition at line 129 of file customizeHLTforCMSSW.py.

References customizeForNoTrackerDCS.producers_by_type().

Referenced by customiseFor2018Input().

130  # revert the pixel Layer 1 cluster threshold to be compatible with Run2:
131  for producer in producers_by_type(process, "SiPixelClusterProducer"):
132  if hasattr(producer,"ClusterThreshold_L1"):
133  producer.ClusterThreshold_L1 = 2000
134  for pluginType in ["SiPixelRawToClusterCUDA", "SiPixelRawToClusterCUDAPhase1", "SiPixelRawToClusterCUDAHIonPhase1"]:
135  for producer in producers_by_type(process, pluginType):
136  if hasattr(producer,"clusterThreshold_layer1"):
137  producer.clusterThreshold_layer1 = 2000
138  for producer in producers_by_type(process, "SiPixelDigisClustersFromSoA"):
139  if hasattr(producer,"clusterThreshold_layer1"):
140  producer.clusterThreshold_layer1 = 2000
141 
142  return process
143 
def producers_by_type(process, types)
def customisePixelL1ClusterThresholdForRun2Input(process)

◆ customizeHLTforCMSSW()

def customizeHLTforCMSSW.customizeHLTforCMSSW (   process,
  menuType = "GRun" 
)

Definition at line 266 of file customizeHLTforCMSSW.py.

References checkHLTfor43774(), and customiseForOffline().

266 def customizeHLTforCMSSW(process, menuType="GRun"):
267 
268  process = customiseForOffline(process)
269 
270  # add call to action function in proper order: newest last!
271  # process = customiseFor12718(process)
272 
273  process = checkHLTfor43774(process)
274 
275  return process
276 
def customizeHLTforCMSSW(process, menuType="GRun")