from Gaudi.Configuration import * import os from GaudiKernel.DataObjectHandleBase import DataObjectHandleBase from Configurables import ApplicationMgr, EICDataSvc, PodioOutput, GeoSvc from GaudiKernel import SystemOfUnits as units detector_name = "topside" if "JUGGLER_DETECTOR" in os.environ : detector_name = str(os.environ["JUGGLER_DETECTOR"]) if "JUGGLER_DETECTOR_PATH" in os.environ : detector_name = str(os.environ["JUGGLER_DETECTOR_PATH"]) + "/" + detector_name # get sampling fraction from system environment variable, 1.0 by default sf = 1.0 if "CB_EMCAL_SAMP_FRAC" in os.environ : sf = str(os.environ["CB_EMCAL_SAMP_FRAC"]) # todo add checks input_sim_file = str(os.environ["JUGGLER_SIM_FILE"]) output_rec_file = str(os.environ["JUGGLER_REC_FILE"]) n_events = str(os.environ["JUGGLER_N_EVENTS"]) geo_service = GeoSvc("GeoSvc", detectors=["{}.xml".format(detector_name)]) podioevent = EICDataSvc("EventDataSvc", inputs=[input_sim_file]) from Configurables import PodioInput from Configurables import Jug__Base__InputCopier_dd4pod__Geant4ParticleCollection_dd4pod__Geant4ParticleCollection_ as MCCopier from Configurables import Jug__Base__InputCopier_dd4pod__CalorimeterHitCollection_dd4pod__CalorimeterHitCollection_ as CalCopier # from Configurables import Jug__Digi__HadronicCalDigi as HadCalorimeterDigi from Configurables import Jug__Digi__CalorimeterHitDigi as HadCalorimeterDigi from Configurables import Jug__Digi__EMCalorimeterDigi as EMCalorimeterDigi from Configurables import Jug__Digi__CrystalEndcapsDigi as CrystalEndcapsDigi from Configurables import Jug__Reco__CrystalEndcapsReco as CrystalEndcapsReco from Configurables import Jug__Reco__EMCalReconstruction as EMCalReconstruction # from Configurables import Jug__Reco__HCalReconstruction as HCalReconstruction from Configurables import Jug__Reco__EcalTungstenSamplingReco as HCalReconstruction from Configurables import Jug__Reco__CalorimeterHitsMerger as CalorimeterHitsMerger # from Configurables import Jug__Reco__SimpleClustering as SimpleClustering from Configurables import Jug__Reco__TopologicalCellCluster as TopoCluster from Configurables import Jug__Reco__CalorimeterIslandCluster as IslandCluster from Configurables import Jug__Reco__ClusterRecoCoG as RecoCoG podioinput = PodioInput("PodioReader", collections=["mcparticles","HcalBarrelHits"], OutputLevel=DEBUG) ## copiers to get around input --> output copy bug. Note the "2" appended to the output collection. copier = MCCopier("MCCopier", inputCollection="mcparticles", outputCollection="mcparticles2") ##raw hits calcopier = CalCopier("CalCopier", inputCollection="HcalBarrelHits", outputCollection="HcalBarrelHits2") #digitized hits hcaldigi = HadCalorimeterDigi("hcal_barrel_digi", inputHitCollection="HcalBarrelHits", outputHitCollection="RawHcalBarrelHits", inputEnergyUnit=units.GeV, inputTimeUnit=units.ns, energyResolutions=[0.0, 0., 0.], dynamicRangeADC=50.*units.MeV, capacityADC=32768, pedestalMean=400, pedestalSigma=10, OutputLevel=DEBUG ) #reconstructed hits hcal_reco = HCalReconstruction("hcal_reco", inputHitCollection="RawHcalBarrelHits", outputHitCollection="RecHcalBarrelHits", dynamicRangeADC=50.*units.MeV, capacityADC=32768, pedestalMean=400, pedestalSigma=10, thresholdFactor=5.0, OutputLevel=DEBUG) #clusters xymerger = CalorimeterHitsMerger("hcal_xy_merger", fields=["layer", "slice"], inputHitCollection="RecHcalBarrelHits", outputHitCollection="RecHcalBarrelHitsXY") hcal_barrel_cluster = IslandCluster("hcal_barrel_cluster", inputHitCollection="RecHcalBarrelHitsXY", outputClusterCollection="HcalBarrelClusters", minClusterCenterEdep=30*units.MeV, groupRange=2.0, OutputLevel=DEBUG) # finalizing clustering (center-of-gravity step) hcal_barrel_clusterreco = RecoCoG("hcal_barrel_clusterreco", clusterCollection="HcalBarrelClusters", logWeightBase=6.2, samplingFraction=sf, OutputLevel=DEBUG) out = PodioOutput("out", filename=output_rec_file) out.outputCommands = ["keep *"] ApplicationMgr( TopAlg = [podioinput, copier, calcopier, hcaldigi, hcal_reco, xymerger, hcal_barrel_cluster, hcal_barrel_clusterreco, out], EvtSel = 'NONE', EvtMax = n_events, ExtSvc = [podioevent], OutputLevel=DEBUG )