lcsim/src/org/lcsim/contrib/Cassell/recon/Cheat
diff -N RonRMS90Calculator.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ RonRMS90Calculator.java 8 Sep 2008 23:12:34 -0000 1.1
@@ -0,0 +1,46 @@
+package org.lcsim.contrib.Cassell.recon.Cheat;
+import hep.aida.*;
+import java.util.*;
+
+public class RonRMS90Calculator
+{
+ double rms90;
+ double mean90;
+ public RonRMS90Calculator()
+ {
+ rms90 = 0.;
+ mean90 = 0.;
+ }
+ public double calculateRMS90(ICloud1D cloud)
+ {
+ int entries = cloud.entries();
+ List<Double> elist = new ArrayList<Double>();
+ for(int i=0;i<entries;i++)
+ {
+ elist.add(cloud.value(i));
+ }
+ rms90 = 999999.;
+ int ntail = (int) (.1*entries);
+ int ncore = entries - ntail;
+ Collections.sort(elist);
+ for(int k=0;k<ntail;k++)
+ {
+ double sv = 0.;
+ double sv2 = 0.;
+ for(int i=k;i<k+ncore;i++)
+ {
+ sv += elist.get(i);
+ sv2 += elist.get(i)*elist.get(i);
+ }
+ double mean = sv/ncore;
+ double rms = Math.sqrt(sv2/ncore - mean*mean);
+ if(rms < rms90)
+ {
+ rms90 = rms;
+ mean90 = mean;
+ }
+ }
+ return rms90;
+ }
+ public double getMEAN90(){return mean90;}
+}