Author: [log in to unmask]
Date: Sun Feb 15 18:51:54 2015
New Revision: 2154
Log:
incremental update on TriggerConfig parser
Modified:
java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/TriggerConfig.java
Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/TriggerConfig.java
=============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/TriggerConfig.java (original)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/TriggerConfig.java Sun Feb 15 18:51:54 2015
@@ -8,76 +8,134 @@
public class TriggerConfig {
+ /*
+ * Read/Parse/Save the DAQ trigger configuration settings.
+ *
+ * This is a work in progress, activate by uncommenting
+ * line 61 in LCSimEngRunEventBuilder.java
+ *
+ * Maybe should store all the parameters in another
+ * map after parsing for direct access to minimize code,
+ * instead of all these variables.
+ *
+ * TODO: convert SET_IO_SRC to trigger enabled bits
+ * TODO: Test and Debug
+ * TODO: port datacat/python/engrun/engrun_metadata.py in fixConfigMap2014Run
+ * TODO: Parse and save threhsolds.
+ * TODO: Get NSA and NSB to remove hardcoded window in EcalRawConverter.
+ *
+ * NAB 2015/02/15
+ */
+
+ public static final int bankTag = 0xE10E;
+
+ // Dump everything read from the DAQ Configuration Bank, minimal interpretation:
+ public Map<String,List<String>> configMap=new HashMap<String,List<String>>();
+
private boolean debug=true;
- // These are the configs we need to know for trigger studies:
-
+ // These are not all the parameters available in the run configuration bank,
+ // just *most* of the ones needed for trigger studies:
+
// General Clustering Cut Values:
- private int clusterMinSeedEnergy=0;
- private int clusterMinHitTimeDiff=0;
- private int clusterMaxHitTimeDiff=0;
+ public int clusterMinSeedEnergy=0;
+ public int clusterMinHitTimeDiff=0;
+ public int clusterMaxHitTimeDiff=0;
// Triggers Enabled:
- private boolean[] singlesEn={false,false};
- private boolean[] pairsEn={false,false};
+ public boolean[] singlesEn={false,false};
+ public boolean[] pairsEn={false,false};
// Singles Cuts Enabled:
- private boolean[] singlesNHitsEn={false,false};
- private boolean[] singlesEnergyEn={false,false};
+ public boolean[] singlesNhitsEn={false,false};
+ public boolean[] singlesEnergyMinEn={false,false};
+ public boolean[] singlesEnergyMaxEn={false,false};
// Pairs Cuts Enabled:
- private boolean[] pairsEnergySumMinEn={false,false};
- private boolean[] pairsEnergySumMaxEn={false,false};
- private boolean[] pairsEnergyDiffEn={false,false};
- private boolean[] pairsCoplanarityEn={false,false};
- private boolean[] pairsEnergyDistEn={false,false};
- private boolean[] pairsTimeDiffEn={false,false};
+ public boolean[] pairsEnergySumMinEn={false,false};
+ public boolean[] pairsEnergySumMaxEn={false,false};
+ public boolean[] pairsEnergyDiffEn={false,false};
+ public boolean[] pairsCoplanarityEn={false,false};
+ public boolean[] pairsEnergyDistEn={false,false};
+ public boolean[] pairsTimeDiffEn={false,false};
// Singles Cut Values:
- private int[] singlesNhits={0,0};
- private int[] singlesEnergyMin={0,0};
- private int[] singlesEnergyMax={0,0};
+ public int[] singlesNhits={0,0};
+ public int[] singlesEnergyMin={0,0};
+ public int[] singlesEnergyMax={0,0};
// Pairs Cut Values:
- private int[] pairsEnergySumMin={0,0};
- private int[] pairsEnergySumMax={0,0};
- private int[] pairsEnergyDiffMax={0,0};
- private int[] pairsCoplanarityMax={0,0};
- private int[] pairsTimeDiffMax={0,0};
- private int[] pairsEnergyDistMin={0,0};
+ public int[] pairsEnergySumMin={0,0};
+ public int[] pairsEnergySumMax={0,0};
+ public int[] pairsEnergyDiffMax={0,0};
+ public int[] pairsCoplanarityMax={0,0};
+ public int[] pairsTimeDiffMax={0,0};
+ public int[] pairsEnergyDistMin={0,0};
// Pairs Cut Parameters:
- private float[] pairsEnergyDistSlope={0,0};
-
+ public float[] pairsEnergyDistSlope={0,0};
+
+ public TriggerConfig(int runNumber,String[] dump) {
+
+ loadConfigMap(dump);
+
+ if (debug) printMap();
+
+ fixConfigMap2014Run(runNumber);
+
+ parseConfigMap();
+
+ if (debug) printVars();
+ }
+
+
+ public void parseConfigMap()
+ {
+ clusterMinSeedEnergy=Integer.valueOf(getConfig("GTP_CLUSTER_THRESH",0));
+ clusterMinHitTimeDiff=Integer.valueOf(getConfig("GTP_TIMEDIFF",0));
+ clusterMaxHitTimeDiff=Integer.valueOf(getConfig("GTP_TIMEDIFF",1));
+
+ for (int ii=0; ii<2; ii++) {
+ singlesEn[ii]=getBoolConfigSSP(ii,"SINGLES_EN",0);
+ pairsEn[ii]=getBoolConfigSSP(ii,"PAIRS_EN",0);
+
+ singlesNhitsEn[ii]=getBoolConfigSSP(ii,"SINGLES_NHITS",0);
+ singlesEnergyMinEn[ii]=getBoolConfigSSP(ii,"SINGLES_EMIN",0);
+ singlesEnergyMaxEn[ii]=getBoolConfigSSP(ii,"SINGLES_EMAX",0);
+
+ pairsEnergySumMinEn[ii]=getBoolConfigSSP(ii,"PAIRS_SUMMAX_MIN",0);
+ pairsEnergySumMaxEn[ii]=getBoolConfigSSP(ii,"PAIRS_SUMMAX_MIN",0);
+ pairsEnergyDiffEn[ii]=getBoolConfigSSP(ii,"PAIRS_DIFFMAX",0);
+ pairsCoplanarityEn[ii]=getBoolConfigSSP(ii,"PAIRS_COPLANARITY",0);
+ pairsEnergyDistEn[ii]=getBoolConfigSSP(ii,"PAIRS_ENERGYDIST",0);
+ pairsTimeDiffEn[ii]=getBoolConfigSSP(ii,"PAIRS_TIMEDIFF",0);
+
+ singlesNhits[ii]=getIntConfigSSP(ii,"SINGLES_NHITS",1);
+ singlesEnergyMin[ii]=getIntConfigSSP(ii,"SINGLES_EMIN",1);
+ singlesEnergyMax[ii]=getIntConfigSSP(ii,"SINGLES_EMAX",1);
+
+ pairsEnergySumMin[ii]=getIntConfigSSP(ii,"PAIRS_SUMMAX_MIN",1);
+ pairsEnergySumMax[ii]=getIntConfigSSP(ii,"PAIRS_SUMMAX_MIN",2);
+ pairsEnergyDiffMax[ii]=getIntConfigSSP(ii,"PAIRS_DIFFMAX",1);
+ pairsCoplanarityMax[ii]=getIntConfigSSP(ii,"PAIRS_COPLANARITY",1);
+ pairsTimeDiffMax[ii]=getIntConfigSSP(ii,"PAIRS_TIMEDIFF",1);
+ pairsEnergyDistMin[ii]=getIntConfigSSP(ii,"PAIRS_ENERGYDIST",2); // <!--- CHECK ME
+ pairsEnergyDistSlope[ii]=getFloatConfigSSP(ii,"PAIRS_ENERGYDIST",1); // <!--- CHECK ME
+ }
+ }
+
- // Dump everything read from the DAQ Configuration Bank, minimal interpretation:
- public Map<String,List<String>> configMap=new HashMap<String,List<String>>();
-
-
- public TriggerConfig(int runNumber,String[] dump) {
-
- loadConfigMap(dump);
-
- if (runNumber < 3200) {
- // dne
- } else if (runNumber < 3470 ) {
- parseConfigMap2014Run(runNumber);
- } else {
- parseConfigMap();
- }
- if (debug) print();
- }
-
- public void parseConfigMap2014Run(int runNumber) {
+ public void fixConfigMap2014Run(int runNumber) {
+ if (runNumber>3470 || runNumber < 3100) return;
// TODO: port datacat/python/engrun/engrun_metadata.py
for (String key : configMap.keySet()) {
}
- }
-
- public void parseConfigMap()
- {
-
+ List<String> tmp=new ArrayList<String>();
+ tmp.add("0");
+ configMap.put("GTP_CLUSTER_THRESH",tmp);
+ tmp.add("0");
+ configMap.put("GTP_TIMEDIFF",tmp);
}
private void loadConfigMap(String[] dump) {
@@ -97,7 +155,10 @@
continue;
}
+ // Pickup GTP case:
+
// This should happen, but is only useful for FADC thresholds/pedestals:
+ // NOPE, Trigger studies are going to want to know all these.
if (vals.size() > 4) {
// TODO: put global threshold trick here
continue;
@@ -115,7 +176,7 @@
}
}
- public void print() {
+ public void printMap() {
System.out.print("TriggerConfig: ");
for (String key : configMap.keySet()) {
System.out.printf("%s ",key);
@@ -125,47 +186,71 @@
System.out.printf("\n");
}
}
-
-
-/*
- // Should parse the map first to check for errors.
-
- public boolean getPairsEnergyDistEn(int itrig) {
- return Boolean.valueOf(configMap.get("SSP_HPS_ENERGYDIST_"+itrig).get(0));
- }
- public double getPairsEnergyDistSlope(int itrig) {
- return Double.valueOf(configMap.get("SSP_HPS_ENERGYDIST_"+itrig).get(1));
- }
- public int getPairsEnergyDistCut(int itrig) {
- return Integer.valueOf(configMap.get("SSP_HPS_ENERGYDIST_"+itrig).get(2));
- }
-
- public boolean getPairsEnergySumMinEn(int itrig) {
- return Boolean.valueOf(configMap.get("SSP_HPS_EMIN_"+itrig).get(0));
- }
- public int getPairsEnergySumMin(int itrig) {
- return Integer.valueOf(configMap.get("SSP_HPS_EMIN_"+itrig).get(1));
- }
-
- public boolean getPairsEnergySumMaxEn(int itrig) {
- return Boolean.valueOf(configMap.get("SSP_HPS_EMAX_"+itrig).get(0));
- }
- public int getPairsEnergySumMax(int itrig) {
- return Integer.valueOf(configMap.get("SSP_HPS_EMAX_"+itrig).get(1));
- }
-
- public boolean getPairsEnergyDiffEn(int itrig) {
- return Boolean.valueOf(configMap.get("SSP_HPS_DIFFMAX_"+itrig).get(0));
- }
- public int getPairsEnergyDiffMax(int itrig) {
- return Integer.valueOf(configMap.get("SSP_HPS_DIFFMAX_"+itrig).get(1));
- }
-
- public boolean getPairsCoplanarityEn(int itrig) {
- return Boolean.valueOf(configMap.get("SSP_HPS_COPLANARITY_"+itrig).get(0));
- }
- public int getPairsCoplanarity(int itrig) {
- return Integer.valueOf(configMap.get("SSP_HPS_COPLANARITY_"+itrig).get(1));
- }
-*/
-}
+
+ public void printVars()
+ {
+ System.out.println(String.format("GTPMINSEED: %d",clusterMinSeedEnergy));
+ System.out.println(String.format("GTPMINHITDT: %d",clusterMinHitTimeDiff));
+ System.out.println(String.format("GTPMAXHITDT: %d",clusterMaxHitTimeDiff));
+ for (int ii=0; ii<2; ii++)
+ {
+ System.out.println(String.format("SSPSINGLESEN %d %b: ",ii,singlesEn[ii]));
+ System.out.println(String.format("SSPSINGLESEN %d %b: ",ii,pairsEn[ii]));
+
+ System.out.println(String.format("SSPSINGLESNHITSEN %d %b: ",ii,singlesNhitsEn[ii]));
+ System.out.println(String.format("",ii,singlesEnergyMinEn[ii]));
+ System.out.println(String.format("",ii,singlesEnergyMaxEn[ii]));
+
+ System.out.println(String.format("",ii,pairsEnergySumMinEn[ii]));
+ System.out.println(String.format("",ii,pairsEnergySumMaxEn[ii]));
+ System.out.println(String.format("",ii,pairsEnergyDiffEn[ii]));
+ System.out.println(String.format("",ii,pairsCoplanarityEn[ii]));
+ System.out.println(String.format("",ii,pairsEnergyDistEn[ii]));
+ System.out.println(String.format("",ii,pairsTimeDiffEn[ii]));
+
+ System.out.println(String.format("",ii,singlesNhits[ii]));
+ System.out.println(String.format("",ii,singlesEnergyMin[ii]));
+ System.out.println(String.format("",ii,singlesEnergyMax[ii]));
+
+ System.out.println(String.format("",ii,pairsEnergySumMin[ii]));
+ System.out.println(String.format("",ii,pairsEnergySumMax[ii]));
+ System.out.println(String.format("",ii,pairsEnergyDiffMax[ii]));
+ System.out.println(String.format("",ii,pairsCoplanarityMax[ii]));
+ System.out.println(String.format("",ii,pairsTimeDiffMax[ii]));
+ System.out.println(String.format("",ii,pairsEnergyDistMin[ii]));
+ System.out.println(String.format("",ii,pairsEnergyDistSlope[ii]));
+ }
+ }
+
+ public float getFloatConfigSSP(int itrig,String stub,int ival) {
+ return Float.valueOf(getConfigSSP(itrig,stub,ival));
+ }
+
+ public int getIntConfigSSP(int itrig,String stub,int ival) {
+ return Integer.valueOf(getConfigSSP(itrig,stub,ival));
+ }
+
+ public boolean getBoolConfigSSP(int itrig,String stub,int ival) {
+ return Boolean.valueOf(getConfigSSP(itrig,stub,ival));
+ }
+
+ public String getConfigSSP(int itrig,String stub,int ival) {
+ String key="SSP_HPS_"+stub+"_"+itrig;
+ return getConfig(key,ival);
+ }
+
+ public String getConfig(String key, int ival) {
+ if (configMap.containsKey(key)) {
+ List<String> vals=configMap.get(key);
+ if (ival<vals.size()) {
+ return configMap.get(key).get(ival);
+ } else {
+ System.err.println("configMap too short: "+ival+configMap.get(key));
+ return null;
+ }
+ } else {
+ System.err.println("configMap missing key: "+key);
+ return null;
+ }
+ }
+}
|