CMS 3D CMS Logo

Functions
customizeHLTforPatatrack Namespace Reference

Functions

def _addConsumerPath (process)
 
def consumeCPULegacyProducts (process)
 
def consumeCPUSoAProducts (process)
 
def consumeGPUSoAProducts (process)
 
def customiseCommon (process)
 
def customiseEcalLocalReconstruction (process)
 
def customiseHcalLocalReconstruction (process)
 
def customisePixelLocalReconstruction (process)
 
def customisePixelTrackReconstruction (process)
 
def customizeHLTforPatatrack (process)
 
def customizeHLTforPatatrackTriplets (process)
 
def enablePatatrackPixelTriplets (process)
 
def forceGpuOffload (status=True)
 
def resetGpuOffload ()
 

Function Documentation

◆ _addConsumerPath()

def customizeHLTforPatatrack._addConsumerPath (   process)
private

Definition at line 724 of file customizeHLTforPatatrack.py.

724 def _addConsumerPath(process):
725  # add to a path all consumers and the tasks that define the producers
726  process.Consumer = cms.Path(
727  process.HLTBeginSequence +
728  process.hltPixelConsumer +
729  process.hltEcalConsumer +
730  process.hltHbheConsumer,
731  process.HLTDoLocalPixelTask,
732  process.HLTRecoPixelTracksTask,
733  process.HLTRecopixelvertexingTask,
734  process.HLTDoFullUnpackingEgammaEcalTask,
735  process.HLTDoLocalHcalTask,
736  )
737 
738  if 'HLTSchedule' in process.__dict__:
739  process.HLTSchedule.append(process.Consumer)
740  if process.schedule is not None:
741  process.schedule.append(process.Consumer)
742 
743  # done
744  return process
745 
746 

Referenced by consumeCPULegacyProducts(), consumeCPUSoAProducts(), and consumeGPUSoAProducts().

◆ consumeCPULegacyProducts()

def customizeHLTforPatatrack.consumeCPULegacyProducts (   process)

Definition at line 792 of file customizeHLTforPatatrack.py.

792 def consumeCPULegacyProducts(process):
793  # consume the Pixel tracks and vertices on the CPU in legacy format
794  process.hltPixelConsumer = cms.EDAnalyzer("GenericConsumer",
795  eventProducts = cms.untracked.vstring( 'hltPixelTracks', 'hltPixelVertices' )
796  )
797 
798  # consume the ECAL runcalibrated echits on the CPU in legacy format
799  process.hltEcalConsumer = cms.EDAnalyzer("GenericConsumer",
800  eventProducts = cms.untracked.vstring( 'hltEcalUncalibRecHit' )
801  )
802 
803  # consume the HCAL rechits on the CPU in legacy format
804  process.hltHbheConsumer = cms.EDAnalyzer("GenericConsumer",
805  eventProducts = cms.untracked.vstring( 'hltHbhereco' )
806  )
807 
808  # add to a path all consumers and the tasks that define the producers
809  process = _addConsumerPath(process)
810 
811  # done
812  return process

References _addConsumerPath().

◆ consumeCPUSoAProducts()

def customizeHLTforPatatrack.consumeCPUSoAProducts (   process)

Definition at line 770 of file customizeHLTforPatatrack.py.

770 def consumeCPUSoAProducts(process):
771  # consume the Pixel tracks and vertices on the CPU in SoA format
772  process.hltPixelConsumer = cms.EDAnalyzer("GenericConsumer",
773  eventProducts = cms.untracked.vstring( 'hltPixelTracksSoA', 'hltPixelVerticesSoA' )
774  )
775 
776  # consume the ECAL uncalibrated rechits on the CPU in SoA format
777  process.hltEcalConsumer = cms.EDAnalyzer("GenericConsumer",
778  eventProducts = cms.untracked.vstring( 'hltEcalUncalibRecHitSoA' )
779  )
780 
781  # consume the HCAL rechits on the CPU in legacy format
782  process.hltHbheConsumer = cms.EDAnalyzer("GenericConsumer",
783  eventProducts = cms.untracked.vstring( 'hltHbhereco' )
784  )
785 
786  # add to a path all consumers and the tasks that define the producers
787  process = _addConsumerPath(process)
788 
789  # done
790  return process
791 

References _addConsumerPath().

◆ consumeGPUSoAProducts()

def customizeHLTforPatatrack.consumeGPUSoAProducts (   process)

Definition at line 747 of file customizeHLTforPatatrack.py.

747 def consumeGPUSoAProducts(process):
748  # consume the Pixel tracks and vertices on the GPU in SoA format
749  process.hltPixelConsumer = cms.EDAnalyzer("GenericConsumer",
750  eventProducts = cms.untracked.vstring( 'hltPixelTracksCUDA', 'hltPixelVerticesCUDA' )
751  )
752 
753  # consume the ECAL uncalibrated rechits on the GPU in SoA format
754  process.hltEcalConsumer = cms.EDAnalyzer("GenericConsumer",
755  eventProducts = cms.untracked.vstring( 'hltEcalUncalibRecHitGPU' )
756  )
757 
758  # consume the HCAL rechits on the GPU in SoA format
759  process.hltHbheConsumer = cms.EDAnalyzer("GenericConsumer",
760  eventProducts = cms.untracked.vstring( 'hltHbherecoGPU' )
761  )
762 
763  # add to a path all consumers and the tasks that define the producers
764  process = _addConsumerPath(process)
765 
766  # done
767  return process
768 
769 

References _addConsumerPath().

◆ customiseCommon()

def customizeHLTforPatatrack.customiseCommon (   process)

Definition at line 22 of file customizeHLTforPatatrack.py.

22 def customiseCommon(process):
23 
24  # Services
25 
26  process.load("HeterogeneousCore.CUDAServices.CUDAService_cfi")
27 
28  # NVProfilerService is broken in CMSSW 12.0,x and later
29  #process.load("HeterogeneousCore.CUDAServices.NVProfilerService_cfi")
30 
31 
32  # Paths and EndPaths
33 
34  # the hltGetConditions module would force gpu-specific ESProducers to run even if no supported gpu is present
35  if 'hltGetConditions' in process.__dict__:
36  del process.hltGetConditions
37 
38  # produce a boolean to track if the events ar being processed on gpu (true) or cpu (false)
39  process.statusOnGPU = SwitchProducerCUDA(
40  cpu = cms.EDProducer("BooleanProducer", value = cms.bool(False)),
41  cuda = cms.EDProducer("BooleanProducer", value = cms.bool(True))
42  )
43 
44  process.statusOnGPUFilter = cms.EDFilter("BooleanFilter",
45  src = cms.InputTag("statusOnGPU")
46  )
47 
48  if 'Status_OnCPU' in process.__dict__:
49  replace_with(process.Status_OnCPU, cms.Path(process.statusOnGPU + ~process.statusOnGPUFilter))
50  else:
51  process.Status_OnCPU = cms.Path(process.statusOnGPU + ~process.statusOnGPUFilter)
52  if 'HLTSchedule' in process.__dict__:
53  process.HLTSchedule.append(process.Status_OnCPU)
54  if process.schedule is not None:
55  process.schedule.append(process.Status_OnCPU)
56 
57  if 'Status_OnGPU' in process.__dict__:
58  replace_with(process.Status_OnGPU, cms.Path(process.statusOnGPU + process.statusOnGPUFilter))
59  else:
60  process.Status_OnGPU = cms.Path(process.statusOnGPU + process.statusOnGPUFilter)
61  if 'HLTSchedule' in process.__dict__:
62  process.HLTSchedule.append(process.Status_OnGPU)
63  if process.schedule is not None:
64  process.schedule.append(process.Status_OnGPU)
65 
66 
67  # make the ScoutingCaloMuonOutput endpath compatible with using Tasks in the Scouting paths
68  if 'hltOutputScoutingCaloMuon' in process.__dict__ and not 'hltPreScoutingCaloMuonOutputSmart' in process.__dict__:
69  process.hltPreScoutingCaloMuonOutputSmart = cms.EDFilter( "TriggerResultsFilter",
70  l1tIgnoreMaskAndPrescale = cms.bool( False ),
71  l1tResults = cms.InputTag( "" ),
72  hltResults = cms.InputTag( 'TriggerResults','','@currentProcess' ),
73  triggerConditions = process.hltOutputScoutingCaloMuon.SelectEvents.SelectEvents,
74  throw = cms.bool( True )
75  )
76  insert_modules_after(process, process.hltPreScoutingCaloMuonOutput, process.hltPreScoutingCaloMuonOutputSmart)
77 
78  # make the ScoutingPFOutput endpath compatible with using Tasks in the Scouting paths
79  if 'hltOutputScoutingPF' in process.__dict__ and not 'hltPreScoutingPFOutputSmart' in process.__dict__:
80  process.hltPreScoutingPFOutputSmart = cms.EDFilter( "TriggerResultsFilter",
81  l1tIgnoreMaskAndPrescale = cms.bool( False ),
82  l1tResults = cms.InputTag( "" ),
83  hltResults = cms.InputTag( 'TriggerResults','','@currentProcess' ),
84  triggerConditions = process.hltOutputScoutingPF.SelectEvents.SelectEvents,
85  throw = cms.bool( True )
86  )
87  insert_modules_after(process, process.hltPreScoutingPFOutput, process.hltPreScoutingPFOutputSmart)
88 
89 
90  # done
91  return process
92 
93 
94 # customisation for running the "Patatrack" pixel local reconstruction

References common.insert_modules_after(), and common.replace_with().

Referenced by customizeHLTforPatatrack(), and customizeHLTforPatatrackTriplets().

◆ customiseEcalLocalReconstruction()

def customizeHLTforPatatrack.customiseEcalLocalReconstruction (   process)

Definition at line 396 of file customizeHLTforPatatrack.py.

397 
398  hasHLTEcalPreshowerSeq = any(seq in process.__dict__ for seq in ['HLTDoFullUnpackingEgammaEcalMFSequence', 'HLTDoFullUnpackingEgammaEcalSequence'])
399  if not (hasHLTEcalPreshowerSeq or 'HLTDoFullUnpackingEgammaEcalWithoutPreshowerSequence' in process.__dict__):
400  return process
401 
402  # FIXME replace the Sequences with empty ones to avoid expanding them during the (re)definition of Modules and EDAliases
403 
404  process.HLTDoFullUnpackingEgammaEcalWithoutPreshowerSequence = cms.Sequence()
405  if hasHLTEcalPreshowerSeq:
406  process.HLTDoFullUnpackingEgammaEcalMFSequence = cms.Sequence()
407  process.HLTDoFullUnpackingEgammaEcalSequence = cms.Sequence()
408 
409 
410  # Event Setup
411 
412  process.load("EventFilter.EcalRawToDigi.ecalElectronicsMappingGPUESProducer_cfi")
413  process.load("RecoLocalCalo.EcalRecProducers.ecalGainRatiosGPUESProducer_cfi")
414  process.load("RecoLocalCalo.EcalRecProducers.ecalPedestalsGPUESProducer_cfi")
415  process.load("RecoLocalCalo.EcalRecProducers.ecalPulseCovariancesGPUESProducer_cfi")
416  process.load("RecoLocalCalo.EcalRecProducers.ecalPulseShapesGPUESProducer_cfi")
417  process.load("RecoLocalCalo.EcalRecProducers.ecalSamplesCorrelationGPUESProducer_cfi")
418  process.load("RecoLocalCalo.EcalRecProducers.ecalTimeBiasCorrectionsGPUESProducer_cfi")
419  process.load("RecoLocalCalo.EcalRecProducers.ecalTimeCalibConstantsGPUESProducer_cfi")
420  process.load("RecoLocalCalo.EcalRecProducers.ecalMultifitParametersGPUESProducer_cfi")
421 
422  process.load("RecoLocalCalo.EcalRecProducers.ecalRechitADCToGeVConstantGPUESProducer_cfi")
423  process.load("RecoLocalCalo.EcalRecProducers.ecalRechitChannelStatusGPUESProducer_cfi")
424  process.load("RecoLocalCalo.EcalRecProducers.ecalIntercalibConstantsGPUESProducer_cfi")
425  process.load("RecoLocalCalo.EcalRecProducers.ecalLaserAPDPNRatiosGPUESProducer_cfi")
426  process.load("RecoLocalCalo.EcalRecProducers.ecalLaserAPDPNRatiosRefGPUESProducer_cfi")
427  process.load("RecoLocalCalo.EcalRecProducers.ecalLaserAlphasGPUESProducer_cfi")
428  process.load("RecoLocalCalo.EcalRecProducers.ecalLinearCorrectionsGPUESProducer_cfi")
429  process.load("RecoLocalCalo.EcalRecProducers.ecalRecHitParametersGPUESProducer_cfi")
430 
431 
432  # Modules and EDAliases
433 
434  # ECAL unpacker running on gpu
435  from EventFilter.EcalRawToDigi.ecalRawToDigiGPU_cfi import ecalRawToDigiGPU as _ecalRawToDigiGPU
436  process.hltEcalDigisGPU = _ecalRawToDigiGPU.clone()
437 
438  # SwitchProducer wrapping the legacy ECAL unpacker or the ECAL digi converter from SoA format on gpu to legacy format on cpu
439  process.hltEcalDigisLegacy = process.hltEcalDigis.clone()
440  from EventFilter.EcalRawToDigi.ecalCPUDigisProducer_cfi import ecalCPUDigisProducer as _ecalCPUDigisProducer
441 
442  process.hltEcalDigis = SwitchProducerCUDA(
443  # legacy producer
444  cpu = cms.EDAlias(
445  hltEcalDigisLegacy = cms.VPSet(
446  cms.PSet(type = cms.string("EBDigiCollection")),
447  cms.PSet(type = cms.string("EEDigiCollection")),
448  cms.PSet(type = cms.string("EBDetIdedmEDCollection")),
449  cms.PSet(type = cms.string("EEDetIdedmEDCollection")),
450  cms.PSet(type = cms.string("EBSrFlagsSorted")),
451  cms.PSet(type = cms.string("EESrFlagsSorted")),
452  cms.PSet(type = cms.string("EcalElectronicsIdedmEDCollection"), fromProductInstance = cms.string("EcalIntegrityBlockSizeErrors")),
453  cms.PSet(type = cms.string("EcalElectronicsIdedmEDCollection"), fromProductInstance = cms.string("EcalIntegrityTTIdErrors")),
454  cms.PSet(type = cms.string("EcalElectronicsIdedmEDCollection"), fromProductInstance = cms.string("EcalIntegrityZSXtalIdErrors")),
455  cms.PSet(type = cms.string("EcalPnDiodeDigisSorted")),
456  cms.PSet(type = cms.string("EcalPseudoStripInputDigisSorted"), fromProductInstance = cms.string("EcalPseudoStripInputs")),
457  cms.PSet(type = cms.string("EcalTriggerPrimitiveDigisSorted"), fromProductInstance = cms.string("EcalTriggerPrimitives")),
458  )
459  ),
460  # convert ECAL digis from SoA format on gpu to legacy format on cpu
461  cuda = _ecalCPUDigisProducer.clone(
462  digisInLabelEB = ("hltEcalDigisGPU", "ebDigis"),
463  digisInLabelEE = ("hltEcalDigisGPU", "eeDigis"),
464  produceDummyIntegrityCollections = cms.bool(True)
465  )
466  )
467 
468  # ECAL multifit running on gpu
469  from RecoLocalCalo.EcalRecProducers.ecalUncalibRecHitProducerGPU_cfi import ecalUncalibRecHitProducerGPU as _ecalUncalibRecHitProducerGPU
470  process.hltEcalUncalibRecHitGPU = _ecalUncalibRecHitProducerGPU.clone(
471  digisLabelEB = ("hltEcalDigisGPU", "ebDigis"),
472  digisLabelEE = ("hltEcalDigisGPU", "eeDigis"),
473  shouldRunTimingComputation = False
474  )
475 
476  # copy the ECAL uncalibrated rechits from gpu to cpu in SoA format
477  from RecoLocalCalo.EcalRecProducers.ecalCPUUncalibRecHitProducer_cfi import ecalCPUUncalibRecHitProducer as _ecalCPUUncalibRecHitProducer
478  process.hltEcalUncalibRecHitSoA = _ecalCPUUncalibRecHitProducer.clone(
479  recHitsInLabelEB = ("hltEcalUncalibRecHitGPU", "EcalUncalibRecHitsEB"),
480  recHitsInLabelEE = ("hltEcalUncalibRecHitGPU", "EcalUncalibRecHitsEE"),
481  )
482 
483  # SwitchProducer wrapping the legacy ECAL uncalibrated rechits producer or a converter from SoA to legacy format
484  from RecoLocalCalo.EcalRecProducers.ecalUncalibRecHitConvertGPU2CPUFormat_cfi import ecalUncalibRecHitConvertGPU2CPUFormat as _ecalUncalibRecHitConvertGPU2CPUFormat
485  process.hltEcalUncalibRecHit = SwitchProducerCUDA(
486  # legacy producer
487  cpu = process.hltEcalUncalibRecHit,
488  # convert the ECAL uncalibrated rechits from SoA to legacy format
489  cuda = _ecalUncalibRecHitConvertGPU2CPUFormat.clone(
490  recHitsLabelGPUEB = ("hltEcalUncalibRecHitSoA", "EcalUncalibRecHitsEB"),
491  recHitsLabelGPUEE = ("hltEcalUncalibRecHitSoA", "EcalUncalibRecHitsEE"),
492  )
493  )
494 
495  # Reconstructing the ECAL calibrated rechits on gpu works, but is extremely slow.
496  # Disable it for the time being, until the performance has been addressed.
497  """
498  from RecoLocalCalo.EcalRecProducers.ecalRecHitGPU_cfi import ecalRecHitGPU as _ecalRecHitGPU
499  process.hltEcalRecHitGPU = _ecalRecHitGPU.clone(
500  uncalibrecHitsInLabelEB = ("hltEcalUncalibRecHitGPU","EcalUncalibRecHitsEB"),
501  uncalibrecHitsInLabelEE = ("hltEcalUncalibRecHitGPU","EcalUncalibRecHitsEE"),
502  )
503 
504  from RecoLocalCalo.EcalRecProducers.ecalCPURecHitProducer_cfi import ecalCPURecHitProducer as _ecalCPURecHitProducer
505  process.hltEcalRecHitSoA = _ecalCPURecHitProducer.clone(
506  recHitsInLabelEB = ("hltEcalRecHitGPU", "EcalRecHitsEB"),
507  recHitsInLabelEE = ("hltEcalRecHitGPU", "EcalRecHitsEE"),
508  )
509 
510  # SwitchProducer wrapping the legacy ECAL calibrated rechits producer or a converter from SoA to legacy format
511  from RecoLocalCalo.EcalRecProducers.ecalRecHitConvertGPU2CPUFormat_cfi import ecalRecHitConvertGPU2CPUFormat as _ecalRecHitConvertGPU2CPUFormat
512  process.hltEcalRecHit = SwitchProducerCUDA(
513  # legacy producer
514  cpu = process.hltEcalRecHit,
515  # convert the ECAL calibrated rechits from SoA to legacy format
516  cuda = _ecalRecHitConvertGPU2CPUFormat.clone(
517  recHitsLabelGPUEB = ("hltEcalRecHitSoA", "EcalRecHitsEB"),
518  recHitsLabelGPUEE = ("hltEcalRecHitSoA", "EcalRecHitsEE"),
519  )
520  )
521  """
522 
523  # SwitchProducer wrapping the legacy ECAL rechits producer
524  # the gpu unpacker does not produce the TPs used for the recovery, so the SwitchProducer alias does not provide them:
525  # - the cpu uncalibrated rechit producer may mark them for recovery, read the TPs explicitly from the legacy unpacker
526  # - the gpu uncalibrated rechit producer does not flag them for recovery, so the TPs are not necessary
527  process.hltEcalRecHit = SwitchProducerCUDA(
528  cpu = process.hltEcalRecHit.clone(
529  triggerPrimitiveDigiCollection = ('hltEcalDigisLegacy', 'EcalTriggerPrimitives')
530  ),
531  cuda = process.hltEcalRecHit.clone(
532  triggerPrimitiveDigiCollection = 'unused'
533  )
534  )
535 
536  # Tasks and Sequences
537 
538  process.HLTDoFullUnpackingEgammaEcalWithoutPreshowerTask = cms.Task(
539  process.hltEcalDigisGPU, # unpack ECAL digis on gpu
540  process.hltEcalDigisLegacy, # legacy producer, referenced in the SwitchProducer
541  process.hltEcalDigis, # SwitchProducer
542  process.hltEcalUncalibRecHitGPU, # run ECAL local reconstruction and multifit on gpu
543  process.hltEcalUncalibRecHitSoA, # needed by hltEcalPhiSymFilter - copy to host
544  process.hltEcalUncalibRecHit, # needed by hltEcalPhiSymFilter - convert to legacy format
545  # process.hltEcalRecHitGPU, # make ECAL calibrated rechits on gpu
546  # process.hltEcalRecHitSoA, # copy to host
547  process.hltEcalDetIdToBeRecovered, # legacy producer
548  process.hltEcalRecHit) # legacy producer
549 
550  process.HLTDoFullUnpackingEgammaEcalWithoutPreshowerSequence = cms.Sequence(
551  process.HLTDoFullUnpackingEgammaEcalWithoutPreshowerTask)
552 
553  if hasHLTEcalPreshowerSeq:
554  process.HLTPreshowerTask = cms.Task(
555  process.hltEcalPreshowerDigis, # unpack ECAL preshower digis on the host
556  process.hltEcalPreshowerRecHit) # build ECAL preshower rechits on the host
557 
558  process.HLTPreshowerSequence = cms.Sequence(process.HLTPreshowerTask)
559 
560  process.HLTDoFullUnpackingEgammaEcalTask = cms.Task(
561  process.HLTDoFullUnpackingEgammaEcalWithoutPreshowerTask,
562  process.HLTPreshowerTask)
563 
564  process.HLTDoFullUnpackingEgammaEcalSequence = cms.Sequence(
565  process.HLTDoFullUnpackingEgammaEcalTask)
566 
567  process.HLTDoFullUnpackingEgammaEcalMFSequence = cms.Sequence(
568  process.HLTDoFullUnpackingEgammaEcalTask)
569 
570  # done
571  return process
572 
573 # customisation for offloading the HCAL local reconstruction via CUDA if a supported gpu is present

References any().

Referenced by customizeHLTforPatatrack(), and customizeHLTforPatatrackTriplets().

◆ customiseHcalLocalReconstruction()

def customizeHLTforPatatrack.customiseHcalLocalReconstruction (   process)

Definition at line 574 of file customizeHLTforPatatrack.py.

575 
576  hasHLTDoLocalHcalSeq = 'HLTDoLocalHcalSequence' in process.__dict__
577  if not (hasHLTDoLocalHcalSeq or 'HLTStoppedHSCPLocalHcalReco' in process.__dict__):
578  return process
579 
580  # FIXME replace the Sequences with empty ones to avoid expanding them during the (re)definition of Modules and EDAliases
581 
582  if hasHLTDoLocalHcalSeq:
583  process.HLTDoLocalHcalSequence = cms.Sequence()
584  process.HLTStoppedHSCPLocalHcalReco = cms.Sequence()
585 
586 
587  # Event Setup
588 
589  process.load("EventFilter.HcalRawToDigi.hcalElectronicsMappingGPUESProducer_cfi")
590 
591  process.load("RecoLocalCalo.HcalRecProducers.hcalChannelQualityGPUESProducer_cfi")
592  process.load("RecoLocalCalo.HcalRecProducers.hcalGainsGPUESProducer_cfi")
593  process.load("RecoLocalCalo.HcalRecProducers.hcalGainWidthsGPUESProducer_cfi")
594  process.load("RecoLocalCalo.HcalRecProducers.hcalLUTCorrsGPUESProducer_cfi")
595  process.load("RecoLocalCalo.HcalRecProducers.hcalConvertedPedestalsGPUESProducer_cfi")
596  process.load("RecoLocalCalo.HcalRecProducers.hcalConvertedEffectivePedestalsGPUESProducer_cfi")
597  process.hcalConvertedEffectivePedestalsGPUESProducer.label0 = "withTopoEff"
598  process.load("RecoLocalCalo.HcalRecProducers.hcalConvertedPedestalWidthsGPUESProducer_cfi")
599  process.load("RecoLocalCalo.HcalRecProducers.hcalConvertedEffectivePedestalWidthsGPUESProducer_cfi")
600  process.hcalConvertedEffectivePedestalWidthsGPUESProducer.label0 = "withTopoEff"
601  process.hcalConvertedEffectivePedestalWidthsGPUESProducer.label1 = "withTopoEff"
602  process.load("RecoLocalCalo.HcalRecProducers.hcalQIECodersGPUESProducer_cfi")
603  process.load("RecoLocalCalo.HcalRecProducers.hcalRecoParamsWithPulseShapesGPUESProducer_cfi")
604  process.load("RecoLocalCalo.HcalRecProducers.hcalRespCorrsGPUESProducer_cfi")
605  process.load("RecoLocalCalo.HcalRecProducers.hcalTimeCorrsGPUESProducer_cfi")
606  process.load("RecoLocalCalo.HcalRecProducers.hcalQIETypesGPUESProducer_cfi")
607  process.load("RecoLocalCalo.HcalRecProducers.hcalSiPMParametersGPUESProducer_cfi")
608  process.load("RecoLocalCalo.HcalRecProducers.hcalSiPMCharacteristicsGPUESProducer_cfi")
609  process.load("RecoLocalCalo.HcalRecProducers.hcalMahiPulseOffsetsGPUESProducer_cfi")
610 
611 
612  # Modules and EDAliases
613 
614  # The HCAL unpacker running on the gpu supports only the HB and HE digis.
615  # So, run the legacy unacker on the cpu, then convert the HB and HE digis
616  # to SoA format and copy them to the gpu.
617  from EventFilter.HcalRawToDigi.hcalDigisProducerGPU_cfi import hcalDigisProducerGPU as _hcalDigisProducerGPU
618  process.hltHcalDigisGPU = _hcalDigisProducerGPU.clone(
619  hbheDigisLabel = "hltHcalDigis",
620  qie11DigiLabel = "hltHcalDigis",
621  digisLabelF01HE = "",
622  digisLabelF5HB = "",
623  digisLabelF3HB = ""
624  )
625 
626  # run the HCAL local reconstruction (including Method 0 and MAHI) on gpu
627  from RecoLocalCalo.HcalRecProducers.hbheRecHitProducerGPU_cfi import hbheRecHitProducerGPU as _hbheRecHitProducerGPU
628  process.hltHbherecoGPU = _hbheRecHitProducerGPU.clone(
629  digisLabelF01HE = "hltHcalDigisGPU",
630  digisLabelF5HB = "hltHcalDigisGPU",
631  digisLabelF3HB = "hltHcalDigisGPU",
632  recHitsLabelM0HBHE = ""
633  )
634 
635  # transfer the HCAL rechits to the cpu, and convert them to the legacy format
636  from RecoLocalCalo.HcalRecProducers.hcalCPURecHitsProducer_cfi import hcalCPURecHitsProducer as _hcalCPURecHitsProducer
637  process.hltHbherecoFromGPU = _hcalCPURecHitsProducer.clone(
638  recHitsM0LabelIn = "hltHbherecoGPU",
639  recHitsM0LabelOut = "",
640  recHitsLegacyLabelOut = ""
641  )
642 
643  # SwitchProducer between the legacy producer and the copy from gpu with conversion
644  process.hltHbhereco = SwitchProducerCUDA(
645  # legacy producer
646  cpu = process.hltHbhereco.clone(),
647  # alias to the rechits converted to legacy format
648  cuda = cms.EDAlias(
649  hltHbherecoFromGPU = cms.VPSet(
650  cms.PSet(type = cms.string("HBHERecHitsSorted"))
651  )
652  )
653  )
654 
655 
656  # Tasks and Sequences
657  if hasHLTDoLocalHcalSeq:
658  process.HLTDoLocalHcalTask = cms.Task(
659  process.hltHcalDigis, # legacy producer, unpack HCAL digis on cpu
660  process.hltHcalDigisGPU, # copy to gpu and convert to SoA format
661  process.hltHbherecoGPU, # run the HCAL local reconstruction (including Method 0 and MAHI) on gpu
662  process.hltHbherecoFromGPU, # transfer the HCAL rechits to the cpu, and convert them to the legacy format
663  process.hltHbhereco, # SwitchProducer between the legacy producer and the copy from gpu with conversion
664  process.hltHfprereco, # legacy producer
665  process.hltHfreco, # legacy producer
666  process.hltHoreco) # legacy producer
667 
668  process.HLTDoLocalHcalSequence = cms.Sequence(
669  process.HLTDoLocalHcalTask)
670 
671  process.HLTStoppedHSCPLocalHcalRecoTask = cms.Task(
672  process.hltHcalDigis, # legacy producer, unpack HCAL digis on cpu
673  process.hltHcalDigisGPU, # copy to gpu and convert to SoA format
674  process.hltHbherecoGPU, # run the HCAL local reconstruction (including Method 0 and MAHI) on gpu
675  process.hltHbherecoFromGPU, # transfer the HCAL rechits to the cpu, and convert them to the legacy format
676  process.hltHbhereco) # SwitchProducer between the legacy producer and the copy from gpu with conversion
677 
678  process.HLTStoppedHSCPLocalHcalReco = cms.Sequence(
679  process.HLTStoppedHSCPLocalHcalRecoTask)
680 
681 
682  # done
683  return process
684 
685 
686 # customisation to enable pixel triplets instead of quadruplets

Referenced by customizeHLTforPatatrack(), and customizeHLTforPatatrackTriplets().

◆ customisePixelLocalReconstruction()

def customizeHLTforPatatrack.customisePixelLocalReconstruction (   process)

Definition at line 95 of file customizeHLTforPatatrack.py.

96 
97  if not 'HLTDoLocalPixelSequence' in process.__dict__:
98  return process
99 
100  # FIXME replace the Sequences with empty ones to avoid expanding them during the (re)definition of Modules and EDAliases
101 
102  process.HLTDoLocalPixelSequence = cms.Sequence()
103 
104 
105  # Event Setup
106 
107  process.load("CalibTracker.SiPixelESProducers.siPixelGainCalibrationForHLTGPU_cfi") # this should be used only on GPUs, will crash otherwise
108  process.load("CalibTracker.SiPixelESProducers.siPixelROCsStatusAndMappingWrapperESProducer_cfi") # this should be used only on GPUs, will crash otherwise
109  process.load("RecoLocalTracker.SiPixelRecHits.PixelCPEFastESProducer_cfi")
110 
111 
112  # Modules and EDAliases
113 
114  # referenced in HLTDoLocalPixelTask
115 
116  # transfer the beamspot to the gpu
117  from RecoVertex.BeamSpotProducer.offlineBeamSpotToCUDA_cfi import offlineBeamSpotToCUDA as _offlineBeamSpotToCUDA
118  process.hltOnlineBeamSpotToCUDA = _offlineBeamSpotToCUDA.clone(
119  src = "hltOnlineBeamSpot"
120  )
121 
122  # reconstruct the pixel digis and clusters on the gpu
123  from RecoLocalTracker.SiPixelClusterizer.siPixelRawToClusterCUDA_cfi import siPixelRawToClusterCUDA as _siPixelRawToClusterCUDA
124  process.hltSiPixelClustersCUDA = _siPixelRawToClusterCUDA.clone(
125  # use the same thresholds as the legacy module
126  clusterThreshold_layer1 = process.hltSiPixelClusters.ClusterThreshold_L1,
127  clusterThreshold_otherLayers = process.hltSiPixelClusters.ClusterThreshold
128  )
129  # use the pixel channel calibrations scheme for Run 3
130  run3_common.toModify(process.hltSiPixelClustersCUDA, isRun2 = False)
131 
132  # copy the pixel digis errors to the host
133  from EventFilter.SiPixelRawToDigi.siPixelDigiErrorsSoAFromCUDA_cfi import siPixelDigiErrorsSoAFromCUDA as _siPixelDigiErrorsSoAFromCUDA
134  process.hltSiPixelDigiErrorsSoA = _siPixelDigiErrorsSoAFromCUDA.clone(
135  src = "hltSiPixelClustersCUDA"
136  )
137 
138  # copy the pixel digis (except errors) and clusters to the host
139  from EventFilter.SiPixelRawToDigi.siPixelDigisSoAFromCUDA_cfi import siPixelDigisSoAFromCUDA as _siPixelDigisSoAFromCUDA
140  process.hltSiPixelDigisSoA = _siPixelDigisSoAFromCUDA.clone(
141  src = "hltSiPixelClustersCUDA"
142  )
143 
144  # reconstruct the pixel digis on the cpu
145  process.hltSiPixelDigisLegacy = process.hltSiPixelDigis.clone()
146 
147  # SwitchProducer wrapping a subset of the legacy pixel digis producer, or the conversion of the pixel digis errors to the legacy format
148  from EventFilter.SiPixelRawToDigi.siPixelDigiErrorsFromSoA_cfi import siPixelDigiErrorsFromSoA as _siPixelDigiErrorsFromSoA
149  process.hltSiPixelDigis = SwitchProducerCUDA(
150  # legacy producer
151  cpu = cms.EDAlias(
152  hltSiPixelDigisLegacy = cms.VPSet(
153  cms.PSet(type = cms.string("DetIdedmEDCollection")),
154  cms.PSet(type = cms.string("SiPixelRawDataErroredmDetSetVector")),
155  cms.PSet(type = cms.string("PixelFEDChanneledmNewDetSetVector"))
156  )
157  ),
158  # conversion from SoA to legacy format
159  cuda = _siPixelDigiErrorsFromSoA.clone(
160  digiErrorSoASrc = "hltSiPixelDigiErrorsSoA",
161  UsePhase1 = True
162  )
163  )
164 
165  # reconstruct the pixel clusters on the cpu
166  process.hltSiPixelClustersLegacy = process.hltSiPixelClusters.clone(
167  # update the threshold for compatibility with the gpu reconstruction
168  ChannelThreshold = 10
169  )
170 
171  # SwitchProducer wrapping a subset of the legacy pixel cluster producer, or the conversion of the pixel digis (except errors) and clusters to the legacy format
172  from RecoLocalTracker.SiPixelClusterizer.siPixelDigisClustersFromSoA_cfi import siPixelDigisClustersFromSoA as _siPixelDigisClustersFromSoA
173  process.hltSiPixelClusters = SwitchProducerCUDA(
174  # legacy producer
175  cpu = cms.EDAlias(
176  hltSiPixelClustersLegacy = cms.VPSet(
177  cms.PSet(type = cms.string("SiPixelClusteredmNewDetSetVector"))
178  )
179  ),
180  # conversion from SoA to legacy format
181  cuda = _siPixelDigisClustersFromSoA.clone(
182  src = "hltSiPixelDigisSoA",
183  produceDigis = False,
184  storeDigis = False,
185  # use the same thresholds as the legacy module
186  clusterThreshold_layer1 = process.hltSiPixelClusters.ClusterThreshold_L1,
187  clusterThreshold_otherLayers = process.hltSiPixelClusters.ClusterThreshold
188  )
189  )
190 
191  # reconstruct the pixel rechits on the gpu
192  from RecoLocalTracker.SiPixelRecHits.siPixelRecHitCUDA_cfi import siPixelRecHitCUDA as _siPixelRecHitCUDA
193  process.hltSiPixelRecHitsCUDA = _siPixelRecHitCUDA.clone(
194  src = "hltSiPixelClustersCUDA",
195  beamSpot = "hltOnlineBeamSpotToCUDA"
196  )
197 
198  # SwitchProducer wrapping the legacy pixel rechit producer or the transfer of the pixel rechits to the host and the conversion from SoA
199  from RecoLocalTracker.SiPixelRecHits.siPixelRecHitFromCUDA_cfi import siPixelRecHitFromCUDA as _siPixelRecHitFromCUDA
200  process.hltSiPixelRecHits = SwitchProducerCUDA(
201  # legacy producer
202  cpu = process.hltSiPixelRecHits,
203  # conversion from SoA to legacy format
204  cuda = _siPixelRecHitFromCUDA.clone(
205  pixelRecHitSrc = "hltSiPixelRecHitsCUDA",
206  src = "hltSiPixelClusters"
207  )
208  )
209 
210 
211  # Tasks and Sequences
212 
213  process.HLTDoLocalPixelTask = cms.Task(
214  process.hltOnlineBeamSpotToCUDA, # transfer the beamspot to the gpu
215  process.hltSiPixelClustersCUDA, # reconstruct the pixel digis and clusters on the gpu
216  process.hltSiPixelRecHitsCUDA, # reconstruct the pixel rechits on the gpu
217  process.hltSiPixelDigisSoA, # copy the pixel digis (except errors) and clusters to the host
218  process.hltSiPixelDigiErrorsSoA, # copy the pixel digis errors to the host
219  process.hltSiPixelDigisLegacy, # legacy pixel digis producer
220  process.hltSiPixelDigis, # SwitchProducer wrapping a subset of the legacy pixel digis producer, or the conversion of the pixel digis errors from SoA
221  process.hltSiPixelClustersLegacy, # legacy pixel cluster producer
222  process.hltSiPixelClusters, # SwitchProducer wrapping a subset of the legacy pixel cluster producer, or the conversion of the pixel digis (except errors) and clusters from SoA
223  process.hltSiPixelClustersCache, # legacy module, used by the legacy pixel quadruplet producer
224  process.hltSiPixelRecHits) # SwitchProducer wrapping the legacy pixel rechit producer or the transfer of the pixel rechits to the host and the conversion from SoA
225 
226  process.HLTDoLocalPixelSequence = cms.Sequence(process.HLTDoLocalPixelTask)
227 
228 
229  # workaround for AlCa paths
230 
231  if 'AlCa_LumiPixelsCounts_Random_v1' in process.__dict__:
232  if "HLTSchedule" in process.__dict__:
233  ind = process.HLTSchedule.index(process.AlCa_LumiPixelsCounts_Random_v1)
234  process.HLTSchedule.remove(process.AlCa_LumiPixelsCounts_Random_v1)
235  # redefine the path to use the HLTDoLocalPixelSequence
236  process.AlCa_LumiPixelsCounts_Random_v1 = cms.Path(
237  process.HLTBeginSequenceRandom +
238  process.hltScalersRawToDigi +
239  process.hltPreAlCaLumiPixelsCountsRandom +
240  process.hltPixelTrackerHVOn +
241  process.HLTDoLocalPixelSequence +
242  process.hltAlcaPixelClusterCounts +
243  process.HLTEndSequence )
244  if "HLTSchedule" in process.__dict__:
245  process.HLTSchedule.insert(ind, process.AlCa_LumiPixelsCounts_Random_v1)
246 
247  if 'AlCa_LumiPixelsCounts_ZeroBias_v1' in process.__dict__:
248  if "HLTSchedule" in process.__dict__:
249  ind = process.HLTSchedule.index(process.AlCa_LumiPixelsCounts_ZeroBias_v1)
250  process.HLTSchedule.remove(process.AlCa_LumiPixelsCounts_ZeroBias_v1)
251  # redefine the path to use the HLTDoLocalPixelSequence
252  process.AlCa_LumiPixelsCounts_ZeroBias_v1 = cms.Path(
253  process.HLTBeginSequence +
254  process.hltScalersRawToDigi +
255  process.hltL1sZeroBias +
256  process.hltPreAlCaLumiPixelsCountsZeroBias +
257  process.hltPixelTrackerHVOn +
258  process.HLTDoLocalPixelSequence +
259  process.hltAlcaPixelClusterCounts +
260  process.HLTEndSequence )
261  if "HLTSchedule" in process.__dict__:
262  process.HLTSchedule.insert(ind, process.AlCa_LumiPixelsCounts_ZeroBias_v1)
263 
264 
265  # done
266  return process
267 
268 
269 # customisation for running the "Patatrack" pixel track reconstruction

Referenced by customizeHLTforPatatrack(), and customizeHLTforPatatrackTriplets().

◆ customisePixelTrackReconstruction()

def customizeHLTforPatatrack.customisePixelTrackReconstruction (   process)

Definition at line 270 of file customizeHLTforPatatrack.py.

271 
272  if not 'HLTRecoPixelTracksSequence' in process.__dict__:
273  return process
274 
275  hasHLTPixelVertexReco = 'HLTRecopixelvertexingSequence' in process.__dict__
276 
277  # FIXME replace the Sequences with empty ones to avoid expanding them during the (re)definition of Modules and EDAliases
278 
279  process.HLTRecoPixelTracksSequence = cms.Sequence()
280  if hasHLTPixelVertexReco:
281  process.HLTRecopixelvertexingSequence = cms.Sequence()
282 
283 
284  # Modules and EDAliases
285 
286  # referenced in process.HLTRecoPixelTracksTask
287 
288  # cpu only: convert the pixel rechits from legacy to SoA format
289  from RecoLocalTracker.SiPixelRecHits.siPixelRecHitSoAFromLegacy_cfi import siPixelRecHitSoAFromLegacy as _siPixelRecHitSoAFromLegacy
290  process.hltSiPixelRecHitSoA = _siPixelRecHitSoAFromLegacy.clone(
291  src = "hltSiPixelClusters",
292  beamSpot = "hltOnlineBeamSpot",
293  convertToLegacy = True
294  )
295 
296  # build pixel ntuplets and pixel tracks in SoA format on gpu
297  from RecoPixelVertexing.PixelTriplets.pixelTracksCUDA_cfi import pixelTracksCUDA as _pixelTracksCUDA
298  process.hltPixelTracksCUDA = _pixelTracksCUDA.clone(
299  idealConditions = False,
300  pixelRecHitSrc = "hltSiPixelRecHitsCUDA",
301  onGPU = True
302  )
303  # use quality cuts tuned for Run 2 ideal conditions for all Run 3 workflows
304  run3_common.toModify(process.hltPixelTracksCUDA, idealConditions = True)
305 
306  # SwitchProducer providing the pixel tracks in SoA format on cpu
307  from RecoPixelVertexing.PixelTrackFitting.pixelTracksSoA_cfi import pixelTracksSoA as _pixelTracksSoA
308  process.hltPixelTracksSoA = SwitchProducerCUDA(
309  # build pixel ntuplets and pixel tracks in SoA format on cpu
310  cpu = _pixelTracksCUDA.clone(
311  idealConditions = False,
312  pixelRecHitSrc = "hltSiPixelRecHitSoA",
313  onGPU = False
314  ),
315  # transfer the pixel tracks in SoA format to the host
316  cuda = _pixelTracksSoA.clone(
317  src = "hltPixelTracksCUDA"
318  )
319  )
320  # use quality cuts tuned for Run 2 ideal conditions for all Run 3 workflows
321  run3_common.toModify(process.hltPixelTracksSoA.cpu, idealConditions = True)
322 
323  # convert the pixel tracks from SoA to legacy format
324  from RecoPixelVertexing.PixelTrackFitting.pixelTrackProducerFromSoA_cfi import pixelTrackProducerFromSoA as _pixelTrackProducerFromSoA
325  process.hltPixelTracks = _pixelTrackProducerFromSoA.clone(
326  beamSpot = "hltOnlineBeamSpot",
327  pixelRecHitLegacySrc = "hltSiPixelRecHits",
328  trackSrc = "hltPixelTracksSoA"
329  )
330 
331 
332  # referenced in process.HLTRecopixelvertexingTask
333  if hasHLTPixelVertexReco:
334 
335  # build pixel vertices in SoA format on gpu
336  from RecoPixelVertexing.PixelVertexFinding.pixelVerticesCUDA_cfi import pixelVerticesCUDA as _pixelVerticesCUDA
337  process.hltPixelVerticesCUDA = _pixelVerticesCUDA.clone(
338  pixelTrackSrc = "hltPixelTracksCUDA",
339  onGPU = True
340  )
341 
342  # build or transfer pixel vertices in SoA format on cpu
343  from RecoPixelVertexing.PixelVertexFinding.pixelVerticesSoA_cfi import pixelVerticesSoA as _pixelVerticesSoA
344  process.hltPixelVerticesSoA = SwitchProducerCUDA(
345  # build pixel vertices in SoA format on cpu
346  cpu = _pixelVerticesCUDA.clone(
347  pixelTrackSrc = "hltPixelTracksSoA",
348  onGPU = False
349  ),
350  # transfer the pixel vertices in SoA format to cpu
351  cuda = _pixelVerticesSoA.clone(
352  src = "hltPixelVerticesCUDA"
353  )
354  )
355 
356  # convert the pixel vertices from SoA to legacy format
357  from RecoPixelVertexing.PixelVertexFinding.pixelVertexFromSoA_cfi import pixelVertexFromSoA as _pixelVertexFromSoA
358  process.hltPixelVertices = _pixelVertexFromSoA.clone(
359  src = "hltPixelVerticesSoA",
360  TrackCollection = "hltPixelTracks",
361  beamSpot = "hltOnlineBeamSpot"
362  )
363 
364 
365  # Tasks and Sequences
366 
367  process.HLTRecoPixelTracksTask = cms.Task(
368  process.hltPixelTracksTrackingRegions, # from the original sequence
369  process.hltSiPixelRecHitSoA, # pixel rechits on cpu, converted to SoA
370  process.hltPixelTracksCUDA, # pixel ntuplets on gpu, in SoA format
371  process.hltPixelTracksSoA, # pixel ntuplets on cpu, in SoA format
372  process.hltPixelTracks) # pixel tracks on cpu, in legacy format
373 
374 
375  process.HLTRecoPixelTracksSequence = cms.Sequence(process.HLTRecoPixelTracksTask)
376 
377  if hasHLTPixelVertexReco:
378  process.HLTRecopixelvertexingTask = cms.Task(
379  process.HLTRecoPixelTracksTask,
380  process.hltPixelVerticesCUDA, # pixel vertices on gpu, in SoA format
381  process.hltPixelVerticesSoA, # pixel vertices on cpu, in SoA format
382  process.hltPixelVertices, # pixel vertices on cpu, in legacy format
383  process.hltTrimmedPixelVertices) # from the original sequence
384 
385  process.HLTRecopixelvertexingSequence = cms.Sequence(
386  process.hltPixelTracksFitter + # not used here, kept for compatibility with legacy sequences
387  process.hltPixelTracksFilter, # not used here, kept for compatibility with legacy sequences
388  process.HLTRecopixelvertexingTask)
389 
390 
391  # done
392  return process
393 
394 
395 # customisation for offloading the ECAL local reconstruction via CUDA if a supported gpu is present

Referenced by customizeHLTforPatatrack(), and customizeHLTforPatatrackTriplets().

◆ customizeHLTforPatatrack()

def customizeHLTforPatatrack.customizeHLTforPatatrack (   process)

Definition at line 704 of file customizeHLTforPatatrack.py.

704 def customizeHLTforPatatrack(process):
705  process = customiseCommon(process)
706  process = customisePixelLocalReconstruction(process)
707  process = customisePixelTrackReconstruction(process)
708  process = customiseEcalLocalReconstruction(process)
709  process = customiseHcalLocalReconstruction(process)
710  return process
711 
712 
713 # customisation for running the Patatrack triplets reconstruction, with automatic offload via CUDA when a supported gpu is available

References customiseCommon(), customiseEcalLocalReconstruction(), customiseHcalLocalReconstruction(), customisePixelLocalReconstruction(), and customisePixelTrackReconstruction().

◆ customizeHLTforPatatrackTriplets()

def customizeHLTforPatatrack.customizeHLTforPatatrackTriplets (   process)

◆ enablePatatrackPixelTriplets()

def customizeHLTforPatatrack.enablePatatrackPixelTriplets (   process)

Definition at line 687 of file customizeHLTforPatatrack.py.

687 def enablePatatrackPixelTriplets(process):
688 
689  if 'hltPixelTracksCUDA' in process.__dict__:
690  # configure GPU pixel tracks for triplets
691  process.hltPixelTracksCUDA.minHitsPerNtuplet = 3
692  process.hltPixelTracksCUDA.includeJumpingForwardDoublets = True
693 
694  if 'hltPixelTracksSoA' in process.__dict__:
695  # configure CPU pixel tracks for triplets
696  process.hltPixelTracksSoA.cpu.minHitsPerNtuplet = 3
697  process.hltPixelTracksSoA.cpu.includeJumpingForwardDoublets = True
698 
699  # done
700  return process
701 
702 
703 # customisation for running the Patatrack reconstruction, with automatic offload via CUDA when a supported gpu is available

Referenced by customizeHLTforPatatrackTriplets().

◆ forceGpuOffload()

def customizeHLTforPatatrack.forceGpuOffload (   status = True)

Definition at line 9 of file customizeHLTforPatatrack.py.

9 def forceGpuOffload(status = True):
10  import HeterogeneousCore.CUDACore.SwitchProducerCUDA
11  HeterogeneousCore.CUDACore.SwitchProducerCUDA._cuda_enabled_cached = bool(status)
12 
13 
14 # reset the SwitchProducerCUDA choice to pick a backend depending on the availability of a supported gpu

References electrons_cff.bool.

◆ resetGpuOffload()

def customizeHLTforPatatrack.resetGpuOffload ( )

Definition at line 15 of file customizeHLTforPatatrack.py.

15 def resetGpuOffload():
16  import HeterogeneousCore.CUDACore.SwitchProducerCUDA
17  HeterogeneousCore.CUDACore.SwitchProducerCUDA._cuda_enabled_cached = None
18  HeterogeneousCore.CUDACore.SwitchProducerCUDA._switch_cuda()
19 
20 
21 # customisation for running the Patatrack reconstruction, common parts
customizeHLTforPatatrack.customisePixelTrackReconstruction
def customisePixelTrackReconstruction(process)
Definition: customizeHLTforPatatrack.py:270
electrons_cff.bool
bool
Definition: electrons_cff.py:366
customizeHLTforPatatrack.enablePatatrackPixelTriplets
def enablePatatrackPixelTriplets(process)
Definition: customizeHLTforPatatrack.py:687
customizeHLTforPatatrack.customiseHcalLocalReconstruction
def customiseHcalLocalReconstruction(process)
Definition: customizeHLTforPatatrack.py:574
customizeHLTforPatatrack.customiseEcalLocalReconstruction
def customiseEcalLocalReconstruction(process)
Definition: customizeHLTforPatatrack.py:396
any
bool any(const std::vector< T > &v, const T &what)
Definition: ECalSD.cc:37
common.replace_with
def replace_with(fromObj, toObj)
Definition: common.py:67
customizeHLTforPatatrack.customiseCommon
def customiseCommon(process)
Definition: customizeHLTforPatatrack.py:22
customizeHLTforPatatrack._addConsumerPath
def _addConsumerPath(process)
Definition: customizeHLTforPatatrack.py:724
customizeHLTforPatatrack.consumeCPULegacyProducts
def consumeCPULegacyProducts(process)
Definition: customizeHLTforPatatrack.py:792
customizeHLTforPatatrack.consumeGPUSoAProducts
def consumeGPUSoAProducts(process)
Definition: customizeHLTforPatatrack.py:747
customizeHLTforPatatrack.customizeHLTforPatatrack
def customizeHLTforPatatrack(process)
Definition: customizeHLTforPatatrack.py:704
customizeHLTforPatatrack.resetGpuOffload
def resetGpuOffload()
Definition: customizeHLTforPatatrack.py:15
customizeHLTforPatatrack.consumeCPUSoAProducts
def consumeCPUSoAProducts(process)
Definition: customizeHLTforPatatrack.py:770
customizeHLTforPatatrack.customizeHLTforPatatrackTriplets
def customizeHLTforPatatrackTriplets(process)
Definition: customizeHLTforPatatrack.py:714
customizeHLTforPatatrack.customisePixelLocalReconstruction
def customisePixelLocalReconstruction(process)
Definition: customizeHLTforPatatrack.py:95
common.insert_modules_after
def insert_modules_after(process, target, *modules)
Definition: common.py:50
customizeHLTforPatatrack.forceGpuOffload
def forceGpuOffload(status=True)
Definition: customizeHLTforPatatrack.py:9
SwitchProducerCUDA
Definition: SwitchProducerCUDA.py:1