Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-06-26 23:27:06

0001 import FWCore.ParameterSet.Config as cms
0002 
0003 dedxHitInfo = cms.EDProducer("DeDxHitInfoProducer",
0004     tracks             = cms.InputTag("generalTracks"),
0005 
0006     minTrackHits       = cms.uint32(0),
0007     minTrackPt         = cms.double(10),
0008     minTrackPtPrescale = cms.double(0.5), # minimal pT for prescaled low pT tracks
0009     maxTrackEta        = cms.double(5.0),
0010 
0011     useStrip           = cms.bool(True),
0012     usePixel           = cms.bool(True),
0013     MeVperADCStrip     = cms.double(3.61e-06*265),
0014     MeVperADCPixel     = cms.double(3.61e-06),
0015 
0016     useCalibration     = cms.bool(False),
0017     calibrationPath    = cms.string("file:Gains.root"),
0018     shapeTest          = cms.bool(True),
0019     clusterShapeCache  = cms.InputTag("siPixelClusterShapeCache"),
0020     storeMomentumAtHit = cms.bool(False),
0021 
0022     lowPtTracksPrescalePass = cms.uint32(100),   # prescale factor for low pt tracks above the dEdx cut
0023     lowPtTracksPrescaleFail = cms.uint32(2000), # prescale factor for low pt tracks below the dEdx cut
0024     lowPtTracksEstimatorParameters = cms.PSet( # generalized truncated average
0025         fraction = cms.double(-0.15), # negative = throw away the 15% with lowest charge
0026         exponent = cms.double(-2.0),
0027         truncate = cms.bool(True),
0028     ),
0029     lowPtTracksDeDxThreshold = cms.double(3.5), # threshold on tracks
0030     usePixelForPrescales = cms.bool(True)
0031 )
0032 
0033 import RecoTracker.DeDx.DeDxEstimatorProducer_cfi as _mod
0034 
0035 dedxHarmonic2 = _mod.DeDxEstimatorProducer.clone(
0036     estimator      = 'generic',
0037     fraction       = 0.4,        #Used only if estimator='truncated'
0038     exponent       = -2.0,       #Used only if estimator='generic'
0039 
0040     Record            = "SiStripDeDxMip_3D_Rcd", #used only for discriminators : estimators='productDiscrim' or 'btagDiscrim' or 'smirnovDiscrim' or 'asmirnovDiscrim'
0041     ProbabilityMode    = "Accumulation",          #used only for discriminators : estimators='productDiscrim' or 'btagDiscrim' or 'smirnovDiscrim' or 'asmirnovDiscrim'
0042 )
0043 
0044 from Configuration.Eras.Modifier_fastSim_cff import fastSim
0045 
0046 # explicit python dependency
0047 import FastSimulation.SimplifiedGeometryPropagator.FastTrackDeDxProducer_cfi
0048 
0049 # do this before defining dedxPixelHarmonic2 so it automatically comes out right
0050 fastSim.toReplaceWith(dedxHarmonic2,
0051     FastSimulation.SimplifiedGeometryPropagator.FastTrackDeDxProducer_cfi.FastTrackDeDxProducer.clone(
0052         ShapeTest = False,
0053         simHit2RecHitMap = "fastMatchedTrackerRecHits:simHit2RecHitMap",
0054         simHits = "fastSimProducer:TrackerHits",
0055     )
0056 )
0057 
0058 dedxPixelHarmonic2 = dedxHarmonic2.clone(UseStrip = False, UsePixel = True)
0059 
0060 dedxPixelAndStripHarmonic2T085 = dedxHarmonic2.clone(
0061         UseStrip = True, UsePixel = True,
0062         estimator = 'genericTruncated',
0063         fraction  = -0.15, # Drop the lowest 15% of hits
0064         exponent  = -2.0, # Harmonic02
0065 )
0066 
0067 dedxTruncated40 = dedxHarmonic2.clone(estimator = 'truncated')
0068 
0069 dedxMedian = dedxHarmonic2.clone(estimator = 'median')
0070 
0071 dedxUnbinned = dedxHarmonic2.clone(estimator = 'unbinnedFit')
0072 
0073 dedxDiscrimProd =  dedxHarmonic2.clone(estimator = 'productDiscrim')
0074 
0075 dedxDiscrimBTag = dedxHarmonic2.clone(estimator = 'btagDiscrim')
0076 
0077 dedxDiscrimSmi  = dedxHarmonic2.clone(estimator = 'smirnovDiscrim')
0078 
0079 dedxDiscrimASmi = dedxHarmonic2.clone(estimator = 'asmirnovDiscrim')
0080 
0081 doAlldEdXEstimatorsTask = cms.Task(dedxTruncated40 , dedxHarmonic2 , dedxPixelHarmonic2 , dedxPixelAndStripHarmonic2T085 , dedxHitInfo)
0082 doAlldEdXEstimators = cms.Sequence(doAlldEdXEstimatorsTask)
0083 
0084 fastSim.toReplaceWith(doAlldEdXEstimatorsTask, cms.Task(dedxHarmonic2, dedxPixelHarmonic2))
0085 
0086 # use only the strips for Run-3
0087 from Configuration.Eras.Modifier_run3_common_cff import run3_common
0088 run3_common.toModify(dedxHitInfo,
0089     lowPtTracksEstimatorParameters = dict(fraction = 0., exponent = -2.0,truncate = False),
0090     usePixelForPrescales = False
0091 )
0092 
0093 # dEdx for Run-3 UPC
0094 dedxAllHitInfo = dedxHitInfo.clone(minTrackPt = 0)
0095 from Configuration.Eras.Modifier_run3_upc_cff import run3_upc
0096 run3_upc.toModify(dedxHitInfo, lowPtTracksPrescalePass = 50, lowPtTracksPrescaleFail = 50, minTrackPtPrescale = 0, usePixelForPrescales = True, storeMomentumAtHit = True)
0097 
0098 from RecoTracker.DeDx.dedxHitCalibrator_cfi import dedxHitCalibrator as _dedxHitCalibrator
0099 from SimGeneral.MixingModule.SiStripSimParameters_cfi import SiStripSimBlock as _SiStripSimBlock
0100 from RecoLocalTracker.SiPixelClusterizer.SiPixelClusterizer_cfi import siPixelClusters as _siPixelClusters
0101 dedxHitCalibrator = _dedxHitCalibrator.clone(
0102     dedxHitInfo = 'dedxAllHitInfo',
0103     MeVPerElectron = 1000*_SiStripSimBlock.GevPerElectron.value(),
0104     VCaltoElectronGain = _siPixelClusters.VCaltoElectronGain,
0105     VCaltoElectronGain_L1 = _siPixelClusters.VCaltoElectronGain_L1,
0106     VCaltoElectronOffset = _siPixelClusters.VCaltoElectronOffset,
0107     VCaltoElectronOffset_L1 = _siPixelClusters.VCaltoElectronOffset_L1
0108 )
0109 
0110 dedxAllLikelihood = _mod.DeDxEstimatorProducer.clone(
0111     UseStrip = True, UsePixel = True,
0112     estimator = 'likelihoodFit',
0113     UseDeDxHits = True,
0114     pixelDeDxHits = 'dedxHitCalibrator:PixelHits',
0115     stripDeDxHits = 'dedxHitCalibrator:StripHits'
0116 )
0117 dedxPixelLikelihood = dedxAllLikelihood.clone(UseStrip = False, UsePixel = True)
0118 dedxStripLikelihood = dedxAllLikelihood.clone(UseStrip = True,  UsePixel = False)
0119 
0120 from Configuration.Eras.Modifier_run3_egamma_2023_cff import run3_egamma_2023
0121 run3_upc.toReplaceWith(doAlldEdXEstimatorsTask, cms.Task(doAlldEdXEstimatorsTask.copy(), dedxAllHitInfo, dedxHitCalibrator, dedxStripLikelihood, dedxPixelLikelihood, dedxAllLikelihood))