Commit in lcsim/src/org/lcsim/contrib/seedtracker/example on MAIN | |||
AnalysisDriver.java | -142 | 1.2 removed | |
MyStrategy.java | -256 | 1.2 removed | |
MyTrackerDriver.java | -71 | 1.3 removed | |
SeedTrackerDiagnostics.java | -247 | 1.1 removed | |
VSExampleDriver.java | -128 | 1.2 removed | |
VSExampleSegmenter.java | -64 | 1.1 removed | |
-908 |
refactor seedtracker
diff -N AnalysisDriver.java --- AnalysisDriver.java 22 Jun 2008 23:20:23 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,142 +0,0 @@
-/* - * AnalysisDriver.java - * - * Created on February 11, 2008, 11:47 AM - * - */ - -package org.lcsim.contrib.seedtracker.example; - -import hep.aida.IHistogram1D; -import hep.physics.vec.Hep3Vector; - -import java.util.List; -import java.util.Map; -import java.util.HashMap; - -import org.lcsim.constants.Constants; -import org.lcsim.contrib.seedtracker.SeedTrack; -import org.lcsim.contrib.seedtracker.SeedCandidate; -import org.lcsim.fit.helicaltrack.HelicalTrackFit; -import org.lcsim.event.TrackerHit; -import org.lcsim.fit.helicaltrack.HelicalTrackHit; -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 AnalysisDriver extends Driver { - private AIDA aida = AIDA.defaultInstance(); - private IHistogram1D h1; - private IHistogram1D h2; - - /** Creates a new instance of AnalysisDriver */ - public AnalysisDriver() { - h1 = aida.histogramFactory().createHistogram1D("pT Efficiency", "", 100, 0., 50., "type=efficiency"); - h2 = aida.histogramFactory().createHistogram1D("theta Efficiency", "", 90, 0., 180., "type=efficiency"); - - } - - /** - * 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) { - List<TrackerHit> hitlist = track.getTrackerHits(); - Map<MCParticle, Integer> mcmap = new HashMap<MCParticle, Integer>(); - if (track instanceof SeedTrack) { - SeedCandidate seed = ((SeedTrack) track).getSeedCandidate(); - for (HelicalTrackHit hit : seed.getHits()) { - double x = hit.getCorrectedPosition().x(); - double y = hit.getCorrectedPosition().y(); - HelicalTrackFit helix = seed.getHelix(); - MCParticle particle = hit.getMCParticles().get(0); - Hep3Vector p = particle.getMomentum(); - double phi = Math.atan2(p.y(), p.x()); - double R = Math.sqrt(p.x()*p.x() + p.y()*p.y()) / (5. * Constants.fieldConversion); - double RS = R; - if (particle.getCharge() < 0.) RS = -1. * RS; - Hep3Vector start = particle.getOrigin(); - double xc = start.x() + RS * Math.sin(phi); - double yc = start.y() - RS * Math.cos(phi); -// double xc = helix.xc(); -// double yc = helix.yc(); -// double R = Math.abs(helix.R()); - double RHit = Math.sqrt((x-xc)*(x-xc) + (y-yc)*(y-yc)); - double drphi_ms = 0.; - if (helix.ScatterMap().containsKey(hit)) drphi_ms = helix.ScatterMap().get(hit).drphi(); - double drphi_res = hit.drphi(); - double drphi = Math.sqrt(drphi_ms*drphi_ms + drphi_res*drphi_res); - aida.cloud1D("r-phi residual for layer "+hit.getLayerIdentifier()).fill(RHit-R); - aida.cloud1D("Pull for layer "+hit.getLayerIdentifier()).fill((RHit - R)/drphi); - aida.cloud1D("Hit resolution for layer "+hit.getLayerIdentifier()).fill(drphi_res); - aida.cloud2D("Hit MS resolution for layer "+hit.getLayerIdentifier()).fill(drphi_ms, helix.pT(5.)); - 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; - double px = mcp.getPX(); - double py = mcp.getPY(); - double pz = mcp.getPZ(); - double pt = Math.sqrt(px*px + py*py); - double p = Math.sqrt(pt*pt + pz*pz); - double cth = pz / p; - double theta = 180. * Math.acos(cth) / Math.PI; - double wgt = 0.; - if (trkmap.containsKey(mcp)) wgt = 1.; - if (pt > 1.1) { - aida.profile1D("Efficiency vs theta", 90, 0., 180.).fill(theta, wgt); - h2.fill(theta, wgt); - aida.histogram1D("MC angle", 90, 0., 180.).fill(theta); - } - if (Math.abs(cth) < 0.985) { - aida.profile1D("Efficiency vs pT", 100, 0., 50.).fill(pt, wgt); - h1.fill(pt,wgt); - aida.histogram1D("MC pT", 100, 0., 50.).fill(pt); - } - 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 MyStrategy.java --- MyStrategy.java 22 Jun 2008 23:20:23 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,256 +0,0 @@
-/* - * MyStrategy.java - * - * Created on April 12, 2008, 8:42 PM - * - */ - -package org.lcsim.contrib.seedtracker.example; - -import java.util.ArrayList; -import java.util.List; -import org.lcsim.contrib.seedtracker.SeedLayer; -import org.lcsim.contrib.seedtracker.SeedLayer.SeedType; -import org.lcsim.contrib.seedtracker.SeedStrategy; -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; - } -}
diff -N MyTrackerDriver.java --- MyTrackerDriver.java 18 Aug 2008 18:54:05 -0000 1.3 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,71 +0,0 @@
-/* - * MyTrackerDriver.java - * - * Created on March 29, 2006, 4:58 PM - * - */ - -package org.lcsim.contrib.seedtracker.example; - -import java.util.List; -import org.lcsim.contrib.Pelham.Example1.HistogramAnalysisDriver; -import org.lcsim.contrib.seedtracker.SeedStrategy; -import org.lcsim.contrib.seedtracker.SeedTracker; -//import org.lcsim.contrib.seedtracker.diagnostic.SeedTrackerDiagnostics; -import org.lcsim.contrib.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 -{ - 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); - - // Obtain a trained list of strategies from a saved resource. - // Because resources are loaded from inside the compiled JAR file, - // it is necessary to recompile when modifying a saved resource. - // StrategyXMLUtils.getDefaultStrategiesPrefix() will provide the correct - // prefix in the resource tree (i.e. "/org/lcsim/contrib/seedtracker/strategybuilder/strategies/") - List<SeedStrategy> stratlist = StrategyXMLUtils.getStrategyListFromResource(StrategyXMLUtils.getDefaultStrategiesPrefix()+"autogen_zpole_sid01.xml"); - - // For development / modifications, one may choose to load a strategy - // list from a local file instead of a resource. The line below shows - // an example of how to do this - -// List<SeedStrategy> stratlist = StrategyXMLUtils.getStrategyListFromFile(new File("/path/to/file/strategies.xml")); - - - // Add a driver to do the track finding - SeedTracker st = new SeedTracker(stratlist); - - //Enable diagnostics -// st.setDiagnostics(new SeedTrackerDiagnostics()); - - //Add the Driver - add(st); - - // Add an example analysis driver -// add (new HistogramAnalysisDriver()); - - } - public void process(EventHeader event) - { - super.process(event); - return; - } -}
diff -N SeedTrackerDiagnostics.java --- SeedTrackerDiagnostics.java 17 Jun 2008 00:39:16 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,247 +0,0 @@
-/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - -package org.lcsim.contrib.seedtracker.example; - -import org.lcsim.contrib.seedtracker.*; -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.contrib.seedtracker.ConfirmerExtender.Task; -import org.lcsim.contrib.seedtracker.diagnostic.EmptySeedTrackerDiagnostics; -import org.lcsim.contrib.seedtracker.diagnostic.FindableTracks; -import org.lcsim.contrib.seedtracker.diagnostic.ISeedTrackerDiagnostics; -import org.lcsim.contrib.seedtracker.diagnostic.SeedValidator; -import org.lcsim.event.MCParticle; -import org.lcsim.fit.helicaltrack.HelicalTrackHit; -import org.lcsim.math.chisq.ChisqProb; -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 2 Jul 2008 23:55:36 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,128 +0,0 @@
-package org.lcsim.contrib.seedtracker.example; - -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.contrib.onoprien.tracking.clustering.ClusteringDriver; -import org.lcsim.contrib.onoprien.tracking.clustering.clusterers.NearestNeighborClusterer; -import org.lcsim.contrib.onoprien.tracking.digitization.SimToDigiDriver; -import org.lcsim.contrib.onoprien.tracking.digitization.SimToDigiConverter; -import org.lcsim.contrib.onoprien.tracking.digitization.algorithms.ConverterSimple; -import org.lcsim.contrib.onoprien.tracking.geom.SegmentationManager; -import org.lcsim.contrib.onoprien.tracking.geom.Segmenter; -import org.lcsim.contrib.onoprien.tracking.geom.Sensor; -import org.lcsim.contrib.onoprien.tracking.geom.SensorType; -import org.lcsim.contrib.onoprien.tracking.hit.DigiTrackerHit; -import org.lcsim.contrib.onoprien.tracking.hit.TrackerCluster; -import org.lcsim.contrib.onoprien.tracking.hit.TrackerHit; -import org.lcsim.contrib.onoprien.tracking.hitmaking.HitMakingDriver; -import org.lcsim.contrib.onoprien.tracking.hitmaking.TrackerHitConverter; -import org.lcsim.contrib.onoprien.tracking.hitmaking.TrackerHitMaker; -import org.lcsim.contrib.onoprien.tracking.hitmaking.hitmakers.TrackerHitMakerBasic; -import org.lcsim.contrib.onoprien.tracking.mctruth.MCTruth; -import org.lcsim.contrib.onoprien.tracking.mctruth.MCTruthDriver; -import org.lcsim.contrib.onoprien.tracking.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/07/02 23:55:36 partridge 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 17 Jun 2008 00:39:16 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,64 +0,0 @@
-package org.lcsim.contrib.seedtracker.example; - -import org.lcsim.units.clhep.SystemOfUnits; - -import org.lcsim.contrib.onoprien.tracking.geom.segmenters.CylindricalBarrelSegmenter; -import org.lcsim.contrib.onoprien.tracking.geom.segmenters.DiskTrackerToWedgesSegmenter; -import org.lcsim.contrib.onoprien.tracking.geom.segmenters.DiskTrackerToRingsSegmenter; -import org.lcsim.contrib.onoprien.tracking.geom.segmenters.SubdetectorBasedSegmenter; - -/** - * - * - * - * - * @author D. Onoprienko - * @version $Id: VSExampleSegmenter.java,v 1.1 2008/06/17 00:39:16 partridge 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 : --------------------------------------------------------- - -}