Beispiel #1
0
def customizePixelTracksSoAonCPU(process):

    process.CUDAService = cms.Service("CUDAService",
                                      enabled=cms.untracked.bool(False))

    from RecoLocalTracker.SiPixelRecHits.siPixelRecHitHostSoA_cfi import siPixelRecHitHostSoA
    process.siPixelRecHitsPreSplitting = siPixelRecHitHostSoA.clone(
        convertToLegacy=True)

    from RecoPixelVertexing.PixelTriplets.caHitNtupletCUDA_cfi import caHitNtupletCUDA
    process.pixelTrackSoA = caHitNtupletCUDA.clone(
        onGPU=False, pixelRecHitSrc='siPixelRecHitsPreSplitting')

    from RecoPixelVertexing.PixelVertexFinding.pixelVertexCUDA_cfi import pixelVertexCUDA
    process.pixelVertexSoA = pixelVertexCUDA.clone(
        onGPU=False, pixelTrackSrc='pixelTrackSoA')

    from RecoPixelVertexing.PixelTrackFitting.pixelTrackProducerFromSoA_cfi import pixelTrackProducerFromSoA
    process.pixelTracks = pixelTrackProducerFromSoA.clone(
        pixelRecHitLegacySrc='siPixelRecHitsPreSplitting')

    from RecoPixelVertexing.PixelVertexFinding.pixelVertexFromSoA_cfi import pixelVertexFromSoA
    process.pixelVertices = pixelVertexFromSoA.clone()

    process.reconstruction_step += process.siPixelRecHitsPreSplitting + process.pixelTrackSoA + process.pixelVertexSoA

    return process
Beispiel #2
0
def customizePixelTracksSoAonCPU(process) :

  from RecoLocalTracker.SiPixelRecHits.siPixelRecHitHostSoA_cfi import siPixelRecHitHostSoA as _siPixelRecHitFromSOA
  #from RecoPixelVertexing.PixelVertexFinding.pixelVertexCoordinates_cfi import pixelVertexCoordinates as _pixelVertexCoordinates

  process.load('RecoLocalTracker/SiPixelRecHits/siPixelRecHitHostSoA_cfi')
  process.load('RecoPixelVertexing.PixelTriplets.caHitNtupletCUDA_cfi')
  process.load('RecoPixelVertexing.PixelTrackFitting.pixelTrackProducerFromSoA_cfi')
  process.load('RecoPixelVertexing.PixelVertexFinding.pixelVertexFromSoA_cfi')
  process.load('RecoPixelVertexing.PixelVertexFinding.pixelVertexCUDA_cfi')

  process.pixelTrackSoA = process.caHitNtupletCUDA.clone()
  process.pixelTrackSoA.onGPU = False
  process.pixelTrackSoA.pixelRecHitSrc = 'siPixelRecHitsPreSplitting'#'siPixelRecHitHostSoA'

  # process.pixelTrackSoA.earlyFishbone = False
  process.pixelTrackSoA.lateFishbone = True

  #process.pixelTrackSoA.CAThetaCutBarrel  = 0.0020 * 2
  #process.pixelTrackSoA.CAThetaCutForward = 0.0025 * 2

  process.pixelTrackSoA.trackQualityCuts.tripletMinPt = 0.5
  process.pixelTrackSoA.trackQualityCuts.tripletMaxTip = 0.22
  process.pixelTrackSoA.trackQualityCuts.tripletMaxZip = 13.0

  process.pixelTrackSoA.trackQualityCuts.quadrupletMinPt = 0.5
  process.pixelTrackSoA.trackQualityCuts.quadrupletMaxTip = 0.15
  process.pixelTrackSoA.trackQualityCuts.quadrupletMaxZip = 11.5

  #process.pixelTrackSoA.trackQualityCuts.upgrade = True
  #process.pixelTrackSoA.trackQualityCuts.tripletChi2MaxPt = 2.5
  #process.pixelTrackSoA.trackQualityCuts.chi2MaxPt = 2.5

  process.pixelVertexSoA = process.pixelVertexCUDA.clone()
  process.pixelTrackSoA.isUpgrade = True
  process.pixelTrackSoA.doClusterCut= False

  #process.pixelVertexSoA.eps = 0.01
#  process.pixelVertexSoA.onGPU = False
#  process.pixelVertexSoA.pixelTrackSrc = 'pixelTrackSoA'
  process.pixelTracks = process.pixelTrackProducerFromSoA.clone()
  process.pixelTracks.pixelRecHitLegacySrc = 'siPixelRecHitsPreSplitting'#'siPixelRecHitHostSoA'

  process.siPixelRecHitsPreSplitting = _siPixelRecHitFromSOA.clone()
  process.siPixelRecHitsPreSplitting.Upgrade = True
  process.siPixelRecHitsPreSplittingTask = cms.Task(process.siPixelRecHitsPreSplitting)
  process.siPixelRecHitsPreSplitting.convertToLegacy = True
  
  #process.vertexFromL1 = cms.EDProducer("L1ToVertex")
  #process.pixelVertexCoordinates = _pixelVertexCoordinates.clone()
  #process.pixelVertexCoordinates.src = "vertexFromL1"

  process.PixelCPEFastESProducer.Upgrade = True
  process.pixeltrackerlocalrecoTask = cms.Task(process.siPixelClustersPreSplittingTask,process.siPixelRecHitsPreSplittingTask)
  process.reconstruction_step += process.pixelTrackSoA

  return process
Beispiel #3
0
def customizePixelTracksSoAonCPU(process):

    from RecoLocalTracker.SiPixelRecHits.siPixelRecHitHostSoA_cfi import siPixelRecHitHostSoA as _siPixelRecHitFromSOA

    process.load("HeterogeneousCore.CUDAServices.CUDAService_cfi")
    process.load('RecoLocalTracker.SiPixelRecHits.siPixelRecHitHostSoA_cfi')
    process.load('RecoPixelVertexing.PixelTriplets.caHitNtupletCUDA_cfi')
    process.load('RecoPixelVertexing.PixelVertexFinding.pixelVertexCUDA_cfi')
    process.load(
        'RecoPixelVertexing.PixelTrackFitting.pixelTrackProducerFromSoA_cfi')
    process.load(
        'RecoPixelVertexing.PixelVertexFinding.pixelVertexFromSoA_cfi')

    process.siPixelRecHits = _siPixelRecHitFromSOA.clone()
    process.siPixelRecHits.src = 'siPixelClusters'
    process.siPixelRecHits.Upgrade = True
    process.siPixelRecHitsTask = cms.Task(process.siPixelRecHits)
    process.siPixelRecHits.convertToLegacy = True
    process.PixelCPEFastESProducer.Upgrade = True

    process.pixelTrackSoA = process.caHitNtupletCUDA.clone()
    process.pixelTrackSoA.onGPU = False
    process.pixelTrackSoA.pixelRecHitSrc = 'siPixelRecHits'  #'siPixelRecHitHostSoA'
    process.pixelTrackSoA.isUpgrade = True

    process.hltPhase2PixelTracks = process.pixelTrackProducerFromSoA.clone()
    process.hltPhase2PixelTracksSeedLayers.BPix.HitProducer = 'siPixelRecHits'  #"siPixelRecHitHostSoA"
    process.hltPhase2PixelTracksSeedLayers.FPix.HitProducer = 'siPixelRecHits'  #"siPixelRecHitHostSoA"

    process.pixelVertexSoA = process.pixelVertexCUDA.clone()
    process.pixelVertexSoA.onGPU = False
    process.pixelVertexSoA.pixelTrackSrc = 'pixelTrackSoA'

    process.hltPhase2PixelVertices = process.pixelVertexFromSoA.clone()
    process.hltPhase2PixelTracks.pixelRecHitLegacySrc = 'siPixelRecHits'  #'siPixelRecHitHostSoA'
    process.hltPhase2PixelVertices.TrackCollection = 'hltPhase2PixelTracks'

    process.hltPhase2PixelTracksSequence = cms.Sequence(
        process.pixelTrackSoA + process.hltPhase2PixelTracks)

    process.hltPhase2PixelVerticesSequence = cms.Sequence(
        process.pixelVertexSoA + process.hltPhase2PixelVertices +
        process.hltPhase2TrimmedPixelVertices)

    return process
Beispiel #4
0
def customizePixelTracksSoAonGPU(process) :

  from RecoLocalTracker.SiPixelRecHits.siPixelRecHitHostSoA_cfi import siPixelRecHitHostSoA as _siPixelRecHitFromSOA

  process.load('RecoLocalTracker/SiPixelRecHits/siPixelRecHitHostSoA_cfi')
  process.load('RecoPixelVertexing.PixelTriplets.caHitNtupletCUDA_cfi')
  process.load('RecoPixelVertexing.PixelTrackFitting.pixelTrackSoA_cfi')
  process.load('RecoPixelVertexing.PixelTrackFitting.pixelTrackProducerFromSoA_cfi')
  process.load('RecoPixelVertexing.PixelVertexFinding.pixelVertexFromSoA_cfi')
  process.load('RecoPixelVertexing.PixelVertexFinding.pixelVertexCUDA_cfi')

  from RecoLocalTracker.SiPixelClusterizer.siPixelClusterDigisCUDA_cfi import siPixelClusterDigisCUDA
  from RecoLocalTracker.SiPixelClusterizer.siPixelDigisClustersFromSoA_cfi import siPixelDigisClustersFromSoA
  from RecoLocalTracker.SiPixelRecHits.siPixelRecHitCUDA_cfi import siPixelRecHitCUDA
  from RecoLocalTracker.SiPixelRecHits.siPixelRecHitFromSOA_cfi import siPixelRecHitFromSOA

  #from RecoPixelVertexing.PixelTriplets.caHitNtupletCUDA_cfi import caHitNtupletCUDA
  #from RecoPixelVertexing.PixelTrackFitting.pixelTrackSoA_cfi import pixelTrackSoA
  #from RecoPixelVertexing.PixelTrackFitting.pixelTrackProducerFromSoA_cfi import pixelTrackProducerFromSoA as _pixelTrackFromSoA

  process.pixelTrackCUDA = process.caHitNtupletCUDA.clone()
  process.pixelTrackCUDA.onGPU = True
  process.pixelTrackCUDA.pixelRecHitSrc = 'siPixelRecHitCUDA'#'siPixelRecHitHostSoA'

  # process.pixelTrackSoA.earlyFishbone = False
  # process.pixelTrackSoA.lateFishbone = True

  process.pixelTrackCUDA.trackQualityCuts.tripletMinPt = 0.5
  process.pixelTrackCUDA.trackQualityCuts.tripletMaxTip = 0.1
  process.pixelTrackCUDA.trackQualityCuts.tripletMaxZip = 7.5
  process.pixelTrackCUDA.trackQualityCuts.quadrupletMinPt = 0.5
  process.pixelTrackCUDA.trackQualityCuts.quadrupletMaxTip = 0.09
  process.pixelTrackCUDA.trackQualityCuts.quadrupletMaxZip = 9.0
  #process.pixelTrackCUDA.trackQualityCuts.upgrade = True
  #process.pixelTrackCUDA.trackQualityCuts.tripletChi2MaxPt = 2.5
  #process.pixelTrackCUDA.trackQualityCuts.chi2MaxPt = 1.8

  process.pixelVertexSoA = process.pixelVertexCUDA.clone()
  process.pixelTrackCUDA.isUpgrade = True

  process.pixelTrackSoA.src = 'pixelTrackCUDA'
  process.pixelTrackCUDA.doClusterCut= False

  #process.pixelVertexSoA.eps = 0.01
  process.pixelVertexSoA.onGPU = True
  process.pixelVertexSoA.pixelTrackSrc = 'pixelTrackSoA'
  
  
  process.pixelTracks = process.pixelTrackProducerFromSoA.clone()
  process.pixelTracks.pixelRecHitLegacySrc = 'siPixelRecHitsPreSplitting'#'siPixelRecHitFromSOA'#'siPixelRecHitHostSoA'

  #process.pixelVertices = process.pixelVertexFromSoA.clone()

  process.siPixelRecHitsPreSplitting = _siPixelRecHitFromSOA.clone()
  process.siPixelRecHitsPreSplitting.Upgrade = True
  process.siPixelRecHitsPreSplittingTask = cms.Task(process.siPixelRecHitsPreSplitting)
  process.siPixelRecHitsPreSplitting.convertToLegacy = True

  process.PixelCPEFastESProducer.Upgrade = True

  process.siPixelClusterDigisCUDA = siPixelClusterDigisCUDA.clone()
#  process.siPixelDigisClustersFromSoA = siPixelDigisClustersFromSoA.clone()
#  process.siPixelDigisClustersPreSplitting = siPixelDigisClustersFromSoA.clone()
  from EventFilter.SiPixelRawToDigi.siPixelDigisSoAFromCUDA_cfi import siPixelDigisSoAFromCUDA as _siPixelDigisSoAFromCUDA
   
  process.siPixelDigisSoA = _siPixelDigisSoAFromCUDA.clone(
    src = "siPixelClusterDigisCUDA",
    #Upgrade = True
)

  process.siPixelClustersPreSplitting = siPixelDigisClustersFromSoA.clone()
  process.siPixelClustersPreSplitting.src = "siPixelDigisSoA"
  process.siPixelClustersPreSplitting.Upgrade = True
#  process.siPixelRecHitFromSOA = siPixelRecHitFromSOA.clone()
#  process.siPixelRecHitFromSOA.pixelRecHitSrc = 'siPixelRecHitCUDA'
  process.siPixelRecHitsPreSplitting = siPixelRecHitFromSOA.clone()
  process.siPixelRecHitsPreSplitting.pixelRecHitSrc = 'siPixelRecHitCUDA'

#  process.siPixelClustersPreSplitting = siPixelRecHitFromSOA.clone()
#  process.siPixelClustersPreSplitting.pixelRecHitSrc = 'siPixelRecHitCUDA'
   
  process.siPixelRecHitCUDA = siPixelRecHitCUDA.clone()
  process.siPixelRecHitCUDA.src = 'siPixelClusterDigisCUDA'
  
  process.siPixelClustersPreSplittingTask_gpu = cms.Task(
    process.siPixelClusterDigisCUDA,
    process.siPixelDigisSoA,
    process.siPixelClustersPreSplitting #siPixelDigisClustersFromSoA
  )

  process.siPixelRecHitsPreSplittingTask_gpu = cms.Task(
    process.siPixelRecHitCUDA,
    process.siPixelRecHitsPreSplitting #siPixelRecHitFromSOA
  )

  process.PixelCPEFastESProducer.Upgrade = True
  
  #process.pixeltrackerlocalrecoTask = cms.Task(process.siPixelClustersPreSplittingTask,process.siPixelRecHitsPreSplittingTask)
  process.reconstruction_step += process.siPixelClusterDigisCUDA + process.siPixelDigisSoA + process.siPixelRecHitCUDA +process.offlineBeamSpotCUDA + process.pixelTrackCUDA + process.pixelTrackSoA + process.pixelVertexSoA
  #process.pixeltrackerlocalrecoTask = cms.Task(process.siPixelClustersPreSplittingTask_gpu,process.siPixelRecHitsPreSplittingTask_gpu)
  
  return process
Beispiel #5
0
def customisePixelTrackReconstruction(process):

    if not 'HLTRecoPixelTracksSequence' in process.__dict__:
        return process

    # FIXME replace the Sequences with empty ones to avoid exanding them during the (re)definition of Modules and EDAliases

    process.HLTRecoPixelTracksSequence = cms.Sequence()
    process.HLTRecopixelvertexingSequence = cms.Sequence()

    # Modules and EDAliases

    # referenced in process.HLTRecoPixelTracksTask

    # cpu only: convert the pixel rechits from legacy to SoA format
    from RecoLocalTracker.SiPixelRecHits.siPixelRecHitHostSoA_cfi import siPixelRecHitHostSoA as _siPixelRecHitHostSoA
    process.hltSiPixelRecHitSoA = _siPixelRecHitHostSoA.clone(
        src="hltSiPixelClusters",
        beamSpot="hltOnlineBeamSpot",
        convertToLegacy=True)

    # build pixel ntuplets and pixel tracks in SoA format on gpu
    from RecoPixelVertexing.PixelTriplets.caHitNtupletCUDA_cfi import caHitNtupletCUDA as _caHitNtupletCUDA
    process.hltPixelTracksCUDA = _caHitNtupletCUDA.clone(
        idealConditions=False,
        pixelRecHitSrc="hltSiPixelRecHitsCUDA",
        onGPU=True)

    # SwitchProducer providing the pixel tracks in SoA format on cpu
    process.hltPixelTracksSoA = SwitchProducerCUDA(
        # build pixel ntuplets and pixel tracks in SoA format on cpu
        cpu=_caHitNtupletCUDA.clone(idealConditions=False,
                                    pixelRecHitSrc="hltSiPixelRecHitSoA",
                                    onGPU=False),
        # transfer the pixel tracks in SoA format to the host
        cuda=cms.EDProducer("PixelTrackSoAFromCUDA",
                            src=cms.InputTag("hltPixelTracksCUDA")))

    # convert the pixel tracks from SoA to legacy format
    from RecoPixelVertexing.PixelTrackFitting.pixelTrackProducerFromSoA_cfi import pixelTrackProducerFromSoA as _pixelTrackProducerFromSoA
    process.hltPixelTracks = _pixelTrackProducerFromSoA.clone(
        beamSpot="hltOnlineBeamSpot",
        pixelRecHitLegacySrc="hltSiPixelRecHits",
        trackSrc="hltPixelTracksSoA")

    # referenced in process.HLTRecopixelvertexingTask

    # build pixel vertices in SoA format on gpu
    from RecoPixelVertexing.PixelVertexFinding.pixelVertexCUDA_cfi import pixelVertexCUDA as _pixelVertexCUDA
    process.hltPixelVerticesCUDA = _pixelVertexCUDA.clone(
        pixelTrackSrc="hltPixelTracksCUDA", onGPU=True)

    # build or transfer pixel vertices in SoA format on cpu
    process.hltPixelVerticesSoA = SwitchProducerCUDA(
        # build pixel vertices in SoA format on cpu
        cpu=_pixelVertexCUDA.clone(pixelTrackSrc="hltPixelTracksSoA",
                                   onGPU=False),
        # transfer the pixel vertices in SoA format to cpu
        cuda=cms.EDProducer("PixelVertexSoAFromCUDA",
                            src=cms.InputTag("hltPixelVerticesCUDA")))

    # convert the pixel vertices from SoA to legacy format
    from RecoPixelVertexing.PixelVertexFinding.pixelVertexFromSoA_cfi import pixelVertexFromSoA as _pixelVertexFromSoA
    process.hltPixelVertices = _pixelVertexFromSoA.clone(
        src="hltPixelVerticesSoA",
        TrackCollection="hltPixelTracks",
        beamSpot="hltOnlineBeamSpot")

    # Tasks and Sequences

    process.HLTRecoPixelTracksTask = cms.Task(
        process.hltPixelTracksTrackingRegions,  # from the original sequence
        process.hltSiPixelRecHitSoA,  # pixel rechits on cpu, converted to SoA
        process.hltPixelTracksCUDA,  # pixel ntuplets on gpu, in SoA format
        process.hltPixelTracksSoA,  # pixel ntuplets on cpu, in SoA format
        process.hltPixelTracks)  # pixel tracks on cpu, in legacy format

    process.HLTRecoPixelTracksSequence = cms.Sequence(
        process.HLTRecoPixelTracksTask)

    process.HLTRecopixelvertexingTask = cms.Task(
        process.HLTRecoPixelTracksTask,
        process.hltPixelVerticesCUDA,  # pixel vertices on gpu, in SoA format
        process.hltPixelVerticesSoA,  # pixel vertices on cpu, in SoA format
        process.hltPixelVertices,  # pixel vertices on cpu, in legacy format
        process.hltTrimmedPixelVertices)  # from the original sequence

    process.HLTRecopixelvertexingSequence = cms.Sequence(
        process.hltPixelTracksFitter
        +  # not used here, kept for compatibility with legacy sequences
        process.
        hltPixelTracksFilter,  # not used here, kept for compatibility with legacy sequences
        process.HLTRecopixelvertexingTask)

    # done
    return process
def customise_cpu_pixel(process):

    # FIXME replace the Sequences with empty ones to avoid exanding them during the (re)definition of Modules and EDAliases

    process.HLTRecoPixelTracksPPOnAASequence = cms.Sequence()
    process.HLTRecopixelvertexingSequencePPOnAA = cms.Sequence()

    # Event Setup

    process.load("RecoLocalTracker.SiPixelRecHits.PixelCPEFastESProducer_cfi")
    process.PixelCPEFastESProducer.DoLorentz = True

    # Modules and EDAliases

    # referenced in process.HLTRecoPixelTracksSequence

    from RecoLocalTracker.SiPixelRecHits.siPixelRecHitHostSoA_cfi import siPixelRecHitHostSoA as _siPixelRecHitHostSoA
    process.hltSiPixelRecHitSoAPPOnAA = _siPixelRecHitHostSoA.clone(
        beamSpot="hltOnlineBeamSpot",
        src="hltSiPixelClustersPPOnAA",
        convertToLegacy=True)

    from RecoPixelVertexing.PixelTriplets.caHitNtupletCUDA_cfi import caHitNtupletCUDA as _caHitNtupletCUDA
    process.hltPixelTracksHitQuadrupletsPPOnAA = _caHitNtupletCUDA.clone(
        idealConditions=False,
        pixelRecHitSrc="hltSiPixelRecHitSoAPPOnAA",
        onGPU=False)

    process.hltPixelTracksSoAPPOnAA = cms.EDAlias(
        hltPixelTracksHitQuadrupletsPPOnAA=cms.VPSet(
            cms.PSet(type=cms.string("32768TrackSoATHeterogeneousSoA"))))

    from RecoPixelVertexing.PixelTrackFitting.pixelTrackProducerFromSoA_cfi import pixelTrackProducerFromSoA as _pixelTrackProducerFromSoA
    process.hltPixelTracksPPOnAA = _pixelTrackProducerFromSoA.clone(
        beamSpot="hltOnlineBeamSpot",
        pixelRecHitLegacySrc="hltSiPixelRecHitsPPOnAA",
        trackSrc="hltPixelTracksSoAPPOnAA")

    # referenced in process.HLTRecopixelvertexingSequence

    from RecoPixelVertexing.PixelVertexFinding.pixelVertexCUDA_cfi import pixelVertexCUDA as _pixelVertexCUDA
    process.hltPixelVerticesSoAPPOnAA = _pixelVertexCUDA.clone(
        pixelTrackSrc="hltPixelTracksSoAPPOnAA", onGPU=False)

    from RecoPixelVertexing.PixelVertexFinding.pixelVertexFromSoA_cfi import pixelVertexFromSoA as _pixelVertexFromSoA
    process.hltPixelVerticesPPOnAA = _pixelVertexFromSoA.clone(
        TrackCollection="hltPixelTracksPPOnAA",
        beamSpot="hltOnlineBeamSpot",
        src="hltPixelVerticesSoAPPOnAA")

    # Sequences

    process.HLTRecoPixelTracksSequencePPOnAA = cms.Sequence(
        process.
        hltPixelTracksFitter  # not used here, kept for compatibility with legacy sequences
        + process.
        hltPixelTracksFilter  # not used here, kept for compatibility with legacy sequences
        + process.
        hltPixelTracksTrackingRegionsPPOnAA  # from the original sequence
        + process.
        hltSiPixelRecHitSoAPPOnAA  # pixel rechits on cpu, converted to SoA
        + process.
        hltPixelTracksHitQuadrupletsPPOnAA  # pixel ntuplets on cpu, in SoA format
        # process.hltPixelTracksSoA                         # alias for hltPixelTracksHitQuadruplets
        + process.hltPixelTracksPPOnAA
    )  # pixel tracks on cpu, with transfer and conversion to legacy
    process.HLTRecoPixelTracksPPOnAASequence = cms.Sequence(
        process.HLTRecoPixelTracksSequencePPOnAA)

    process.HLTRecopixelvertexingSequencePPOnAA = cms.Sequence(
        process.HLTRecoPixelTracksSequencePPOnAA + process.
        hltPixelVerticesSoAPPOnAA  # pixel vertices on cpu, in SoA format
        + process.
        hltPixelVerticesPPOnAA  # pixel vertices on cpu, in legacy format
        + process.hltTrimmedPixelVerticesPPOnAA)  # from the original sequence
    process.HLTPixelVertexingPPOnAASequence = cms.Sequence(
        process.HLTRecopixelvertexingSequencePPOnAA)
    process.HLTPixelVertexingSequencePPOnAA = cms.Sequence(
        process.HLTRecopixelvertexingSequencePPOnAA)

    # done
    return process