Page History
...
For quick example suppose that we have this class defined in user module:
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
# user analysis class class myana(object): def __init__(self, name, lower, upper, bins=100) self.name = name self.lower = float(lower) self.upper = float(upper) self.bins = int(bins) ... |
and this job configuration file:
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
[pyana] modules = mypackage.myana mypackage.myana:wide [mypackage.myana] lower = 0 upper = 100 name = default [mypackage.myana:wide] lower = 0 upper = 1000 bins = 1000 name = wide |
With this the analysis job will instantiate two analysis objects with different parameters, equivalent to this pseudo-code:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# import class myana from mypackage.myana import myana # create instances instances = [ myana(lower = "0", upper = "100", name = "default"), myana(lower = "0", upper = "1000", bins = "1000", name = "wide") ] |
...
Here is an almost identical example from Initialization section above which illustrates the inheritance and overriding of the user options:
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
[pyana] modules = mypackage.myana mypackage.myana:wide [mypackage.myana] lower = 0 upper = 100 name = default [mypackage.myana:wide] ; 'lower' option will be reused from [mypackage.myana] section bins = 1000 ; this overrides default module value ; two options below will override [mypackage.myana] values upper = 1000 name = wide |
...
Here is a brief example of booking and filling of few histograms in user module:
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
# user analysis class class myana(object): def beginjob(self, event, env): # get histogram manager hmgr = env.hmgr() # book histograms, store references self.hist1 = hmgr.h1d('energy', 'Energy Distribution', 100, 0., 1.) self.hist2 = hmgr.h2d('energy vs something', 'Histo2 title', 100, 0., 1., 100, -20., 20.) def event(self, event, env): # fill histograms energy = ... something = ... self.hist1.Fill(energy) self.hist2.Fill(energy, something) |
...
Here is very brief example of using SciPy for integration of experimental data:
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
from scipy import integrate class myana(object): def event(self, event, env): # Get Acqiris waveform object ddesc = evt.getAcqValue( "AmoITof", channel, env ) wf = ddesc.waveform() ts = ddesc.timestamps() # integrate it using Simpson's rule integral = integrate.simps (wf, ts) |
...
Overview
Content Tools