diff --git a/common-tools/clas-reco/src/main/java/org/jlab/clas/detector/DetectorData.java b/common-tools/clas-reco/src/main/java/org/jlab/clas/detector/DetectorData.java index d0228a11c2..3c5a019387 100644 --- a/common-tools/clas-reco/src/main/java/org/jlab/clas/detector/DetectorData.java +++ b/common-tools/clas-reco/src/main/java/org/jlab/clas/detector/DetectorData.java @@ -5,7 +5,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.jlab.clas.physics.Particle; import org.jlab.detector.base.DetectorType; import org.jlab.geom.prim.Vector3D; import org.jlab.io.base.DataBank; @@ -90,80 +89,6 @@ public static List readDetectorParticles(DataEvent event, Stri return particles; } - /** - * reads Detector Event, detector particles and detector responses and then - * adds all associated responses to each particle. - * - * @param event - * @return - */ - public static DetectorEvent readDetectorEvent(DataEvent event) { - return DetectorData.readDetectorEvent(event, "REC::Particle", "REC::Detector"); - } - - public static DetectorEvent readDetectorEvent(DataEvent event, String particle_bank, String response_bank) { - - List particles = DetectorData.readDetectorParticles(event, particle_bank); - DetectorEvent detectorEvent = new DetectorEvent(); - for (DetectorParticle p : particles) { - detectorEvent.addParticle(p); - } - - List responses = DetectorData.readDetectorResponses(event, response_bank); - for (DetectorResponse r : responses) { - int association = r.getAssociation(); - if (association >= 0 && association < detectorEvent.getParticles().size()) { - detectorEvent.getParticles().get(association).addResponse(r); - } - } - - detectorEvent.getPhysicsEvent().clear(); - - for (DetectorParticle p : particles) { - if (p.getPid() == 0) { - Particle part = Particle.createWithMassCharge( - p.getMass(), p.getCharge(), - p.vector().x(), p.vector().y(), p.vector().z(), - p.vertex().x(), p.vertex().y(), p.vertex().z() - ); - detectorEvent.getPhysicsEvent().addParticle(part); - } else { - Particle part = Particle.createWithPid(p.getPid(), - p.vector().x(), p.vector().y(), p.vector().z(), - p.vertex().x(), p.vertex().y(), p.vertex().z() - ); - detectorEvent.getPhysicsEvent().addParticle(part); - } - } - - if (event.hasBank("MC::Particle") == true) { - DataBank bank = event.getBank("MC::Particle"); - detectorEvent.getGeneratedEvent().clear(); - int nrows = bank.rows(); - for (int row = 0; row < nrows; row++) { - detectorEvent.getGeneratedEvent().addGeneratedParticle( - bank.getInt("pid", row), - bank.getFloat("px", row), - bank.getFloat("py", row), - bank.getFloat("pz", row), - bank.getFloat("vx", row), - bank.getFloat("vy", row), - bank.getFloat("vz", row) - ); - detectorEvent.getPhysicsEvent().addGeneratedParticle( - bank.getInt("pid", row), - bank.getFloat("px", row), - bank.getFloat("py", row), - bank.getFloat("pz", row), - bank.getFloat("vx", row), - bank.getFloat("vy", row), - bank.getFloat("vz", row) - ); - } - } - return detectorEvent; - } - /** * creates a bank with particles information. * diff --git a/common-tools/clas-reco/src/main/java/org/jlab/clas/detector/DetectorEvent.java b/common-tools/clas-reco/src/main/java/org/jlab/clas/detector/DetectorEvent.java index b364b31877..40bafc8de2 100644 --- a/common-tools/clas-reco/src/main/java/org/jlab/clas/detector/DetectorEvent.java +++ b/common-tools/clas-reco/src/main/java/org/jlab/clas/detector/DetectorEvent.java @@ -3,11 +3,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import org.jlab.clas.physics.Particle; -import org.jlab.clas.physics.PhysicsEvent; import org.jlab.detector.base.DetectorType; -import org.jlab.io.base.DataEvent; - /** * @@ -16,56 +12,19 @@ public class DetectorEvent { private final List particleList = new ArrayList<>(); - private final PhysicsEvent generatedEvent = new PhysicsEvent(); - private final PhysicsEvent reconstructedEvent = new PhysicsEvent(); private DetectorHeader eventHeader = new DetectorHeader(); - public DetectorEvent(){ - - } + public DetectorEvent(){} public void sort() { Collections.sort(particleList); setAssociation(); } - public static DetectorEvent readDetectorEvent(DataEvent event){ - return DetectorData.readDetectorEvent(event); - } - public DetectorHeader getEventHeader() { return eventHeader; } - public PhysicsEvent getGeneratedEvent(){ - return this.generatedEvent; - } - - public PhysicsEvent getPhysicsEvent(){ - return this.reconstructedEvent; - } - - public DetectorParticle matchedParticle(int pid, int skip){ - Particle particle = generatedEvent.getParticleByPid(pid, skip); - if(particle.p()<0.0000001) return new DetectorParticle(); - return matchedParticle(particle); - } - - public DetectorParticle matchedParticle(Particle p){ - double compare = 100.0; - int index = -1; - for(int i = 0; i < particleList.size();i++){ - if(p.charge()==particleList.get(i).getCharge()){ - if(particleList.get(i).compare(p.vector().vect())0.2) return new DetectorParticle(); - return this.particleList.get(index); - } - public void clear(){ this.particleList.clear(); } @@ -180,14 +139,6 @@ public void setAssociation(){ } } - public void addParticle(double px, double py, double pz, - double vx, double vy, double vz){ - DetectorParticle particle = new DetectorParticle(); - particle.vector().setXYZ(px, py, pz); - particle.vertex().setXYZ(vx, vy, vz); - this.addParticle(particle); - } - public DetectorParticle getTriggerParticle() { for (int ii=0; iiEBConstants.HTCC_PION_THRESHOLD; final boolean ltccPionThreshold = p.vector().mag()>EBConstants.LTCC_PION_THRESHOLD; - final boolean ltccKaonThreshold = p.vector().mag()>EBConstants.LTCC_KAON_THRESHOLD; switch(abs(pid)) { case 11: @@ -594,12 +588,10 @@ else if (p.getCharge()!=0) { */ public void finalizePID(DetectorParticle p, int pid) { p.setPid(pid); - theoryPID = pid; PIDquality = this.PIDQuality(p, pid); p.setPidQuality(PIDquality); } - } } diff --git a/reconstruction/eb/src/main/java/org/jlab/service/eb/EBio.java b/reconstruction/eb/src/main/java/org/jlab/service/eb/EBio.java index a6bc117a44..b777c2ae77 100644 --- a/reconstruction/eb/src/main/java/org/jlab/service/eb/EBio.java +++ b/reconstruction/eb/src/main/java/org/jlab/service/eb/EBio.java @@ -2,13 +2,11 @@ import java.util.ArrayList; import java.util.List; -import org.jlab.detector.base.DetectorType; import org.jlab.io.base.DataBank; import org.jlab.io.base.DataEvent; import org.jlab.io.evio.EvioDataBank; -import org.jlab.io.evio.EvioFactory; -import org.jlab.clas.detector.*; - +import org.jlab.clas.detector.DetectorHeader; +import org.jlab.clas.detector.DetectorParticle; import org.jlab.rec.eb.EBScalers; import org.jlab.rec.eb.EBCCDBEnum; import org.jlab.rec.eb.EBCCDBConstants; @@ -101,7 +99,6 @@ public static List readTracks(DataEvent event, int type){ return dpList; } - public static List readCentralTracks(DataEvent event){ List dpList = new ArrayList<>(); if(event.hasBank("CVTRec::Tracks")==true){ @@ -133,200 +130,5 @@ public static List readCentralTracks(DataEvent event){ return dpList; } - public static boolean isTimeBased(DataEvent de){ - boolean tb = false; - if(de.hasBank("TimeBasedTrkg::TBHits")==true){ - return true; - } - return tb; - } - - public static List readTracks(DataEvent event){ - return readTracks(event,EBio.TRACKS_TB); - } - - - /** - * Creates a DataBank from list of particles. type will - * indicate which bank to create type=TRACKS_HB will create - * a EVENTHB bank, and type=TRACKS_TB will create a bank EVENTTB. - * @param particles list of detector particles - * @param type type of the bank to create (Time based or Hit based) - * @return - */ - public static DataBank writeTraks(List particles, int type){ - - String bankName = "EVENTHB::particle"; - - switch (type){ - case 1 : bankName = "EVENTHB::particle"; break; - case 2 : bankName = "EVENTTB::particle"; break; - default: break; - } - - EvioDataBank bank = EvioFactory.createBank(bankName, particles.size()); - - for(int i = 0; i < particles.size(); i++){ - - DetectorParticle p = particles.get(i); - - bank.setInt("charge", i, p.getCharge()); - bank.setInt("pid", i, p.getPid()); - - bank.setFloat("beta",i, (float) p.getBeta()); - - bank.setFloat("px", i, (float) p.vector().x()); - bank.setFloat("py", i, (float) p.vector().y()); - bank.setFloat("pz", i, (float) p.vector().z()); - - bank.setFloat("vx", i, (float) p.vertex().x()); - bank.setFloat("vy", i, (float) p.vertex().y()); - bank.setFloat("vz", i, (float) p.vertex().z()); - } - - return bank; - } - - //write cherenkov responses - - public static DataBank writeResponses(List responses, int type ){ - String bankName = "EVENTHB::particle"; - - switch (type){ - case 1 : bankName = "EVENTHB::detector"; break; - case 2 : bankName = "EVENTTB::detector"; break; - default: break; - } - - EvioDataBank bank = EvioFactory.createBank(bankName, responses.size()); - - for(int i = 0; i < responses.size();i++){ - bank.setInt("pindex", i,responses.get(i).getAssociation()); - bank.setInt("index", i,i); - bank.setInt("detector", i, responses.get(i).getDescriptor().getType().getDetectorId()); - bank.setInt("sector", i, responses.get(i).getDescriptor().getSector()); - bank.setInt("layer", i, responses.get(i).getDescriptor().getLayer()); - - bank.setFloat("X", i, (float) responses.get(i).getPosition().x()); - bank.setFloat("Y", i, (float) responses.get(i).getPosition().y()); - bank.setFloat("Z", i, (float) responses.get(i).getPosition().z()); - - bank.setFloat("hX", i, (float) responses.get(i).getMatchedPosition().x()); - bank.setFloat("hY", i, (float) responses.get(i).getMatchedPosition().y()); - bank.setFloat("hZ", i, (float) responses.get(i).getMatchedPosition().z()); - - bank.setFloat("path", i, (float) responses.get(i).getPath()); - bank.setFloat("time", i, (float) responses.get(i).getTime()); - bank.setFloat("energy", i, (float) responses.get(i).getEnergy()); - - } - return bank; - } - - public static DataBank writeCherenkovResponses(List responses, int type ) { - String bankName = "EVENTHB::particle"; - - switch (type){ - case 1 : bankName = "EVENTHB::cherenkov"; break; - case 2 : bankName = "EVENTTB::cherenkov"; break; - default: break; - } - EvioDataBank bank = EvioFactory.createBank(bankName, responses.size()); - for(int i = 0; i < responses.size();i++){ - bank.setInt("pindex", i,responses.get(i).getAssociation()); - bank.setInt("index", i,i); - bank.setFloat("X", i, (float) responses.get(i).getHitPosition().x()); - bank.setFloat("Y", i, (float) responses.get(i).getHitPosition().y()); - bank.setFloat("Z", i, (float) responses.get(i).getHitPosition().z()); - bank.setFloat("time", i, (float) responses.get(i).getTime()); - bank.setFloat("nphe", i, (float) responses.get(i).getEnergy()); - } - return bank; - } - - public static DataBank writeTrigger(DetectorEvent event){ - String bankName = "Trigger::info"; - EvioDataBank bank = EvioFactory.createBank(bankName, 1); - //bank.setDouble("starttime", 0, event.getEventTrigger().getStartTime()); - //bank.setDouble("vertextime",0, event.getEventTrigger().getVertexTime()); - //bank.setDouble("rftime", 0, event.getEventTrigger().getRFTime()); - //bank.setInt("id",0,event.getEventTrigger().getTriggerID()); - return bank; - } - - public static List readECAL(DataEvent event){ - List ecal = new ArrayList<>(); - if(event.hasBank("ECDetector::clusters")==true){ - EvioDataBank bank = (EvioDataBank) event.getBank("ECDetector::clusters"); - int nrows = bank.rows(); - for(int i = 0; i < nrows; i++){ - int sector = bank.getInt("sector", i); - int layer = bank.getInt("layer", i); - DetectorResponse resp = new DetectorResponse(); - resp.getDescriptor().setType(DetectorType.ECAL); - resp.getDescriptor().setSectorLayerComponent(sector, layer, 0); - resp.setPosition( - bank.getDouble("X", i),bank.getDouble("Y", i), - bank.getDouble("Z", i) - ); - resp.setTime(bank.getDouble("time", i)); - resp.setEnergy(bank.getDouble("energy", i)); - ecal.add(resp); - } - } - return ecal; - } - - public static List readFTOF(DataEvent event){ - List ftof = new ArrayList<>(); - if(event.hasBank("FTOFRec::ftofhits")==true){ - EvioDataBank bank = (EvioDataBank) event.getBank("FTOFRec::ftofhits"); - int nrows = bank.rows(); - for(int i = 0; i < nrows; i++){ - int sector = bank.getInt("sector", i); - int layer = bank.getInt("panel_id", i); - int paddle = bank.getInt("paddle_id", i); - if(layer==2||layer==3){ - DetectorResponse resp = new DetectorResponse(); - resp.getDescriptor().setType(DetectorType.FTOF); - resp.getDescriptor().setSectorLayerComponent(sector, layer, paddle); - resp.setPosition( - bank.getFloat("x", i),bank.getFloat("y", i), - bank.getFloat("z", i) - ); - resp.setTime(bank.getFloat("time", i)); - resp.setEnergy(bank.getFloat("energy", i)); - ftof.add(resp); - } - } - } - return ftof; - } - - public static List readHTCC(DataEvent event) { - List htcc = new ArrayList<>(); - if(event.hasBank("HTCCRec::clusters")==true){ - - EvioDataBank bank = (EvioDataBank) event.getBank("HTCCRec::clusters"); - int nrows = bank.rows(); - for(int i = 0; i < nrows; i++){ - int nphe = bank.getInt("nphe", i); - double dtheta = bank.getDouble("dtheta",i); - double dphi = bank.getDouble("dphi",i); - double x = bank.getDouble("x",i); - double y = bank.getDouble("y",i); - double z = bank.getDouble("z",i); - double time = bank.getFloat("time",i); - CherenkovResponse che = new CherenkovResponse(dtheta,dphi); - che.setHitPosition(x, y, z); - che.setEnergy(nphe); - che.setTime(time); - che.getDescriptor().setType(DetectorType.HTCC); - htcc.add(che); - - } - } - return htcc; - } } 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 2b4977f734..530fe94e31 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 @@ -4,9 +4,6 @@ import java.util.Arrays; import java.util.List; import javax.swing.JFrame; -import org.jlab.clas.detector.DetectorData; -import org.jlab.clas.detector.DetectorEvent; -import org.jlab.clas.physics.PhysicsEvent; import org.jlab.clas.reco.ReconstructionEngine; import org.jlab.geom.prim.Vector3D; import org.jlab.groot.data.H1F; @@ -124,8 +121,6 @@ public static void main (String arg[]) { DataEvent event = (DataEvent) reader.getNextEvent(); cal.processDataEvent(event); - DetectorEvent detectorEvent = DetectorData.readDetectorEvent(event); - PhysicsEvent gen = detectorEvent.getGeneratedEvent(); if(event.hasBank("FTCAL::clusters")) { DataBank bank = event.getBank("FTCAL::clusters"); int nrows = bank.rows(); @@ -137,11 +132,11 @@ public static void main (String arg[]) { /// h5.fill(bank.getFloat("time",i)-124.25); // 124.25 offet for MC data h5.fill(bank.getFloat("time", i)); h6.fill(cluster.x(), cluster.y()); - if(gen.countGenerated() != 0){ - h2.fill(bank.getFloat("energy",i)-gen.getGeneratedParticle(0).vector().p()); - h3.fill(Math.toDegrees(cluster.theta()-gen.getGeneratedParticle(0).theta())); - h4.fill(Math.toDegrees(cluster.phi()-gen.getGeneratedParticle(0).phi())); -} + //if(gen.countGenerated() != 0){ + // h2.fill(bank.getFloat("energy",i)-gen.getGeneratedParticle(0).vector().p()); + // h3.fill(Math.toDegrees(cluster.theta()-gen.getGeneratedParticle(0).theta())); + // h4.fill(Math.toDegrees(cluster.phi()-gen.getGeneratedParticle(0).phi())); + //} } } } @@ -153,12 +148,11 @@ public static void main (String arg[]) { canvas.cd(1); canvas.draw(h2); canvas.cd(2); canvas.draw(h3); canvas.cd(3); canvas.draw(h4); - canvas.cd(4); canvas.draw(h6); + canvas.cd(4); canvas.draw(h6); canvas.cd(5); canvas.draw(h5); frame.add(canvas); frame.setLocationRelativeTo(null); - frame.setVisible(true); + 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 2b51115e5d..08d79eaaac 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 @@ -106,14 +106,12 @@ public static void main (String arg[]) { DataEvent event = (DataEvent) reader.getNextEvent(); cal.processDataEventUser(event); - DetectorEvent detectorEvent = DetectorData.readDetectorEvent(event); - PhysicsEvent gen = detectorEvent.getGeneratedEvent(); if(event.hasBank("FTHODO::clusters")) { DataBank bank = event.getBank("FTHODO::clusters"); int nrows = bank.rows(); for(int i=0; i clusters = trk.processDataEventAndGetClusters(event); int nStripsInClusters = 0; - DetectorEvent detectorEvent = DetectorData.readDetectorEvent(event); - PhysicsEvent gen = detectorEvent.getGeneratedEvent(); double maxcomp1=-100, maxcomp2=-100, maxcomp3=-100, maxcomp4=-100; int imax1 = -1, imax2 = -1, imax3 = -1, imax4 = -1; if(event.hasBank("FTTRK::hits")) { 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 753f5faa0b..b527e17de0 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 @@ -215,8 +215,6 @@ public static void main (String arg[]) { clusters = trk.processDataEventAndGetClusters(event); int nStripsInClusters = 0; - DetectorEvent detectorEvent = DetectorData.readDetectorEvent(event); - PhysicsEvent gen = detectorEvent.getGeneratedEvent(); double maxcomp1=-100, maxcomp2=-100, maxcomp3=-100, maxcomp4=-100; int imax1 = -1, imax2 = -1, imax3 = -1, imax4 = -1; if(event.hasBank("FTTRK::hits")) { diff --git a/reconstruction/mu/src/main/java/org/jlab/rec/mucal/MUCALEngine.java b/reconstruction/mu/src/main/java/org/jlab/rec/mucal/MUCALEngine.java index 463c1a34bd..5c659ce735 100644 --- a/reconstruction/mu/src/main/java/org/jlab/rec/mucal/MUCALEngine.java +++ b/reconstruction/mu/src/main/java/org/jlab/rec/mucal/MUCALEngine.java @@ -127,8 +127,6 @@ public static void main (String arg[]) { DataEvent event = (DataEvent) reader.getNextEvent(); cal.processDataEvent(event); - DetectorEvent detectorEvent = DetectorData.readDetectorEvent(event); - PhysicsEvent gen = detectorEvent.getGeneratedEvent(); if(event.hasBank("MUCAL::clusters")) { DataBank bank = event.getBank("MUCAL::clusters"); int nrows = bank.rows(); @@ -140,11 +138,11 @@ public static void main (String arg[]) { /// h5.fill(bank.getFloat("time",i)-124.25); // 124.25 offet for MC data h5.fill(bank.getFloat("time", i)); h6.fill(cluster.x(), cluster.y()); - if(gen.countGenerated() != 0){ - h2.fill(bank.getFloat("energy",i)-gen.getGeneratedParticle(0).vector().p()); - h3.fill(Math.toDegrees(cluster.theta()-gen.getGeneratedParticle(0).theta())); - h4.fill(Math.toDegrees(cluster.phi()-gen.getGeneratedParticle(0).phi())); - } + // if(gen.countGenerated() != 0){ + // h2.fill(bank.getFloat("energy",i)-gen.getGeneratedParticle(0).vector().p()); + // h3.fill(Math.toDegrees(cluster.theta()-gen.getGeneratedParticle(0).theta())); + // h4.fill(Math.toDegrees(cluster.phi()-gen.getGeneratedParticle(0).phi())); + // } } } } diff --git a/reconstruction/mu/src/main/java/org/jlab/rec/muhd/MUHDEngine.java b/reconstruction/mu/src/main/java/org/jlab/rec/muhd/MUHDEngine.java index 806bd92856..e2e77b3141 100644 --- a/reconstruction/mu/src/main/java/org/jlab/rec/muhd/MUHDEngine.java +++ b/reconstruction/mu/src/main/java/org/jlab/rec/muhd/MUHDEngine.java @@ -109,14 +109,14 @@ public static void main (String arg[]) { DataEvent event = (DataEvent) reader.getNextEvent(); cal.processDataEvent(event); - DetectorEvent detectorEvent = DetectorData.readDetectorEvent(event); - PhysicsEvent gen = detectorEvent.getGeneratedEvent(); + //DetectorEvent detectorEvent = DetectorData.readDetectorEvent(event); + //PhysicsEvent gen = detectorEvent.getGeneratedEvent(); if(event.hasBank("MUHD::clusters")) { DataBank bank = event.getBank("MUHD::clusters"); int nrows = bank.rows(); for(int i=0; i