00001
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 package gov.lanl.isr.sensix.sensing;
00036
00037 import gov.lanl.isr.sensix.*;
00038
00039
00040 public class SigmaImpl extends SigmaPOA
00041 {
00042 private AggregateImpl del;
00043
00044
00045 public SigmaImpl(byte l, Collection[] c) {
00046 del = new AggregateImpl("Sigma", l, c);
00047 }
00048
00049 public SigmaImpl(Collection[] c) {
00050 del = new AggregateImpl("Sigma", c);
00051 }
00052
00053 public SigmaImpl(byte l, Collection[] c, int seq) {
00054 del = new AggregateImpl("Sigma", l, c, seq);
00055 }
00056
00057
00058 public byte identifier() {
00059 return SenseCorba.SIGMA;
00060 }
00061
00062 protected Data getResult(int idx) {
00063 double avg = 0;
00064 double value = 0;
00065 Data[] res = del.collectors()[idx].results();
00066 for (int i = 0; i < res.length; i++) {
00067 Data d = res[i];
00068 if (SenseUtil.isIntegerData(d.discriminator()))
00069 avg += res[i].iresult();
00070 else if (SenseUtil.isFloatingPointData(d.discriminator()))
00071 avg += res[i].fresult();
00072 }
00073 avg /= res.length;
00074 for (int i = 0; i < res.length; i++) {
00075 Data d = res[i];
00076 double dev = 0.0;
00077 if (SenseUtil.isIntegerData(d.discriminator()))
00078 dev = d.iresult() - avg;
00079 else if (SenseUtil.isFloatingPointData(d.discriminator()))
00080 dev = d.fresult() - avg;
00081 value += (dev * dev);
00082 }
00083 value /= (res.length - 1);
00084 value = Math.sqrt(value);
00085
00086 Data ret = new Data();
00087 ret.fresult(value);
00088 return ret;
00089 }
00090
00091 public Data result() {
00092 return getResult(0);
00093 }
00094
00095 public Data[] results() {
00096 int num = del.collectors().length;
00097 Data[] array = new Data[num];
00098 for (int i = 0; i < num; i++)
00099 array[i] = getResult(i);
00100 return array;
00101 }
00102
00103 public void results(Data[] data) {}
00104
00105
00106
00107
00108
00109 public String asString() {
00110 return del.asString();
00111 }
00112
00113 public int sequencer() {
00114 return del.sequencer();
00115 }
00116
00117 public byte level() {
00118 return del.level();
00119 }
00120
00121 public Collection[] collectors() {
00122 return del.collectors();
00123 }
00124
00125 public void collectors(Collection[] c) {
00126 del.collectors(c);
00127 }
00128
00129 public Sensory[] senses() {
00130 return del.senses();
00131 }
00132
00133 public Sensory sense() {
00134 return del.sense();
00135 }
00136
00137 public void sense(Sensory s) {
00138 del.sense(s);
00139 }
00140
00141 public byte sensor() {
00142 return del.sensor();
00143 }
00144
00145 public long timeused() {
00146 return del.timeused();
00147 }
00148
00149 public void timeused(long t) {
00150 del.timeused(t);
00151 }
00152
00153 public double energyused() {
00154 return del.energyused();
00155 }
00156
00157 public void energyused(double e) {
00158 del.energyused(e);
00159 }
00160
00161 public byte priority() {
00162 return del.priority();
00163 }
00164
00165 public void priority(byte p) {
00166 del.priority(p);
00167 }
00168
00169 public FunctorError[] errors() {
00170 return del.errors();
00171 }
00172
00173 public void errors(FunctorError[] e) {
00174 del.errors(e);
00175 }
00176
00177 public Functor[] subfunctors() {
00178 return del.subfunctors();
00179 }
00180
00181 public void subfunctors(Functor[] fs) {
00182 del.subfunctors(fs);
00183 }
00184 }