Commit in hps-java/src/main/java/org/lcsim/hps/recon/tracking on MAIN | |||
EventQuality.java | +113 | added 1.1 |
Singleton to help event quality selection.
diff -N EventQuality.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ EventQuality.java 20 Apr 2013 03:58:44 -0000 1.1 @@ -0,0 +1,113 @@
+/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.lcsim.hps.recon.tracking; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Singleton class to hold default + * Should make template for different cut values + * @author phansson + */ +public class EventQuality { + + + + private static EventQuality _instance = null; + public static enum Quality{LOOSE,MEDIUM,TIGHT} + public static enum Cut{ + UNDEFINED(0),PZ(1),CHI2(2),SHAREDHIT(3),NHITS(4),TOPBOTHIT(5); + private int value; + private Cut(int value) { + this.value = value; + } + public int getValue() { + return this.value; + } + } + private List<CutObject> _cut_list = new ArrayList<>(); + + public EventQuality() { + addCut(new CutObject(Cut.CHI2,"CHI2",10.,10.,10.)); + addCut(new CutObject(Cut.PZ,"PZ",0.4,0.4,0.4)); + addCut(new CutObject(Cut.SHAREDHIT,"SHAREDHIT",0,0,0)); + addCut(new CutObject(Cut.NHITS,"NHITS",4,4,5)); + addCut(new CutObject(Cut.TOPBOTHIT,"TOPBOTHIT",0,0,0)); + } + + public static EventQuality instance() { + if(_instance==null) { + _instance = new EventQuality(); + } + return _instance; + } + + private void addCut(CutObject c) { + _cut_list.add(c); + } + + private CutObject find(Cut cut) { + for(CutObject co : _cut_list) { + if (co._cut==cut) { + return co; + } + } + return null; + } + + public double getCutValue(Cut cut,Quality quality) { + CutObject co = find(cut); + if(co==null) { + System.out.printf("Cut \"%d\" didn't exist!?\n",cut); + System.exit(0); + } + return co.get(quality); + } + + @Override + public String toString() { + String s = String.format("EventQuality has %d cuts defined:\n",this._cut_list.size()); + for (CutObject c: _cut_list) { + s += String.format("%s\n",c.toString()); + } + return s; + } + + public String print(int cuts) { + String s = String.format("cuts=%d:\n",cuts); + for (CutObject cut : _cut_list) { + int tmp = cuts & (1<<cut._cut.getValue()); + s += String.format("Cut %s %s\n",cut._name,tmp==0?"PASSED":"FAILED"); + } + return s; + } + + private class CutObject { + String _name = "UNDEFINED"; + Cut _cut = Cut.UNDEFINED; + Map<Quality,Double> _map = new HashMap<>(); + public CutObject(Cut c, String name, double val1,double val2,double val3) { + _cut = c; + _name = name; + _map.put(Quality.LOOSE, val1); + _map.put(Quality.MEDIUM, val2); + _map.put(Quality.TIGHT, val3); + } + public void set(Quality q, double val) { + _map.put(q,val); + } + public double get(Quality q) { + return _map.get(q); + } + @Override + public String toString() { + return String.format("Name:%s cut:%d val=[%f,%f,%f]",_name,_cut.getValue(),_map.get(Quality.LOOSE),_map.get(Quality.MEDIUM),_map.get(Quality.TIGHT)); + } + } + +}
Use REPLY-ALL to reply to list
To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1