Ejemplo n.º 1
0
                                        OutputLevel=DEBUG)

geantsim = SimG4Alg("SimG4Alg",
                    outputs=["SimG4SaveCalHits/saveHCalHits"],
                    eventProvider=pgun,
                    OutputLevel=DEBUG)

# PODIO algorithm
from Configurables import PodioOutput
out = PodioOutput("out", OutputLevel=DEBUG)
out.outputCommands = ["keep *"]
out.filename = "output_hcalSim_e" + str(int(
    energy / 1000)) + "GeV_eta036_1events.root"

#CPU information
from Configurables import AuditorSvc, ChronoAuditor
chra = ChronoAuditor()
audsvc = AuditorSvc()
audsvc.Auditors = [chra]
geantsim.AuditExecute = True

# ApplicationMgr
from Configurables import ApplicationMgr
ApplicationMgr(
    TopAlg=[geantsim, out],
    EvtSel='NONE',
    EvtMax=num_events,
    # order is important, as GeoSvc is needed by G4SimSvc
    ExtSvc=[podioevent, geoservice, geantservice, audsvc],
    OutputLevel=DEBUG)
Ejemplo n.º 2
0
    def expertMonitoring(self, sequence):

        # Define the RICH ntuple file
        if self.getProp("NTupleProduce"):
            from Configurables import NTupleSvc
            NTupleSvc().Output += [
                "RICHTUPLE1 DATAFILE='rich.tuples.root' TYP='ROOT' OPT='NEW'"
            ]

        checks = self.getHistoOptions("Monitors")
        tkTypes = self.getTrackTypes("RecoTrackTypes")

        check = "RichFuncCKResPlots"
        if check in checks:
            if "HistoProduce" in self.richTools().ckResolution().properties():
                self.richTools().ckResolution(
                ).HistoProduce = self.getProp("Histograms") != "None"

        check = "RichPixelPositions"
        if check in checks:
            from Configurables import Rich__Rec__MC__PixelPositionMonitor
            seq = self.newSeq(sequence, check)
            seq.Members += [
                Rich__Rec__MC__PixelPositionMonitor("RiRecPixelPosMoni")
            ]

        check = "HPDHitPlots"
        if check in checks:
            from Configurables import (Rich__Rec__HPDHitsMoni, GaudiSequencer)
            seq = self.newSeq(sequence, check)
            seq.IgnoreFilterPassed = True
            seq.Members += [Rich__Rec__HPDHitsMoni("HPDHitsMoni")]
            if not self.getProp("Simulation"):
                lSeq = self.newSeq(seq, check + "L0")
                lSeq.ReturnOK = True
                lSeq.Members = self.l0Filters() + [
                    Rich__Rec__HPDHitsMoni("HPDL0HitsMoni")
                ]

        check = "RichTrackGeometry"
        if check in checks:
            from Configurables import Rich__Rec__MC__TrackGeomMoni
            seq = self.newSeq(sequence, check)
            for trackType in tkTypes:
                name = "RiRec" + self.trackSelName(trackType) + "GeomMoni"
                seq.Members += [
                    self.createMonitor(Rich__Rec__MC__TrackGeomMoni, name,
                                       trackType)
                ]

        check = "RichTrackResolution"
        if check in checks:
            from Configurables import Rich__Rec__MC__TrackResolutionMoni
            seq = self.newSeq(sequence, check)
            for trackType in tkTypes:
                name = "RiRec" + self.trackSelName(trackType) + "TkResMoni"
                seq.Members += [
                    self.createMonitor(Rich__Rec__MC__TrackResolutionMoni,
                                       name, trackType)
                ]

        check = "RichCKThetaResolution"
        if check in checks:
            from Configurables import Rich__Rec__MC__CherenkovAngleMonitor
            seq = self.newSeq(sequence, check)
            for trackType in tkTypes:
                name = "RiRecPhotAng" + self.trackSelName(trackType) + "Moni"
                seq.Members += [
                    self.createMonitor(Rich__Rec__MC__CherenkovAngleMonitor,
                                       name, trackType)
                ]

        check = "RichTrackCKResolutions"
        if check in checks:
            from Configurables import Rich__Rec__MC__CherenkovResMoni
            seq = self.newSeq(sequence, check)
            for trackType in tkTypes:
                name = "RiRec" + self.trackSelName(trackType) + "CKResMoni"
                seq.Members += [
                    self.createMonitor(Rich__Rec__MC__CherenkovResMoni, name,
                                       trackType)
                ]

        check = "RichPhotonSignal"
        if check in checks:
            from Configurables import Rich__Rec__MC__PhotonSignalMonitor
            seq = self.newSeq(sequence, check)
            for trackType in tkTypes:
                name = "RiRecPhotSig" + self.trackSelName(trackType) + "TkMoni"
                seq.Members += [
                    self.createMonitor(Rich__Rec__MC__PhotonSignalMonitor,
                                       name, trackType)
                ]

        check = "RichPhotonGeometry"
        if check in checks:
            from Configurables import Rich__Rec__MC__PhotonGeomMonitor
            seq = self.newSeq(sequence, check)
            for trackType in tkTypes:
                name = "RiRecPhotGeom" + self.trackSelName(
                    trackType) + "TkMoni"
                seq.Members += [
                    self.createMonitor(Rich__Rec__MC__PhotonGeomMonitor, name,
                                       trackType)
                ]

        check = "RichPhotonTrajectory"
        if check in checks:
            from Configurables import Rich__Rec__MC__PhotonTrajectoryMonitor
            seq = self.newSeq(sequence, check)
            for trackType in tkTypes:
                name = "RiRecPhotTraj" + self.trackSelName(
                    trackType) + "TkMoni"
                seq.Members += [
                    self.createMonitor(Rich__Rec__MC__PhotonTrajectoryMonitor,
                                       name, trackType)
                ]

        check = "RichPhotonRecoCompare"
        if check in checks:
            from Configurables import Rich__Rec__MC__PhotonRecoCompare
            seq = self.newSeq(sequence, check)
            self.toolRegistry().Tools += [
                "Rich::Rec::PhotonRecoUsingQuarticSoln/BaselinePhotonReco"
            ]
            for trackType in tkTypes:
                name = "RiRecPhotCompare" + self.trackSelName(
                    trackType) + "TkMoni"
                seq.Members += [
                    self.createMonitor(Rich__Rec__MC__PhotonRecoCompare, name,
                                       trackType)
                ]

        check = "PhotonRecoEfficiency"
        if check in checks:

            recotools = [
                "Rich::Rec::PhotonCreator/ForcedRichPhotonCreator",
                "Rich::Rec::PhotonRecoUsingQuarticSoln/ForcedPhotonReco",
                "Rich::Rec::SimplePhotonPredictor/ForcedRichPhotonPredictor"
            ]
            self.toolRegistry().Tools += recotools
            self.recoConf().toolRegistry().Tools += recotools

            seq = self.newSeq(sequence, check)

            for trackType in tkTypes:

                context = self.getTrackContext(trackType)

                from Configurables import (Rich__Rec__PhotonCreator,
                                           Rich__Rec__SimplePhotonPredictor)
                forcedCreator = Rich__Rec__PhotonCreator(
                    context + ".ForcedRichPhotonCreator")
                forcedCreator.MinAllowedCherenkovTheta = [0.0, 0.0, 0.0]
                forcedCreator.MaxAllowedCherenkovTheta = [999, 999, 999]
                forcedCreator.MinPhotonProbability = [1e-99, 1e-99, 1e-99]
                forcedCreator.NSigma = [999, 999, 999]
                forcedCreator.PhotonPredictor = "ForcedRichPhotonPredictor"
                forcedCreator.PhotonRecoTool = "ForcedPhotonReco"
                forcedPredictor = Rich__Rec__SimplePhotonPredictor(
                    context + ".ForcedRichPhotonPredictor")
                forcedPredictor.MinTrackROI = [0.0, 0.0, 0.0]
                forcedPredictor.MaxTrackROI = [9999, 9999, 9999]

                from Configurables import Rich__Rec__MC__PhotonRecoEffMonitor
                name = "RiRecPhotEff" + self.trackSelName(trackType) + "TkMoni"
                mon = self.createMonitor(Rich__Rec__MC__PhotonRecoEffMonitor,
                                         name, trackType)
                seq.Members += [mon]

        check = "RichPhotonRayTracingTests"
        if check in checks:
            from Configurables import Rich__Rec__MC__PhotonRayTraceTest
            seq = self.newSeq(sequence, check)
            self.toolRegistry().Tools += [
                "Rich::Rec::PhotonRecoUsingQuarticSoln/BaselinePhotonReco"
            ]
            for trackType in tkTypes:
                name = "RiRecPhotRayTrace" + self.trackSelName(
                    trackType) + "TkMoni"
                seq.Members += [
                    self.createMonitor(Rich__Rec__MC__PhotonRayTraceTest, name,
                                       trackType)
                ]

        check = "RichTrackRayTracingTests"
        if check in checks:
            from Configurables import Rich__Rec__MC__PhotonRecoRayTraceTest
            seq = self.newSeq(sequence, check)
            moniA = Rich__Rec__MC__PhotonRecoRayTraceTest(
                "PhotRayTraceTestSimple")
            moniA.FullHPDsInRayTracing = False
            moniB = Rich__Rec__MC__PhotonRecoRayTraceTest(
                "PhotRayTraceTestFull")
            moniB.FullHPDsInRayTracing = True
            seq.Members += [moniA, moniB]

        check = "RichStereoFitterTests"
        if check in checks:
            from Configurables import Rich__Rec__MC__StereoPhotonFitTest
            seq = self.newSeq(sequence, check)
            for trackType in tkTypes:
                name = "RiRecStereoFitter" + self.trackSelName(
                    trackType) + "TkMoni"
                seq.Members += [
                    self.createMonitor(Rich__Rec__MC__StereoPhotonFitTest,
                                       name, trackType)
                ]

        check = "RichGhostTracks"
        if check in checks:
            from Configurables import Rich__Rec__MC__GhostTrackMoni
            seq = self.newSeq(sequence, check)
            seq.Members += [
                self.createMonitor(Rich__Rec__MC__GhostTrackMoni,
                                   "RichGhostsMoni")
            ]

        check = "RichDataObjectChecks"
        if check in checks:
            from Configurables import Rich__Rec__DataObjVerifier
            seq = self.newSeq(sequence, check)
            moni = Rich__Rec__DataObjVerifier("RichRecObjPrint")
            moni.PrintPixels = True
            moni.PrintTracks = True
            moni.PrintSegments = True
            moni.PrintPhotons = True
            seq.Members += [moni]

        check = "RichRecoTiming"
        if check in checks:
            from Configurables import (AuditorSvc, ChronoAuditor,
                                       Rich__Rec__TimeMonitor)

            # Enable ChronoAuditor
            chronoAuditor = "ChronoAuditor"
            if chronoAuditor not in AuditorSvc().Auditors:
                AuditorSvc().Auditors += [chronoAuditor]
            ChronoAuditor().Enable = True

            seq = self.newSeq(sequence, check)

            cont = self.getProp("Context")

            # RICH reconstruction only (tracks,pixels,photons)
            moni = self.createMonitor(Rich__Rec__TimeMonitor, "RichRecoTime")
            moni.TimingName = "RichRecInit" + cont + "Seq"
            moni.Algorithms = [moni.TimingName]
            seq.Members += [moni]

            # RICH PID only
            moni = self.createMonitor(Rich__Rec__TimeMonitor, "RichPIDTime")
            moni.TimingName = "Rich" + cont + "PIDSeq"
            moni.Algorithms = [moni.TimingName]
            seq.Members += [moni]

            # overall RICH reconstruction
            moni = self.createMonitor(Rich__Rec__TimeMonitor,
                                      "OverallRichTime")
            moni.TimingName = "RecoRICHSeq"
            moni.Algorithms = [moni.TimingName]
            seq.Members += [moni]

            # overall track reconstruction
            moni = self.createMonitor(Rich__Rec__TimeMonitor,
                                      "OverallTrackTime")
            moni.TimingName = "RecoTrSeq"
            moni.Algorithms = [moni.TimingName]
            seq.Members += [moni]

        check = "RichTracksToTextFile"
        if check in checks:

            from Configurables import Rich__Rec__MC__DumpRichTracksToTextFileAlg as RichTracksToText
            moni = self.createMonitor(RichTracksToText, "RichTracksToText")
            sequence.Members += [moni]

        check = "RichHitsToTextFile"
        if check in checks:

            from Configurables import Rich__Rec__MC__DumpRichHitsToTextFileAlg as RichHitsToText
            moni = self.createMonitor(RichHitsToText, "RichHitsToText")
            sequence.Members += [moni]

        check = "RichPerfFromData"
        if check in checks:
            pass
Ejemplo n.º 3
0
#from Configurables import StrippingTCK
#stck = StrippingTCK(HDRLocation = '/Event/Strip/Phys/DecReports', TCK=0x36112100)

#
#Configure DaVinci
#

# Change the column size of Timing table
from Configurables import TimingAuditor, SequencerTimerTool

TimingAuditor().addTool(SequencerTimerTool, name="TIMER")
TimingAuditor().TIMER.NameSize = 60

from Configurables import AuditorSvc, ChronoAuditor

AuditorSvc().Auditors.append(ChronoAuditor("Chrono"))

from Configurables import StrippingReport

sr = StrippingReport(Selections=sc.selections())

from Configurables import AlgorithmCorrelationsAlg

ac = AlgorithmCorrelationsAlg(Algorithms=list(set(sc.selections())))

DaVinci().HistogramFile = 'DV_stripping_histos_sels.root'
DaVinci().EvtMax = 100000
DaVinci().PrintFreq = 1000
DaVinci().appendToMainSequence([sc.sequence()])
DaVinci().appendToMainSequence([sr])
#DaVinci().appendToMainSequence( [ ac ] )
Ejemplo n.º 4
0
# next, create the G4 algorithm, giving the list of names of tools ("XX/YY")
g4pconverter = SimG4GeantinosFromEdmTool()

geantsim = SimG4Alg("SimG4Alg",
                    outputs=[savehcaltool, savetrajectorytool],
                    eventProvider=g4pconverter)

## ouput
from Configurables import PodioOutput
out = PodioOutput("out", OutputLevel=INFO)
out.outputCommands = ["keep *"]
out.filename = 'output_hcal_geantscan.root'

from Configurables import ChronoAuditor
chronoauditor = ChronoAuditor()

from Configurables import MemStatAuditor
memauditor = MemStatAuditor()

from Configurables import MemoryAuditor
memauditor2 = MemoryAuditor()

from Configurables import AuditorSvc
auditorsvc_handle = AuditorSvc()
auditorsvc_handle.Auditors = [
    chronoauditor,
    memauditor,
    memauditor2,
]