CMS 3D CMS Logo

hgcalVFEProducer_cfi.py
Go to the documentation of this file.
1 from __future__ import absolute_import
2 import FWCore.ParameterSet.Config as cms
3 
5 
9 from . import hgcalLayersCalibrationCoefficients_cfi as layercalibparam
10 
11 # Digitization parameters
12 adcSaturation_fC = digiparam.hgceeDigitizer.digiCfg.feCfg.adcSaturation_fC
13 adcNbits = digiparam.hgceeDigitizer.digiCfg.feCfg.adcNbits
14 tdcSaturation_fC = digiparam.hgceeDigitizer.digiCfg.feCfg.tdcSaturation_fC
15 tdcNbits = digiparam.hgceeDigitizer.digiCfg.feCfg.tdcNbits
16 tdcOnset_fC = digiparam.hgceeDigitizer.digiCfg.feCfg.tdcOnset_fC
17 adcSaturationBH_MIP = digiparam.hgchebackDigitizer.digiCfg.feCfg.adcSaturation_fC
18 adcNbitsBH = digiparam.hgchebackDigitizer.digiCfg.feCfg.adcNbits
19 
20 # Reco calibration parameters
21 fCPerMIPee = recoparam.HGCalUncalibRecHit.HGCEEConfig.fCPerMIP
22 fCPerMIPfh = recoparam.HGCalUncalibRecHit.HGCHEFConfig.fCPerMIP
23 layerWeights = layercalibparam.TrgLayer_dEdX_weights
24 thicknessCorrection = recocalibparam.HGCalRecHit.thicknessCorrection
25 
26 # Equalization in the frontend of the sensor responses to 200um sensors
27 frontend_thickness_corrections = [1./(c1*c2) for c1,c2 in zip(fCPerMIPee,thicknessCorrection)]
28 c200 = frontend_thickness_corrections[1]
29 frontend_thickness_corrections = [c/c200 for c in frontend_thickness_corrections]
30 fCPerMIP_200 = fCPerMIPee[1]
31 thicknessCorrection_200 = thicknessCorrection[1]
32 
33 # Parameters used in several places
34 triggerCellLsbBeforeCompression = 100./1024.
35 triggerCellTruncationBits = 0
36 
37 vfe_proc = cms.PSet( ProcessorName = cms.string('HGCalVFEProcessorSums'),
38  linLSB = cms.double(triggerCellLsbBeforeCompression),
39  adcsaturation = adcSaturation_fC,
40  tdcnBits = tdcNbits,
41  tdcOnsetfC = tdcOnset_fC,
42  adcnBits = adcNbits,
43  tdcsaturation = tdcSaturation_fC,
44  linnBits = cms.uint32(16),
45  siliconCellLSB_fC = cms.double( triggerCellLsbBeforeCompression*(2**triggerCellTruncationBits) ),
46  scintillatorCellLSB_MIP = cms.double(float(adcSaturationBH_MIP.value())/(2**float(adcNbitsBH.value()))),
47  # cell thresholds before TC sums
48  # Cut at 3sigma of the noise
49  thresholdsSilicon = cms.vdouble([3.*x for x in digiparam.HGCAL_noise_fC.values.value()]),
50  thresholdScintillator = cms.double(3.*digiparam.HGCAL_noise_MIP.value.value()),
51  # Floating point compression
52  exponentBits = cms.uint32(4),
53  mantissaBits = cms.uint32(4),
54  rounding = cms.bool(True),
55  # Trigger cell calibration
56  fCperMIP = cms.double(fCPerMIP_200),
57  dEdXweights = layerWeights,
58  ThicknessCorrections = cms.vdouble(frontend_thickness_corrections),
59  thickCorr = cms.double(thicknessCorrection_200)
60  )
61 
62 hgcalVFEProducer = cms.EDProducer(
63  "HGCalVFEProducer",
64  eeDigis = cms.InputTag('simHGCalUnsuppressedDigis:EE'),
65  fhDigis = cms.InputTag('simHGCalUnsuppressedDigis:HEfront'),
66  bhDigis = cms.InputTag('simHGCalUnsuppressedDigis:HEback'),
67  ProcessorParameters = vfe_proc.clone()
68  )
69 
OutputIterator zip(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp)