source: trunk/examples/advanced/Tiara/source/py_modules/tallyData.py @ 807

Last change on this file since 807 was 807, checked in by garnier, 16 years ago

update

File size: 2.1 KB
Line 
1# $Id: tallyData.py,v 1.2 2003/06/16 17:06:44 dressel Exp $
2# -------------------------------------------------------------------
3# GEANT4 tag $Name:  $
4# -------------------------------------------------------------------
5#
6
7class MeasureData:
8    def __init__(self, entries, mean, sum, sumSquared, variance):
9        self.entries = entries
10        self.mean = mean
11        self.sum = sum
12        self.sumSquared = sumSquared
13        self.variance = variance
14
15    def __iadd__(self,m):
16        self.entries += m.entries
17        self.sum += m.sum
18        self.sumSquared += m.sumSquared
19        self.mean = self.getMean()
20        self.variance = self.getVariance()
21        return self
22   
23    def __add__(self,b):
24        c = MeasureData(self.entries,
25                        self.mean,
26                        self.sum,
27                        self.sumSquared,
28                        self.variance)
29        c+=b
30        return c
31
32    def getMean(self):
33        return 1.0 * self.sum / self.entries
34
35    def getVariance(self):
36        n = 0
37        f = 0
38        if self.entries > 1:
39            mean = self.getMean()
40            n = 1.0 * self.entries/(self.entries -1)
41            f = 1.0 * self.sumSquared/self.entries - mean*mean
42        return n * f
43       
44   
45
46class TallyData:
47    def __init__(self, binEdges, measures):
48        self.binEdges = binEdges
49        self.measures = measures
50
51    def addMeasures(self, tally):
52        if tally.binEdges != self.binEdges:
53            print "TallyData.addMeasures: tally.binEdges != self.binEdges"
54        else:
55            for i in range(len(self.measures)):
56                self.measures[i] += tally.measures[i]
57               
58       
59
60
61
62def createTallyDat(tally):
63    measures = []
64    for i in range(tally.size()):
65        m = tally.measure(i)
66        measures.append(MeasureData(m.GetEntries(),
67                                    m.GetMean(),
68                                    m.GetSum(),
69                                    m.GetSumSquared(),
70                                    m.GetVariance()))
71    t = TallyData(tally.binEdges(), measures)
72    return t
Note: See TracBrowser for help on using the repository browser.