1 package org.lcsim.recon.tracking.trfutil;
2 import java.util.List;
3 import java.util.ArrayList;
4 import java.util.Iterator;
5
6
7
8
9
10
11
12
13
14
15 public class RandomRegistry
16 {
17
18
19
20 private List _gens = new ArrayList();
21
22
23 private List _states = new ArrayList();
24
25
26
27
28
29
30
31
32 private RandomRegistry( RandomRegistry rr)
33 {
34 }
35
36
37
38
39
40
41
42 public RandomRegistry()
43 {
44 }
45
46
47
48
49
50
51 public void addGenerator(RandomGenerator gen)
52 {
53 _gens.add( gen );
54 }
55
56
57
58
59
60
61 public int record()
62 {
63
64
65 int istate = _states.size();
66 _states.add( new ArrayList() );
67 List gens = (List) _states.get(istate);
68
69
70 Iterator igen;
71 for ( igen=_gens.iterator(); igen.hasNext();)
72 gens.add( new RandomGenerator( (RandomGenerator) igen.next() ) );
73
74 return istate;
75
76 }
77
78
79
80
81
82
83 public int generatorCount()
84 {
85 return _gens.size();
86 }
87
88
89
90
91
92
93 public int stateCount()
94 {
95 return _states.size();
96 }
97
98
99
100
101
102
103
104 public int set(int istate)
105 {
106
107
108 if ( istate < 0 ) return 1;
109 if ( istate >= stateCount() ) return 2;
110
111
112 List oldgens = (List) _states.get(istate);
113
114
115
116 for ( int igen=0; igen<oldgens.size(); ++igen )
117 ( (RandomGenerator) _gens.get(igen)).setState( (RandomGenerator) oldgens.get(igen) );
118
119 return 0;
120
121 }
122
123
124
125
126
127
128 public String toString()
129 {
130 String className = getClass().getName();
131 int lastDot = className.lastIndexOf('.');
132 if(lastDot!=-1)className = className.substring(lastDot+1);
133
134 StringBuffer sb = new StringBuffer(className+" with " + _gens.size() + " random generators: \n");
135 Iterator igen;
136 for ( igen=_gens.iterator(); igen.hasNext(); )
137 sb.append(igen.next()+"\n");
138 sb.append("\n"+stateCount() + " states recorded.");
139 return sb.toString();
140 }
141 }
142
143
144
145