diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 5fa3267f7a..0cd3983499 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -68,7 +68,7 @@ jobs: # tests ############################################################################# - test_coatjava: + pid: needs: [ build ] strategy: fail-fast: true @@ -78,14 +78,16 @@ jobs: id: - kpp - eb-ep + - eb-en - eb-eg - eb-epc - eb-enc - eb-eftpi include: - # run all tests on ubuntu + # run selected tests on ubuntu - { id: kpp, cmd: ./run-advanced-tests.sh } - { id: eb-ep, cmd: ./run-eb-tests.sh -100 electronproton } + - { id: eb-en, cmd: ./run-eb-tests.sh -100 electronneutron } - { id: eb-eg, cmd: ./run-eb-tests.sh -100 electrongamma } - { id: eb-epc, cmd: ./run-eb-tests.sh -100 electronprotonC } - { id: eb-enc, cmd: ./run-eb-tests.sh -100 electronneutronC } @@ -136,7 +138,7 @@ jobs: final: needs: - build - - test_coatjava + - pid - test_run-groovy runs-on: ubuntu-latest steps: diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index 6c42d6d924..02c60c97e4 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -8,6 +8,7 @@ on: workflow_dispatch: jobs: + if: false validation: uses: JeffersonLab/clas12-validation/.github/workflows/ci.yml@main with: diff --git a/common-tools/clas-io/src/main/java/org/jlab/utils/JsonUtils.java b/common-tools/clas-io/src/main/java/org/jlab/utils/JsonUtils.java index b2a6903aea..ef28fbb2ed 100644 --- a/common-tools/clas-io/src/main/java/org/jlab/utils/JsonUtils.java +++ b/common-tools/clas-io/src/main/java/org/jlab/utils/JsonUtils.java @@ -113,7 +113,7 @@ public static JsonObject Map2Json(Map map) { ret.add(topKey,Map2Json((Map)entry.getValue())); } else { - ret.add(topKey, entry.getValue().toString()); + ret.add(topKey, entry.getValue() == null ? null : entry.getValue().toString()); } } return ret; diff --git a/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/EngineProcessor.java b/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/EngineProcessor.java index ff1fc6ab2a..b30a42ac54 100644 --- a/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/EngineProcessor.java +++ b/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/EngineProcessor.java @@ -267,7 +267,7 @@ public void init(){ public void processEvent(DataEvent event){ for(Map.Entry engine : this.processorEngines.entrySet()){ try { - engine.getValue().filterEvent(event); + engine.getValue().processDataEvent(event); } catch (Exception e){ LOGGER.log(Level.SEVERE, "[Exception] >>>>> engine : {0}\n\n", engine.getKey()); e.printStackTrace(); diff --git a/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/ReconstructionEngine.java b/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/ReconstructionEngine.java index cce8c4301b..a4c4943508 100644 --- a/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/ReconstructionEngine.java +++ b/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/ReconstructionEngine.java @@ -2,6 +2,7 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; @@ -60,14 +61,22 @@ public abstract class ReconstructionEngine implements Engine { volatile boolean dropOutputBanks = false; private final Set outputBanks = new HashSet<>(); + private volatile List runNumbers = new ArrayList<>(); + private boolean ignoreInvalidRunNumbers = true; + private int runNumberOverride = -1; + volatile long triggerMask = 0xFFFFFFFFFFFFFFFFL; - String engineName = "UnknownEngine"; - String engineAuthor = "N.T."; - String engineVersion = "0.0"; - String engineDescription = "CLARA Engine"; + String engineName = "UnknownEngine"; + String engineAuthor = "N.T."; + String engineVersion = "0.0"; + String engineDescription = "CLARA Engine"; + + abstract public boolean processDataEventUser(DataEvent event); + abstract public boolean init(); + abstract public void detectorChanged(int runNumber); public ReconstructionEngine(String name, String author, String version){ engineName = name; @@ -108,9 +117,6 @@ protected RawBank getRawBankReader(String bankName, OrderType... order) { return new RawDataBank(bankName, order); } - abstract public boolean processDataEvent(DataEvent event); - abstract public boolean init(); - /** * Use a map just to avoid name clash in ConstantsManager. * @param tables map of table names to #indices @@ -187,6 +193,9 @@ public EngineData configure(EngineData ed) { engineDictionary = new SchemaFactory(); LOGGER.log(Level.INFO,"--- engine configuration is called " + this.getDescription()); try { + if (this.getEngineConfigString("runNumberOverride")!=null) { + this.runNumberOverride = Integer.valueOf(this.getEngineConfigString("runNumberOverride")); + } if (this.getEngineConfigString("rawBankGroup")!=null) { this.rawBankOrders = RawBank.getFilterGroup(this.getEngineConfigString("rawBankGroup")); } @@ -227,8 +236,7 @@ public EngineData configure(EngineData ed) { } protected String getStringConfigParameter(String jsonString, - String key) throws Exception { - Object js; + String key) throws Exception { String variation = ""; try { JSONObject base = new JSONObject(jsonString); @@ -238,13 +246,6 @@ protected String getStringConfigParameter(String jsonString, } else { LOGGER.log(Level.WARNING,"[JSON]" + this.getName() + " **** warning **** does not contain key = " + key); } - /* - js = base.get(key); - if (js instanceof String) { - return (String) js; - } else { - throw new Exception("JSONObject[" + "] not a string."); - }*/ } catch (JSONException e) { throw new Exception(e.getMessage()); } @@ -345,17 +346,22 @@ public void dropBanks(DataEvent event) { } } } - - public boolean checkRunNumber(DataEvent event) { - if (!this.ignoreInvalidRunNumbers) return true; - int run = 0; - if (event.hasBank("RUN::config")) { - run = event.getBank("RUN::config").getInt("run",0); + + public synchronized boolean checkRunNumber(DataEvent event) { + int r = runNumberOverride; + if (r <= 0 && event.hasBank("RUN::config")) { + r = event.getBank("RUN::config").getInt("run",0); } - return run>0; + if (r > 0) { + if (this.runNumbers.isEmpty() || r != this.runNumbers.get(this.runNumbers.size()-1)) { + this.runNumbers.add(r); + this.detectorChanged(11); + } + } + return !this.ignoreInvalidRunNumbers || r>0; } - public void filterEvent(DataEvent dataEvent) { + public final void processDataEvent(DataEvent dataEvent) { if (!this.wroteConfig) { this.wroteConfig = true; JsonUtils.extend(dataEvent, CONFIG_BANK_NAME, "json", this.generateConfig()); @@ -365,7 +371,7 @@ public void filterEvent(DataEvent dataEvent) { } if(this.applyTriggerMask(dataEvent)) { if (this.checkRunNumber(dataEvent)) { - this.processDataEvent(dataEvent); + this.processDataEventUser(dataEvent); } } } @@ -404,7 +410,7 @@ public EngineData execute(EngineData input) { } try { - this.filterEvent(dataEventHipo); + this.processDataEvent(dataEventHipo); output.setData(mt, dataEventHipo.getHipoEvent()); } catch (Exception e) { String msg = String.format("Error processing input event%n%n%s", ClaraUtil.reportException(e)); @@ -446,42 +452,6 @@ public EngineData execute(EngineData input) { } return input; - /* - if (!mt.equalsIgnoreCase()) { - String msg = String.format("Wrong input type: %s", mt); - output.setStatus(EngineStatus.ERROR); - output.setDescription(msg); - return output; - }*/ - /* - EvioDataEvent dataevent = null; - - try { - ByteBuffer bb = (ByteBuffer) input.getData(); - byte[] buffer = bb.array(); - ByteOrder endianness = bb.order(); - dataevent = new EvioDataEvent(buffer, endianness, EvioFactory.getDictionary()); - } catch (Exception e) { - String msg = String.format("Error reading input event%n%n%s", ClaraUtil.reportException(e)); - output.setStatus(EngineStatus.ERROR); - output.setDescription(msg); - return output; - } - - try { - this.processDataEvent(dataevent); - ByteBuffer bbo = dataevent.getEventBuffer(); - //byte[] buffero = bbo.array(); - output.setData(mt, bbo); - } catch (Exception e) { - String msg = String.format("Error processing input event%n%n%s", ClaraUtil.reportException(e)); - output.setStatus(EngineStatus.ERROR); - output.setDescription(msg); - return output; - } - - return output; - */ } @Override @@ -556,16 +526,21 @@ public Reco(){ super("a","b","c"); } @Override - public boolean processDataEvent(DataEvent event) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + public boolean processDataEventUser(DataEvent event) { + throw new UnsupportedOperationException("Not supported yet."); } @Override public boolean init() { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + throw new UnsupportedOperationException("Not supported yet."); } - -} + + @Override + public void detectorChanged(int runNumber) { + throw new UnsupportedOperationException("Not supported yet."); + } + } + public static void main(String[] args){ System.setProperty("CLAS12DIR", "/Users/gavalian/Work/Software/project-3a.0.0/Distribution/clas12-offline-software/coatjava"); try { @@ -586,7 +561,6 @@ public static void main(String[] args){ "\"timestamp\":333\n" + "}"; System.out.println(json); - //json = "{ \"ccdb\":{\"run\":10,\"variation\":\"default\"}, \"variation\":\"cosmic\"}"; Reco reco = new Reco(); String variation = reco.getStringConfigParameter(json, "variation"); System.out.println(" Variation : " + variation); diff --git a/common-tools/clas-reco/src/main/java/org/jlab/clas/service/PulseExtractorEngine.java b/common-tools/clas-reco/src/main/java/org/jlab/clas/service/PulseExtractorEngine.java index caf6702f20..dec12e0f44 100644 --- a/common-tools/clas-reco/src/main/java/org/jlab/clas/service/PulseExtractorEngine.java +++ b/common-tools/clas-reco/src/main/java/org/jlab/clas/service/PulseExtractorEngine.java @@ -28,7 +28,7 @@ public boolean init() { } @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { // No CCDB table, hardcoded parameters in the extractor: mode3.update(6, null, event, "BMT::wf", "BMT::adc"); @@ -47,4 +47,7 @@ public boolean processDataEvent(DataEvent event) { return true; } + @Override + public void detectorChanged(int runNumber) {} + } diff --git a/common-tools/swim-tools/src/main/java/org/jlab/clas/swimtools/MagFieldsEngine.java b/common-tools/swim-tools/src/main/java/org/jlab/clas/swimtools/MagFieldsEngine.java index ceab50389a..24a2a9b585 100644 --- a/common-tools/swim-tools/src/main/java/org/jlab/clas/swimtools/MagFieldsEngine.java +++ b/common-tools/swim-tools/src/main/java/org/jlab/clas/swimtools/MagFieldsEngine.java @@ -162,7 +162,7 @@ private void loadTables() { } @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { DataBank bank = event.getBank("RUN::config"); // Load the constants // ------------------- @@ -195,4 +195,6 @@ public boolean init() { return true; } + @Override + public void detectorChanged(int runNumber) {} } diff --git a/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java b/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java index ed27d104e9..17d5ef73ae 100644 --- a/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java +++ b/reconstruction/alert/src/main/java/org/jlab/rec/service/AHDCEngine.java @@ -99,9 +99,11 @@ public NDList processInput(TranslatorContext translatorContext, float[] floats) return true; } + @Override + public void detectorChanged(int runNumber) {} @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { int runNo = 10; int eventNo = 777; @@ -277,7 +279,7 @@ public static void main(String[] args) { // System.out.println("*********** NEXT EVENT ************"); // event.show(); - en.processDataEvent(event); + en.processDataEventUser(event); writer.writeEvent(event); } diff --git a/reconstruction/band/src/main/java/org/jlab/service/band/BANDEngine.java b/reconstruction/band/src/main/java/org/jlab/service/band/BANDEngine.java index 636d4a8dcb..b1b3e27d9b 100644 --- a/reconstruction/band/src/main/java/org/jlab/service/band/BANDEngine.java +++ b/reconstruction/band/src/main/java/org/jlab/service/band/BANDEngine.java @@ -1,11 +1,7 @@ package org.jlab.service.band; - import java.util.ArrayList; import java.util.Arrays; - -import javax.naming.event.NamingEvent; - import org.jlab.clas.reco.ReconstructionEngine; import org.jlab.io.base.DataBank; import org.jlab.io.base.DataEvent; @@ -26,16 +22,14 @@ public class BANDEngine extends ReconstructionEngine { - public BANDEngine() { super("BAND", "hauensteinsegarra", "1.0"); } int Run = -1; - @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { //System.out.println("**** NEW EVENT ****"); // update calibration constants based on run number if changed setRunConditionsParameters(event); @@ -61,9 +55,9 @@ public boolean processDataEvent(DataEvent event) { } @Override - public boolean init() { + public boolean init() { - String[] bandTables = new String[]{ + String[] bandTables = new String[]{ "/calibration/band/time_jitter", "/calibration/band/lr_offsets", "/calibration/band/effective_velocity", @@ -79,14 +73,15 @@ public boolean init() { "/calibration/band/energy_conversion" //"/calibration/band/time_walk_corr_left", //"/calibration/band/time_walk_corr_right", - }; + }; - requireConstants(Arrays.asList(bandTables)); - - this.registerOutputBank("BAND::hits","BAND::rawhits","BAND::laser"); - - return true; - } + requireConstants(Arrays.asList(bandTables)); + this.registerOutputBank("BAND::hits","BAND::rawhits","BAND::laser"); + return true; + } + + @Override + public void detectorChanged(int runNumber) {} public void setRunConditionsParameters(DataEvent event) { if(event.hasBank("RUN::config")==false) { @@ -132,7 +127,7 @@ public static void main (String arg[]) { // event.getBank("band::adc").show(); // event.getBank("band::tdc").show(); //} - en.processDataEvent(event); + en.processDataEventUser(event); writer.writeEvent(event); //event.getBank("band::hits").show(); nevent++; @@ -142,5 +137,4 @@ public static void main (String arg[]) { } - } diff --git a/reconstruction/bg/src/main/java/org/jlab/service/bg/BackgroundEngine.java b/reconstruction/bg/src/main/java/org/jlab/service/bg/BackgroundEngine.java index 1cec83e1e0..0bb00115cb 100644 --- a/reconstruction/bg/src/main/java/org/jlab/service/bg/BackgroundEngine.java +++ b/reconstruction/bg/src/main/java/org/jlab/service/bg/BackgroundEngine.java @@ -40,6 +40,9 @@ public boolean init() { return true; } + @Override + public void detectorChanged(int run){} + public boolean init(String... filenames) { String detectors = getEngineConfigString(CONF_DETECTORS,"DC,FTOF"); String orders = getEngineConfigString(CONF_ORDERS,"NOMINAL"); @@ -52,7 +55,7 @@ public boolean init(String... filenames) { } @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { return bgmerger.mergeEvents(event); } diff --git a/reconstruction/cnd/src/main/java/org/jlab/service/cnd/CNDCalibrationEngine.java b/reconstruction/cnd/src/main/java/org/jlab/service/cnd/CNDCalibrationEngine.java index 2670f6f1a9..902e1f0565 100644 --- a/reconstruction/cnd/src/main/java/org/jlab/service/cnd/CNDCalibrationEngine.java +++ b/reconstruction/cnd/src/main/java/org/jlab/service/cnd/CNDCalibrationEngine.java @@ -1,7 +1,8 @@ package org.jlab.service.cnd; -import java.io.IOException; +import java.util.Arrays; import java.util.ArrayList; +import java.util.concurrent.atomic.AtomicInteger; import org.jlab.clas.reco.ReconstructionEngine; import org.jlab.io.base.DataBank; @@ -15,17 +16,8 @@ import org.jlab.rec.cnd.hit.CvtGetHTrack; import org.jlab.rec.cnd.hit.HalfHit; import org.jlab.rec.cnd.hit.CndHitFinder; - -import java.lang.String; -import java.util.Arrays; -import java.util.List; -import java.util.Optional; -import java.util.concurrent.atomic.AtomicInteger; -import org.jlab.clas.physics.LorentzVector; - import org.jlab.rec.cnd.cluster.CNDCluster; import org.jlab.rec.cnd.cluster.CNDClusterFinder; -import org.jlab.utils.groups.IndexedTable; /** * Service to return reconstructed CND Hits - the output is in Hipo format @@ -33,18 +25,14 @@ * * */ - public class CNDCalibrationEngine extends ReconstructionEngine { - public CNDCalibrationEngine() { super("CND", "chatagnon & WANG", "1.0"); } - //int Run = -1; RecoBankWriter rbc; - //test static int enb =0; static int ecnd=0; static int hcvt=0; @@ -53,41 +41,33 @@ public CNDCalibrationEngine() { static int ctof=0; static int ctoftot=0; - private AtomicInteger Run = new AtomicInteger(0); - private int newRun = 0; + private AtomicInteger Run = new AtomicInteger(0); + private int newRun = 0; @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { - - if (!event.hasBank("RUN::config")) { + if (!event.hasBank("RUN::config")) { return true; - } - - DataBank bank = event.getBank("RUN::config"); - - // Load the constants - //------------------- - int newRun = bank.getInt("run", 0); - if (newRun == 0) - return true; - - if (Run.get() == 0 || (Run.get() != 0 && Run.get() != newRun)) { - Run.set(newRun); - } - - CalibrationConstantsLoader constantsLoader = new CalibrationConstantsLoader(newRun, this.getConstantsManager()); - //event.show(); - //System.out.println("in data process "); + } + + DataBank bank = event.getBank("RUN::config"); + + // Load the constants + int newRun = bank.getInt("run", 0); + if (newRun == 0) + return true; + if (Run.get() == 0 || (Run.get() != 0 && Run.get() != newRun)) { + Run.set(newRun); + } + CalibrationConstantsLoader constantsLoader = new CalibrationConstantsLoader(newRun, this.getConstantsManager()); - ArrayList halfhits = new ArrayList(); + ArrayList halfhits = new ArrayList(); ArrayList hits = new ArrayList(); halfhits = HitReader.getCndHalfHits(event, constantsLoader); //1) exit if halfhit list is empty if(halfhits.size()==0 ){ - // System.out.println("fin de process (0) : "); - // event.show(); return true; } @@ -103,89 +83,32 @@ public boolean processDataEvent(DataEvent event) { double length =hitFinder.findLength(hit, cvttry.getHelices(),0,constantsLoader); if (length!=0){ hit.set_tLength(length); // the path length is non zero only when there is a match with cvt track - //if(flag==0){match++;} - //flag=1; } - } - // GetVertex getVertex = new GetVertex(); - // Point3D vertex = getVertex.getVertex(event); - // for (CndHit hit : hits){ // check findlengthneutral - // hitFinder.findLengthNeutral( vertex, hit); - // } - // - - // if(hits.size()!=0){ - // - // DataBank outbank = RecoBankWriter.fillCndHitBanks(event, hits); - //// System.out.println("event before process : "); - //// event.show(); - // event.appendBanks(outbank); - // //System.out.println("event after process : "); - // //event.show(); - // ecnd++; - // if(event.hasBank("CVT::Tracks")){ - // posmatch++; - // //event.getBank("MC::Particle").show(); - // //outbank.show(); - // } - // - // } - //// System.out.println("fin de process : "); - //// event.show(); - // return true; - // } - - - - //// clustering of the CND hits CNDClusterFinder cndclusterFinder = new CNDClusterFinder(); ArrayList cndclusters = cndclusterFinder.findClusters(hits,constantsLoader); - - - - - if(hits.size()!=0){ - // DataBank outbank = RecoBankWriter.fillCndHitBanks(event, hits); - // event.appendBanks(outbank); - // event.show(); - // System.out.println("in process event "); + if(hits.size()!=0){ rbc.appendCNDBanks(event,hits,cndclusters); - // ecnd++; - // if(event.hasBank("CVT::Tracks")){ - // posmatch++; - //event.getBank("MC::Particle").show(); - //outbank.show(); - // } - // event.show(); - } - - - - return true; - } @Override public boolean init() { - rbc = new RecoBankWriter(); - - requireConstants(Arrays.asList(CalibrationConstantsLoader.getCndTables())); - this.getConstantsManager().setVariation("default"); - - this.registerOutputBank("CND::hits","CND::clusters"); - - return true; + rbc = new RecoBankWriter(); + requireConstants(Arrays.asList(CalibrationConstantsLoader.getCndTables())); + this.getConstantsManager().setVariation("default"); + this.registerOutputBank("CND::hits","CND::clusters"); + return true; } + + @Override + public void detectorChanged(int runNumber) {} - - public static void main (String arg[]) { CNDCalibrationEngine en = new CNDCalibrationEngine(); @@ -208,7 +131,6 @@ public static void main (String arg[]) { HipoDataSync writer = new HipoDataSync(); writer.open(outputFile); - while(reader.hasEvent()) { enb++; DataEvent event = (DataEvent) reader.getNextEvent(); @@ -220,7 +142,7 @@ public static void main (String arg[]) { //event.getBank("MC::Particle").show(); //if(event.hasBank("CVT::Tracks")){event.getBank("CVT::Tracks").show();}; - en.processDataEvent(event); + en.processDataEventUser(event); // System.out.println("event après process "); // event.show(); @@ -265,6 +187,5 @@ public static void main (String arg[]) { } } - } diff --git a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/services/CVTEngine.java b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/services/CVTEngine.java index e278b0c9c7..c466709256 100644 --- a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/services/CVTEngine.java +++ b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/services/CVTEngine.java @@ -28,7 +28,6 @@ */ public class CVTEngine extends ReconstructionEngine { - /** * @param docacutsum the docacutsum to set */ @@ -134,7 +133,14 @@ public boolean init() { this.initConstantsTables(); this.registerBanks(); this.printConfiguration(); - return true; + return true; + } + + @Override + public void detectorChanged(int runNumber) { + IndexedTable svtLorentz = this.getConstantsManager().getConstants(runNumber, "/calibration/svt/lorentz_angle"); + IndexedTable bmtVoltage = this.getConstantsManager().getConstants(runNumber, "/calibration/mvt/bmt_voltage"); + Geometry.initialize(this.getConstantsManager().getVariation(), runNumber, svtLorentz, bmtVoltage); } public final void setOutputBankPrefix(String prefix) { @@ -275,23 +281,19 @@ public void setBmtzmaxclussize(int bmtzmaxclussize) { } @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { Swim swimmer = new Swim(); int run = this.getRun(event); IndexedTable svtStatus = this.getConstantsManager().getConstants(run, "/calibration/svt/status"); - IndexedTable svtLorentz = this.getConstantsManager().getConstants(run, "/calibration/svt/lorentz_angle"); IndexedTable bmtStatus = this.getConstantsManager().getConstants(run, "/calibration/mvt/bmt_status"); IndexedTable bmtTime = this.getConstantsManager().getConstants(run, "/calibration/mvt/bmt_time"); - IndexedTable bmtVoltage = this.getConstantsManager().getConstants(run, "/calibration/mvt/bmt_voltage"); IndexedTable bmtStripVoltage = this.getConstantsManager().getConstants(run, "/calibration/mvt/bmt_strip_voltage"); IndexedTable bmtStripThreshold = this.getConstantsManager().getConstants(run, "/calibration/mvt/bmt_strip_voltage_thresholds"); IndexedTable beamPos = this.getConstantsManager().getConstants(run, "/geometry/beam/position"); - Geometry.getInstance().initialize(this.getConstantsManager().getVariation(), run, svtLorentz, bmtVoltage); - CVTReconstruction reco = new CVTReconstruction(swimmer); List> hits = reco.readHits(event, svtStatus, bmtStatus, bmtTime, @@ -575,7 +577,6 @@ public String getCovMat() { return cvtCovMatBank; } - public void printConfiguration() { System.out.println("["+this.getName()+"] run with cosmics setting set to "+Constants.getInstance().isCosmics); @@ -608,7 +609,4 @@ public void printConfiguration() { } - - - } diff --git a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/services/CVTSecondPassEngine.java b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/services/CVTSecondPassEngine.java index 645974c313..dd9d219e76 100644 --- a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/services/CVTSecondPassEngine.java +++ b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/services/CVTSecondPassEngine.java @@ -30,7 +30,7 @@ public CVTSecondPassEngine() { @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { int run = this.getRun(event); if(Constants.getInstance().seedingDebugMode) diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/Constants.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/Constants.java index d020322477..a80f39411c 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/Constants.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/Constants.java @@ -49,6 +49,8 @@ public static Constants getInstance() { public static boolean DEBUG = false; + public static double[][] SHIFTS = null; + // CONSTATNS for TRANSFORMATION public static final double SIN25 = Math.sin(Math.toRadians(25.)); public static final double COS25 = Math.cos(Math.toRadians(25.)); @@ -366,7 +368,6 @@ public boolean isSWAPDCRBBITS() { public void setSWAPDCRBBITS(boolean SWAPDCRBBITS) { this.SWAPDCRBBITS = SWAPDCRBBITS; } - public synchronized void initialize(String engine, String variation, @@ -400,9 +401,6 @@ public synchronized void initialize(String engine, SECTORSELECT = selectedSector; LoadConstants(); - - LoadGeometry(GEOVARIATION, shifts); - ConstantsLoaded = true; printConfig(engine); } @@ -414,9 +412,6 @@ public synchronized void initialize(String engine) { } else { LoadConstants(); - - LoadGeometry(GEOVARIATION, null); - ConstantsLoaded = true; printConfig(engine); } @@ -531,24 +526,24 @@ private void addReverseTT(int run, IndexedTable tt) { reverseTTs.put(run, reverse); } - private synchronized void LoadGeometry(String geoVariation, double[][] shifts) { + public synchronized void LoadGeometry(int runNumber, String geoVariation, double[][] shifts) { // Load the geometry - ConstantProvider provider = GeometryFactory.getConstants(DetectorType.DC, 11, geoVariation); + ConstantProvider provider = GeometryFactory.getConstants(DetectorType.DC, runNumber, geoVariation); dcDetector = new DCGeant4Factory(provider, MINISTAGGERSTATUS, FEEDTHROUGHSSTATUS, ENDPLATESBOWING, shifts); for(int l=0; l<6; l++) { wpdist[l] = provider.getDouble("/geometry/dc/superlayer/wpdist", l); } // Load target - ConstantProvider providerTG = GeometryFactory.getConstants(DetectorType.TARGET, 11, geoVariation); + ConstantProvider providerTG = GeometryFactory.getConstants(DetectorType.TARGET, runNumber, geoVariation); double targetPosition = providerTG.getDouble("/geometry/shifts/target/z",0); double targetLength = providerTG.getDouble("/geometry/materials/target/length",0); // Load other geometries - ConstantProvider providerFTOF = GeometryFactory.getConstants(DetectorType.FTOF, 11, geoVariation); + ConstantProvider providerFTOF = GeometryFactory.getConstants(DetectorType.FTOF, runNumber, geoVariation); ftofDetector = new FTOFGeant4Factory(providerFTOF); - ecalDetector = GeometryFactory.getDetector(DetectorType.ECAL, 11, geoVariation); - fmtDetector = GeometryFactory.getDetector(DetectorType.FMT, 11, geoVariation); - ConstantsManager managerRICH = new ConstantsManager(geoVariation);; - richDetector = new RICHGeoFactory(0, managerRICH, 11, false); + ecalDetector = GeometryFactory.getDetector(DetectorType.ECAL, runNumber, geoVariation); + fmtDetector = GeometryFactory.getDetector(DetectorType.FMT, runNumber, geoVariation); + ConstantsManager managerRICH = new ConstantsManager(geoVariation); + richDetector = new RICHGeoFactory(0, managerRICH, runNumber, false); // create the surfaces trajSurfaces = new TrajectorySurfaces(); trajSurfaces.loadSurface(targetPosition, targetLength, dcDetector, ftofDetector, ecalDetector, fmtDetector, richDetector); diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCEngine.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCEngine.java index cdc44a3724..a0780539a7 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCEngine.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCEngine.java @@ -41,7 +41,6 @@ public class DCEngine extends ReconstructionEngine { public static final Logger LOGGER = Logger.getLogger(ReconstructionEngine.class.getName()); - public DCEngine(String name) { super(name,"ziegler","5.0"); } @@ -170,7 +169,7 @@ public void LoadTables() { @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { return true; } @@ -197,6 +196,11 @@ public boolean init() { return true; } + @Override + public void detectorChanged(int runNumber) { + Constants.getInstance().LoadGeometry(runNumber, geoVariation, shifts); + } + private void initBanks() { if(inBankPrefix==null && outBankPrefix!=null) this.getBanks().init(outBankPrefix); diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBClustering.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBClustering.java index c527befa37..5ebf7c2ecc 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBClustering.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBClustering.java @@ -36,7 +36,7 @@ public void setDropBanks() { @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { int run = this.getRun(event); if(run==0) return true; diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBEngine.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBEngine.java index 868608395b..9034c47513 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBEngine.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBEngine.java @@ -55,7 +55,7 @@ public void setDropBanks() { } @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { int run = this.getRun(event); if(run==0) return true; diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterAI.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterAI.java index 0b63a3310b..14e6ae4e01 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterAI.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterAI.java @@ -44,7 +44,7 @@ public void setDropBanks() { } @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { int run = this.getRun(event); if(run==0) { diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterConv.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterConv.java index 2078cedb9b..a24f1681e2 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterConv.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCHBPostClusterConv.java @@ -46,7 +46,7 @@ public void setDropBanks() { } @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { int run = this.getRun(event); if(run==0) return true; diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCTBEngine.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCTBEngine.java index 2bd9d1e9f9..0d0e72426d 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCTBEngine.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCTBEngine.java @@ -70,7 +70,8 @@ public void setDropBanks() { } @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { + int run = this.getRun(event); if(run==0) return true; diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/LayerEfficiencyAnalyzer.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/LayerEfficiencyAnalyzer.java index 1a2d7002e1..7f18e1006d 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/LayerEfficiencyAnalyzer.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/LayerEfficiencyAnalyzer.java @@ -214,7 +214,7 @@ public boolean equals(Object obj) { private final ArrayList> LayerEffsTrkD = new ArrayList>(); @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { int run = this.getRun(event); if(run==0) return true; @@ -449,7 +449,7 @@ public static void main(String[] args) { while (reader.hasEvent()) { counter++; DataEvent event = reader.getNextEvent(); - tm.processDataEvent(event); + tm.processDataEventUser(event); tm.ProcessLayerEffs(event); //event.show(); if(counter%1000==0) { diff --git a/reconstruction/eb/src/main/java/org/jlab/service/eb/EBEngine.java b/reconstruction/eb/src/main/java/org/jlab/service/eb/EBEngine.java index 4899368aef..aaf3e1582e 100644 --- a/reconstruction/eb/src/main/java/org/jlab/service/eb/EBEngine.java +++ b/reconstruction/eb/src/main/java/org/jlab/service/eb/EBEngine.java @@ -1,6 +1,5 @@ package org.jlab.service.eb; -import java.util.Collections; import java.util.List; import java.util.logging.Logger; @@ -66,7 +65,7 @@ public void setUsePOCA(boolean val) { } @Override - public boolean processDataEvent(DataEvent de) { + public boolean processDataEventUser(DataEvent de) { throw new RuntimeException("EBEngine cannot be used directly. Use EBTBEngine/EBHBEngine instead."); } @@ -91,7 +90,7 @@ public void setOutputBankPrefix(String prefix) { } } - public boolean processDataEvent(DataEvent de,EBScalers ebs) { + public boolean processDataEventUser(DataEvent de,EBScalers ebs) { // check run number, get constants from CCDB: int run=-1; @@ -353,5 +352,8 @@ public boolean init() { return true; } + + @Override + public void detectorChanged(int runNumber) {} } diff --git a/reconstruction/eb/src/main/java/org/jlab/service/eb/EBHBAIEngine.java b/reconstruction/eb/src/main/java/org/jlab/service/eb/EBHBAIEngine.java index 2533e6d275..62cd991cec 100644 --- a/reconstruction/eb/src/main/java/org/jlab/service/eb/EBHBAIEngine.java +++ b/reconstruction/eb/src/main/java/org/jlab/service/eb/EBHBAIEngine.java @@ -18,8 +18,8 @@ public EBHBAIEngine(){ } @Override - public boolean processDataEvent(DataEvent de) { - return super.processDataEvent(de,ebScalers); + public boolean processDataEventUser(DataEvent de) { + return super.processDataEventUser(de,ebScalers); } @Override diff --git a/reconstruction/eb/src/main/java/org/jlab/service/eb/EBHBEngine.java b/reconstruction/eb/src/main/java/org/jlab/service/eb/EBHBEngine.java index c255b63bfa..d570d39b06 100644 --- a/reconstruction/eb/src/main/java/org/jlab/service/eb/EBHBEngine.java +++ b/reconstruction/eb/src/main/java/org/jlab/service/eb/EBHBEngine.java @@ -18,8 +18,8 @@ public EBHBEngine(){ } @Override - public boolean processDataEvent(DataEvent de) { - return super.processDataEvent(de,ebScalers); + public boolean processDataEventUser(DataEvent de) { + return super.processDataEventUser(de,ebScalers); } @Override diff --git a/reconstruction/eb/src/main/java/org/jlab/service/eb/EBTBAIEngine.java b/reconstruction/eb/src/main/java/org/jlab/service/eb/EBTBAIEngine.java index 033bac510e..6a41226838 100644 --- a/reconstruction/eb/src/main/java/org/jlab/service/eb/EBTBAIEngine.java +++ b/reconstruction/eb/src/main/java/org/jlab/service/eb/EBTBAIEngine.java @@ -18,8 +18,8 @@ public EBTBAIEngine(){ } @Override - public boolean processDataEvent(DataEvent de) { - return super.processDataEvent(de,ebScalers); + public boolean processDataEventUser(DataEvent de) { + return super.processDataEventUser(de,ebScalers); } @Override diff --git a/reconstruction/eb/src/main/java/org/jlab/service/eb/EBTBEngine.java b/reconstruction/eb/src/main/java/org/jlab/service/eb/EBTBEngine.java index 550d72b4ea..d009f13aff 100644 --- a/reconstruction/eb/src/main/java/org/jlab/service/eb/EBTBEngine.java +++ b/reconstruction/eb/src/main/java/org/jlab/service/eb/EBTBEngine.java @@ -24,8 +24,8 @@ public EBTBEngine(){ } @Override - public boolean processDataEvent(DataEvent de) { - final boolean ret = super.processDataEvent(de,ebScalers); + public boolean processDataEventUser(DataEvent de) { + final boolean ret = super.processDataEventUser(de,ebScalers); this.linkTracks(de); return ret; } diff --git a/reconstruction/eb/src/main/java/org/jlab/service/eb/VersionEngine.java b/reconstruction/eb/src/main/java/org/jlab/service/eb/VersionEngine.java index 12016d5951..29ed6c8673 100644 --- a/reconstruction/eb/src/main/java/org/jlab/service/eb/VersionEngine.java +++ b/reconstruction/eb/src/main/java/org/jlab/service/eb/VersionEngine.java @@ -25,7 +25,7 @@ public static void show(DataBank bank) { } @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { if (!done) { JsonObject versions = Versions.getVersionsJson(); JsonObject config = new JsonObject(); @@ -44,4 +44,7 @@ public boolean init() { return true; } + @Override + public void detectorChanged(int runNumber) {} + } diff --git a/reconstruction/ec/src/main/java/org/jlab/display/ec/ECRECMonitor.java b/reconstruction/ec/src/main/java/org/jlab/display/ec/ECRECMonitor.java index 7d8d8fe68d..12cc5a4710 100644 --- a/reconstruction/ec/src/main/java/org/jlab/display/ec/ECRECMonitor.java +++ b/reconstruction/ec/src/main/java/org/jlab/display/ec/ECRECMonitor.java @@ -22,9 +22,12 @@ public class ECRECMonitor extends ReconstructionEngine { public ECRECMonitor(){ super("ECMon","gavalian","1.0"); } - + + @Override + public void detectorChanged(int runNumber) {} + @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { if(event.hasBank("REC::Particle")==true){ DataBank bank = event.getBank("REC::Particle"); int index1 = this.index(bank, 22, 0); @@ -62,6 +65,7 @@ private int index(DataBank b, int pid, int skip){ } return -1; } + @Override public boolean init() { canvas = new TGCanvas("c","EC Engine Monitoring",500,500); diff --git a/reconstruction/ec/src/main/java/org/jlab/service/ec/ECCommon.java b/reconstruction/ec/src/main/java/org/jlab/service/ec/ECCommon.java index eb85aa18dd..f8dd067894 100644 --- a/reconstruction/ec/src/main/java/org/jlab/service/ec/ECCommon.java +++ b/reconstruction/ec/src/main/java/org/jlab/service/ec/ECCommon.java @@ -42,7 +42,6 @@ public class ECCommon { public static int stripSortMethod = 0; public static int[] splitThresh = new int[3]; - public static Boolean isMC = false; public static Boolean debug = false; public static Boolean debugSplit = false; public static Boolean isSingleThreaded = false; @@ -149,11 +148,7 @@ public static int getRunNumber(DataEvent de) { public static List initEC(DataEvent event, ConstantsManager manager){ int run = getRunNumber(event); - - isMC = run<=100; - - if(isMC) {usePass2Timing = false; useDTCorrections = false; useFTpcal = false;} - + manager.setVariation(variation); IndexedTable atten1 = manager.getConstants(run, "/calibration/ec/attenuation"); diff --git a/reconstruction/ec/src/main/java/org/jlab/service/ec/ECEngine.java b/reconstruction/ec/src/main/java/org/jlab/service/ec/ECEngine.java index 0657f1db26..17759ac495 100644 --- a/reconstruction/ec/src/main/java/org/jlab/service/ec/ECEngine.java +++ b/reconstruction/ec/src/main/java/org/jlab/service/ec/ECEngine.java @@ -30,7 +30,7 @@ public ECEngine(){ } @Override - public boolean processDataEvent(DataEvent de) { + public boolean processDataEventUser(DataEvent de) { List ecStrips = ECCommon.initEC(de, this.getConstantsManager()); // thresholds, ADC/TDC match List ecPeaks = ECCommon.processPeaks(ECCommon.createPeaks(ecStrips)); // thresholds, split peaks -> update peak-lines @@ -244,7 +244,6 @@ public void setSingleEvent(boolean val) { } public void setIsMC(boolean val) { - ECCommon.isMC = val; } public void setConfig(String val) { @@ -423,12 +422,8 @@ public boolean init() { requireConstants(Arrays.asList(ecTables)); - + getConstantsManager().setVariation(ECCommon.variation); - String variationName = Optional.ofNullable(this.getEngineConfigString("variation")).orElse("default"); - if(!(ECCommon.geomVariation.equals("default"))) variationName = ECCommon.geomVariation; - LOGGER.log(Level.INFO,"GEOMETRY VARIATION IS "+variationName); - ECCommon.ecDetector = GeometryFactory.getDetector(DetectorType.ECAL,11,variationName); setConfig("test"); @@ -466,5 +461,13 @@ public boolean init() { return true; } + + @Override + public void detectorChanged(int runNumber) { + String variationName = Optional.ofNullable(this.getEngineConfigString("variation")).orElse("default"); + if(!(ECCommon.geomVariation.equals("default"))) variationName = ECCommon.geomVariation; + LOGGER.log(Level.INFO,"GEOMETRY VARIATION IS "+variationName); + ECCommon.ecDetector = GeometryFactory.getDetector(DetectorType.ECAL,11,variationName); + } } diff --git a/reconstruction/ec/src/main/java/org/jlab/service/swim/SwimEngine.java.old b/reconstruction/ec/src/main/java/org/jlab/service/swim/SwimEngine.java.old index 3fb2364af2..961a050968 100644 --- a/reconstruction/ec/src/main/java/org/jlab/service/swim/SwimEngine.java.old +++ b/reconstruction/ec/src/main/java/org/jlab/service/swim/SwimEngine.java.old @@ -48,7 +48,7 @@ public class SwimEngine extends ReconstructionEngine { } @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { //this.test_caching_index(); //this.test_caching(); this.swimParticles(event); diff --git a/reconstruction/fmt/src/main/java/org/jlab/service/fmt/FMTEngine.java b/reconstruction/fmt/src/main/java/org/jlab/service/fmt/FMTEngine.java index de6e67e4d5..053cdd47c9 100644 --- a/reconstruction/fmt/src/main/java/org/jlab/service/fmt/FMTEngine.java +++ b/reconstruction/fmt/src/main/java/org/jlab/service/fmt/FMTEngine.java @@ -26,6 +26,7 @@ */ public class FMTEngine extends ReconstructionEngine { + String variation = null; boolean debug = false; public FMTEngine() { @@ -36,7 +37,7 @@ public FMTEngine() { public boolean init() { // Get the constants for the correct variation - String variation = this.getEngineConfigString("variation"); + variation = this.getEngineConfigString("variation"); if (variation!=null) { System.out.println("["+this.getName()+"] " + "run with FMT geometry variation based on yaml = " + variation); @@ -45,7 +46,6 @@ public boolean init() { variation = "default"; System.out.println("["+this.getName()+"] run with FMT default geometry"); } - String[] tables = new String[]{ "/geometry/beam/position", @@ -55,10 +55,6 @@ public boolean init() { requireConstants(Arrays.asList(tables)); this.getConstantsManager().setVariation(variation); - // Load the geometry - int run = 10; - Constants.setDetector(GeometryFactory.getDetector(DetectorType.FMT,run, variation)); - // Register output banks super.registerOutputBank("FMT::Hits"); super.registerOutputBank("FMT::Clusters"); @@ -70,7 +66,13 @@ public boolean init() { } @Override - public boolean processDataEvent(DataEvent event) { + public void detectorChanged(int runNumber) { + Constants.setDetector(GeometryFactory.getDetector(DetectorType.FMT,runNumber, + getConstantsManager().getVariation())); + } + + @Override + public boolean processDataEventUser(DataEvent event) { // Initial setup. if(debug) System.out.println("\nNew event"); @@ -232,5 +234,4 @@ public boolean processDataEvent(DataEvent event) { return true; } - } diff --git a/reconstruction/ft/src/main/java/org/jlab/rec/ft/FTEBEngine.java b/reconstruction/ft/src/main/java/org/jlab/rec/ft/FTEBEngine.java index f9acd60a40..cc945eba13 100644 --- a/reconstruction/ft/src/main/java/org/jlab/rec/ft/FTEBEngine.java +++ b/reconstruction/ft/src/main/java/org/jlab/rec/ft/FTEBEngine.java @@ -1,6 +1,5 @@ package org.jlab.rec.ft; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -54,14 +53,15 @@ public boolean init() { }; requireConstants(Arrays.asList(tables)); this.getConstantsManager().setVariation("default"); - this.registerOutputBank("FT::particles"); - return true; } @Override - public boolean processDataEvent(DataEvent event) { + public void detectorChanged(int runNumber) {} + + @Override + public boolean processDataEventUser(DataEvent event) { int run = this.setRunConditionsParameters(event); if (run>=0) { @@ -376,10 +376,10 @@ public static void main(String arg[]){ // always print to keep track of running if(debugMode>-1) System.out.println("////////////// event read " + bankEvt + " - sequential number " + nev); //if(nev > 10239) System.exit(0); if(nev != 10239) continue; // stop at a given evt number - cal.processDataEvent(event); - hodo.processDataEvent(event); - trk.processDataEventAndGetClusters(event); - en.processDataEvent(event); + cal.processDataEventUser(event); + hodo.processDataEventUser(event); + trk.processDataEventAndGetClusters(event); + en.processDataEventUser(event); if(!event.hasBank("FTCAL::hits")) continue; if (event instanceof EvioDataEvent) { GenericKinematicFitter fitter = new GenericKinematicFitter(11); diff --git a/reconstruction/ft/src/main/java/org/jlab/rec/ft/cal/FTCALEngine.java b/reconstruction/ft/src/main/java/org/jlab/rec/ft/cal/FTCALEngine.java index cf41a2ef5b..21fcc0e3d1 100644 --- a/reconstruction/ft/src/main/java/org/jlab/rec/ft/cal/FTCALEngine.java +++ b/reconstruction/ft/src/main/java/org/jlab/rec/ft/cal/FTCALEngine.java @@ -19,7 +19,6 @@ import org.jlab.io.evio.EvioDataEvent; import org.jlab.io.hipo.HipoDataSource; - public class FTCALEngine extends ReconstructionEngine { public FTCALEngine() { @@ -33,25 +32,26 @@ public boolean init() { reco = new FTCALReconstruction(); reco.debugMode=0; - String[] tables = new String[]{ - "/calibration/ft/ftcal/charge_to_energy", - "/calibration/ft/ftcal/time_offsets", - "/calibration/ft/ftcal/time_walk", - "/calibration/ft/ftcal/status", - "/calibration/ft/ftcal/thresholds", - "/calibration/ft/ftcal/cluster", - "/calibration/ft/ftcal/energycorr" - }; - requireConstants(Arrays.asList(tables)); - this.getConstantsManager().setVariation("default"); - - this.registerOutputBank("FTCAL::hits","FTCAL::clusters"); - - return true; + String[] tables = new String[]{ + "/calibration/ft/ftcal/charge_to_energy", + "/calibration/ft/ftcal/time_offsets", + "/calibration/ft/ftcal/time_walk", + "/calibration/ft/ftcal/status", + "/calibration/ft/ftcal/thresholds", + "/calibration/ft/ftcal/cluster", + "/calibration/ft/ftcal/energycorr" + }; + requireConstants(Arrays.asList(tables)); + this.getConstantsManager().setVariation("default"); + this.registerOutputBank("FTCAL::hits","FTCAL::clusters"); + return true; } + @Override + public void detectorChanged(int runNumber) {} + @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { List allHits = new ArrayList(); List selectedHits = new ArrayList(); List clusters = new ArrayList(); @@ -123,7 +123,7 @@ public static void main (String arg[]) { while(reader.hasEvent()){ // for(int nev=0; nev<2; nev++){ DataEvent event = (DataEvent) reader.getNextEvent(); - cal.processDataEvent(event); + cal.processDataEventUser(event); if(event instanceof EvioDataEvent) { GenericKinematicFitter fitter = new GenericKinematicFitter(11); @@ -179,5 +179,4 @@ public static void main (String arg[]) { frame.setVisible(true); } - } diff --git a/reconstruction/ft/src/main/java/org/jlab/rec/ft/hodo/FTHODOEngine.java b/reconstruction/ft/src/main/java/org/jlab/rec/ft/hodo/FTHODOEngine.java index 26166c562e..2b51115e5d 100644 --- a/reconstruction/ft/src/main/java/org/jlab/rec/ft/hodo/FTHODOEngine.java +++ b/reconstruction/ft/src/main/java/org/jlab/rec/ft/hodo/FTHODOEngine.java @@ -1,6 +1,5 @@ package org.jlab.rec.ft.hodo; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.swing.JFrame; @@ -30,22 +29,23 @@ public boolean init() { reco = new FTHODOReconstruction(); reco.debugMode=0; - String[] tables = new String[]{ - "/calibration/ft/fthodo/charge_to_energy", - "/calibration/ft/fthodo/time_offsets", - "/calibration/ft/fthodo/status", - "/geometry/ft/fthodo" - }; - requireConstants(Arrays.asList(tables)); - this.getConstantsManager().setVariation("default"); - - this.registerOutputBank("FTHODO::hits","FTHODO::clusters"); - - return true; + String[] tables = new String[]{ + "/calibration/ft/fthodo/charge_to_energy", + "/calibration/ft/fthodo/time_offsets", + "/calibration/ft/fthodo/status", + "/geometry/ft/fthodo" + }; + requireConstants(Arrays.asList(tables)); + this.getConstantsManager().setVariation("default"); + this.registerOutputBank("FTHODO::hits","FTHODO::clusters"); + return true; } + @Override + public void detectorChanged(int runNumber) {} + @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { // update calibration constants based on run number if changed int run = setRunConditionsParameters(event); @@ -104,7 +104,7 @@ public static void main (String arg[]) { while(reader.hasEvent()){ DataEvent event = (DataEvent) reader.getNextEvent(); - cal.processDataEvent(event); + cal.processDataEventUser(event); DetectorEvent detectorEvent = DetectorData.readDetectorEvent(event); PhysicsEvent gen = detectorEvent.getGeneratedEvent(); diff --git a/reconstruction/ft/src/main/java/org/jlab/rec/ft/trk/FTTRKEngine.java b/reconstruction/ft/src/main/java/org/jlab/rec/ft/trk/FTTRKEngine.java index c052f62283..249ec4442a 100644 --- a/reconstruction/ft/src/main/java/org/jlab/rec/ft/trk/FTTRKEngine.java +++ b/reconstruction/ft/src/main/java/org/jlab/rec/ft/trk/FTTRKEngine.java @@ -44,74 +44,64 @@ public boolean init() { }; requireConstants(Arrays.asList(tables)); this.getConstantsManager().setVariation("default"); - - // use 11 provisionally as run number to download the basic FTTK geometry constants - FTTRKConstantsLoader.Load(11, this.getConstantsManager().getVariation()); + reco = new FTTRKReconstruction(); - reco.debugMode=0; + reco.debugMode=0; if(this.getEngineConfigString("fall18TT")!=null) { FTTRKConstantsLoader.ADJUSTTT = Boolean.parseBoolean(this.getEngineConfigString("fall18TT")); } -/* - String[] tables = new String[]{ - "/calibration/ft/fthodo/charge_to_energy", - "/calibration/ft/fthodo/time_offsets", - "/calibration/ft/fthodo/status", - "/geometry/ft/fthodo", - "/geometry/ft/fttrk" - }; - requireConstants(Arrays.asList(tables)); - this.getConstantsManager().setVariation("default"); -*/ - return true; } + @Override + public void detectorChanged(int runNumber) { + FTTRKConstantsLoader.Load(runNumber, this.getConstantsManager().getVariation()); + } + @Override - public boolean processDataEvent(DataEvent event) { - // update calibration constants based on run number if changed - int run = setRunConditionsParameters(event); + public boolean processDataEventUser(DataEvent event) { + // update calibration constants based on run number if changed + int run = setRunConditionsParameters(event); + if(run>=0) { + // get hits fron banks + List allHits = reco.initFTTRK(event,this.getConstantsManager(), run); + // create clusters + List clusters = reco.findClusters(allHits); + // create crosses + List crosses = reco.findCrosses(clusters); + // update hit banks with associated clusters/crosses information + reco.updateAllHitsWithAssociatedIDs(allHits, clusters); + // write output banks + reco.writeBanks(event, allHits, clusters, crosses); + } + return true; + } + + public ArrayList processDataEventAndGetClusters(DataEvent event) { + List allHits = new ArrayList(); + ArrayList clusters = new ArrayList(); // era ArrayList + ArrayList crosses = new ArrayList(); - if(run>=0) { - // get hits fron banks - List allHits = reco.initFTTRK(event,this.getConstantsManager(), run); + // update calibration constants based on run number if changed + int run = setRunConditionsParameters(event); + + if(run>=0) { + // get hits from banks + allHits = reco.initFTTRK(event,this.getConstantsManager(), run); + if(allHits.size()>0){ // create clusters - List clusters = reco.findClusters(allHits); + clusters = reco.findClusters(allHits); // create crosses - List crosses = reco.findCrosses(clusters); + crosses = reco.findCrosses(clusters); // update hit banks with associated clusters/crosses information reco.updateAllHitsWithAssociatedIDs(allHits, clusters); // write output banks reco.writeBanks(event, allHits, clusters, crosses); } - return true; - } - - public ArrayList processDataEventAndGetClusters(DataEvent event) { - List allHits = new ArrayList(); - ArrayList clusters = new ArrayList(); // era ArrayList - ArrayList crosses = new ArrayList(); - - // update calibration constants based on run number if changed - int run = setRunConditionsParameters(event); - - if(run>=0) { - // get hits from banks - allHits = reco.initFTTRK(event,this.getConstantsManager(), run); - if(allHits.size()>0){ - // create clusters - clusters = reco.findClusters(allHits); - // create crosses - crosses = reco.findCrosses(clusters); - // update hit banks with associated clusters/crosses information - reco.updateAllHitsWithAssociatedIDs(allHits, clusters); - // write output banks - reco.writeBanks(event, allHits, clusters, crosses); - } - } - return clusters; + } + return clusters; } public int setRunConditionsParameters(DataEvent event) { @@ -119,25 +109,22 @@ public int setRunConditionsParameters(DataEvent event) { if(event.hasBank("RUN::config")==false) { System.out.println("RUN CONDITIONS NOT READ!"); } - DataBank bank = event.getBank("RUN::config"); - run = bank.getInt("run")[0]; - - return run; + run = bank.getInt("run")[0]; + return run; } - public static void main (String arg[]) { int debug = FTTRKReconstruction.debugMode; - FTTRKEngine trk = new FTTRKEngine(); - trk.init(); + FTTRKEngine trk = new FTTRKEngine(); + trk.init(); // insert input filename here String input = "/home/filippi/clas12/fttrkDev/clas12-offline-software-6.5.13-fttrkDev/filter_005418_newbanks.hipo"; System.out.println("input file " + input); - HipoDataSource reader = new HipoDataSource(); - reader.open(input); + HipoDataSource reader = new HipoDataSource(); + reader.open(input); - // initialize histos + // initialize histos H2F h1 = new H2F("h1", "Layer vs. Component", 768, 0., 769., 4, 0.5, 4.5); h1.setTitleX("Component"); h1.setTitleY("Layer"); @@ -177,7 +164,6 @@ public static void main (String arg[]) { int nc1 = 0, nc2 = 0, ncmatch = 0; int nev=0; while(reader.hasEvent()){ -// int nev1 = 0; int nev2 = 20000; for(nev=nev1; nev=1) System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~ processing event ~~~~~~~~~~~ " + nev); diff --git a/reconstruction/ft/src/test/java/org/jlab/service/ft/FTEBEngineTest.java b/reconstruction/ft/src/test/java/org/jlab/service/ft/FTEBEngineTest.java index 4156f882b5..d7eaacec96 100644 --- a/reconstruction/ft/src/test/java/org/jlab/service/ft/FTEBEngineTest.java +++ b/reconstruction/ft/src/test/java/org/jlab/service/ft/FTEBEngineTest.java @@ -99,7 +99,7 @@ public boolean init() { } @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { List FTparticles = new ArrayList(); List FTresponses = new ArrayList(); @@ -486,7 +486,7 @@ public static void main(String arg[]){ //if(nev > 10239) System.exit(0); if(nev != 10239) continue; // stop at a given evt number cal.processDataEvent(event); hodo.processDataEvent(event); - trk.processDataEventAndGetClusters(event); + trk.processDataEventAndGetClusters(event); en.processDataEvent(event); if(!event.hasBank("FTCAL::hits")) continue; if (event instanceof EvioDataEvent) { @@ -1676,4 +1676,9 @@ public static void main(String arg[]){ frametrkonlyresVsCoord.setLocationRelativeTo(null); frametrkonlyresVsCoord.setVisible(true); } + + @Override + public void detectorChanged(int runNumber) { + throw new UnsupportedOperationException("Not supported yet."); + } } diff --git a/reconstruction/ft/src/test/java/org/jlab/service/ft/FTTRKEngineTest.java b/reconstruction/ft/src/test/java/org/jlab/service/ft/FTTRKEngineTest.java index 0023082b20..753f5faa0b 100644 --- a/reconstruction/ft/src/test/java/org/jlab/service/ft/FTTRKEngineTest.java +++ b/reconstruction/ft/src/test/java/org/jlab/service/ft/FTTRKEngineTest.java @@ -1,8 +1,3 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package org.jlab.service.ft; import java.util.ArrayList; @@ -66,7 +61,7 @@ public boolean init() { } @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { List allHits = new ArrayList(); ArrayList clusters = new ArrayList(); ArrayList crosses = new ArrayList(); @@ -561,6 +556,11 @@ public static void main (String arg[]) { frame3.setVisible(true); } + + @Override + public void detectorChanged(int runNumber) { + throw new UnsupportedOperationException("Not supported yet."); + } } diff --git a/reconstruction/htcc/src/main/java/org/jlab/service/htcc/HTCCReconstructionService.java b/reconstruction/htcc/src/main/java/org/jlab/service/htcc/HTCCReconstructionService.java index bb7816c7d3..dcb7e68ab3 100644 --- a/reconstruction/htcc/src/main/java/org/jlab/service/htcc/HTCCReconstructionService.java +++ b/reconstruction/htcc/src/main/java/org/jlab/service/htcc/HTCCReconstructionService.java @@ -20,7 +20,7 @@ public HTCCReconstructionService(){ } @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { int runNo = 10; if(event.hasBank("RUN::config")==true){ @@ -48,9 +48,7 @@ public boolean processDataEvent(DataEvent event) { @Override public boolean init() { - - - String[] htccTables = new String[]{ + String[] htccTables = new String[]{ "/calibration/htcc/gain", "/calibration/htcc/time", "/calibration/htcc/ring_time", @@ -59,13 +57,12 @@ public boolean init() { "/geometry/htcc/htcc", }; - this.registerOutputBank("HTCC::rec"); - requireConstants(Arrays.asList(htccTables)); return true; } - + @Override + public void detectorChanged(int runNumber) {} } diff --git a/reconstruction/ltcc/src/main/java/org/jlab/service/ltcc/LTCCEngine.java b/reconstruction/ltcc/src/main/java/org/jlab/service/ltcc/LTCCEngine.java index 0a1f2380e3..db518ddfdc 100644 --- a/reconstruction/ltcc/src/main/java/org/jlab/service/ltcc/LTCCEngine.java +++ b/reconstruction/ltcc/src/main/java/org/jlab/service/ltcc/LTCCEngine.java @@ -4,7 +4,6 @@ import org.jlab.io.base.DataEvent; import java.util.List; import java.util.Arrays; -import java.util.logging.Level; import java.util.logging.Logger; /** @@ -18,38 +17,36 @@ public class LTCCEngine extends ReconstructionEngine { private static final boolean DEBUG = false; private static final List CC_TABLES = - Arrays.asList("/calibration/ltcc/spe", - "/calibration/ltcc/status" - ); + Arrays.asList("/calibration/ltcc/spe","/calibration/ltcc/status"); public LTCCEngine() { super("LTCC", "joosten", "1.0"); } @Override - public boolean processDataEvent(DataEvent event) { - if (DEBUG) event.show(); - // only process the event if the LTCC bank is present - if (event.hasBank("LTCC::adc")) { - if (DEBUG) event.getBank("LTCC::adc").show(); - List hits = - LTCCHit.loadHits(event, this.getConstantsManager()); - List clusters = - LTCCClusterFinder.findClusters(hits); - LTCCCluster.saveClusters(event, clusters); - if (DEBUG) { - event.getBank("LTCC::clusters").show(); - } - } - - return true; - } + public boolean processDataEventUser(DataEvent event) { + if (DEBUG) event.show(); + // only process the event if the LTCC bank is present + if (event.hasBank("LTCC::adc")) { + if (DEBUG) event.getBank("LTCC::adc").show(); + List hits = + LTCCHit.loadHits(event, this.getConstantsManager()); + List clusters = + LTCCClusterFinder.findClusters(hits); + LTCCCluster.saveClusters(event, clusters); + if (DEBUG) event.getBank("LTCC::clusters").show(); + } + return true; + } @Override - public boolean init() { - this.requireConstants(CC_TABLES); - this.registerOutputBank("LTCC::clusters"); - return true; - } + public boolean init() { + this.requireConstants(CC_TABLES); + this.registerOutputBank("LTCC::clusters"); + return true; + } + + @Override + public void detectorChanged(int runNumber) {} } diff --git a/reconstruction/mc/src/main/java/org/jlab/service/mc/TruthMatch.java b/reconstruction/mc/src/main/java/org/jlab/service/mc/TruthMatch.java index a8c4b9b189..310c4788cd 100644 --- a/reconstruction/mc/src/main/java/org/jlab/service/mc/TruthMatch.java +++ b/reconstruction/mc/src/main/java/org/jlab/service/mc/TruthMatch.java @@ -46,7 +46,7 @@ public boolean init() { } @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { if (event.hasBank("MC::True") == false) { return false; @@ -233,6 +233,9 @@ public boolean processDataEvent(DataEvent event) { } + @Override + public void detectorChanged(int runNumber) {} + /** * ************************************************************************ * Defining objects that will be needed int the matching process diff --git a/reconstruction/mltn/src/main/java/org/jlab/service/mltn/MLTDEngine.java b/reconstruction/mltn/src/main/java/org/jlab/service/mltn/MLTDEngine.java index 21cbf1c358..32e1123aaa 100644 --- a/reconstruction/mltn/src/main/java/org/jlab/service/mltn/MLTDEngine.java +++ b/reconstruction/mltn/src/main/java/org/jlab/service/mltn/MLTDEngine.java @@ -19,39 +19,36 @@ */ public class MLTDEngine extends ReconstructionEngine { - EJMLTrackNeuralNetwork network = null; private String networkFlavor = "default"; - private Integer networkRun = 5038; + private Integer userRunNumber = -1; private String inputBankPrefix = ""; private String outputBankPrefix = "ai"; private String inputBank = null; private String outputBank = null; - + public MLTDEngine(){ super("MLTD","gavalian","1.0"); } @Override public boolean init() { - - //Set bank names inputBankPrefix = Optional.ofNullable(this.getEngineConfigString("inputBankPrefix")).orElse(""); outputBankPrefix = Optional.ofNullable(this.getEngineConfigString("outputBankPrefix")).orElse("ai"); inputBank = "HitBasedTrkg::"+inputBankPrefix+"Clusters"; outputBank = outputBankPrefix+"::tracks"; - networkFlavor = Optional.ofNullable(this.getEngineConfigString("flavor")).orElse("default"); - String runNumber = Optional.ofNullable(this.getEngineConfigString("run")).orElse("5038"); - networkRun = Integer.parseInt(runNumber); - + userRunNumber = Integer.valueOf(Optional.ofNullable(this.getEngineConfigString("run")).orElse("-1")); + return true; + } + + public boolean load(int run) { String path = CLASResources.getResourcePath("etc/ejml/ejmlclas12.network"); if(this.getEngineConfigString("network")!=null) path = this.getEngineConfigString("network"); System.out.println("[neural-network] info : Loading neural network from " + path); - network = new EJMLTrackNeuralNetwork(); - Map files = new HashMap(); + Map files = new HashMap<>(); files.put("classifier", "trackClassifier.network"); files.put("fixer", "trackFixer.network"); @@ -64,7 +61,7 @@ public boolean init() { //----- however it the provided run # it lower than anything //----- existing in the arhive, it will return the closest run //----- number entry. - int adjustedRun = provider.findEntry(networkRun); + int adjustedRun = provider.findEntry(run); String directory = String.format("network/%d/%s", adjustedRun, networkFlavor); network.initZip(path.trim(),directory, files); @@ -80,23 +77,20 @@ public boolean init() { } @Override - public boolean processDataEvent(DataEvent de) { + public void detectorChanged(int runNumber) { + if (userRunNumber < 0) { + load(runNumber); + } + else if (network == null) { + load(userRunNumber); + } + } + + @Override + public boolean processDataEventUser(DataEvent de) { if(de.hasBank(inputBank)==true){ - DataBank bank = de.getBank(inputBank); - + DataBank bank = de.getBank(inputBank); HipoDataBank hipoBank = (HipoDataBank) bank; - - //classifier.processBank(hipoBank.getBank()); - - /*Clas12TrackAnalyzer analyzer = new Clas12TrackAnalyzer(); - for(int sector = 1; sector <=6; sector++){ - analyzer.readBank(hipoBank.getBank(), sector); - classifier.evaluate(analyzer.getCombinations()); - //analyzer.getCombinations().analyze(); - //System.out.println(analyzer.getCombinations()); - classifier.evaluate5(analyzer.getCombinationsPartial()); - analyzer.analyze(); - }*/ Clas12TrackFinder trackFinder = new Clas12TrackFinder(); trackFinder.setTrackingNetwork(network); trackFinder.process(hipoBank.getBank()); @@ -106,8 +100,6 @@ public boolean processDataEvent(DataEvent de) { } public void writeBank(DataEvent event, ClusterCombinations combi){ - //ClusterCombinations combi = cl.getTracks(); - //System.out.println(">>> writing ai bank with entries = " + combi.getSize()); DataBank bank = event.createBank(outputBank, combi.getSize()); for(int i = 0; i < combi.getSize(); i++){ bank.setByte("id", i, (byte) (i+1)); @@ -120,26 +112,8 @@ public void writeBank(DataEvent event, ClusterCombinations combi){ bank.setShort("c"+order, i, (short) ids[c]); } } - //System.out.println("appending bank"); event.removeBank(outputBank); event.appendBank(bank); } - /*public void writeBank(DataEvent event, Clas12TrackClassifier cl){ - ClusterCombinations combi = cl.getTracks(); - //System.out.println(">>> writing ai bank with entries = " + combi.getSize()); - DataBank bank = event.createBank("ai::tracks", combi.getSize()); - for(int i = 0; i < combi.getSize(); i++){ - bank.setByte("id", i, (byte) (i+1)); - bank.setByte("sector", i, (byte) 1); - int[] ids = combi.getLabels(i); - for(int c = 0; c < 6; c++){ - int order = c+1; - bank.setShort("c"+order, i, (short) ids[c]); - } - } - //System.out.println("appending bank"); - event.appendBank(bank); - }*/ - } diff --git a/reconstruction/mltn/src/main/java/org/jlab/service/mltn/MLTNEngine.java b/reconstruction/mltn/src/main/java/org/jlab/service/mltn/MLTNEngine.java index 2181fd561e..fe6c62b715 100644 --- a/reconstruction/mltn/src/main/java/org/jlab/service/mltn/MLTNEngine.java +++ b/reconstruction/mltn/src/main/java/org/jlab/service/mltn/MLTNEngine.java @@ -1,8 +1,3 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package org.jlab.service.mltn; import j4ml.clas12.Clas12TrackAnalyzer; @@ -16,7 +11,7 @@ /** * * @author gavalian - @deprecated + @Deprecated */ public class MLTNEngine extends ReconstructionEngine { @@ -32,12 +27,14 @@ public boolean init() { classifier.setEnvPath("etc/nnet/neuroph"); classifier.load("trackClassifier.nnet", "trackFixer.nnet"); System.out.println("Loading neural network files done..."); - //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. return true; } @Override - public boolean processDataEvent(DataEvent de) { + public void detectorChanged(int runNumber) {} + + @Override + public boolean processDataEventUser(DataEvent de) { if(de.hasBank("HitBasedTrkg::Clusters")==true){ DataBank bank = de.getBank("HitBasedTrkg::Clusters"); @@ -96,5 +93,4 @@ public void writeBank(DataEvent event, ClusterCombinations combi){ //System.out.println("appending bank"); event.appendBank(bank); }*/ - } diff --git a/reconstruction/postproc/src/main/java/org/jlab/service/postproc/PostprocEngine.java b/reconstruction/postproc/src/main/java/org/jlab/service/postproc/PostprocEngine.java index 3a45e064a1..0aa6145e85 100644 --- a/reconstruction/postproc/src/main/java/org/jlab/service/postproc/PostprocEngine.java +++ b/reconstruction/postproc/src/main/java/org/jlab/service/postproc/PostprocEngine.java @@ -47,7 +47,10 @@ else if (getEngineConfigString(CONF_PRELOAD_DIR) != null) { } @Override - public boolean processDataEvent(DataEvent event) { + public void detectorChanged(int run) {} + + @Override + public boolean processDataEventUser(DataEvent event) { processor.processEvent(event); return true; } diff --git a/reconstruction/raster/src/main/java/org/jlab/service/raster/RasterEngine.java b/reconstruction/raster/src/main/java/org/jlab/service/raster/RasterEngine.java index 20d7619e1f..a407e7b361 100644 --- a/reconstruction/raster/src/main/java/org/jlab/service/raster/RasterEngine.java +++ b/reconstruction/raster/src/main/java/org/jlab/service/raster/RasterEngine.java @@ -47,9 +47,11 @@ public boolean init() { return true; } + @Override + public void detectorChanged(int runNumber) {} @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { // Read run number from RUN::config bank int run=-1; @@ -129,7 +131,7 @@ public static void main(String arg[]) { System.out.print("MC position read : " + MC_Part.getFloat("vx",0) +"\n"); // run the raster engine - engine.processDataEvent(event); + engine.processDataEventUser(event); // read the output bank and fill the histograms if(event.hasBank("RASTER::position")) { diff --git a/reconstruction/rich/src/main/java/org/jlab/rec/rich/RICHEBEngine.java b/reconstruction/rich/src/main/java/org/jlab/rec/rich/RICHEBEngine.java index 56540d6335..faff8505dd 100644 --- a/reconstruction/rich/src/main/java/org/jlab/rec/rich/RICHEBEngine.java +++ b/reconstruction/rich/src/main/java/org/jlab/rec/rich/RICHEBEngine.java @@ -1,53 +1,30 @@ package org.jlab.rec.rich; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.JFrame; - -import org.jlab.clas.reco.ReconstructionEngine; -import org.jlab.io.base.DataEvent; -import org.jlab.io.base.DataBank; - -import org.jlab.utils.groups.IndexedTable; import java.util.Arrays; import java.util.Optional; - -import org.jlab.geom.prim.Plane3D; -import org.jlab.geom.prim.Line3D; - +import org.jlab.clas.reco.ReconstructionEngine; +import org.jlab.io.base.DataEvent; import org.jlab.detector.geom.RICH.RICHGeoFactory; public class RICHEBEngine extends ReconstructionEngine { private int Run = -1; private int Ncalls = 0; - private long EBRICH_start_time; - private RICHGeoFactory richgeo; private RICHTime richtime = new RICHTime(); private boolean engineDebug = false; - - // ---------------- public RICHEBEngine() { - // ---------------- super("RICHEB", "mcontalb", "3.0"); - } - @Override - // ---------------- public boolean init() { - // ---------------- int debugMode = 0; if(debugMode>=1)System.out.format("I am in RICHEBEngine init \n"); - String[] richTables = new String[]{ "/geometry/rich/setup", "/geometry/rich/geo_parameter", @@ -83,25 +60,24 @@ public boolean init() { if(this.getEngineConfigString("debug")!=null) this.engineDebug = Boolean.parseBoolean(this.getEngineConfigString("debug")); - // Get the constant tables for reconstruction parameters, geometry and optical characterization - int run = 11; - - richgeo = new RICHGeoFactory(1, this.getConstantsManager(), run, engineDebug); - richtime.init_ProcessTime(); - return true; } - + + @Override + public void detectorChanged(int runNumber) { + richgeo = new RICHGeoFactory(1, this.getConstantsManager(), runNumber, engineDebug); + richtime.init_ProcessTime(); + } @Override // ---------------- - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { // ---------------- int debugMode = 0; - // create instances of all event-dependent classes in processDataEvent to avoid interferences between different threads when running in clara + // create instances of all event-dependent classes in processDataEventUser to avoid interferences between different threads when running in clara RICHEvent richevent = new RICHEvent(); RICHio richio = new RICHio(); RICHCalibration richcal = new RICHCalibration(); @@ -159,5 +135,4 @@ public boolean processDataEvent(DataEvent event) { return true; } - } diff --git a/reconstruction/rtpc/src/main/java/org/jlab/service/rtpc/RTPCEngine.java b/reconstruction/rtpc/src/main/java/org/jlab/service/rtpc/RTPCEngine.java index b6231f34be..42a5316c93 100644 --- a/reconstruction/rtpc/src/main/java/org/jlab/service/rtpc/RTPCEngine.java +++ b/reconstruction/rtpc/src/main/java/org/jlab/service/rtpc/RTPCEngine.java @@ -1,9 +1,6 @@ package org.jlab.service.rtpc; import java.io.File; - - - import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -26,16 +23,12 @@ import org.jlab.rec.rtpc.hit.TrackFinder; import org.jlab.rec.rtpc.hit.TrackHitReco; import org.jlab.rec.rtpc.hit.HelixFitTest; -import org.jlab.detector.calib.utils.ConstantsManager; import org.jlab.utils.groups.IndexedTable; import org.jlab.clas.tracking.kalmanfilter.Material; - - public class RTPCEngine extends ReconstructionEngine{ - public RTPCEngine() { super("RTPC","davidp","3.0"); } @@ -54,8 +47,7 @@ public boolean init() { String cosm = this.getEngineConfigString("rtpcCosmic"); String beamfit = this.getEngineConfigString("rtpcBeamlineFit"); String disentangler = this.getEngineConfigString("rtpcDisentangler"); - String chi2cull = this.getEngineConfigString("rtpcChi2Cull"); - //System.out.println(sim + " " + cosm + " " + beamfit); + String chi2cull = this.getEngineConfigString("rtpcChi2Cull"); String kfstatus = this.getEngineConfigString("rtpcKF"); if(sim != null){ @@ -98,11 +90,12 @@ public boolean init() { return true; } - - + + @Override + public void detectorChanged(int runNumber) {} @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { HitParameters params = new HitParameters(); @@ -230,7 +223,7 @@ public static void main(String[] args){ while(reader.hasEvent()){ DataEvent event = reader.getNextEvent(); //if(eventcount == eventselect){ - en.processDataEvent(event); + en.processDataEventUser(event); writer.writeEvent(event); //}else if(eventcount > eventselect) break; eventcount ++; diff --git a/reconstruction/swaps/src/main/java/org/jlab/service/swaps/SwapEngine.java b/reconstruction/swaps/src/main/java/org/jlab/service/swaps/SwapEngine.java index 3a132431da..5382dd90da 100644 --- a/reconstruction/swaps/src/main/java/org/jlab/service/swaps/SwapEngine.java +++ b/reconstruction/swaps/src/main/java/org/jlab/service/swaps/SwapEngine.java @@ -37,7 +37,7 @@ private void updateBank(int run,DataBank bank) { } @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { DataBank bank = event.getBank("RUN::config"); final int run = bank.getInt("run",0); for (String detectorName : this.swapman.getDetectors()) { @@ -87,4 +87,7 @@ public boolean init() { return true; } + @Override + public void detectorChanged(int runNumber) {} + } diff --git a/reconstruction/tof/src/main/java/org/jlab/service/ctof/CTOFEngine.java b/reconstruction/tof/src/main/java/org/jlab/service/ctof/CTOFEngine.java index 8fb79d5b51..c079a59686 100644 --- a/reconstruction/tof/src/main/java/org/jlab/service/ctof/CTOFEngine.java +++ b/reconstruction/tof/src/main/java/org/jlab/service/ctof/CTOFEngine.java @@ -1,6 +1,5 @@ package org.jlab.service.ctof; -import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -8,12 +7,10 @@ import java.util.Optional; import org.jlab.clas.reco.ReconstructionEngine; -import org.jlab.coda.jevio.EvioException; import org.jlab.detector.base.DetectorType; import org.jlab.detector.base.GeometryFactory; import org.jlab.detector.geant4.v2.CTOFGeant4Factory; import org.jlab.geom.base.ConstantProvider; -import org.jlab.geometry.prim.Line3d; import org.jlab.io.base.DataBank; import org.jlab.io.base.DataEvent; import org.jlab.io.hipo.HipoDataSource; @@ -46,13 +43,9 @@ public CTOFEngine() { @Override public boolean init() { - // Load the Constants - // if (Constants.CSTLOADED == false) { Constants.Load(); - // } rbc = new RecoBankWriter(); - // CalibrationConstantsLoader.Load(); - // } + String[] ctofTables = new String[]{ "/calibration/ctof/attenuation", "/calibration/ctof/effective_velocity", @@ -68,20 +61,21 @@ public boolean init() { }; requireConstants(Arrays.asList(ctofTables)); - - // Get the constants for the correct variation this.getConstantsManager().setVariation("default"); - String engineVariation = Optional.ofNullable(this.getEngineConfigString("variation")).orElse("default"); - ConstantProvider cp = GeometryFactory.getConstants(DetectorType.CTOF, 11, engineVariation); - geometry = new CTOFGeant4Factory(cp); - this.registerOutputBank("CTOF::rawhits","CTOF::hits","CTOF::clusters"); - return true; } + + + @Override + public void detectorChanged(int runNumber) { + String engineVariation = Optional.ofNullable(this.getEngineConfigString("variation")).orElse("default"); + ConstantProvider cp = GeometryFactory.getConstants(DetectorType.CTOF, runNumber, engineVariation); + geometry = new CTOFGeant4Factory(cp); + } @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { //setRunConditionsParameters( event) ; if(event.hasBank("RUN::config")==false ) { System.err.println("RUN CONDITIONS NOT READ!"); @@ -89,8 +83,6 @@ public boolean processDataEvent(DataEvent event) { } DataBank bank = event.getBank("RUN::config"); -// System.out.println(); -// System.out.println(bank.getInt("event", 0)); // Load the constants //------------------- @@ -218,7 +210,7 @@ public static void main(String[] args) { counter++; DataEvent event = reader.getNextEvent(); - en.processDataEvent(event); + en.processDataEventUser(event); writer.writeEvent(event); if (counter > 3) { break; @@ -231,5 +223,4 @@ public static void main(String[] args) { System.out.println("TOTAL PROCESSING TIME = " + t); writer.close(); } - } diff --git a/reconstruction/tof/src/main/java/org/jlab/service/ftof/FTOFEngine.java b/reconstruction/tof/src/main/java/org/jlab/service/ftof/FTOFEngine.java index 4a0c24d2c3..eb08d82226 100644 --- a/reconstruction/tof/src/main/java/org/jlab/service/ftof/FTOFEngine.java +++ b/reconstruction/tof/src/main/java/org/jlab/service/ftof/FTOFEngine.java @@ -45,9 +45,6 @@ public FTOFEngine(String name) { @Override public boolean init() { - - // Load the Constants - // if (Constants.CSTLOADED == false) { Constants.Load(); rbc = new RecoBankWriter(); @@ -68,30 +65,27 @@ public boolean init() { }; requireConstants(Arrays.asList(ftofTables)); - - // Get the constants for the correct variation this.getConstantsManager().setVariation("default"); - - // Get geometry database provider, load the geometry tables and create geometry - String engineVariation = Optional.ofNullable(this.getEngineConfigString("variation")).orElse("default"); - ConstantProvider db = GeometryFactory.getConstants(DetectorType.FTOF, 11, engineVariation); - geometry = new FTOFGeant4Factory(db); this.registerOutputBank("FTOF::rawhits","FTOF::hbhits","FTOF::hbclusters"); this.registerOutputBank("FTOF::hits","FTIF::clusters","FTOF::matchedClusters"); return true; } + + @Override + public void detectorChanged(int runNumber) { + String engineVariation = Optional.ofNullable(this.getEngineConfigString("variation")).orElse("default"); + ConstantProvider db = GeometryFactory.getConstants(DetectorType.FTOF, runNumber, engineVariation); + geometry = new FTOFGeant4Factory(db); + } @Override - public boolean processDataEvent(DataEvent event) { - // System.out.println(" PROCESSING EVENT ...."); - // Constants.DEBUGMODE = true; - //setRunConditionsParameters( event) ; + public boolean processDataEventUser(DataEvent event) { if(event.hasBank("RUN::config")==false ) { - System.err.println("RUN CONDITIONS NOT READ!"); - return true; - } + System.err.println("RUN CONDITIONS NOT READ!"); + return true; + } DataBank bank = event.getBank("RUN::config"); @@ -215,24 +209,10 @@ public boolean processDataEvent(DataEvent event) { // 3.4) exit if cluster list is empty but save the hits rbc.appendFTOFBanks(event, hits, clusters, matchedClusters, TrkType); -// if (event.hasBank("FTOF::adc")) { -// if (event.hasBank("FTOF::adc")) { -// event.getBank("FTOF::adc").show(); -// } -// if (event.hasBank("FTOF::tdc")) { -// event.getBank("FTOF::tdc").show(); -// } -// if (event.hasBank("FTOF::hits")) { -// event.getBank("FTOF::hits").show(); -// } -// } - return true; } - - public static void main(String arg[]) { FTOFHBEngine en = new FTOFHBEngine(); en.init(); @@ -263,11 +243,11 @@ public static void main(String arg[]) { t1 = System.currentTimeMillis(); } - //en0.processDataEvent(event); + //en0.processDataEventUser(event); // if (counter > 3062) - //en0.processDataEvent(event); - //en1.processDataEvent(event); - en.processDataEvent(event); + //en0.processDataEventUser(event); + //en1.processDataEventUser(event); + en.processDataEventUser(event); System.out.println(" EVENT " + counter); //if (counter > 3066) // break; diff --git a/reconstruction/urwell/src/main/java/org/jlab/service/urwell/URWellEngine.java b/reconstruction/urwell/src/main/java/org/jlab/service/urwell/URWellEngine.java index fcb53c5ad1..58c258dc61 100644 --- a/reconstruction/urwell/src/main/java/org/jlab/service/urwell/URWellEngine.java +++ b/reconstruction/urwell/src/main/java/org/jlab/service/urwell/URWellEngine.java @@ -38,10 +38,6 @@ public URWellEngine() { @Override public boolean init() { - // init ConstantsManager to read constants from CCDB - String variationName = Optional.ofNullable(this.getEngineConfigString("variation")).orElse("default"); - DatabaseConstantProvider cp = new DatabaseConstantProvider(11, variationName); - factory.init(cp, false, URWellConstants.NREGION); // register output banks for drop option this.registerOutputBank("URWELL::hits"); this.registerOutputBank("URWELL::clusters"); @@ -51,11 +47,15 @@ public boolean init() { return true; } - - + @Override + public void detectorChanged(int runNumber) { + String variationName = Optional.ofNullable(this.getEngineConfigString("variation")).orElse("default"); + DatabaseConstantProvider cp = new DatabaseConstantProvider(runNumber, variationName); + factory.init(cp, false, URWellConstants.NREGION); + } @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { List strips = URWellStrip.getStrips(event, factory, this.getConstantsManager()); List clusters = URWellCluster.createClusters(strips); @@ -180,7 +180,7 @@ public static void main (String arg[]) { while(reader.hasEvent()) { DataEvent event = reader.getNextEvent(); - engine.processDataEvent(event); + engine.processDataEventUser(event); double xtrue = 0; double ytrue = 0; diff --git a/reconstruction/vtx/src/main/java/org/jlab/rec/service/vtx/VTXReconstruction.java b/reconstruction/vtx/src/main/java/org/jlab/rec/service/vtx/VTXReconstruction.java index fb993b7721..1db55889f4 100644 --- a/reconstruction/vtx/src/main/java/org/jlab/rec/service/vtx/VTXReconstruction.java +++ b/reconstruction/vtx/src/main/java/org/jlab/rec/service/vtx/VTXReconstruction.java @@ -7,11 +7,7 @@ import org.jlab.clas.reco.ReconstructionEngine; import org.jlab.clas.swimtools.Swim; -import org.jlab.detector.base.DetectorType; -import org.jlab.detector.base.GeometryFactory; import org.jlab.detector.calib.utils.DatabaseConstantProvider; -import org.jlab.geom.base.ConstantProvider; -import org.jlab.io.base.DataBank; import org.jlab.io.base.DataEvent; import org.jlab.rec.vtx.TrackParsHelix; import org.jlab.rec.vtx.Vertex; @@ -34,8 +30,6 @@ public VTXReconstruction() { String FieldsConfig = ""; private int Run = -1; - - public int getRun() { return Run; @@ -59,8 +53,9 @@ private void initConstantsTables() { requireConstants(Arrays.asList(tables)); this.getConstantsManager().setVariation("default"); } + @Override - public boolean processDataEvent(DataEvent event) { + public boolean processDataEventUser(DataEvent event) { this.FieldsConfig = this.getFieldsConfig(); if (event.hasBank("RUN::config") == false) { System.err.println("RUN CONDITIONS NOT READ!"); @@ -101,14 +96,10 @@ public boolean processDataEvent(DataEvent event) { public boolean init() { this.initConstantsTables(); String variation = Optional.ofNullable(this.getEngineConfigString("variation")).orElse("default"); - //beam offset table - DatabaseConstantProvider dbprovider = new DatabaseConstantProvider(11, variation); - dbprovider.loadTable("/geometry/beam/position"); + registerOutputBank("REC::VertDoca"); return true; } - private void registerBanks() { - super.registerOutputBank("REC::VertDoca"); - } - public static void main(String[] args) { - } + + @Override + public void detectorChanged(int runNumber) {} } diff --git a/validation/advanced-tests/run-eb-tests-all.sh b/validation/advanced-tests/run-eb-tests-all.sh deleted file mode 100755 index ccd5116fd8..0000000000 --- a/validation/advanced-tests/run-eb-tests-all.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -# -# This runs all existing EB tests. -# Requires about 10 minutes to fully succeed (single-threaded), else aborts ASAP. -# - -for xx in `awk '{print$1}' src/eb/scripts/list.txt` -do - ./run-eb-tests.sh -100 $xx - if [ $? != 0 ] - then - echo run-eb-tests.sh: failed on $xx - exit - fi -done - diff --git a/validation/advanced-tests/run-eb-tests.sh b/validation/advanced-tests/run-eb-tests.sh index 6f2ba34d58..9a3dcc3ed5 100755 --- a/validation/advanced-tests/run-eb-tests.sh +++ b/validation/advanced-tests/run-eb-tests.sh @@ -1,33 +1,14 @@ #!/bin/bash +# WARNING: coatjava must already be built at ../../coatjava/ + +set -e webDir=http://clasweb.jlab.org/clas12offline/distribution/coatjava/validation_files/eb -webVersion=5.10-fid-tm-r11 +webVersion=dev-fid-r11 webDir=$webDir/$webVersion - -# coatjava must already be built at ../../coatjava/ - -# whether to use CLARA (0=no) -useClara=0 - -# if non-zero, don't redownload dependencies, don't run reconstruction: runTestOnly=0 -# gemc default solenoid (changed in 4a.2.4): -gemcSolenoidDefault=-1.0 -if [[ $webVersion = *"4a.2.2"* ]] || [[ $webVersion = *"4a.2.3"* ]] -then - gemcSolenoidDefault=1.0 -fi - -# geometry variation for DC -geoDbVariation="default" -if [[ $webVersion = *"4a.2.2"* ]] || [[ $webVersion = *"4a.2.3"* ]] || [[ $webVersion = *"4a.2.4"* ]] -then - geoDbVariation="dc_geo_gemc424" -fi - -nEvents=-1 - +# check command-line options: for arg in $@ do if [ "$arg" == "-t" ] @@ -42,120 +23,27 @@ done # last argument is input file stub: stub="${@: -1}" -# sanity check on filestub name, -# just to error with reasonable message before proceeding: -case $stub in - # electron in forward, hadron in forward: - electronproton) - ;; - electronkaon) - ;; - electronpion) - ;; - electrongamma) - ;; - electronneutron) - ;; - electronFTproton) - ;; - electronFTkaon) - ;; - electronFTpion) - ;; - electronFTgamma) - ;; - electrongammaFT) - ;; - electronprotonC) - ;; - electronkaonC) - ;; - electronpionC) - ;; - electrongammaC) - ;; - electronneutronC) - ;; - electrondeuteronC) - ;; - *) - echo Invalid input evio file: $stub - exit 1 -esac +# check stub validity: +! grep "^$stub -pid" src/eb/scripts/list.txt && echo Invalid stub: $stub && exit 1 # set up environment -if [ $useClara -eq 0 ] -then - COAT=../../coatjava - source $COAT/libexec/env.sh -else - CLARA_HOME=$PWD/clara_installation/ - COAT=$CLARA_HOME/plugins/clas12/ - export CLARA_HOME -fi +coatjava=../../coatjava +source $coatjava/libexec/env.sh +classPath="$coatjava/lib/services/*:$coatjava/lib/clas/*:$coatjava/lib/utils/*:../lib/*:src/" -classPath="$COAT/lib/services/*:$COAT/lib/clas/*:$COAT/lib/utils/*:../lib/*:src/" - -classPath2="../../coatjava/lib/services/*:../../coatjava/lib/clas/*:../../coatjava/lib/utils/*:../lib/*:src/" - -# make sure test code compiles before anything else: -javac -cp $classPath2 src/eb/EBTwoTrackTest.java -if [ $? != 0 ] ; then echo "EBTwoTrackTest compilation failure" ; exit 1 ; fi +# make sure test code compiles first: +javac -cp $classPath src/eb/EBTwoTrackTest.java # download and setup dependencies, run reconstruction: if [ $runTestOnly -eq 0 ] then - - if ! [ $useClara -eq 0 ] - then - # tar the local coatjava build so it can be installed with clara - cd ../.. - tar -zcvf coatjava-local.tar.gz coatjava - mv coatjava-local.tar.gz validation/advanced-tests/ - cd - - - # install clara - if ! [ -d clara_installation ] - then - ../../install-clara clara_installation - fi - fi - - # download test files, if necessary: wget -N --no-check-certificate $webDir/${stub}.hipo - if [ $? != 0 ] ; then echo "wget validation files failure" ; exit 1 ; fi - - # update the schema dictionary: (no longer necessary now that recon-util does it) - #rm -f up_${stub}.hipo - #../../coatjava/bin/hipo-utils -update -d ../../coatjava/etc/bankdefs/hipo4/ -o up_${stub}.hipo ${stub}.hipo - - # run reconstruction: rm -f out_${stub}.hipo - if [ $useClara -eq 0 ] - then - GEOMDBVAR=$geoDbVariation - export GEOMDBVAR - ../../coatjava/bin/recon-util -i ${stub}.hipo -o out_${stub}.hipo -c 2 - else - echo "set inputDir $PWD/" > cook.clara - echo "set outputDir $PWD/" >> cook.clara - echo "set threads 7" >> cook.clara - echo "set javaMemory 2" >> cook.clara - echo "set session s_cook" >> cook.clara - echo "set description d_cook" >> cook.clara - ls ${stub}.hipo > files.list - echo "set fileList $PWD/files.list" >> cook.clara - echo "run local" >> cook.clara - echo "exit" >> cook.clara - $CLARA_HOME/bin/clara-shell cook.clara - fi + export GEOMDBVAR=default + ../../coatjava/bin/recon-util -i ${stub}.hipo -o out_${stub}.hipo -c 2 fi -# run Event Builder tests: -java -DCLAS12DIR="$COAT" -Xmx1536m -Xms1024m -cp $classPath2 -DINPUTFILE=out_${stub}.hipo org.junit.runner.JUnitCore eb.EBTwoTrackTest -if [ $? != 0 ] ; then echo "EBTwoTrackTest unit test failure" ; exit 1 ; else echo "EBTwoTrackTest passed unit tests" ; fi - -$COAT/bin/trutheff ./out_${stub}.hipo - -exit 0 +# run tests: +$coatjava/bin/trutheff ./out_${stub}.hipo +java -DCLAS12DIR="$coatjava" -Xmx1536m -Xms1024m -cp $classPath -DINPUTFILE=out_${stub}.hipo org.junit.runner.JUnitCore eb.EBTwoTrackTest diff --git a/validation/advanced-tests/src/eb/scripts/gemc.sh b/validation/advanced-tests/src/eb/scripts/gemc.sh index a721a35b1a..0c78304594 100755 --- a/validation/advanced-tests/src/eb/scripts/gemc.sh +++ b/validation/advanced-tests/src/eb/scripts/gemc.sh @@ -1,5 +1,7 @@ #!/bin/sh +set -e + usage() { echo "Usage: $0 [-g GEMC] [-n NEV] [-p PARTS] [-c GCARD] [-m]" 1>&2; exit $1; } run=11 @@ -64,8 +66,7 @@ function run_gemc () { for p in "${particles[@]}" do - [ -z ${multithread+} ] && args= || args=-m - run_gemc -r $run -g $gemc -n $nevents -c $gcard -i $p.txt -o $p.hipo $args + run_gemc -r $run -g $gemc -n $nevents -c $gcard -i $p.txt -o $p.hipo done [ -z ${multithread+x} ] || wait