File indexing completed on 2024-04-06 12:20:41
0001 from __future__ import absolute_import
0002 import FWCore.ParameterSet.Config as cms
0003
0004 import SimCalorimetry.HGCalSimProducers.hgcalDigitizer_cfi as digiparam
0005 import RecoLocalCalo.HGCalRecProducers.HGCalUncalibRecHit_cfi as recoparam
0006 import RecoLocalCalo.HGCalRecProducers.HGCalRecHit_cfi as recocalibparam
0007 from . import hgcalLayersCalibrationCoefficients_cfi as layercalibparam
0008
0009
0010 feCfg_si = digiparam.hgceeDigitizer.digiCfg.feCfg
0011 feCfg_sc = digiparam.hgchebackDigitizer.digiCfg.feCfg
0012
0013
0014 triggerCellLsbBeforeCompression_si = float(feCfg_si.adcSaturation_fC.value())/(2**float(feCfg_si.adcNbits.value()))
0015 triggerCellLsbBeforeCompression_sc = float(feCfg_sc.adcSaturation_fC.value())/(2**float(feCfg_sc.adcNbits.value()))
0016
0017
0018 linearization_params_si = cms.PSet(
0019 linLSB = cms.double(triggerCellLsbBeforeCompression_si),
0020 adcsaturation = feCfg_si.adcSaturation_fC,
0021 tdcnBits = feCfg_si.tdcNbits,
0022 tdcOnset = feCfg_si.tdcOnset_fC,
0023 adcnBits = feCfg_si.adcNbits,
0024 tdcsaturation = feCfg_si.tdcSaturation_fC,
0025 linnBits = cms.uint32(17),
0026 oot_coefficients = cms.vdouble(0., 0.),
0027 )
0028
0029
0030 linearization_params_sc = cms.PSet(
0031 linLSB = cms.double(triggerCellLsbBeforeCompression_sc),
0032 adcsaturation = feCfg_sc.adcSaturation_fC,
0033 tdcnBits = feCfg_sc.tdcNbits,
0034 tdcOnset = feCfg_sc.tdcOnset_fC,
0035 adcnBits = feCfg_sc.adcNbits,
0036 tdcsaturation = feCfg_sc.tdcSaturation_fC,
0037 linnBits = cms.uint32(17),
0038 oot_coefficients = cms.vdouble(0., 0.),
0039 )
0040
0041 summation_params = cms.PSet(
0042 siliconCellLSB_fC = cms.double(triggerCellLsbBeforeCompression_si),
0043 scintillatorCellLSB_MIP = cms.double(triggerCellLsbBeforeCompression_sc),
0044 noiseSilicon = cms.PSet(),
0045 noiseScintillator = cms.PSet(),
0046
0047
0048 noiseThreshold = cms.double(3),
0049 )
0050
0051
0052 compression_params_ldm = cms.PSet(
0053 exponentBits = cms.uint32(4),
0054 mantissaBits = cms.uint32(3),
0055 truncationBits = cms.uint32(1),
0056 rounding = cms.bool(True),
0057 )
0058
0059 compression_params_hdm = cms.PSet(
0060 exponentBits = cms.uint32(4),
0061 mantissaBits = cms.uint32(3),
0062 truncationBits = cms.uint32(3),
0063 rounding = cms.bool(True),
0064 )
0065
0066
0067 fCperMIPee = recoparam.HGCalUncalibRecHit.HGCEEConfig.fCPerMIP
0068 fCperMIPhe = recoparam.HGCalUncalibRecHit.HGCHEFConfig.fCPerMIP
0069 fCperMIPnose = recoparam.HGCalUncalibRecHit.HGCHFNoseConfig.fCPerMIP
0070 layerWeightsNose = recocalibparam.dEdX.weightsNose
0071 thicknessCorrectionSi = recocalibparam.HGCalRecHit.thicknessCorrection
0072 thicknessCorrectionSc = recocalibparam.HGCalRecHit.sciThicknessCorrection
0073 thicknessCorrectionNose = recocalibparam.HGCalRecHit.thicknessNoseCorrection
0074
0075 NTHICKNESS = 3
0076 calibration_params_ee = cms.PSet(
0077 lsb = cms.double(triggerCellLsbBeforeCompression_si),
0078 fCperMIP = fCperMIPee,
0079 dEdXweights = layercalibparam.triggerWeights.weights,
0080 thicknessCorrection = cms.vdouble(thicknessCorrectionSi[0:NTHICKNESS]),
0081 chargeCollectionEfficiency = cms.PSet(),
0082 )
0083
0084 calibration_params_hesi = cms.PSet(
0085 lsb = cms.double(triggerCellLsbBeforeCompression_si),
0086 fCperMIP = fCperMIPhe,
0087 dEdXweights = layercalibparam.triggerWeights.weights,
0088 thicknessCorrection = cms.vdouble(thicknessCorrectionSi[NTHICKNESS:2*NTHICKNESS]),
0089 chargeCollectionEfficiency = cms.PSet(),
0090 )
0091
0092 calibration_params_hesc = cms.PSet(
0093 lsb = cms.double(triggerCellLsbBeforeCompression_sc),
0094 fCperMIP = cms.vdouble(1.),
0095 dEdXweights = layercalibparam.triggerWeights.weights,
0096 thicknessCorrection = cms.vdouble(thicknessCorrectionSc.value()),
0097 chargeCollectionEfficiency = cms.PSet(values=cms.vdouble(1.)),
0098 )
0099
0100 calibration_params_nose = cms.PSet(
0101 lsb = cms.double(triggerCellLsbBeforeCompression_si),
0102 fCperMIP = fCperMIPnose,
0103 dEdXweights = layerWeightsNose,
0104 thicknessCorrection = thicknessCorrectionNose,
0105 chargeCollectionEfficiency = cms.PSet(),
0106 )
0107
0108 vfe_proc = cms.PSet( ProcessorName = cms.string('HGCalVFEProcessorSums'),
0109 linearizationCfg_si = linearization_params_si,
0110 linearizationCfg_sc = linearization_params_sc,
0111 summationCfg = summation_params,
0112 compressionCfg_ldm = compression_params_ldm,
0113 compressionCfg_hdm = compression_params_hdm,
0114 calibrationCfg_ee = calibration_params_ee,
0115 calibrationCfg_hesi = calibration_params_hesi,
0116 calibrationCfg_hesc = calibration_params_hesc,
0117 calibrationCfg_nose = calibration_params_nose,
0118 )
0119
0120
0121 from Configuration.Eras.Modifier_phase2_hgcal_cff import phase2_hgcal
0122 phase2_hgcal.toModify(summation_params,
0123 noiseSilicon = cms.PSet(refToPSet_ = cms.string("HGCAL_noise_fC")),
0124 noiseScintillator = cms.PSet(refToPSet_ = cms.string("HGCAL_noise_heback")),
0125 )
0126
0127 phase2_hgcal.toModify(calibration_params_ee,
0128 chargeCollectionEfficiency = cms.PSet(refToPSet_ = cms.string("HGCAL_chargeCollectionEfficiencies")),
0129 )
0130 phase2_hgcal.toModify(calibration_params_hesi,
0131 chargeCollectionEfficiency = cms.PSet(refToPSet_ = cms.string("HGCAL_chargeCollectionEfficiencies")),
0132 )
0133 phase2_hgcal.toModify(calibration_params_nose,
0134 chargeCollectionEfficiency = cms.PSet(refToPSet_ = cms.string("HGCAL_chargeCollectionEfficiencies")),
0135 )
0136
0137
0138
0139 l1tHGCalVFEProducer = cms.EDProducer(
0140 "HGCalVFEProducer",
0141 eeDigis = cms.InputTag('simHGCalUnsuppressedDigis:EE'),
0142 fhDigis = cms.InputTag('simHGCalUnsuppressedDigis:HEfront'),
0143 bhDigis = cms.InputTag('simHGCalUnsuppressedDigis:HEback'),
0144 ProcessorParameters = vfe_proc.clone()
0145 )
0146
0147 l1tHFnoseVFEProducer = cms.EDProducer(
0148 "HFNoseVFEProducer",
0149 noseDigis = cms.InputTag('simHFNoseUnsuppressedDigis:HFNose'),
0150 ProcessorParameters = vfe_proc.clone()
0151 )
0152
0153
0154