Skip to content
Snippets Groups Projects

Add ML benchmark for imaging calorimetry

Merged Chao Peng requested to merge add_ml_benchmark into master
Files
6
import os
import ROOT
from Gaudi.Configuration import *
from GaudiKernel import SystemOfUnits as units
from GaudiKernel.DataObjectHandleBase import DataObjectHandleBase
from Configurables import ApplicationMgr, EICDataSvc, PodioOutput, GeoSvc
from Configurables import PodioInput
from Configurables import Jug__Base__InputCopier_dd4pod__Geant4ParticleCollection_dd4pod__Geant4ParticleCollection_ as MCCopier
from Configurables import Jug__Digi__CalorimeterHitDigi as CalorimeterHitDigi
from Configurables import Jug__Reco__ImagingPixelReco as ImagingPixelReco
from Configurables import Jug__Reco__ImagingPixelMerger as ImagingPixelMerger
# input arguments through environment variables
kwargs = dict()
kwargs['input'] = os.environ.get('JUGGLER_SIM_FILE', '')
kwargs['output'] = os.environ.get('JUGGLER_REC_FILE', '')
kwargs['compact'] = os.environ.get('JUGGLER_COMPACT_PATH', '')
kwargs['nev'] = int(os.environ.get('JUGGLER_N_EVENTS', -1))
kwargs['nlayers'] = int(os.environ.get('IMCAL_ML_N_LAYERS', 20))
kwargs['nhits'] = int(os.environ.get('IMCAL_ML_N_HITS', 20))
if kwargs['nev'] < 1:
f = ROOT.TFile(kwargs['input'])
kwargs['nev'] = f.events.GetEntries()
print(kwargs)
# get sampling fraction from system environment variable, 1.0 by default
sf = float(os.environ.get('JUGGLER_SAMP_FRAC', '1.0'))
geo_service = GeoSvc('GeoSvc', detectors=[f.strip() for f in kwargs['compact'].split(',')])
podev = EICDataSvc('EventDataSvc', inputs=[f.strip() for f in kwargs['input'].split(',')])
podin = PodioInput('PodioReader', collections=['mcparticles', 'EcalBarrelHits'])
podout = PodioOutput('out', filename=kwargs['output'])
copier = MCCopier('MCCopier',
OutputLevel=DEBUG,
inputCollection='mcparticles',
outputCollection='mcparticles2')
imcaldigi = CalorimeterHitDigi('imcal_digi',
inputHitCollection='EcalBarrelHits',
outputHitCollection='EcalBarrelHitsDigi',
energyResolutions=[0., 0.02, 0.],
dynamicRangeADC=3*units.MeV,
pedestalSigma=40)
imcalreco = ImagingPixelReco('imcal_reco',
inputHitCollection='EcalBarrelHitsDigi',
outputHitCollection='EcalBarrelHitsReco',
dynamicRangeADC=3.*units.MeV,
pedestalSigma=40,
thresholdFactor=3.5,
readoutClass='EcalBarrelHits',
layerField='layer',
sectorField='module')
imcaldata = ImagingPixelMerger('imcal_merger',
# OutputLevel=DEBUG,
inputHitCollection='EcalBarrelHitsReco',
outputHitCollection='EcalBarrelHitsML',
etaSize=0.001,
phiSize=0.001,
numberOfHits=kwargs['nhits'],
numberOfLayers=kwargs['nlayers'])
podout.outputCommands = ['keep *']
ApplicationMgr(
TopAlg=[podin, copier, imcaldigi, imcalreco, imcaldata, podout],
EvtSel='NONE',
EvtMax=kwargs['nev'],
ExtSvc=[podev],
OutputLevel=DEBUG
)
Loading