Commit in lcsim/src/org/lcsim/contrib/Pelham/Example1 on MAIN | |||
AnalysisDriver2.java | -193 | 1.2 removed | |
HistogramAnalysisDriver.java | -137 | 1.5 removed | |
MyStrategy.java | -265 | 1.2 removed | |
MyTrackerDriver.java | -57 | 1.2 removed | |
SeedTrackerDiagnostics.java | -249 | 1.3 removed | |
VSExampleDriver.java | -128 | 1.2 removed | |
VSExampleSegmenter.java | -64 | 1.2 removed | |
-1093 |
JM: moving contrib.Pelham.Example1 to lcsim-contrib
diff -N AnalysisDriver2.java --- AnalysisDriver2.java 27 Aug 2008 18:04:03 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,193 +0,0 @@
-/* - * AnalysisDriver.java - * - * Created on February 11, 2008, 11:47 AM - * - */ - -package org.lcsim.contrib.Pelham.Example1; - -import org.lcsim.recon.tracking.seedtracker.analysis.HelixParamHistograms; -import hep.aida.IHistogram1D; -import java.util.List; -import java.util.Map; -import java.util.HashMap; - -import org.lcsim.recon.tracking.seedtracker.SeedTrack; -import org.lcsim.recon.tracking.seedtracker.SeedCandidate; -import org.lcsim.fit.helicaltrack.HelicalTrackFit; -import org.lcsim.fit.helicaltrack.HelicalTrackHit; -import org.lcsim.event.EventHeader; -import org.lcsim.event.Track; -import org.lcsim.event.MCParticle; -import org.lcsim.recon.tracking.seedtracker.analysis.HelixParamCalculator; -import org.lcsim.util.aida.AIDA; -import org.lcsim.util.Driver; - - -/** - * - * @author Richard Partridge - * @version 1.0 - */ -public class AnalysisDriver2 extends Driver { - private AIDA aida = AIDA.defaultInstance(); - private IHistogram1D h1,h2,h3,h4,h5,h6; - - /** Creates a new instance of AnalysisDriver */ - public AnalysisDriver2() { - h1 = aida.histogramFactory().createHistogram1D("Dat-Phi", 200, -20, 20); - h2 = aida.histogramFactory().createHistogram1D("Dat-Radius", 200, -10000, 10000); - h3 = aida.histogramFactory().createHistogram1D("Dat-Z", 200, -20, 20); - h4 = aida.histogramFactory().createHistogram1D("MC-Phi", 200, -20, 20); - h5 = aida.histogramFactory().createHistogram1D("MC-Radius", 200, -10000, 10000); - h6 = aida.histogramFactory().createHistogram1D("MC-Z", 200, -20, 20); - } - - /** - * Process the current event - * @param event EventHeader for this event - */ - public void process(EventHeader event) { - List<Track> tracklist = event.getTracks(); - Map<MCParticle, Track> trkmap = new HashMap<MCParticle, Track>(); - - for (Track track : tracklist) { - Map<MCParticle, Integer> mcmap = new HashMap<MCParticle, Integer>(); - if (track instanceof SeedTrack) { - SeedCandidate seed = ((SeedTrack) track).getSeedCandidate(); - for (HelicalTrackHit hit : seed.getHits()) { - HelicalTrackFit helix = seed.getHelix(); - MCParticle particle = hit.getMCParticles().get(0); - - - List<MCParticle> mclist = hit.getMCParticles(); - for (MCParticle mcp : mclist) { - if (mcmap.containsKey(mcp)) { - int entries = mcmap.get(mcp) + 1; - mcmap.put(mcp, entries); - } else - mcmap.put(mcp, 1); - } - } - MCParticle mcmatch = null; - int nmatch = 0; - for (Map.Entry<MCParticle, Integer> me : mcmap.entrySet()) { - if (me.getValue() > nmatch) { - nmatch = me.getValue(); - mcmatch = me.getKey(); - } - } - if (trkmap.containsKey(mcmatch)) System.out.println("more than one track associated with an MCParticle!!"); - else trkmap.put(mcmatch, track); - } - } - - List<MCParticle> mclist = event.getMCParticles(); - for (MCParticle mcp : mclist) { - if (mcp.getCharge() == 0) continue; - if (mcp.getGeneratorStatus() != mcp.FINAL_STATE) continue; - - if (trkmap.containsKey(mcp)) { - Track trk = trkmap.get(mcp); - if (trk instanceof SeedTrack) { - SeedTrack strk = (SeedTrack) trk; - HelicalTrackFit fit = strk.getSeedCandidate().getHelix(); - - //Class to draw histrogram - HelixParamHistograms draw = new HelixParamHistograms(fit,mcp,event); - - - //---Histrograms------------Histograms--------------Histrograms---\\ - /* - if(mcp.getCharge()>0) - { - draw.DrawDataPositive(); - draw.DrawMCPositive(); - draw.DrawResidualPositive(); - draw.DrawPullPositive(); - } - else - { - draw.DrawDataNegative(); - draw.DrawMCNegative(); - draw.DrawResidualNegative(); - draw.DrawPullNegative(); - } - draw.DrawResidual(); - draw.DrawPull(); - */ - //helix from mc partcle for layer hit 1st - //simtracker hit where is nrg - //pos from tracker hit 2nd - //compare fitted helix to mcparticle hits r phi z - //fit hit locations compared to - - //Comparing hit locations - - HelixParamCalculator calc = new HelixParamCalculator(mcp,event); - //find x0,y0 coordinates - double x0 = -1*calc.getDCA()*Math.sin(calc.getPhi0()); - double y0 = calc.getDCA()*Math.sin(calc.getPhi0()); - //varible for easier calculation temp = C*s/2 - double temp = ((calc.getMCOmega()*calc.getArcLength())/2); - //find x,y coordinates - double x = x0 + (((calc.getArcLength()*Math.sin(temp))/temp)*Math.cos(calc.getPhi0()-temp)); - double y = y0 + (((calc.getArcLength()*Math.sin(temp))/temp)*Math.sin(calc.getPhi0()-temp)); - - //Find MC phi, MC radius (r), MC z coordinate - double phi = Math.atan2(Math.sin(calc.getPhi0()-calc.getMCOmega()*(x-x0)),Math.cos(calc.getPhi0()+calc.getMCOmega()*(y-y0))); - double r = calc.getRadius(); - double z = calc.getZ0() + calc.getArcLength()*calc.getSlopeSZPlane(); - - //find fit x0,y0 - double datx0 = -1*fit.dca()*Math.sin(fit.phi0()); - double daty0 = fit.dca()*Math.sin(fit.phi0()); - List<HelicalTrackHit> hit = strk.getSeedCandidate().getHits(); - double xh,yh,s,phih,rh,zh; - - for(int i=0;i<hit.size();i++) - { - //x,y coordinates from fit - xh = hit.get(i).x(); - yh = hit.get(i).y(); - //arclength - s = (xh-x0)*Math.cos(fit.phi0())+(yh-y0)*Math.sin(fit.phi0()); - //phi from fit - phih = Math.atan2(Math.sin(fit.phi0()-fit.curvature()*(xh-datx0)),Math.cos(fit.phi0()+fit.curvature()*(yh-daty0))); - //radius from fit - rh = fit.R(); - //z coordinate - zh = fit.z0() + s*fit.slope(); - //put into histogram - h1.fill(phih); - h2.fill(rh); - h3.fill(zh); - } - h4.fill(phi); - h5.fill(r); - h6.fill(z); - - - aida.histogramFactory().subtract("Residual-Phi", h1, h4); - aida.histogramFactory().subtract("Residual-R", h2, h5); - aida.histogramFactory().subtract("Residual-Z", h3, h6); - - - } - } - if (!trkmap.containsKey(mcp)) { - List<HelicalTrackHit> hits = event.get(HelicalTrackHit.class, "HelicalTrackHits"); - if (hits.size() > 6) { - System.out.println("Failed to find track. Found "+hits.size()+" hits @ theta = " - +180.*Math.acos(mcp.getMomentum().z() / mcp.getMomentum().magnitude())/Math.PI); - for (HelicalTrackHit hit : hits) { - System.out.println("Hit in "+hit.getLayerIdentifier()+" at x= "+hit.x()+" y= "+hit.y()+" z= "+hit.z()); - } - } - } - } - - return; - } -}
\ No newline at end of file
diff -N HistogramAnalysisDriver.java --- HistogramAnalysisDriver.java 27 Aug 2008 18:04:03 -0000 1.5 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,137 +0,0 @@
-/* - * AnalysisDriver.java - * - * Created on February 11, 2008, 11:47 AM - * - */ - -package org.lcsim.contrib.Pelham.Example1; - - -import org.lcsim.recon.tracking.seedtracker.analysis.TrackHitHistograms; -import org.lcsim.recon.tracking.seedtracker.analysis.HelixParamHistograms; -import java.util.List; -import java.util.Map; -import java.util.HashMap; - -import org.lcsim.recon.tracking.seedtracker.SeedTrack; -import org.lcsim.recon.tracking.seedtracker.SeedCandidate; -import org.lcsim.recon.tracking.seedtracker.analysis.AnalysisUtils; -import org.lcsim.recon.tracking.seedtracker.analysis.EfficiencyHistograms; -import org.lcsim.fit.helicaltrack.HelicalTrackFit; -import org.lcsim.fit.helicaltrack.HelicalTrackHit; -import org.lcsim.recon.tracking.seedtracker.analysis.HelixParamCalculator; -import org.lcsim.recon.tracking.seedtracker.analysis.PurityHistograms; -import org.lcsim.event.EventHeader; -import org.lcsim.event.Track; -import org.lcsim.event.MCParticle; -import org.lcsim.util.aida.AIDA; -import org.lcsim.util.Driver; - - -/** - * - * @author Richard Partridge - * @version 1.0 - */ -public class HistogramAnalysisDriver extends Driver { - private AIDA aida = AIDA.defaultInstance(); - /** Creates a new instance of AnalysisDriver */ - public HistogramAnalysisDriver() { - - } - - /** - * Process the current event - * @param event EventHeader for this event - */ - PurityHistograms draw3 = new PurityHistograms(); - EfficiencyHistograms draw4 = new EfficiencyHistograms(); - public void process(EventHeader event){ - - - List<Track> tracklist = event.getTracks(); - Map<MCParticle, Track> trkmap = new HashMap<MCParticle, Track>(); - - for (Track track : tracklist) { - Map<MCParticle, Integer> mcmap = new HashMap<MCParticle, Integer>(); - if (track instanceof SeedTrack) { - SeedCandidate seed = ((SeedTrack) track).getSeedCandidate(); - for (HelicalTrackHit hit : seed.getHits()) { - - - - - List<MCParticle> mclist = hit.getMCParticles(); - for (MCParticle mcp : mclist) { - if (mcmap.containsKey(mcp)) { - int entries = mcmap.get(mcp) + 1; - mcmap.put(mcp, entries); - } else - mcmap.put(mcp, 1); - } - } - MCParticle mcmatch = null; - int nmatch = 0; - for (Map.Entry<MCParticle, Integer> me : mcmap.entrySet()) { - if (me.getValue() > nmatch) { - nmatch = me.getValue(); - mcmatch = me.getKey(); - } - } - if (trkmap.containsKey(mcmatch)) System.out.println("more than one track associated with an MCParticle!!"); - else trkmap.put(mcmatch, track); - } - } - List<MCParticle> mclist = event.getMCParticles(); - - for (MCParticle mcp : mclist) { - if (mcp.getCharge() == 0) continue; - if (mcp.getGeneratorStatus() != mcp.FINAL_STATE) continue; - - if (trkmap.containsKey(mcp)) { - Track trk = trkmap.get(mcp); - if (trk instanceof SeedTrack) { - SeedTrack strk = (SeedTrack) trk; - HelicalTrackFit fit = strk.getSeedCandidate().getHelix(); - - //Class to draw histrogram - HelixParamHistograms draw = new HelixParamHistograms(fit,mcp,event); - HelixParamCalculator calc = new HelixParamCalculator(mcp, 5); - AnalysisUtils util = new AnalysisUtils(); - - //---Helix Parameter Histrograms------------Helix Parameter Histrograms---\\ - aida.histogram1D("p", 200, 0, 50).fill(calc.getMCMomentum()); - if(mcp.getCharge()>0) - { - draw.DrawResidualPositive(); - draw.DrawPullPositive(); - } - else - { - draw.DrawResidualNegative(); - draw.DrawPullNegative(); - } - draw.DrawResidual(); - draw.DrawPull(); - - - TrackHitHistograms draw2 = new TrackHitHistograms(fit, mcp,event); - - //---MCParticle vs HelicalTrackFit----------------------------MCParticle vs HelicalTrackFit--- - draw2.drawMCParticlevHelicalTrackHit(); - - //---SimTracker vs HelicalTrackFit---------------------------SimTracker vs HelicalTrackFit--- - draw2.drawSimTrackervHelicalTrack(); - - //---Purity---------------------------Purity--- - draw3.drawPurityHistograms(mcp, trk); - - } - } - //--Efficiency---------------------------Efficiency--- - draw4.drawEfficiencyHistograms(mcp,event); - } - } - } -
diff -N MyStrategy.java --- MyStrategy.java 27 Aug 2008 18:04:03 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,265 +0,0 @@
-/* - * MyStrategy.java - * - * Created on April 12, 2008, 8:42 PM - * - */ - -package org.lcsim.contrib.Pelham.Example1; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; -import org.lcsim.recon.tracking.seedtracker.SeedLayer; -import org.lcsim.recon.tracking.seedtracker.SeedLayer.SeedType; -import org.lcsim.recon.tracking.seedtracker.SeedStrategy; -import org.lcsim.recon.tracking.seedtracker.StrategyXMLUtils; -import org.lcsim.geometry.subdetector.BarrelEndcapFlag; - -public class MyStrategy { - private List<SeedStrategy> _strategylist = new ArrayList<SeedStrategy>(); - - public MyStrategy() { - - BarrelEndcapFlag barrel = BarrelEndcapFlag.BARREL; - BarrelEndcapFlag nend = BarrelEndcapFlag.ENDCAP_NORTH; - BarrelEndcapFlag send = BarrelEndcapFlag.ENDCAP_SOUTH; - - List<BarrelEndcapFlag> beflags = new ArrayList<BarrelEndcapFlag>(); - beflags.add(nend); - beflags.add(send); - - // Create an outside-in strategy for the barrel - List<SeedLayer> lyrlist = new ArrayList<SeedLayer>(); - lyrlist.add(new SeedLayer("VertexBarrel",0,barrel,SeedType.Extend)); - lyrlist.add(new SeedLayer("VertexBarrel",1,barrel,SeedType.Extend)); - lyrlist.add(new SeedLayer("VertexBarrel",2,barrel,SeedType.Extend)); - lyrlist.add(new SeedLayer("VertexBarrel",3,barrel,SeedType.Extend)); - lyrlist.add(new SeedLayer("VertexBarrel",4,barrel,SeedType.Extend)); - lyrlist.add(new SeedLayer("VertexEndcap",0,nend,SeedType.Extend)); - lyrlist.add(new SeedLayer("VertexEndcap",1,nend,SeedType.Extend)); - lyrlist.add(new SeedLayer("TrackerForward",0,nend,SeedType.Extend)); - lyrlist.add(new SeedLayer("VertexEndcap",0,send,SeedType.Extend)); - lyrlist.add(new SeedLayer("VertexEndcap",1,send,SeedType.Extend)); - lyrlist.add(new SeedLayer("TrackerForward",0,send,SeedType.Extend)); - lyrlist.add(new SeedLayer("TrackerBarrel",0,barrel,SeedType.Extend)); - lyrlist.add(new SeedLayer("TrackerBarrel",1,barrel,SeedType.Confirm)); - lyrlist.add(new SeedLayer("TrackerBarrel",2,barrel,SeedType.Seed)); - lyrlist.add(new SeedLayer("TrackerBarrel",3,barrel,SeedType.Seed)); - lyrlist.add(new SeedLayer("TrackerBarrel",4,barrel,SeedType.Seed)); - SeedStrategy outsideinbarrel = new SeedStrategy("OutsideInBarrel",lyrlist); - _strategylist.add(outsideinbarrel); - - for (BarrelEndcapFlag endcap : beflags) { - - - // Create an outside-in strategy for the disks - List<SeedLayer> lyrlist2 = new ArrayList<SeedLayer>(); - lyrlist2.add(new SeedLayer("VertexBarrel",0,barrel,SeedType.Extend)); - lyrlist2.add(new SeedLayer("VertexBarrel",1,barrel,SeedType.Extend)); - lyrlist2.add(new SeedLayer("VertexBarrel",2,barrel,SeedType.Extend)); - lyrlist2.add(new SeedLayer("VertexEndcap",0,endcap,SeedType.Extend)); - lyrlist2.add(new SeedLayer("VertexEndcap",1,endcap,SeedType.Extend)); - lyrlist2.add(new SeedLayer("VertexEndcap",2,endcap,SeedType.Extend)); - lyrlist2.add(new SeedLayer("VertexEndcap",3,endcap,SeedType.Extend)); - lyrlist2.add(new SeedLayer("TrackerForward",0,endcap,SeedType.Extend)); - lyrlist2.add(new SeedLayer("TrackerForward",1,endcap,SeedType.Extend)); - lyrlist2.add(new SeedLayer("TrackerBarrel",0,barrel,SeedType.Extend)); - lyrlist2.add(new SeedLayer("TrackerBarrel",1,barrel,SeedType.Confirm)); - lyrlist2.add(new SeedLayer("TrackerEndcap",0,endcap,SeedType.Confirm)); - lyrlist2.add(new SeedLayer("TrackerEndcap",1,endcap,SeedType.Seed)); - lyrlist2.add(new SeedLayer("TrackerEndcap",2,endcap,SeedType.Seed)); - lyrlist2.add(new SeedLayer("TrackerEndcap",3,endcap,SeedType.Seed)); - SeedStrategy outsideinendcap = new SeedStrategy("OutsideInEndcap",lyrlist2); - _strategylist.add(outsideinendcap); - - // Create an outside-in strategy for the disks - List<SeedLayer> lyrlist3 = new ArrayList<SeedLayer>(); - lyrlist3.add(new SeedLayer("VertexBarrel",0,barrel,SeedType.Extend)); - lyrlist3.add(new SeedLayer("VertexBarrel",1,barrel,SeedType.Extend)); - lyrlist3.add(new SeedLayer("VertexBarrel",2,barrel,SeedType.Extend)); - lyrlist3.add(new SeedLayer("VertexBarrel",3,barrel,SeedType.Extend)); - lyrlist3.add(new SeedLayer("VertexEndcap",0,endcap,SeedType.Extend)); - lyrlist3.add(new SeedLayer("VertexEndcap",1,endcap,SeedType.Extend)); - lyrlist3.add(new SeedLayer("TrackerForward",0,endcap,SeedType.Extend)); - lyrlist3.add(new SeedLayer("TrackerBarrel",0,barrel,SeedType.Extend)); - lyrlist3.add(new SeedLayer("TrackerBarrel",1,barrel,SeedType.Confirm)); - lyrlist3.add(new SeedLayer("TrackerBarrel",2,barrel,SeedType.Seed)); - lyrlist3.add(new SeedLayer("TrackerBarrel",3,barrel,SeedType.Seed)); - lyrlist3.add(new SeedLayer("TrackerEndcap",3,endcap,SeedType.Seed)); - SeedStrategy outsideinendcap3 = new SeedStrategy("OutsideInEndcap3",lyrlist3); - _strategylist.add(outsideinendcap3); - - // Create an outside-in strategy for the disks - List<SeedLayer> lyrlist4 = new ArrayList<SeedLayer>(); - lyrlist4.add(new SeedLayer("VertexBarrel",0,barrel,SeedType.Extend)); - lyrlist4.add(new SeedLayer("VertexBarrel",1,barrel,SeedType.Extend)); - lyrlist4.add(new SeedLayer("VertexBarrel",2,barrel,SeedType.Extend)); - lyrlist4.add(new SeedLayer("VertexBarrel",3,barrel,SeedType.Extend)); - lyrlist4.add(new SeedLayer("VertexEndcap",0,endcap,SeedType.Extend)); - lyrlist4.add(new SeedLayer("VertexEndcap",1,endcap,SeedType.Extend)); - lyrlist4.add(new SeedLayer("VertexEndcap",2,endcap,SeedType.Extend)); - lyrlist4.add(new SeedLayer("TrackerForward",0,endcap,SeedType.Extend)); - lyrlist4.add(new SeedLayer("TrackerBarrel",0,barrel,SeedType.Extend)); - lyrlist4.add(new SeedLayer("TrackerBarrel",1,barrel,SeedType.Confirm)); - lyrlist4.add(new SeedLayer("TrackerBarrel",2,barrel,SeedType.Seed)); - lyrlist4.add(new SeedLayer("TrackerEndcap",2,endcap,SeedType.Seed)); - lyrlist4.add(new SeedLayer("TrackerEndcap",3,endcap,SeedType.Seed)); - SeedStrategy outsideinendcap4 = new SeedStrategy("OutsideInEndcap4",lyrlist4); - _strategylist.add(outsideinendcap4); - - // Create an outside-in strategy for the disks - List<SeedLayer> lyrlist5 = new ArrayList<SeedLayer>(); - lyrlist5.add(new SeedLayer("VertexBarrel",0,barrel,SeedType.Extend)); - lyrlist5.add(new SeedLayer("VertexBarrel",1,barrel,SeedType.Extend)); - lyrlist5.add(new SeedLayer("VertexBarrel",2,barrel,SeedType.Extend)); - lyrlist5.add(new SeedLayer("VertexEndcap",0,endcap,SeedType.Extend)); - lyrlist5.add(new SeedLayer("VertexEndcap",1,endcap,SeedType.Extend)); - lyrlist5.add(new SeedLayer("VertexEndcap",2,endcap,SeedType.Extend)); - lyrlist5.add(new SeedLayer("TrackerForward",0,endcap,SeedType.Extend)); - lyrlist5.add(new SeedLayer("TrackerBarrel",0,barrel,SeedType.Extend)); - lyrlist5.add(new SeedLayer("TrackerBarrel",1,barrel,SeedType.Confirm)); - lyrlist5.add(new SeedLayer("TrackerEndcap",1,endcap,SeedType.Seed)); - lyrlist5.add(new SeedLayer("TrackerEndcap",2,endcap,SeedType.Seed)); - lyrlist5.add(new SeedLayer("TrackerEndcap",3,endcap,SeedType.Seed)); - SeedStrategy outsideinendcap5 = new SeedStrategy("OutsideInEndcap5",lyrlist5); - _strategylist.add(outsideinendcap5); - - // Create an outside-in strategy for the disks - List<SeedLayer> lyrlist6 = new ArrayList<SeedLayer>(); - lyrlist6.add(new SeedLayer("VertexBarrel",0,barrel,SeedType.Extend)); - lyrlist6.add(new SeedLayer("VertexBarrel",1,barrel,SeedType.Extend)); - lyrlist6.add(new SeedLayer("VertexEndcap",0,endcap,SeedType.Extend)); - lyrlist6.add(new SeedLayer("VertexEndcap",1,endcap,SeedType.Extend)); - lyrlist6.add(new SeedLayer("VertexEndcap",2,endcap,SeedType.Extend)); - lyrlist6.add(new SeedLayer("VertexEndcap",3,endcap,SeedType.Extend)); - lyrlist6.add(new SeedLayer("TrackerForward",0,endcap,SeedType.Extend)); - lyrlist6.add(new SeedLayer("TrackerForward",1,endcap,SeedType.Confirm)); - lyrlist6.add(new SeedLayer("TrackerForward",2,endcap,SeedType.Confirm)); - lyrlist6.add(new SeedLayer("TrackerEndcap",1,endcap,SeedType.Seed)); - lyrlist6.add(new SeedLayer("TrackerEndcap",2,endcap,SeedType.Seed)); - lyrlist6.add(new SeedLayer("TrackerEndcap",3,endcap,SeedType.Seed)); - SeedStrategy outsideinendcap6 = new SeedStrategy("OutsideInEndcap6",lyrlist6); - _strategylist.add(outsideinendcap6); - - // Create an outside-in strategy for the disks - List<SeedLayer> lyrlist7 = new ArrayList<SeedLayer>(); - lyrlist7.add(new SeedLayer("VertexBarrel",0,barrel,SeedType.Extend)); - lyrlist7.add(new SeedLayer("VertexBarrel",1,barrel,SeedType.Extend)); - lyrlist7.add(new SeedLayer("VertexEndcap",0,endcap,SeedType.Extend)); - lyrlist7.add(new SeedLayer("VertexEndcap",1,endcap,SeedType.Extend)); - lyrlist7.add(new SeedLayer("VertexEndcap",2,endcap,SeedType.Extend)); - lyrlist7.add(new SeedLayer("VertexEndcap",3,endcap,SeedType.Extend)); - lyrlist7.add(new SeedLayer("TrackerForward",0,endcap,SeedType.Extend)); - lyrlist7.add(new SeedLayer("TrackerForward",1,endcap,SeedType.Confirm)); - lyrlist7.add(new SeedLayer("TrackerForward",2,endcap,SeedType.Seed)); - lyrlist7.add(new SeedLayer("TrackerEndcap",2,endcap,SeedType.Seed)); - lyrlist7.add(new SeedLayer("TrackerEndcap",3,endcap,SeedType.Seed)); - SeedStrategy outsideinendcap7 = new SeedStrategy("OutsideInEndcap7",lyrlist7); - _strategylist.add(outsideinendcap7); - - // Create an inside out for the forward region - List<SeedLayer> lyrlist8 = new ArrayList<SeedLayer>(); - lyrlist8.add(new SeedLayer("VertexBarrel",0,barrel,SeedType.Extend)); - lyrlist8.add(new SeedLayer("VertexBarrel",1,barrel,SeedType.Extend)); - lyrlist8.add(new SeedLayer("VertexEndcap",0,endcap,SeedType.Seed)); - lyrlist8.add(new SeedLayer("VertexEndcap",1,endcap,SeedType.Seed)); - lyrlist8.add(new SeedLayer("VertexEndcap",2,endcap,SeedType.Seed)); - lyrlist8.add(new SeedLayer("VertexEndcap",3,endcap,SeedType.Confirm)); - lyrlist8.add(new SeedLayer("TrackerForward",0,endcap,SeedType.Extend)); - lyrlist8.add(new SeedLayer("TrackerForward",1,endcap,SeedType.Extend)); - lyrlist8.add(new SeedLayer("TrackerForward",2,endcap,SeedType.Extend)); - lyrlist8.add(new SeedLayer("TrackerEndcap",2,endcap,SeedType.Extend)); - lyrlist8.add(new SeedLayer("TrackerEndcap",3,endcap,SeedType.Extend)); - SeedStrategy outsideinendcap8 = new SeedStrategy("InsideOutEndcap1",lyrlist8); - _strategylist.add(outsideinendcap8); - - // Create an inside out for the forward region - List<SeedLayer> lyrlist9 = new ArrayList<SeedLayer>(); - lyrlist9.add(new SeedLayer("VertexBarrel",0,barrel,SeedType.Extend)); - lyrlist9.add(new SeedLayer("VertexBarrel",1,barrel,SeedType.Extend)); - lyrlist9.add(new SeedLayer("VertexEndcap",0,endcap,SeedType.Seed)); - lyrlist9.add(new SeedLayer("VertexEndcap",1,endcap,SeedType.Seed)); - lyrlist9.add(new SeedLayer("VertexEndcap",2,endcap,SeedType.Seed)); - lyrlist9.add(new SeedLayer("VertexEndcap",3,endcap,SeedType.Extend)); - lyrlist9.add(new SeedLayer("TrackerForward",0,endcap,SeedType.Confirm)); - lyrlist9.add(new SeedLayer("TrackerForward",1,endcap,SeedType.Extend)); - lyrlist9.add(new SeedLayer("TrackerForward",2,endcap,SeedType.Extend)); - lyrlist9.add(new SeedLayer("TrackerEndcap",2,endcap,SeedType.Extend)); - lyrlist9.add(new SeedLayer("TrackerEndcap",3,endcap,SeedType.Extend)); - SeedStrategy outsideinendcap9 = new SeedStrategy("InsideOutEndcap2",lyrlist9); - _strategylist.add(outsideinendcap9); - - // Create an inside out for the forward region - List<SeedLayer> lyrlist10 = new ArrayList<SeedLayer>(); - lyrlist10.add(new SeedLayer("VertexBarrel",0,barrel,SeedType.Seed)); - lyrlist10.add(new SeedLayer("VertexBarrel",1,barrel,SeedType.Seed)); - lyrlist10.add(new SeedLayer("VertexBarrel",2,barrel,SeedType.Extend)); - lyrlist10.add(new SeedLayer("VertexBarrel",3,barrel,SeedType.Extend)); - lyrlist10.add(new SeedLayer("VertexBarrel",4,barrel,SeedType.Extend)); - lyrlist10.add(new SeedLayer("TrackerBarrel",0,barrel,SeedType.Seed)); - lyrlist10.add(new SeedLayer("TrackerBarrel",1,barrel,SeedType.Confirm)); - lyrlist10.add(new SeedLayer("TrackerBarrel",2,barrel,SeedType.Extend)); - lyrlist10.add(new SeedLayer("TrackerBarrel",3,barrel,SeedType.Extend)); - lyrlist10.add(new SeedLayer("TrackerBarrel",4,barrel,SeedType.Extend)); - lyrlist10.add(new SeedLayer("VertexEndcap",0,endcap,SeedType.Extend)); - lyrlist10.add(new SeedLayer("VertexEndcap",1,endcap,SeedType.Extend)); - lyrlist10.add(new SeedLayer("VertexEndcap",2,endcap,SeedType.Extend)); - lyrlist10.add(new SeedLayer("VertexEndcap",3,endcap,SeedType.Extend)); - lyrlist10.add(new SeedLayer("TrackerForward",0,endcap,SeedType.Extend)); - lyrlist10.add(new SeedLayer("TrackerForward",1,endcap,SeedType.Extend)); - lyrlist10.add(new SeedLayer("TrackerForward",2,endcap,SeedType.Extend)); - lyrlist10.add(new SeedLayer("TrackerEndcap",2,endcap,SeedType.Extend)); - lyrlist10.add(new SeedLayer("TrackerEndcap",3,endcap,SeedType.Extend)); - SeedStrategy outsideinendcap10 = new SeedStrategy("InsideOutEndcap3",lyrlist10); - _strategylist.add(outsideinendcap10); - - // Create an inside out for the forward region - List<SeedLayer> lyrlist11 = new ArrayList<SeedLayer>(); - lyrlist11.add(new SeedLayer("VertexBarrel",0,barrel,SeedType.Extend)); - lyrlist11.add(new SeedLayer("VertexBarrel",1,barrel,SeedType.Extend)); - lyrlist11.add(new SeedLayer("VertexBarrel",2,barrel,SeedType.Extend)); - lyrlist11.add(new SeedLayer("VertexBarrel",3,barrel,SeedType.Extend)); - lyrlist11.add(new SeedLayer("VertexBarrel",4,barrel,SeedType.Extend)); - lyrlist11.add(new SeedLayer("TrackerBarrel",0,barrel,SeedType.Extend)); - lyrlist11.add(new SeedLayer("TrackerBarrel",1,barrel,SeedType.Extend)); - lyrlist11.add(new SeedLayer("TrackerBarrel",2,barrel,SeedType.Extend)); - lyrlist11.add(new SeedLayer("TrackerBarrel",3,barrel,SeedType.Extend)); - lyrlist11.add(new SeedLayer("TrackerBarrel",4,barrel,SeedType.Extend)); - lyrlist11.add(new SeedLayer("VertexEndcap",0,endcap,SeedType.Extend)); - lyrlist11.add(new SeedLayer("VertexEndcap",1,endcap,SeedType.Seed)); - lyrlist11.add(new SeedLayer("VertexEndcap",2,endcap,SeedType.Seed)); - lyrlist11.add(new SeedLayer("VertexEndcap",3,endcap,SeedType.Seed)); - lyrlist11.add(new SeedLayer("TrackerForward",0,endcap,SeedType.Confirm)); - lyrlist11.add(new SeedLayer("TrackerForward",1,endcap,SeedType.Extend)); - lyrlist11.add(new SeedLayer("TrackerForward",2,endcap,SeedType.Extend)); - lyrlist11.add(new SeedLayer("TrackerEndcap",2,endcap,SeedType.Extend)); - lyrlist11.add(new SeedLayer("TrackerEndcap",3,endcap,SeedType.Extend)); - SeedStrategy outsideinendcap11 = new SeedStrategy("InsideOutEndcap4",lyrlist11); - _strategylist.add(outsideinendcap11); - - } - - for (SeedStrategy strategy : _strategylist) { - // Set parameters for this strategy - strategy.putMinPT(1.0); // Set minimum pT at 1 GeV - strategy.putMaxDCA(10.0); // Set maximum d0 at 1 mm - strategy.putMaxZ0(10.0); // Set maximum z0 at 1 mm - strategy.putMinConfirm(1); // Require at least 1 confirm hit - strategy.putMinHits(7); // Require at least 7 total hits - strategy.putMaxChisq(50.); // Set maximum chi^2 at 50 - strategy.putBadHitChisq(15.); // Set chi^2 change that gives preference to excluding the hit - } - } - - public List<SeedStrategy> getStrategies() { - return _strategylist; - } - - public static void main(String[] args){ - MyStrategy strat = new MyStrategy(); - - StrategyXMLUtils.writeStrategyListToFile(strat.getStrategies(), new File("C:\\out.xml")); - - } -}
diff -N MyTrackerDriver.java --- MyTrackerDriver.java 27 Aug 2008 18:04:03 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,57 +0,0 @@
-/* - * MyTrackerDriver.java - * - * Created on March 29, 2006, 4:58 PM - * - */ - -package org.lcsim.contrib.Pelham.Example1; - -import java.io.File; -import org.lcsim.recon.tracking.seedtracker.SeedTracker; -//import org.lcsim.contrib.seedtracker.diagnostic.SeedTrackerDiagnostics; -import org.lcsim.recon.tracking.seedtracker.StrategyXMLUtils; -import org.lcsim.event.EventHeader; -import org.lcsim.fit.helicaltrack.HelicalTrackHitDriver; -import org.lcsim.fit.helicaltrack.HelicalTrackHitDriver.HitType; -import org.lcsim.util.Driver; - -/** - * Driver for testing the SeedTracker track finding algorithm. This driver causes - * the SmearMCHits and SeedTracker drivers to be invoked for each event. - * @author Richard Partridge - * @version 1.0 - */ -public class MyTrackerDriver extends Driver -{ private int counter=0; - public MyTrackerDriver() - { - - // Add the hit digitization driver (this example uses the virtual segment digitization code) - add(new VSExampleDriver()); - - // Add a driver to create HelicalTrackHits from the digitized hits - HelicalTrackHitDriver hitdriver = new HelicalTrackHitDriver(); - hitdriver.addCollection("NewTrackerHits",HitType.VirtualSegmentation); - add(hitdriver); - - // Create a list of strategies to be used in track finding - MyStrategy strategylist = new MyStrategy(); - - // Add a driver to do the track finding - SeedTracker st = new SeedTracker(strategylist.getStrategies()); - //st.setDiagnostics(new SeedTrackDiag()); - add(st); - - // Add an example analysis driver - add(new HistogramAnalysisDriver()); - - } - public void process(EventHeader event) - { - System.out.println("Event Number:"+counter); - counter++; - super.process(event); - return; - } -}
diff -N SeedTrackerDiagnostics.java --- SeedTrackerDiagnostics.java 27 Aug 2008 18:23:10 -0000 1.3 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,249 +0,0 @@
-/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - -package org.lcsim.contrib.Pelham.Example1; - -import hep.physics.vec.Hep3Vector; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import org.lcsim.recon.tracking.seedtracker.ConfirmerExtender.Task; -import org.lcsim.recon.tracking.seedtracker.diagnostic.EmptySeedTrackerDiagnostics; -import org.lcsim.recon.tracking.seedtracker.diagnostic.FindableTracks; -import org.lcsim.recon.tracking.seedtracker.diagnostic.ISeedTrackerDiagnostics; -import org.lcsim.recon.tracking.seedtracker.diagnostic.SeedValidator; -import org.lcsim.event.MCParticle; -import org.lcsim.fit.helicaltrack.HelicalTrackHit; -import org.lcsim.math.chisq.ChisqProb; -import org.lcsim.recon.tracking.seedtracker.HelixFitter; -import org.lcsim.recon.tracking.seedtracker.SeedCandidate; -import org.lcsim.recon.tracking.seedtracker.SeedStrategy; -import org.lcsim.util.aida.AIDA; - -/** - * - * @author cozzy - */ -public class SeedTrackerDiagnostics extends EmptySeedTrackerDiagnostics implements ISeedTrackerDiagnostics{ - - AIDA aida = AIDA.defaultInstance(); - - private double purity_cutoff = 0.0; - private String prefix = ""; - private boolean debugOut = true; - - public SeedTrackerDiagnostics(){ - - } - - /** - * Generates diagnostic plots given a list of seed candidates and a strategy. - * @param seedlist - * @param strategy - */ - @Override - public void fireFinalDiagnostics(List<SeedCandidate> seedlist){ - - System.out.println(" After merging: "+seedlist.size()); - Map<SeedCandidate,SeedValidator> vmap = generateValidators(seedlist); - makePurityPlots(vmap); - Set<MCParticle> likelyMCs = generateLikelyMCSet(vmap); - makeEfficiencyPlots(likelyMCs,currentStrategy); - } - - /** - * Sets the purity cutoff for a track's MC to be considered found when - * calculating efficiency. Default is 0.0. - * @param new_purity_cutoff - */ - public void setPurityCutoff(double new_purity_cutoff){ - purity_cutoff = new_purity_cutoff; - } - - /** - * Sets the prefix to be appended to the beginning of each plot (for example, a strategy name - * @param str the new prefix - */ - public void setPrefix(String str){ - this.prefix = str; - } - - - @Override - public void fireStrategyChanged(SeedStrategy strategy) { - setPrefix("chisq cut = "+strategy.getMaxChisq()+"/"); - super.fireStrategyChanged(strategy); - } - - - @Override - public void fireMergeIsBetterDiagnostics(SeedCandidate newSeed, SeedCandidate oldSeed, boolean returnValue) { - if (returnValue){ - - SeedValidator oldV = new SeedValidator(oldSeed); - SeedValidator newV = new SeedValidator(newSeed); - - if (oldV.getPurity() > newV.getPurity()){ - makeBadDecisionPlots(newSeed,oldSeed, oldV,newV); - } - } - } - - @Override - public void fireFinderDone(int maxseeds, int nseed, int nfit, int nconfirm, List<SeedCandidate> confirmedSeeds) { -// System.out.println("Possible seeds: "+maxseeds); -// System.out.print(" Trial seeds: "+nseed); -// System.out.println(" Fitted seeds: "+nfit); -// System.out.println(" Confirmed seeds: "+nconfirm); -// System.out.println(" Confirmed seed candidates: "+confirmedSeeds.size()); - } - - @Override - public void fireConfirmerExtenderWorkingSeedInfo(Task task, SeedCandidate seed, List<HelicalTrackHit> hitlist) { - if (debugOut) { - System.out.println("Oldcirclechisq: "+seed.getHelix().chisq()[0]); - System.out.println("Oldchisq: "+seed.getHelix().chisqtot()); - System.out.println("Oldhits: "+seed.getHits().size()); - System.out.println("Old Helix: "+seed.getHelix().toString()); - } - return; - } - - @Override - public void fireConfirmerExtenderFitNoSuccess(Task task, SeedCandidate Seed, HelicalTrackHit hit, HelixFitter fitter, boolean optimize) { - if (debugOut) System.out.println("Circlechissq" + fitter.getCircleFit().chisq()); - } - - @Override - public void fireConfirmerExtenderFitSuccess(Task task, SeedCandidate Seed, HelicalTrackHit hit, HelixFitter fitter, double chisqbest, boolean optimize) { - if (debugOut) { - System.out.println("Good fit"); - System.out.println("Chisq: "+fitter.getHelix().chisqtot()); - System.out.println("Circle Chisq: "+fitter.getHelix().chisq()[0]); - System.out.println("New Helix: "+fitter.getHelix().toString()); - } - } - - @Override - public void fireConfirmerExtenderLayerDone(Task task, int numSeeds, List<SeedCandidate> seedlist) { - if (debugOut){ - System.out.println(" "+task.toString()+" seeds: "+numSeeds); - System.out.println(" "+task.toString()+" seed candidates: "+seedlist.size()); - } - } - - private void makeBadDecisionPlots(SeedCandidate newseed, SeedCandidate seed, SeedValidator oldV, SeedValidator newV) { - - aida.cloud1D(prefix+"Bad Decision newseed chisq").fill(newseed.getHelix().chisqtot()); - aida.cloud1D(prefix+"Bad Decision oldseed chisq").fill(seed.getHelix().chisqtot()); - aida.cloud2D(prefix+"Bad Decision newseed vs. oldseed chisq").fill(newseed.getHelix().chisqtot(), seed.getHelix().chisqtot()); - aida.cloud1D(prefix+"Bad Decision old seedpurity").fill(oldV.getPurity()); - aida.cloud1D(prefix+"Bad Decision new seedpurity").fill(newV.getPurity()); - - - if(oldV.getVerdict().isGoodValue()){ - Hep3Vector p = oldV.getLikelyMC().getMomentum(); - double pt = Math.sqrt(p.x() * p.x() + p.y() * p.y()); - aida.cloud1D(prefix+"Bad Decision real particle transverse momentum").fill(pt); - - Hep3Vector r = oldV.getLikelyMC().getOrigin(); - double rc = Math.sqrt(r.x()*r.x()+r.y()*r.y()); - aida.cloud1D(prefix + "Bad Decision real particle start radius (cylindrical)").fill(rc); - } - - } - - - //makes purity plots - private void makePurityPlots(Map<SeedCandidate, SeedValidator> vmap) { - - for (SeedCandidate s : vmap.keySet()) { - - SeedValidator v = vmap.get(s); - - if (v.getVerdict().isGoodValue()) { - aida.cloud1D(prefix+"Good seeds chisq").fill(s.getHelix().chisqtot()); - aida.cloud1D(prefix+"Good seeds numhits").fill(s.getHits().size()); - aida.cloud1D(prefix+"Good seeds pt").fill(s.getHelix().pT(5.0)); - } else { - aida.cloud1D(prefix+"Bad seeds chisq").fill(s.getHelix().chisqtot()); - aida.cloud1D(prefix+"Bad seeds numhits").fill(s.getHits().size()); - aida.cloud1D(prefix+"Bad seeds pt").fill(s.getHelix().pT(5.0)); - } - - aida.cloud1D(prefix+"purity").fill(v.getPurity()); - aida.cloud2D(prefix+"purity vs. numHits").fill(v.getPurity(), s.getHits().size()); - aida.cloud2D(prefix+"purity vs. pt").fill(v.getPurity(), s.getHelix().pT(5.0)); - aida.cloud2D(prefix+"purity vs. cth").fill(v.getPurity(), s.getHelix().cth()); - aida.cloud2D(prefix+"purity vs. chisq").fill(v.getPurity(), s.getHelix().chisqtot()); - - double chisqdof = ChisqProb.gammq(s.getHelix().chisqtot(), s.getHits().size()-1); - - aida.cloud2D(prefix+"purity vs. (1 - chisq_cdf(chisq,ndof)").fill(v.getPurity(), chisqdof); - aida.cloud2D(prefix+"purity cs. dca").fill(v.getPurity(), s.getHelix().dca()); - } - } - - private void makeEfficiencyPlots(Set<MCParticle> likelyMCs, SeedStrategy strat){ - - FindableTracks findable = new FindableTracks(strat, hitManager); - findable.setBField(bField); - - List<MCParticle> MCs = new ArrayList<MCParticle>(); - MCs.addAll(event.getMCParticles()); - - Iterator iter = MCs.iterator(); - - //remove all none findable MCs - while(iter.hasNext()){ - if(!findable.isFindable((MCParticle)iter.next())) - iter.remove(); - } - - int numFindable = MCs.size(); - aida.cloud1D(prefix+"Number findable").fill(numFindable); - - - // remove all the MC's we've found... this gives us findable - found - MCs.removeAll(likelyMCs); - - int numFound = numFindable - MCs.size(); // findable - (findable - found) = found - - aida.cloud1D(prefix+"Num found (purity cutoff="+purity_cutoff+") ").fill(numFound); - - if(numFindable > 0){ - double eff = (double) numFound / (double) numFindable; - aida.cloud1D(prefix+"Efficiency").fill(eff); - } - - } - - - private Map<SeedCandidate,SeedValidator> generateValidators(List<SeedCandidate> seedlist) { - - Map<SeedCandidate,SeedValidator> ret = new HashMap<SeedCandidate,SeedValidator>(); - for (SeedCandidate s : seedlist) { - ret.put(s, new SeedValidator(s)); - } - - return ret; - } - - private Set<MCParticle> generateLikelyMCSet(Map<SeedCandidate, SeedValidator> vmap) { - - Set<MCParticle> set = new HashSet<MCParticle>(); - - for (SeedValidator v : vmap.values()) { - if(v.getPurity()<purity_cutoff) continue; - set.add(v.getLikelyMC()); - } - return set; - } -} -
\ No newline at end of file
diff -N VSExampleDriver.java --- VSExampleDriver.java 6 Dec 2008 21:53:25 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,128 +0,0 @@
-package org.lcsim.contrib.Pelham.Example1; - -import java.util.*; - -import hep.aida.*; -import org.lcsim.event.EventHeader; -import org.lcsim.event.SimTrackerHit; -import org.lcsim.recon.cat.util.NoSuchParameterException; -import org.lcsim.units.clhep.SystemOfUnits; -import org.lcsim.util.Driver; -import org.lcsim.util.aida.AIDA; -import hep.physics.vec.BasicHep3Vector; -import hep.physics.vec.Hep3Vector; -import hep.physics.vec.VecOp; - -import org.lcsim.recon.tracking.vsegment.clustering.ClusteringDriver; -import org.lcsim.recon.tracking.vsegment.clustering.clusterers.NearestNeighborClusterer; -import org.lcsim.recon.tracking.vsegment.digitization.SimToDigiDriver; -import org.lcsim.recon.tracking.vsegment.digitization.SimToDigiConverter; -import org.lcsim.recon.tracking.vsegment.digitization.algorithms.ConverterSimple; -import org.lcsim.recon.tracking.vsegment.geom.SegmentationManager; -import org.lcsim.recon.tracking.vsegment.geom.Segmenter; -import org.lcsim.recon.tracking.vsegment.geom.Sensor; -import org.lcsim.recon.tracking.vsegment.geom.SensorType; -import org.lcsim.recon.tracking.vsegment.hit.DigiTrackerHit; -import org.lcsim.recon.tracking.vsegment.hit.TrackerCluster; -import org.lcsim.recon.tracking.vsegment.hit.TrackerHit; -import org.lcsim.recon.tracking.vsegment.hitmaking.HitMakingDriver; -import org.lcsim.recon.tracking.vsegment.hitmaking.TrackerHitConverter; -import org.lcsim.recon.tracking.vsegment.hitmaking.TrackerHitMaker; -import org.lcsim.recon.tracking.vsegment.hitmaking.hitmakers.TrackerHitMakerBasic; -import org.lcsim.recon.tracking.vsegment.mctruth.MCTruth; -import org.lcsim.recon.tracking.vsegment.mctruth.MCTruthDriver; -import org.lcsim.recon.tracking.vsegment.mctruth.SimGroup; - -/** - * An Example of how to define virtual segmentation of the tracker, - * and use {@link TrackerHitConverter} to create - * "standard" <tt>org.lcsim.event.TrackerHits</tt>. - * Parameters are chosen to define reasonable segmentation for SiD01. - * - * - * - * @author D. Onoprienko - * @version $Id: VSExampleDriver.java,v 1.2 2008/12/06 21:53:25 onoprien Exp $ - */ -public class VSExampleDriver extends Driver { - -// -- Constructors : ---------------------------------------------------------- - - public VSExampleDriver() { - - add(new MCTruthDriver()); - - // Segmentation description : - - Segmenter segmenter = new VSExampleSegmenter(); - SegmentationManager segMan = new SegmentationManager(segmenter); - SegmentationManager.setDefaultInstance(segMan); - add(segMan); - - // Digitization : - - SimToDigiConverter converter = new ConverterSimple(); - SimToDigiDriver conversionDriver = new SimToDigiDriver(converter); - conversionDriver.set("ADD_INPUT_LIST_NAME", "TkrBarrHits"); - conversionDriver.set("ADD_INPUT_LIST_NAME", "VtxBarrHits"); - conversionDriver.set("ADD_INPUT_LIST_NAME", "TkrEndcapHits"); - conversionDriver.set("ADD_INPUT_LIST_NAME", "VtxEndcapHits"); - conversionDriver.set("ADD_INPUT_LIST_NAME", "TkrForwardHits"); - conversionDriver.set("OUTPUT_MAP_NAME", "DigiTrackerHits"); - add(conversionDriver); - - // Clustering : - - ClusteringDriver clusteringDriver = new ClusteringDriver(new NearestNeighborClusterer()); - clusteringDriver.set("INPUT_MAP_NAME","DigiTrackerHits"); - clusteringDriver.set("OUTPUT_MAP_NAME","TrackerClusters"); - add(clusteringDriver); - - // Hit making : - - TrackerHitMaker hitMaker = new TrackerHitMakerBasic(); - HitMakingDriver hitMakingDriver = new HitMakingDriver(hitMaker); - hitMakingDriver.set("INPUT_MAP_NAME","TrackerClusters"); - hitMakingDriver.set("OUTPUT_MAP_NAME","NewTrackerHits"); - add(hitMakingDriver); - - // Conversion to "standard" org.lcsim.event.TrackerHit : ------------------ - -// TrackerHitConverter hitConverter = new TrackerHitConverter(); -// hitConverter.set("INPUT_CLUSTER_MAP_NAME", "TrackerClusters"); -// hitConverter.set("OUTPUT_HIT_LIST_NAME", "StandardTrackerHits"); -// add(hitConverter); - } - - -// -- Event processing : ------------------------------------------------------ - - public void process(EventHeader event) { - -// System.out.println(" "); -// System.out.println("Event "+event.getEventNumber()); - - super.process(event); - - MCTruth mcTruth = (MCTruth) event.get("MCTruth"); - -// System.out.println(" "); - - int n = 0; - HashMap<Sensor, List<DigiTrackerHit>> digiMap = - (HashMap<Sensor, List<DigiTrackerHit>>) event.get("DigiTrackerHits"); - for (List<DigiTrackerHit> digiList : digiMap.values()) n += digiList.size(); - System.out.println("Created " + n + " DigiTrackerHits on " + digiMap.keySet().size() + " sensors"); - - n = 0; - HashMap<Sensor, List<TrackerCluster>> clusterMap = - (HashMap<Sensor, List<TrackerCluster>>) event.get("TrackerClusters"); - for (List<TrackerCluster> clusterList : clusterMap.values()) n += clusterList.size(); - System.out.println("Created " + n + " TrackerClusters on " + clusterMap.keySet().size() + " sensors"); - -// n = 0; -// List<org.lcsim.event.TrackerHit> oldHitList = (List<org.lcsim.event.TrackerHit>) event.get("StandardTrackerHits"); -// System.out.println("Created " + oldHitList.size() + " org.lcsim.event.TrackerHits"); - } - -}
diff -N VSExampleSegmenter.java --- VSExampleSegmenter.java 6 Dec 2008 21:53:25 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,64 +0,0 @@
-package org.lcsim.contrib.Pelham.Example1; - -import org.lcsim.units.clhep.SystemOfUnits; - -import org.lcsim.recon.tracking.vsegment.geom.segmenters.CylindricalBarrelSegmenter; -import org.lcsim.recon.tracking.vsegment.geom.segmenters.DiskTrackerToWedgesSegmenter; -import org.lcsim.recon.tracking.vsegment.geom.segmenters.DiskTrackerToRingsSegmenter; -import org.lcsim.recon.tracking.vsegment.geom.segmenters.SubdetectorBasedSegmenter; - -/** - * - * - * - * - * @author D. Onoprienko - * @version $Id: VSExampleSegmenter.java,v 1.2 2008/12/06 21:53:25 onoprien Exp $ - */ -public class VSExampleSegmenter extends SubdetectorBasedSegmenter { - -// -- Constructors : ---------------------------------------------------------- - - public VSExampleSegmenter() { - - // 25 um pixels in VTX Barrel - - CylindricalBarrelSegmenter vtxBarrelSegmenter = new CylindricalBarrelSegmenter("VertexBarrel"); - vtxBarrelSegmenter.setStripLength(25.*SystemOfUnits.micrometer); - vtxBarrelSegmenter.setStripWidth(25.*SystemOfUnits.micrometer); - setSegmenter("VertexBarrel", vtxBarrelSegmenter); - - // 10 cm x 25 um strips in outer Tracker Barrel - - CylindricalBarrelSegmenter trackerBarrelSegmenter = new CylindricalBarrelSegmenter("TrackerBarrel"); - trackerBarrelSegmenter.setStripLength(10.*SystemOfUnits.cm); - trackerBarrelSegmenter.setStripWidth(25.*SystemOfUnits.micrometer); - setSegmenter("TrackerBarrel", trackerBarrelSegmenter); - - // 25 um pixels in VTX Endcap - - DiskTrackerToRingsSegmenter vtxEndcapSegmenter = new DiskTrackerToRingsSegmenter("VertexEndcap"); - vtxEndcapSegmenter.setStripLength(25.*SystemOfUnits.micrometer); - vtxEndcapSegmenter.setStripWidth(25.*SystemOfUnits.micrometer); - setSegmenter("VertexEndcap", vtxEndcapSegmenter); - - // 15 degrees stereo wedges in Forward Tracker - - DiskTrackerToWedgesSegmenter trackerForwardSegmenter = new DiskTrackerToWedgesSegmenter("TrackerForward"); - trackerForwardSegmenter.setStripLength(10.*SystemOfUnits.cm); - trackerForwardSegmenter.setStripWidth(25.*SystemOfUnits.micrometer); - trackerForwardSegmenter.setNumberOfPhiSlices(24); - setSegmenter("TrackerForward", trackerForwardSegmenter); - - // 15 degrees stereo wedges in outer Tracker Endcap - - DiskTrackerToWedgesSegmenter trackerEndcapSegmenter = new DiskTrackerToWedgesSegmenter("TrackerEndcap"); - trackerEndcapSegmenter.setNumberOfRadialSlices(new int[]{3,5,8,10, 10}); - trackerEndcapSegmenter.setStripWidth(25.*SystemOfUnits.micrometer); - trackerEndcapSegmenter.setNumberOfPhiSlices(24); - setSegmenter("TrackerEndcap", trackerEndcapSegmenter); - } - -// -- Private parts : --------------------------------------------------------- - -}