Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-05-27 01:56:30

0001 # Author: Izaak Neutelings (March 2023)
0002 # Instructions:
0003 #   export SCRAM_ARCH="el9_amd64_gcc12"
0004 #   cmsrel CMSSW_15_1_0_pre1
0005 #   cd CMSSW_15_1_0_pre1/src/
0006 #   cmsenv
0007 #   git clone https://gitlab.cern.ch/hgcal-dpg/hgcal-comm.git HGCalCommissioning
0008 #   scram b -j8
0009 #   cmsRun $CMSSW_BASE/src/RecoLocalCalo/HGCalRecAlgos/test/testHGCalRecHitESProducers_cfg.py
0010 # Sources:
0011 #   https://gitlab.cern.ch/hgcal-dpg/hgcal-comm/-/blob/master/Configuration/test/step_RAW2DIGI.py?ref_type=heads
0012 #   https://gitlab.cern.ch/hgcal-dpg/hgcal-comm/-/blob/master/Configuration/python/SysValEras_cff.py?ref_type=heads
0013 #   https://github.com/CMS-HGCAL/cmssw/blob/hgcal-condformat-HGCalNANO-13_2_0_pre3/DPGAnalysis/HGCalTools/python/tb2023_cfi.py
0014 #   https://github.com/CMS-HGCAL/cmssw/blob/dev/hackathon_base_CMSSW_14_1_0_pre0/SimCalorimetry/HGCalSimProducers/test/hgcalRealistiDigis_cfg.py
0015 import os
0016 import FWCore.ParameterSet.Config as cms
0017 
0018 # USER OPTIONS
0019 from FWCore.ParameterSet.VarParsing import VarParsing
0020 modmapdir = os.path.join(os.environ.get('CMSSW_BASE',''),"src/HGCalCommissioning/Configuration/data")
0021 configdir = "/eos/cms/store/group/dpg_hgcal/tb_hgcal/DPG/calibrations/SepTB2024"
0022 options = VarParsing('standard')
0023 options.register('geometry', 'ExtendedRun4D104', VarParsing.multiplicity.singleton, VarParsing.varType.string,
0024                  info="geometry to use")
0025 options.register('maxchans', 200, mytype=VarParsing.varType.int,
0026                  info="maximum number of channels to print out")
0027 options.register('maxfeds', 30, mytype=VarParsing.varType.int,
0028                  info="maximum number of FED IDs to test")
0029 options.register('fedconfig', f"{configdir}/config/config_feds_hackathon.json", mytype=VarParsing.varType.int,
0030                  info="Path to configuration (JSON format)")
0031 options.register('modconfig', f"{configdir}/config/config_econds_hackathon.json", mytype=VarParsing.varType.string,
0032                  info="Path to configuration (JSON format)")
0033 options.register('params',
0034                  #f"{configdir}/level0_calib_Relay1727210224.json",
0035                  f"{configdir}/level0_calib_hackathon.json",
0036                  mytype=VarParsing.varType.string,
0037                  info="Path to calibration parameters (JSON format)")
0038 options.register('modules',
0039                  # see https://github.com/cms-data/Geometry-HGCalMapping
0040                  # or https://gitlab.cern.ch/hgcal-dpg/hgcal-comm/-/tree/master/Configuration/data/ModuleMaps
0041                  #"Geometry/HGCalMapping/data/ModuleMaps/modulelocator_test.txt", # test beam with six modules
0042                  #f"{modmapdir}/ModuleMaps/modulelocator_test_2mods.txt", # fedId=0
0043                  f"{modmapdir}/ModuleMaps/modulelocator_Sep2024TBv2.txt", # 3 layers (9 modules)
0044                  mytype=VarParsing.varType.string,
0045                  info="Path to module mapper. Absolute, or relative to CMSSW src directory")
0046 options.register('sicells', 'Geometry/HGCalMapping/data/CellMaps/WaferCellMapTraces.txt', mytype=VarParsing.varType.string,
0047                  info="Path to Si cell mapper. Absolute, or relative to CMSSW src directory")
0048 options.register('sipmcells', 'Geometry/HGCalMapping/data/CellMaps/channels_sipmontile.hgcal.txt', mytype=VarParsing.varType.string,
0049                  info="Path to SiPM-on-tile cell mapper. Absolute, or relative to CMSSW src directory")
0050 options.parseArguments()
0051 if options.params.startswith('/eos/'):
0052   options.params = os.path.relpath(options.params,os.path.join(os.environ.get('CMSSW_BASE',''),"src"))
0053 if len(options.files)==0:
0054   options.files=['file:/eos/cms/store/group/dpg_hgcal/comm_hgcal/psilva/hackhathon/23234.103_TTbar_14TeV+2026D94Aging3000/step2.root']
0055   #options.files=['file:/eos/cms/store/group/dpg_hgcal/comm_hgcal/psilva/hackhathon/23234.103_TTbar_14TeV+2026D94Aging3000/step2.root']
0056   #options.files=['file:/afs/cern.ch/user/y/yumiao/public/HGCAL_Raw_Data_Handling/Data/Digis/testFakeDigisSoA.root']
0057 print(f">>> Geometry:      {options.geometry!r}")
0058 print(f">>> Input files:   {options.files!r}")
0059 print(f">>> Module map:    {options.modules!r}")
0060 print(f">>> SiCell map:    {options.sicells!r}")
0061 print(f">>> SipmCell map:  {options.sipmcells!r}")
0062 print(f">>> FED config:    {options.fedconfig!r}")
0063 print(f">>> ECON-D config: {options.modconfig!r}")
0064 print(f">>> Calib params:  {options.params!r}")
0065 
0066 # PROCESS
0067 from Configuration.Eras.Era_Phase2C17I13M9_cff import Phase2C17I13M9 as Era_Phase2
0068 process = cms.Process('HGCalRecHitESProducersTest',Era_Phase2)
0069 
0070 # GLOBAL TAG
0071 from Configuration.AlCa.GlobalTag import GlobalTag
0072 process.load("Configuration.StandardSequences.Services_cff")
0073 process.load("Configuration.StandardSequences.MagneticField_cff")
0074 process.load("Configuration.EventContent.EventContent_cff")
0075 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
0076 process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:phase2_realistic', '')
0077 
0078 # INPUT
0079 process.source = cms.Source(
0080   "PoolSource",
0081   fileNames=cms.untracked.vstring(options.files),
0082   duplicateCheckMode=cms.untracked.string("noDuplicateCheck")
0083 )
0084 #process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(options.maxEvents) )
0085 process.maxEvents.input = 1
0086 
0087 # MESSAGE LOGGER
0088 process.load("FWCore.MessageService.MessageLogger_cfi")
0089 #process.MessageLogger.debugModules = ['*'] #"hgCalCalibrationESProducer", "hgCalConfigurationESProducer"]
0090 process.MessageLogger.cerr.threshold = 'INFO'
0091 process.MessageLogger.HGCalConfigurationESProducer = { } # enable logger
0092 process.MessageLogger.HGCalCalibrationESProducer = { }
0093 process.MessageLogger.search_modkey = { }
0094 process.MessageLogger.search_fedkey = { }
0095 process.MessageLogger.check_keys = { }
0096 process.MessageLogger.cerr.FwkReport.reportEvery = 500
0097 
0098 # GEOMETRY
0099 process.load(f"Configuration.Geometry.Geometry{options.geometry}Reco_cff")
0100 process.load(f"Configuration.Geometry.Geometry{options.geometry}_cff")
0101 #process.load('Geometry.HGCalMapping.hgCalMappingIndexESSource_cfi') # old
0102 process.load('Geometry.HGCalMapping.hgCalMappingESProducer_cfi')
0103 process.hgCalMappingESProducer.si = cms.FileInPath(options.sicells)
0104 process.hgCalMappingESProducer.sipm = cms.FileInPath(options.sipmcells)
0105 process.hgCalMappingESProducer.modules = cms.FileInPath(options.modules)
0106 
0107 # GLOBAL CONFIGURATION ESProducers (for unpacker)
0108 #process.load("RecoLocalCalo.HGCalRecAlgos.HGCalConfigurationESProducer")
0109 #process.load("RecoLocalCalo.HGCalRecAlgos.hgCalConfigurationESProducer_cfi")
0110 process.hgcalConfigESProducer = cms.ESSource( # ESProducer to load configurations for unpacker
0111   'HGCalConfigurationESProducer',
0112   fedjson=cms.string(options.fedconfig),  # JSON with FED configuration parameters
0113   modjson=cms.string(options.modconfig),  # JSON with ECON-D configuration parameters
0114   #passthroughMode=cms.int32(0),          # ignore mismatch
0115   #cbHeaderMarker=cms.int32(0x7f),        # capture block
0116   #cbHeaderMarker=cms.int32(0x5f),        # capture block
0117   #slinkHeaderMarker=cms.int32(0x55),     # S-link
0118   #slinkHeaderMarker=cms.int32(0x2a),     # S-link
0119   #econdHeaderMarker=cms.int32(0x154),    # ECON-D
0120   #charMode=cms.int32(1),
0121   indexSource=cms.ESInputTag('hgCalMappingESProducer','')
0122 )
0123 
0124 # CALIBRATIONS & CONFIGURATION Alpaka ESProducers
0125 process.load('Configuration.StandardSequences.Accelerators_cff')
0126 #process.load('HeterogeneousCore.AlpakaCore.ProcessAcceleratorAlpaka_cfi')
0127 #process.load('HeterogeneousCore.CUDACore.ProcessAcceleratorCUDA_cfi')
0128 process.hgcalCalibParamESProducer = cms.ESProducer( # ESProducer to load calibration parameters from JSON file, like pedestals
0129   'hgcalrechit::HGCalCalibrationESProducer@alpaka',
0130   filename=cms.FileInPath(options.params),
0131   indexSource=cms.ESInputTag('hgCalMappingESProducer','')
0132 )
0133 
0134 # MAIN PROCESS
0135 process.testHGCalRecHitESProducers = cms.EDProducer(
0136   'HGCalRecHitESProducersTest@alpaka',
0137   #'alpaka_cuda_async::TestHGCalRecHitProducer', # GPU
0138   #'alpaka_serial_sync::TestHGCalRecHitProducer', # CPU
0139   indexSource=cms.ESInputTag('hgCalMappingESProducer', ''),
0140   configSource=cms.ESInputTag('hgcalConfigESProducer', ''),
0141   calibParamSource=cms.ESInputTag('hgcalCalibParamESProducer', ''),
0142   maxchans=cms.int32(options.maxchans),  # maximum number of channels to print out
0143   maxfeds=cms.int32(options.maxfeds),    # maximum number of FED IDs to test
0144   #fedjson=cms.string(options.fedconfig),  # JSON with FED configuration parameters
0145   fedjson=cms.string(""), # use hardcoded JSON instead
0146 )
0147 process.t = cms.Task(process.testHGCalRecHitESProducers)
0148 process.p = cms.Path(process.t)
0149 
0150 # OUTPUT
0151 process.output = cms.OutputModule(
0152   'PoolOutputModule',
0153   fileName = cms.untracked.string(options.output),
0154   #outputCommands = cms.untracked.vstring('drop *','keep *_*_*_REALDIGI')
0155 )
0156 process.output_path = cms.EndPath(process.output)
0157