Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-10-19 04:58:42

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 from Configuration.Eras.Modifier_run3_upc_cff import run3_upc
0095 run3_upc.toModify(dedxHitInfo, minTrackPt = 0, storeMomentumAtHit = True)
0096 
0097 from RecoTracker.DeDx.dedxHitCalibrator_cfi import dedxHitCalibrator as _dedxHitCalibrator
0098 from SimGeneral.MixingModule.SiStripSimParameters_cfi import SiStripSimBlock as _SiStripSimBlock
0099 from RecoLocalTracker.SiPixelClusterizer.SiPixelClusterizer_cfi import siPixelClusters as _siPixelClusters
0100 dedxHitCalibrator = _dedxHitCalibrator.clone(
0101     MeVPerElectron = 1000*_SiStripSimBlock.GevPerElectron.value(),
0102     VCaltoElectronGain = _siPixelClusters.VCaltoElectronGain,
0103     VCaltoElectronGain_L1 = _siPixelClusters.VCaltoElectronGain_L1,
0104     VCaltoElectronOffset = _siPixelClusters.VCaltoElectronOffset,
0105     VCaltoElectronOffset_L1 = _siPixelClusters.VCaltoElectronOffset_L1
0106 )
0107 
0108 dedxAllLikelihood = _mod.DeDxEstimatorProducer.clone(
0109     UseStrip = True, UsePixel = True,
0110     estimator = 'likelihoodFit',
0111     UseDeDxHits = True,
0112     pixelDeDxHits = 'dedxHitCalibrator:PixelHits',
0113     stripDeDxHits = 'dedxHitCalibrator:StripHits'
0114 )
0115 dedxPixelLikelihood = dedxAllLikelihood.clone(UseStrip = False, UsePixel = True)
0116 dedxStripLikelihood = dedxAllLikelihood.clone(UseStrip = True,  UsePixel = False)
0117 
0118 from Configuration.Eras.Modifier_run3_egamma_2023_cff import run3_egamma_2023
0119 run3_upc.toReplaceWith(doAlldEdXEstimatorsTask, cms.Task(doAlldEdXEstimatorsTask.copy(), dedxHitCalibrator, dedxStripLikelihood, dedxPixelLikelihood, dedxAllLikelihood))