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

Last change on this file since 1283 was 807, checked in by garnier, 17 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.