Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-06-26 07:06:30

0001 import os
0002 from Gaudi.Configuration import *
0003 from GaudiKernel import SystemOfUnits as units
0004 
0005 from GaudiKernel.DataObjectHandleBase import DataObjectHandleBase
0006 from Configurables import ApplicationMgr, EICDataSvc, PodioOutput, GeoSvc
0007 
0008 from Configurables import PodioInput
0009 from Configurables import Jug__Digi__EcalTungstenSamplingDigi as EcalTungstenSamplingDigi
0010 from Configurables import Jug__Reco__EcalTungstenSamplingReco as EcalTungstenSamplingReco
0011 from Configurables import Jug__Reco__CalorimeterHitsMerger as CalorimeterHitsMerger
0012 from Configurables import Jug__Reco__CalorimeterIslandCluster as IslandCluster
0013 from Configurables import Jug__Reco__ClusterRecoCoG as RecoCoG
0014 
0015 # get sampling fraction from system environment variable, 1.0 by default
0016 sf = float(os.environ.get('CB_EMCAL_SAMP_FRAC', '1.0'))
0017 
0018 geo_service  = GeoSvc("GeoSvc", detectors=["../athena/athena.xml"])
0019 podioevent = EICDataSvc("EventDataSvc", inputs=["../reconstruction_benchmarks/sim_barrel_clusters.root"], OutputLevel=DEBUG)
0020 
0021 podioinput = PodioInput("PodioReader", collections=["mcparticles", "EcalBarrelHits"], OutputLevel=DEBUG)
0022 emcaldigi = EcalTungstenSamplingDigi("ecal_digi",
0023                                      inputHitCollection="EcalBarrelHits",
0024                                      outputHitCollection="DigiEcalBarrelHits",
0025                                      inputEnergyUnit=units.GeV,
0026                                      inputTimeUnit=units.ns,
0027                                      energyResolutions=[0., 0.02, 0.],
0028                                      dynamicRangeADC=700*units.keV,
0029                                      pedestalSigma=40,
0030                                      OutputLevel=DEBUG)
0031 emcalreco = EcalTungstenSamplingReco("ecal_reco",
0032                                      inputHitCollection="DigiEcalBarrelHits",
0033                                      outputHitCollection="RecoEcalBarrelHits",
0034                                      dynamicRangeADC=700*units.keV,
0035                                      pedestalSigma=40,
0036                                      OutputLevel=DEBUG)
0037 # readout id definition for barrel ecal
0038 # <id>system:8,barrel:3,module:4,layer:10,slice:5,x:32:-16,y:-16</id>
0039 # sum layers/slices, masking (8+3+4, 8+3+4+5+10-1)
0040 xymerger = CalorimeterHitsMerger("ecal_xy_merger",
0041                                  fields=["layer", "slice"],
0042                                  inputHitCollection="RecoEcalBarrelHits",
0043                                  outputHitCollection="RecoEcalBarrelHitsXY")
0044 # sum modules, masking (8+3+4+5+10, 8+3+4+5+10+32-1)
0045 zmerger = CalorimeterHitsMerger("ecal_z_merger",
0046                                 fields=["x", "y"],
0047                                 inputHitCollection="RecoEcalBarrelHits",
0048                                 outputHitCollection="RecoEcalBarrelHitsZ")
0049 emcalcluster = IslandCluster(inputHitCollection="RecoEcalBarrelHitsXY",
0050                              outputClusterCollection="EcalBarrelClusters",
0051                              minClusterCenterEdep=0.5*units.MeV,
0052                              splitCluster=False,
0053                              groupRanges=[5.*units.cm, 5*units.cm, 5.*units.cm])
0054 clusterreco = RecoCoG(clusterCollection="EcalBarrelClusters", logWeightBase=6.2, samplingFraction=sf, OutputLevel=DEBUG)
0055 
0056 
0057 out = PodioOutput("out", filename="barrel_cluster.root")
0058 out.outputCommands = ["keep *"]
0059 
0060 ApplicationMgr(
0061     TopAlg = [podioinput, emcaldigi, emcalreco, xymerger, zmerger, emcalcluster, clusterreco, out],
0062     EvtSel = 'NONE',
0063     EvtMax   = 5,
0064     ExtSvc = [podioevent],
0065     OutputLevel=DEBUG
0066  )
0067