Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-01-09 23:33:50

0001 import FWCore.ParameterSet.Config as cms
0002 from HeterogeneousCore.AlpakaCore.functions import *
0003 from Configuration.Eras.Modifier_run3_common_cff import run3_common
0004 from Configuration.ProcessModifiers.alpaka_cff import alpaka
0005 
0006 # HIon Modifiers
0007 from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA
0008 # Phase 2 Tracker Modifier
0009 from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker
0010 
0011 # The legacy pixel cluster producer
0012 from RecoLocalTracker.SiPixelClusterizer.SiPixelClusterizerPreSplitting_cfi import siPixelClustersPreSplitting
0013 
0014 siPixelClustersPreSplittingTask = cms.Task(
0015     siPixelClustersPreSplitting
0016 )
0017 
0018 ######################################################################
0019 
0020 ### Alpaka Pixel Clusters Reco
0021 
0022 #from CalibTracker.SiPixelESProducers.siPixelCablingSoAESProducer_cfi import siPixelCablingSoAESProducer
0023 #from CalibTracker.SiPixelESProducers.siPixelGainCalibrationForHLTSoAESProducer_cfi import siPixelGainCalibrationForHLTSoAESProducer
0024 
0025 def _addProcessCalibTrackerAlpakaES(process):
0026     process.load("CalibTracker.SiPixelESProducers.siPixelCablingSoAESProducer_cfi")
0027     process.load("CalibTracker.SiPixelESProducers.siPixelGainCalibrationForHLTSoAESProducer_cfi")
0028 
0029 modifyConfigurationCalibTrackerAlpakaES_ = alpaka.makeProcessModifier(_addProcessCalibTrackerAlpakaES)
0030 
0031 # reconstruct the pixel digis and clusters with alpaka on the device
0032 from RecoLocalTracker.SiPixelClusterizer.siPixelRawToClusterPhase1_cfi import siPixelRawToClusterPhase1 as _siPixelRawToClusterAlpaka
0033 from RecoLocalTracker.SiPixelClusterizer.siPixelRawToClusterHIonPhase1_cfi import siPixelRawToClusterHIonPhase1 as _siPixelRawToClusterAlpakaHIonPhase1
0034 
0035 siPixelClustersPreSplittingAlpaka = _siPixelRawToClusterAlpaka.clone()
0036 
0037 (alpaka & pp_on_AA & ~phase2_tracker).toReplaceWith(siPixelClustersPreSplittingAlpaka,_siPixelRawToClusterAlpakaHIonPhase1.clone())
0038 
0039 (alpaka & run3_common).toModify(siPixelClustersPreSplittingAlpaka,
0040     # use the pixel channel calibrations scheme for Run 3
0041     clusterThreshold_layer1 = 4000,
0042     VCaltoElectronGain      = 1,  # all gains=1, pedestals=0
0043     VCaltoElectronGain_L1   = 1,
0044     VCaltoElectronOffset    = 0,
0045     VCaltoElectronOffset_L1 = 0)
0046 
0047 from RecoLocalTracker.SiPixelClusterizer.siPixelPhase2DigiToCluster_cfi import siPixelPhase2DigiToCluster as _siPixelPhase2DigiToCluster
0048 
0049 # for phase2 no pixel raw2digi is available at the moment
0050 # so we skip the raw2digi step and run on pixel digis copied to gpu
0051 from SimTracker.SiPhase2Digitizer.phase2TrackerDigitizer_cfi import PixelDigitizerAlgorithmCommon
0052 
0053 (alpaka & phase2_tracker).toReplaceWith(siPixelClustersPreSplittingAlpaka, _siPixelPhase2DigiToCluster.clone(
0054     Phase2ReadoutMode = PixelDigitizerAlgorithmCommon.Phase2ReadoutMode.value(), # flag to decide Readout Mode : linear TDR (-1), dual slope with slope parameters (+1,+2,+3,+4 ...) with threshold subtraction
0055     Phase2DigiBaseline = int(PixelDigitizerAlgorithmCommon.ThresholdInElectrons_Barrel.value()), # same for barrel and endcap
0056     Phase2KinkADC = 8,
0057     ElectronPerADCGain = PixelDigitizerAlgorithmCommon.ElectronPerAdc.value()
0058 ))
0059 
0060 # reconstruct the pixel digis and clusters with alpaka on the cpu, for validation
0061 siPixelClustersPreSplittingAlpakaSerial = makeSerialClone(siPixelClustersPreSplittingAlpaka)
0062 
0063 from RecoLocalTracker.SiPixelClusterizer.siPixelDigisClustersFromSoAAlpakaPhase1_cfi import siPixelDigisClustersFromSoAAlpakaPhase1 as _siPixelDigisClustersFromSoAAlpakaPhase1
0064 from RecoLocalTracker.SiPixelClusterizer.siPixelDigisClustersFromSoAAlpakaPhase2_cfi import siPixelDigisClustersFromSoAAlpakaPhase2 as _siPixelDigisClustersFromSoAAlpakaPhase2
0065 from RecoLocalTracker.SiPixelClusterizer.siPixelDigisClustersFromSoAAlpakaHIonPhase1_cfi import siPixelDigisClustersFromSoAAlpakaHIonPhase1 as _siPixelDigisClustersFromSoAAlpakaHIonPhase1
0066 
0067 alpaka.toReplaceWith(siPixelClustersPreSplitting,_siPixelDigisClustersFromSoAAlpakaPhase1.clone(
0068     src = "siPixelClustersPreSplittingAlpaka"
0069 ))
0070 
0071 (alpaka & pp_on_AA & ~phase2_tracker).toReplaceWith(siPixelClustersPreSplitting,_siPixelDigisClustersFromSoAAlpakaHIonPhase1.clone(
0072     src = "siPixelClustersPreSplittingAlpaka"
0073 ))
0074 
0075 (alpaka & phase2_tracker).toReplaceWith(siPixelClustersPreSplitting,_siPixelDigisClustersFromSoAAlpakaPhase2.clone(
0076     clusterThreshold_layer1 = 4000,
0077     clusterThreshold_otherLayers = 4000,
0078     src = "siPixelClustersPreSplittingAlpaka",
0079     storeDigis = False,
0080     produceDigis = False
0081 ))
0082 
0083 # These produce pixelDigiErrors in Alpaka; they are constructed here because they need
0084 # siPixelClustersPreSplittingAlpaka* as input
0085 from EventFilter.SiPixelRawToDigi.siPixelDigiErrorsFromSoAAlpaka_cfi import siPixelDigiErrorsFromSoAAlpaka as _siPixelDigiErrorsFromSoAAlpaka
0086 siPixelDigiErrorsAlpaka = _siPixelDigiErrorsFromSoAAlpaka.clone(
0087     digiErrorSoASrc = cms.InputTag('siPixelClustersPreSplittingAlpaka'),
0088     fmtErrorsSoASrc = cms.InputTag('siPixelClustersPreSplittingAlpaka'),
0089     UsePhase1 = cms.bool(True)
0090 )
0091 
0092 siPixelDigiErrorsAlpakaSerial = siPixelDigiErrorsAlpaka.clone(
0093     digiErrorSoASrc = cms.InputTag('siPixelClustersPreSplittingAlpakaSerial'),
0094     fmtErrorsSoASrc = cms.InputTag('siPixelClustersPreSplittingAlpakaSerial')
0095 )
0096 
0097 # Run 3
0098 alpaka.toReplaceWith(siPixelClustersPreSplittingTask, cms.Task(
0099     # reconstruct the pixel clusters with alpaka
0100     siPixelClustersPreSplittingAlpaka,
0101     # reconstruct the pixel clusters with alpaka on the cpu (if requested by the validation)
0102     siPixelClustersPreSplittingAlpakaSerial,
0103     # reconstruct pixel digis errors legacy with alpaka on serial and device
0104     siPixelDigiErrorsAlpaka,
0105     siPixelDigiErrorsAlpakaSerial,
0106     # convert from host SoA to legacy formats (digis and clusters)
0107     siPixelClustersPreSplitting
0108 ))
0109 
0110 # Phase 2
0111 (alpaka & phase2_tracker).toReplaceWith(siPixelClustersPreSplittingTask, cms.Task(
0112     # reconstruct the pixel clusters with alpaka from copied digis
0113     siPixelClustersPreSplittingAlpaka,
0114     # reconstruct the pixel clusters with alpaka from copied digis on the cpu (if requested by the validation)
0115     siPixelClustersPreSplittingAlpakaSerial,
0116     # reconstruct pixel digis errors legacy with alpaka on serial and device
0117     siPixelDigiErrorsAlpaka,
0118     siPixelDigiErrorsAlpakaSerial,
0119     # convert the pixel digis (except errors) and clusters to the legacy format
0120     siPixelClustersPreSplitting
0121 ))