SCT parametric simulation
From Charm-Tau Detector
(Difference between revisions)
(→Configure example) |
(→Podio input) |
||
Line 111: | Line 111: | ||
== Event generation == | == Event generation == | ||
=== Podio input === | === Podio input === | ||
+ | |||
+ | It is possible to read the particle parameters from a ROOT file. | ||
+ | |||
+ | You have to import the library | ||
+ | <pre> | ||
+ | from Configurables import PodioInput | ||
+ | </pre> | ||
+ | |||
+ | and to create the algorithm instance | ||
+ | <pre> | ||
+ | podioevent = ScTauDataSvc("EventDataSvc", input=ifile) | ||
+ | podioinput = PodioInput("PodioReader", OutputLevel=INFO, collections=['allGenParticles']) | ||
+ | </pre> | ||
+ | |||
+ | The important parametres: | ||
+ | * input - an input file name | ||
+ | * collections - a name of a branch with MC particles | ||
+ | |||
=== Particle gun === | === Particle gun === | ||
=== EvtGen === | === EvtGen === |
Revision as of 12:43, 21 November 2021
Contents |
Configure example
There is an example of running the entire chain from generating particles to running an analysis tool. A more detailed description of the algorithms and their parameters is presented below.
from Configurables import ApplicationMgr from Gaudi.Configuration import * from Configurables import GenAlg, EvtGenInterface from Configurables import HepMCToEDMConverter from Configurables import ScTauDataSvc from Configurables import PodioOutput from Configurables import SctParSimAlg from Configurables import EventLoader from Configurables import NtupleAlg, NTupleSvc from Configurables import ParticleCombinerAlg from Configurables import Gaudi__ParticlePropertySvc from PathResolver import PathResolver ofile = 'sctparsim_out.root' # name of output file eventNumber = 50000 # number of events ############################ #### Event generation #### ############################ podioevent = ScTauDataSvc("EventDataSvc") # Particle service particlePropertySvc = Gaudi__ParticlePropertySvc( "ParticlePropertySvc", ParticlePropertiesFile=PathResolver.FindDataFile('GenParticleData/ParticleTable.txt') ) # EvtGen evtgen = EvtGenInterface('SignalProvider') #evtgen.userdec = "./mydec.dec" #evtgen.rootParticle = "J/psi" gen = GenAlg('EvtGenAlg', SignalProvider=evtgen) gen.hepmc.Path = 'hepmc' # HepMC3 to PODIO edm = HepMCToEDMConverter("Converter") edm.hepmc.Path=gen.hepmc.Path edm.genparticles.Path="allGenParticles" edm.genvertices.Path="allGenVertices" ############################ # SctParSim ############################ sct_alg = SctParSimAlg('SctAlg') #sct_alg.CaloSystemTool.caloClSizeEGamma = 0.2 # Example how to change a subsystem parameter ############################ # Podio output ############################ out = PodioOutput('out', filename=ofile) out.outputCommands = ["keep *"] ############################ # Analisis ############################ evlo = EventLoader('EvtLoader') evlo.pcl.Path = 'Particles' # Branch (in the input ROOT-file) for reading evlo.pListMap.Path = 'Lists1' evlo.plists = [['gamma']] # Partilce list for further analisis # Select particle combinations cmbr = ParticleCombinerAlg('Cmbr', decStr = 'pi0 -> gamma gamma', # Investigated decay cutStr = 'E > 0.5', # Selection criteria selfConj = True # if neutral particle True, else False ) cmbr.pListMapI = evlo.pListMap.Path cmbr.pListMapO.Path = 'Lists2' # Select variables to save to n-tuple tupl = NtupleAlg('piTuple') tupl.listName = 'pi0' tupl.fileName = 'scttuple/tup' # List contains the particle parametes to write an output file tupl.vars = [['px_mc', 'py_mc', 'pz_mc', 'E', 'pi0 -> ^gamma ^gamma'], ['M', ''], ] tupl.pListMapI.Path = cmbr.pListMapO.Path NTupleSvc(Output = ["scttuple DATAFILE='tup.root' OPT='NEW' TYP='ROOT'"]) options= { 'TopAlg' : [gen, edm, sct_alg, evlo, cmbr, tupl, out], 'EvtSel' : 'NONE', 'ExtSvc' : [particlePropertySvc, podioevent], 'EvtMax' : eventNumber, 'StatusCodeCheck' : True, 'AuditAlgorithms' : True, 'AuditTools' : True, 'AuditServices' : True, 'OutputLevel' : INFO, 'HistogramPersistency' : 'ROOT', } ApplicationMgr(**options)
Event generation
Podio input
It is possible to read the particle parameters from a ROOT file.
You have to import the library
from Configurables import PodioInput
and to create the algorithm instance
podioevent = ScTauDataSvc("EventDataSvc", input=ifile) podioinput = PodioInput("PodioReader", OutputLevel=INFO, collections=['allGenParticles'])
The important parametres:
- input - an input file name
- collections - a name of a branch with MC particles