Author: [log in to unmask]
Date: Thu Mar 5 06:37:24 2015
New Revision: 2253
Log:
TriggerConfig update/bugfix.
Modified:
java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/daqconfig/TriggerConfig.java
Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/daqconfig/TriggerConfig.java
=============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/daqconfig/TriggerConfig.java (original)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/daqconfig/TriggerConfig.java Thu Mar 5 06:37:24 2015
@@ -5,6 +5,8 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.hps.conditions.database.DatabaseConditionsManager;
import org.hps.conditions.ecal.EcalChannel;
@@ -74,12 +76,10 @@
public boolean[] singlesEnergyMaxEn={false,false};
// Pairs Cuts Enabled:
- public boolean[] pairsEnergySumMinEn={false,false};
- public boolean[] pairsEnergySumMaxEn={false,false};
+ public boolean[] pairsEnergySumMaxMinEn={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:
public int[] singlesNhits={0,0};
@@ -87,6 +87,7 @@
public int[] singlesEnergyMax={0,0};
// Pairs Cut Values:
+ public int[] pairsNhitsMin={0,0};
public int[] pairsEnergyMin={0,0};
public int[] pairsEnergyMax={0,0};
public int[] pairsEnergySumMin={0,0};
@@ -122,12 +123,71 @@
fixConfigMap2014Run(runNumber);
parseConfigMap();
- if (nBanks==3) printVars();
- }
-
+ if (nBanks>2 && debug) printVars();
+ }
+
+ /*
+ * The first parsing routine. Just dumps the config strings
+ * into a map whose keys are the first column in the config file.
+ * Also treats some special cases.
+ */
+ private void loadConfigMap(int crate,String[] dump) {
+
+ for (String dump1 : dump) {
+ for (String line : dump1.trim().split("\n")) {
+
+ String[] cols=line.trim().split(" +",2);
+ if (cols.length < 2) continue;
+
+ String key=cols[0];
+ List<String> vals=new ArrayList<String>
+ (Arrays.asList(cols[1].trim().split(" +")));
+
+ if (vals.size() < 1) {
+ continue;
+ }
+
+ // SPECIAL CASE:
+ // parse the 16+1 column slot configurations.
+ if (key.startsWith("FADC250")) {
+ parseFADC(crate,key.trim(),vals);
+ }
+
+ // SPECIAL CASE:
+ // figure out which triggers are enabled:
+ else if (key.startsWith("SSP_HPS_SET_IO_SRC")) {
+ int trig = Integer.valueOf(vals.get(1));
+ for (int ii=0; ii<pairsIOsrc.length; ii++)
+ {
+ if (trig == singlesIOsrc[ii]) {
+ singlesEn[ii]=true;
+ }
+ else if (trig == pairsIOsrc[ii]) {
+ pairsEn[ii]=true;
+ }
+ }
+ }
+
+ // GENERAL CASE:
+ // Append trigger# onto key:
+ if (vals.size() > 1 && key.startsWith("SSP"))
+ {
+ key += "_"+vals.remove(0);
+ }
+ // dump it into the map:
+ configMap.put(key,vals);
+ }
+ }
+ }
+ /*
+ * This function parses the config map for the cases where the
+ * config string has a simple format:
+ * TAG VALUE
+ * TAG TRIGGER VALUES
+ */
public void parseConfigMap()
{
-// System.err.println("PARSECONFIGMAP ..................");
+// System.out.println("PARSECONFIGMAP ..................");
fadcNSA=Integer.valueOf(getConfig("FADC250_NSA",0));
fadcNSB=Integer.valueOf(getConfig("FADC250_NSB",0));
@@ -141,26 +201,21 @@
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_NMIN",1);
singlesEnergyMinEn[ii]=getBoolConfigSSP(ii,"SINGLES_EMIN",1);
singlesEnergyMaxEn[ii]=getBoolConfigSSP(ii,"SINGLES_EMAX",1);
- pairsEnergySumMinEn[ii]=getBoolConfigSSP(ii,"PAIRS_SUMMAX_MIN",2);
- pairsEnergySumMaxEn[ii]=getBoolConfigSSP(ii,"PAIRS_SUMMAX_MIN",2);
+ pairsEnergySumMaxMinEn[ii]=getBoolConfigSSP(ii,"PAIRS_SUMMAX_MIN",2);
pairsEnergyDiffEn[ii]=getBoolConfigSSP(ii,"PAIRS_DIFFMAX",1);
pairsCoplanarityEn[ii]=getBoolConfigSSP(ii,"PAIRS_COPLANARITY",1);
pairsEnergyDistEn[ii]=getBoolConfigSSP(ii,"PAIRS_ENERGYDIST",1);
- //pairsTimeDiffEn[ii]=getBoolConfigSSP(ii,"PAIRS_TIMECOINCIDENCE",0);
- //pairsEnergyMin[ii]=getIntConfigSSP(ii,"PAIRS_EMIN",0);
- //pairsEnergyMax[ii]=getIntConfigSSP(ii,"PAIRS_EMAX",0);
singlesNhits[ii]=getIntConfigSSP(ii,"SINGLES_NMIN",0);
singlesEnergyMin[ii]=getIntConfigSSP(ii,"SINGLES_EMIN",0);
singlesEnergyMax[ii]=getIntConfigSSP(ii,"SINGLES_EMAX",0);
+ pairsNhitsMin[ii]=getIntConfigSSP(ii,"PAIRS_NMIN",0);
pairsEnergyMin[ii]=getIntConfigSSP(ii,"PAIRS_EMIN",0);
pairsEnergyMax[ii]=getIntConfigSSP(ii,"PAIRS_EMAX",0);
pairsEnergySumMin[ii]=getIntConfigSSP(ii,"PAIRS_SUMMAX_MIN",1);
@@ -171,11 +226,16 @@
pairsEnergyDistSlope[ii]=getFloatConfigSSP(ii,"PAIRS_ENERGYDIST",0);
pairsEnergyDistMin[ii]=getIntConfigSSP(ii,"PAIRS_ENERGYDIST",1);
}
-// System.err.println("DONE PARSECONFIGMAP.");
+// System.out.println("DONE PARSECONFIGMAP.");
}
-
+
+ /*
+ * UNFINISHED.
+ * This is a fixer-upper for before we had the full config in EVIO
+ * or when there was a bug in it.
+ */
private void fixConfigMap2014Run(int runNumber) {
if (runNumber>3470 || runNumber < 3100) return;
// TODO: port datacat/python/engrun/engrun_metadata.py
@@ -192,9 +252,16 @@
configMap.put("GTP_TIMEDIFF",tmp);
}
+
+
+ /*
+ * These treat the FADC config lines with 16+1 columns.
+ * Must keep track of most recent FADC250_SLOT tag, since it's
+ * not on the line with the data.
+ */
private void parseFADC(int crate,String key,List<String> vals)
{
-// System.err.println(crate);
+// System.out.println(crate);
if (key.equals("FADC250_SLOT")) {
thisFadcSlot=Integer.valueOf(vals.get(0));
}
@@ -208,7 +275,6 @@
setChannelParsFloat(crate,thisFadcSlot,GAIN,vals);
}
}
-
private void setChannelParsFloat(int crate,int slot,Map<EcalChannel,Float>map, List<String> vals)
{
for (int ii=0; ii<16; ii++) {
@@ -221,157 +287,120 @@
map.put(findChannel(crate,slot,ii),Integer.valueOf(vals.get(ii)));
}
}
-
- private void loadConfigMap(int crate,String[] dump) {
-
- for (String dump1 : dump) {
- for (String line : dump1.trim().split("\n")) {
-
- String[] cols=line.trim().split(" +",2);
- if (cols.length < 2) continue;
-
- String key=cols[0];
- List<String> vals=new ArrayList<String>
- (Arrays.asList(cols[1].trim().split(" +")));
-
- if (vals.size() < 1) {
- continue;
- }
-
- if (key.startsWith("FADC250")) {
- parseFADC(crate,key.trim(),vals);
- }
- else if (key.startsWith("SSP_HPS_SET_IO_SRC")) {
- for (int ii=0; ii<pairsIOsrc.length; ii++)
- {
- int trig = Integer.valueOf(vals.get(1));
- if (trig == singlesIOsrc[ii]) {
- singlesEn[ii]=true;
- }
- else if (trig == pairsIOsrc[ii]) {
- pairsEn[ii]=true;
- }
- }
- }
-
- // Append trigger# onto key:
- if (vals.size() > 1 && key.startsWith("SSP"))
- {
- key += "_"+vals.remove(0);
- }
-
- // dump it into the map:
- configMap.put(key,vals);
- }
- }
- }
+
+
+
public void printMap() {
- System.err.print("\nTriggerConfigMap::::::::::::::::::::::::::::\n");
+ System.out.print("\nTriggerConfigMap::::::::::::::::::::::::::::\n");
for (String key : configMap.keySet()) {
- System.err.printf("%s: ",key);
+ System.out.printf("%s: ",key);
for (String val : configMap.get(key)) {
- System.err.printf("%s ",val);
- }
- System.err.printf("\n");
- }
- System.err.println("::::::::::::::::::::::::::::::::::::::::::::");
+ System.out.printf("%s ",val);
+ }
+ System.out.printf("\n");
+ }
+ System.out.println("::::::::::::::::::::::::::::::::::::::::::::");
}
public void printVars()
{
- System.err.println("\nTriggerConfigVars%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
- System.err.println();
- System.err.println(String.format("GTPMINSEED: %d",clusterMinSeedEnergy));
- System.err.println(String.format("GTPMINHITDT: %d",clusterMinHitTimeDiff));
- System.err.println(String.format("GTPMAXHITDT: %d",clusterMaxHitTimeDiff));
- System.err.println();
- System.err.println(String.format("FADC250_NSA: %d",fadcNSA));
- System.err.println(String.format("FADC250_NSB: %d",fadcNSB));
- System.err.println(String.format("FADC250_NPEAK: %d",fadcNPEAK));
- System.err.println(String.format("FADC250_MODE: %d",fadcMODE));
- System.err.println(String.format("FADC250_WIDTH: %d",fadcWIDTH));
- System.err.println(String.format("FADC250_OFFSET: %d",fadcOFFSET));
+ System.out.println("\nTriggerConfigVars%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
+ System.out.println();
+ System.out.println(String.format("GTPMINSEED: %d",clusterMinSeedEnergy));
+ System.out.println(String.format("GTPMINHITDT: %d",clusterMinHitTimeDiff));
+ System.out.println(String.format("GTPMAXHITDT: %d",clusterMaxHitTimeDiff));
+ System.out.println();
+ System.out.println(String.format("FADC250_NSA: %d",fadcNSA));
+ System.out.println(String.format("FADC250_NSB: %d",fadcNSB));
+ System.out.println(String.format("FADC250_NPEAK: %d",fadcNPEAK));
+ System.out.println(String.format("FADC250_MODE: %d",fadcMODE));
+ System.out.println(String.format("FADC250_WIDTH: %d",fadcWIDTH));
+ System.out.println(String.format("FADC250_OFFSET: %d",fadcOFFSET));
for (EcalChannel cc : ecalConditions.getChannelCollection()) {
- //System.err.print(String.format("SLOT%d CHAN%d --",cc.getSlot(),cc.getChannel()));
+ //System.out.print(String.format("SLOT%d CHAN%d --",cc.getSlot(),cc.getChannel()));
if (!PEDESTAL.containsKey(cc)) {
- System.err.println("\nP !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+ System.out.println("\nP !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
}
if (!THRESHOLD.containsKey(cc)) {
- System.err.println("\nT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+ System.out.println("\nT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
}
if (!GAIN.containsKey(cc)) {
- System.err.println("\nG !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
- }
- //System.err.println(String.format(" %f %d %f",
+ System.out.println("\nG !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+ }
+ //System.out.println(String.format(" %f %d %f",
// PEDESTAL.get(cc),THRESHOLD.get(cc),GAIN.get(cc)));
}
- System.err.println();
+ System.out.println();
for (int ii=0; ii<2; ii++)
{
- System.err.println(String.format("SINGLESEN-%d: %b ",ii,singlesEn[ii]));
- System.err.println(String.format("PAIRSEN-%d: %b: ",ii,pairsEn[ii]));
+ System.out.println(String.format("SINGLES_EN %d %b ",ii,singlesEn[ii]));
+ System.out.println(String.format("PAIRS_EN %d %b ",ii,pairsEn[ii]));
- System.err.println(String.format("SINGLESNHITSEN %d %b: ",ii,singlesNhitsEn[ii]));
- System.err.println(String.format("SINGLESEMINEN %d %b",ii,singlesEnergyMinEn[ii]));
- System.err.println(String.format("SINGLESEMAXEN %d %b",ii,singlesEnergyMaxEn[ii]));
+ System.out.println(String.format("SINGLES_NHITS_EN %d %b: ",ii,singlesNhitsEn[ii]));
+ System.out.println(String.format("SINGLES_EMIN_EN %d %b",ii,singlesEnergyMinEn[ii]));
+ System.out.println(String.format("SINGLES_EMAX_EN %d %b",ii,singlesEnergyMaxEn[ii]));
- System.err.println(String.format("PAIRSSUMMINEN %d %b",ii,pairsEnergySumMinEn[ii]));
- System.err.println(String.format("PAIRSSUMMAXEN %d %b",ii,pairsEnergySumMaxEn[ii]));
- System.err.println(String.format("PAIRSENERGYDIFFEN %d %b",ii,pairsEnergyDiffEn[ii]));
- System.err.println(String.format("PAIRSCOPEN %d %b",ii,pairsCoplanarityEn[ii]));
- System.err.println(String.format("PAIRSEDISTEN %d %b",ii,pairsEnergyDistEn[ii]));
- System.err.println(String.format("PAIRSTIMEDIFFEN %d %b",ii,pairsTimeDiffEn[ii]));
+ System.out.println(String.format("PAIRS_SUMMAXMIN_EN %d %b",ii,pairsEnergySumMaxMinEn[ii]));
+ System.out.println(String.format("PAIRS_ENERGYDIFF_EN %d %b",ii,pairsEnergyDiffEn[ii]));
+ System.out.println(String.format("PAIRS_COP_EN %d %b",ii,pairsCoplanarityEn[ii]));
+ System.out.println(String.format("PAIRS_EDIST_EN %d %b",ii,pairsEnergyDistEn[ii]));
- System.err.println(String.format("SINGLESNHTIS %d %d",ii,singlesNhits[ii]));
- System.err.println(String.format("SINGLESEMIN %d %d",ii,singlesEnergyMin[ii]));
- System.err.println(String.format("SINGLESEMAX %d %d",ii,singlesEnergyMax[ii]));
+ System.out.println(String.format("SINGLES_NHTIS %d %d",ii,singlesNhits[ii]));
+ System.out.println(String.format("SINGLES_EMIN %d %d",ii,singlesEnergyMin[ii]));
+ System.out.println(String.format("SINGLES_EMAX %d %d",ii,singlesEnergyMax[ii]));
- System.err.println(String.format("PAIRSSUMMIN %d %d",ii,pairsEnergySumMin[ii]));
- System.err.println(String.format("PRISSUMMAX %d %d",ii,pairsEnergySumMax[ii]));
- System.err.println(String.format("PAIRSENERGYDIFF %d %d",ii,pairsEnergyDiffMax[ii]));
- System.err.println(String.format("PAIRSCOPMAX %d %d",ii,pairsCoplanarityMax[ii]));
- System.err.println(String.format("PAIRSTDIFFMAAX %d %d",ii,pairsTimeDiffMax[ii]));
- System.err.println(String.format("PAIRSEDISTMIN %d %d",ii,pairsEnergyDistMin[ii]));
- System.err.println(String.format("PAIRSEDISTSLOP %d %f",ii,pairsEnergyDistSlope[ii]));
+ System.out.println(String.format("PAIRS_NHITS %d %d",ii,pairsNhitsMin[ii]));
+ System.out.println(String.format("PAIRS_SUMMIN %d %d",ii,pairsEnergySumMin[ii]));
+ System.out.println(String.format("PAIRS_SUMMAX %d %d",ii,pairsEnergySumMax[ii]));
+ System.out.println(String.format("PAIRS_ENERGYDIFF %d %d",ii,pairsEnergyDiffMax[ii]));
+ System.out.println(String.format("PAIRS_COPMAX %d %d",ii,pairsCoplanarityMax[ii]));
+ System.out.println(String.format("PAIRS_TDIFFMAAX %d %d",ii,pairsTimeDiffMax[ii]));
+ System.out.println(String.format("PAIRS_EDISTMIN %d %d",ii,pairsEnergyDistMin[ii]));
+ System.out.println(String.format("PAIRS_EDISTSLOP %d %f",ii,pairsEnergyDistSlope[ii]));
}
- System.err.println("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
+ System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
}
+
+
+ /*
+ * Parsing wrappers to make rest of code easier.
+ */
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 "1".equals(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));
+ Logger.getLogger(this.getClass().getName()).log(Level.SEVERE,
+ "ConfigMap TOO SHORT: "+ival+" "+configMap.get(key));
return "0";
}
} else {
- // this is not an error, we have to wait on 3 banks.
- // leave here for now.
- System.err.println("configMap missing key: "+key);
+ // this is only necessarily an error if we've read 3 banks:
+ if (nBanks>2) {
+ Logger.getLogger(this.getClass().getName()).log(Level.SEVERE,
+ "ConfigMap MISSING KEY: "+key);
+ }
return "0";
}
}
+
public EcalChannel findChannel(int crate,int fadcSlot,int fadcChan)
{
for (EcalChannel cc : channels) {
|