SCT parametric simulation
From Charm-Tau Detector
		(Difference between revisions)
		
		
 (→Configure example)  | 
			|||
| Line 1: | Line 1: | ||
= Configure example =  | = Configure example =  | ||
| − | There is an example of running the entire chain from generating particles to running an analysis tool.  | + | 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.  | 
<pre>  | <pre>  | ||
Revision as of 12:31, 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)