Author: [log in to unmask]
Date: Mon Feb 16 16:31:27 2015
New Revision: 2157
Log:
Another update for reading trigger configuration from EVIO (ecal-readout-sim/triggerbank/TriggerConfig). Full functionality on 2014 data is going to require another JEVIO mod.
Modified:
java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/triggerbank/TriggerConfig.java
java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.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 Mon Feb 16 16:31:27 2015
@@ -6,38 +6,56 @@
import java.util.List;
import java.util.Map;
+import org.hps.conditions.database.TableConstants;
+import org.hps.conditions.ecal.EcalChannel;
+import org.hps.conditions.ecal.EcalConditions;
+import org.lcsim.conditions.ConditionsManager;
+
public class TriggerConfig {
/*
* Read/Parse/Save the DAQ trigger configuration settings.
+ *
+ * A hack in progress.
*
- * This is a work in progress, activate by uncommenting
- * line 61 in LCSimEngRunEventBuilder.java
+ * 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: Error in EVIO format for Crate 39 for 2014 data requires another JEVIO workaround (realized Feb 16).
+ * TODO: Manually put in GTP settings based on run number for 2014 data.
+ * TODO: Manually deal with change in format of SSP_HPS_SINGLES_NMIN (at 3312(?)).
*
- * 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.
+ * TODO: This should probably be a Driver.
+ *
+ * TODO: Restructure, clean up..
*
- * NAB 2015/02/15
+ * NAB 2015/02/16
*/
- public static final int bankTag = 0xE10E;
-
+ public static final int BANK_TAG = 0xE10E;
+
+ // need to know these in order to interpret DAQ strings:
+ private static final int[] singlesIOsrc={20,21};
+ private static final int[] pairsIOsrc={22,23};
+
// 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 not all the parameters available in the run configuration bank,
- // just *most* of the ones needed for trigger studies:
-
- // General Clustering Cut Values:
+
+ // link ECAL FADC channel settings to EcalChannels:
+ public Map<EcalChannel,Float> GAIN=new HashMap<EcalChannel,Float>();
+ public Map<EcalChannel,Float> PEDESTAL=new HashMap<EcalChannel,Float>();
+ public Map<EcalChannel,Integer> THRESHOLD=new HashMap<EcalChannel,Integer>();
+
+ private boolean debug=false;//true;
+
+ // FADC Config:
+ public int fadcNSA=0;
+ public int fadcNSB=0;
+ public int fadcNPEAK=0;
+ public int fadcMODE=0;
+ public int fadcWIDTH=0;
+ public int fadcOFFSET=0;
+
+ // GTP Clustering Cut Values:
public int clusterMinSeedEnergy=0;
public int clusterMinHitTimeDiff=0;
public int clusterMaxHitTimeDiff=0;
@@ -65,6 +83,8 @@
public int[] singlesEnergyMax={0,0};
// Pairs Cut Values:
+ public int[] pairsEnergyMin={0,0};
+ public int[] pairsEnergyMax={0,0};
public int[] pairsEnergySumMin={0,0};
public int[] pairsEnergySumMax={0,0};
public int[] pairsEnergyDiffMax={0,0};
@@ -75,71 +95,131 @@
// Pairs Cut Parameters:
public float[] pairsEnergyDistSlope={0,0};
- public TriggerConfig(int runNumber,String[] dump) {
-
- loadConfigMap(dump);
-
+ // Have to remember the previous slot line in order to interpret the data:
+ private int thisFadcSlot=0;
+
+ // Cache local set of EcalChannels:
+ private EcalConditions ecalConditions = null;
+ private List<EcalChannel> channels=new ArrayList<EcalChannel>();
+
+ public TriggerConfig() {
+ ecalConditions = ConditionsManager
+ .defaultInstance()
+ .getCachedConditions(EcalConditions.class,
+ TableConstants.ECAL_CONDITIONS).getCachedData();
+ for (int ii = 0; ii < 442; ii++) {
+ channels.add(findChannel(ii+1));
+ }
+ }
+
+ public void parse(int crate,int runNumber,String[] dump) {
+ loadConfigMap(crate,dump);
if (debug) printMap();
+ fixConfigMap2014Run(runNumber);
+ parseConfigMap();
+ // don't do this here, need to wait on more banks:
+ //if (debug) printVars();
+ }
+
+ public void parseConfigMap()
+ {
+// System.err.println("PARSECONFIGMAP ..................");
+
+ fadcNSA=Integer.valueOf(getConfig("FADC250_NSA",0));
+ fadcNSB=Integer.valueOf(getConfig("FADC250_NSB",0));
+ fadcNPEAK=Integer.valueOf(getConfig("FADC250_NPEAK",0));
+ fadcMODE=Integer.valueOf(getConfig("FADC250_MODE",0));
+ fadcWIDTH=Integer.valueOf(getConfig("FADC250_W_WIDTH",0));
+ fadcOFFSET=Integer.valueOf(getConfig("FADC250_W_OFFSET",0));
- 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);
+ //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);
-
+ 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);
+ 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);
+
+ pairsEnergyMin[ii]=getIntConfigSSP(ii,"PAIRS_EMIN",0);
+ pairsEnergyMax[ii]=getIntConfigSSP(ii,"PAIRS_EMAX",0);
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
- }
+ pairsEnergySumMax[ii]=getIntConfigSSP(ii,"PAIRS_SUMMAX_MIN",0);
+ pairsEnergyDiffMax[ii]=getIntConfigSSP(ii,"PAIRS_DIFFMAX",0);
+ pairsCoplanarityMax[ii]=getIntConfigSSP(ii,"PAIRS_COPLANARITY",0);
+ pairsTimeDiffMax[ii]=getIntConfigSSP(ii,"PAIRS_TIMECOINCIDENCE",0);
+ pairsEnergyDistSlope[ii]=getFloatConfigSSP(ii,"PAIRS_ENERGYDIST",0);
+ pairsEnergyDistMin[ii]=getIntConfigSSP(ii,"PAIRS_ENERGYDIST",1);
+ }
+// System.err.println("DONE PARSECONFIGMAP.");
}
- public void fixConfigMap2014Run(int runNumber) {
+ private void fixConfigMap2014Run(int runNumber) {
if (runNumber>3470 || runNumber < 3100) return;
// TODO: port datacat/python/engrun/engrun_metadata.py
+ // 1. SET GTP SETTINGS MANUALLY BASED ON RUN NUMBER
+ // 2. FIX SINGLES_NMIN prior to 3312
for (String key : configMap.keySet()) {
}
List<String> tmp=new ArrayList<String>();
tmp.add("0");
+ tmp.add("0");
+ tmp.add("0");
+ tmp.add("0");
configMap.put("GTP_CLUSTER_THRESH",tmp);
- tmp.add("0");
configMap.put("GTP_TIMEDIFF",tmp);
}
- private void loadConfigMap(String[] dump) {
-
+ private void parseFADC(int crate,String key,List<String> vals)
+ {
+// System.err.println(crate);
+ if (key.equals("FADC250_SLOT")) {
+ thisFadcSlot=Integer.valueOf(vals.get(0));
+ }
+ else if (key.equals("FADC250_ALLCH_TET")) {
+ setChannelParsInt(crate,thisFadcSlot,THRESHOLD,vals);
+ }
+ else if (key.equals("FADC250_ALLCH_PED")) {
+ setChannelParsFloat(crate,thisFadcSlot,PEDESTAL,vals);
+ }
+ else if (key.equals("FADC250_ALLCH_GAIN")) {
+ 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++) {
+ map.put(findChannel(crate,slot,ii),Float.valueOf(vals.get(ii)));
+ }
+ }
+ private void setChannelParsInt(int crate,int slot,Map<EcalChannel,Integer>map, List<String> vals)
+ {
+ for (int ii=0; ii<16; ii++) {
+ 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")) {
@@ -150,22 +230,28 @@
List<String> vals=new ArrayList<String>
(Arrays.asList(cols[1].trim().split(" +")));
- // This should never happen:
if (vals.size() < 1) {
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;
+ 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)
+ if (vals.size() > 1 && key.startsWith("SSP"))
{
key += "_"+vals.remove(0);
}
@@ -177,49 +263,75 @@
}
public void printMap() {
- System.out.print("TriggerConfig: ");
+ System.err.print("\nTriggerConfigMap::::::::::::::::::::::::::::\n");
for (String key : configMap.keySet()) {
- System.out.printf("%s ",key);
+ System.err.printf("%s: ",key);
for (String val : configMap.get(key)) {
- System.out.printf("%s ",val);
- }
- System.out.printf("\n");
- }
+ System.err.printf("%s ",val);
+ }
+ System.err.printf("\n");
+ }
+ System.err.println("::::::::::::::::::::::::::::::::::::::::::::");
}
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));
+ 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));
+ for (EcalChannel cc : ecalConditions.getChannelCollection()) {
+ System.err.print(String.format("SLOT%d CHAN%d --",cc.getSlot(),cc.getChannel()));
+ if (!PEDESTAL.containsKey(cc)) {
+ System.err.println("\nP !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+ }
+ if (!THRESHOLD.containsKey(cc)) {
+ System.err.println("\nT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+ }
+ if (!GAIN.containsKey(cc)) {
+ System.err.println("\nG !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+ }
+ System.err.println(String.format(" %f %d %f",
+ PEDESTAL.get(cc),THRESHOLD.get(cc),GAIN.get(cc)));
+ }
+ System.err.println();
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.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("SSPSINGLESNHITSEN %d %b: ",ii,singlesNhitsEn[ii]));
- System.out.println(String.format("",ii,singlesEnergyMinEn[ii]));
- System.out.println(String.format("",ii,singlesEnergyMaxEn[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("",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.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("",ii,singlesNhits[ii]));
- System.out.println(String.format("",ii,singlesEnergyMin[ii]));
- System.out.println(String.format("",ii,singlesEnergyMax[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("",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]));
+ 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.err.println("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
}
public float getFloatConfigSSP(int itrig,String stub,int ival) {
@@ -231,7 +343,7 @@
}
public boolean getBoolConfigSSP(int itrig,String stub,int ival) {
- return Boolean.valueOf(getConfigSSP(itrig,stub,ival));
+ return "1".equals(getConfigSSP(itrig,stub,ival));
}
public String getConfigSSP(int itrig,String stub,int ival) {
@@ -246,11 +358,29 @@
return configMap.get(key).get(ival);
} else {
System.err.println("configMap too short: "+ival+configMap.get(key));
- return null;
+ 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);
- return null;
- }
- }
-}
+ return "0";
+ }
+ }
+
+ public EcalChannel findChannel(int crate,int fadcSlot,int fadcChan)
+ {
+ for (EcalChannel cc : channels) {
+ // EcalChannel follows different convention on crate numbering:
+ if ((cc.getCrate()-1)*2 == crate-37 &&
+ cc.getSlot() == fadcSlot && cc.getChannel() == fadcChan)
+ {
+ return cc;
+ }
+ }
+ return null;
+ }
+ public EcalChannel findChannel(int channel_id) {
+ return ecalConditions.getChannelCollection().findChannel(channel_id);
+ }
+}
Modified: java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java
=============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java (original)
+++ java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java Mon Feb 16 16:31:27 2015
@@ -56,7 +56,7 @@
// Create a new LCSimEvent.
EventHeader lcsimEvent = getEventData(evioEvent);
-
+
// Put DAQ Configuration info into lcsimEvent (NAB Feb 5, 2015):
//getDAQConfig(evioEvent,lcsimEvent);
@@ -78,19 +78,27 @@
return lcsimEvent;
}
- // NAB Feb 5, 2015:
+ // NAB Feb 16, 2015:
public void getDAQConfig(EvioEvent evioEvent, EventHeader lcsimEvent) {
List <TriggerConfig> trigconf=new ArrayList<TriggerConfig>();
for (BaseStructure bank : evioEvent.getChildrenList()) {
if (bank.getChildCount()<=0) continue;
+ int crate=bank.getHeader().getTag();
for (BaseStructure subBank : bank.getChildrenList()) {
- if (subBank.getHeader().getTag() == 0xE10E) {
- if (subBank.getStringData() == null) continue; // unfortunately necessary
- trigconf.add(new TriggerConfig(lcsimEvent.getRunNumber(),subBank.getStringData()));
+ if (subBank.getHeader().getTag() == TriggerConfig.BANK_TAG) {
+ //System.err.println("000000000000000000000000 "+crate);
+ if (subBank.getStringData() == null) continue; // FIXME: Due to Crate 39 EVIO Format Error
+ //System.err.println("111111111111111111111111 "+crate);
+ if (trigconf.size()==0) trigconf.add(new TriggerConfig());
+ trigconf.get(0).parse(crate,lcsimEvent.getRunNumber(),subBank.getStringData());
+// trigconf.add(new TriggerConfig(lcsimEvent.getRunNumber(),subBank.getStringData()));
}
}
}
- lcsimEvent.put("TriggerConfig",trigconf,TriggerConfig.class,0);
+ if (trigconf.size()>0) {
+ //trigconf.get(0).printVars();
+ lcsimEvent.put("TriggerConfig",trigconf,TriggerConfig.class,0);
+ };
}
}
|