View Javadoc

1   package org.lcsim.recon.tracking.vsegment;
2   
3   import java.util.*;
4   
5   import hep.aida.*;
6   import org.lcsim.event.EventHeader;
7   import org.lcsim.units.clhep.SystemOfUnits;
8   import org.lcsim.util.Driver;
9   import org.lcsim.util.aida.AIDA;
10  
11  import org.lcsim.recon.tracking.vsegment.clustering.ClusteringDriver;
12  import org.lcsim.recon.tracking.vsegment.clustering.clusterers.NearestNeighborClusterer;
13  import org.lcsim.recon.tracking.vsegment.digitization.SimToDigiDriver;
14  import org.lcsim.recon.tracking.vsegment.digitization.SimToDigiConverter;
15  import org.lcsim.recon.tracking.vsegment.digitization.algorithms.ConverterSimple;
16  import org.lcsim.recon.tracking.vsegment.geom.SegmentationManager;
17  import org.lcsim.recon.tracking.vsegment.geom.Segmenter;
18  import org.lcsim.recon.tracking.vsegment.geom.Sensor;
19  import org.lcsim.recon.tracking.vsegment.geom.segmenters.CylindricalBarrelSegmenter;
20  import org.lcsim.recon.tracking.vsegment.geom.segmenters.DiskTrackerToWedgesSegmenter;
21  import org.lcsim.recon.tracking.vsegment.geom.segmenters.DiskTrackerToRingsSegmenter;
22  import org.lcsim.recon.tracking.vsegment.geom.segmenters.SubdetectorBasedSegmenter;
23  import org.lcsim.recon.tracking.vsegment.hit.DigiTrackerHit;
24  import org.lcsim.recon.tracking.vsegment.hit.TrackerCluster;
25  import org.lcsim.recon.tracking.vsegment.hit.TrackerHit;
26  import org.lcsim.recon.tracking.vsegment.hitmaking.HitMakingDriver;
27  import org.lcsim.recon.tracking.vsegment.hitmaking.TrackerHitMaker;
28  import org.lcsim.recon.tracking.vsegment.hitmaking.hitmakers.TrackerHitMakerBasic;
29  import org.lcsim.recon.tracking.vsegment.mctruth.MCTruthDriver;
30  
31  /**
32   * An Example of how to define virtual segmentation of the tracker, 
33   * run digitization, clustering, and hit creation.
34   * Parameters are chosen to define reasonable segmentation for SiD01.
35   * 
36   * @author D.Onoprienko
37   * @version $Id: ExampleDriver1.java,v 1.1 2008/12/06 21:53:43 onoprien Exp $
38   */
39  public class ExampleDriver1 extends Driver {
40    
41    private AIDA aida = AIDA.defaultInstance();
42    
43    public ExampleDriver1() {
44      
45      add(new MCTruthDriver());
46      
47      // Segmentation description :
48      
49      Segmenter segmenter = new ExampleSegmenter1();
50      SegmentationManager segMan = new SegmentationManager(segmenter);
51      SegmentationManager.setDefaultInstance(segMan);
52      add(segMan);
53      
54      // Digitization :
55  
56      SimToDigiConverter converter = new ConverterSimple();
57      SimToDigiDriver conversionDriver = new SimToDigiDriver(converter);
58      conversionDriver.set("OUTPUT_MAP_NAME", "DigiTrackerHits");
59      add(conversionDriver);
60  
61      // Clustering :
62      
63      ClusteringDriver clusteringDriver = new ClusteringDriver(new NearestNeighborClusterer());
64      clusteringDriver.set("INPUT_MAP_NAME","DigiTrackerHits");
65      clusteringDriver.set("OUTPUT_MAP_NAME","TrackerClusters");
66      add(clusteringDriver);
67      
68      // Hit making :
69      
70      TrackerHitMaker hitMaker = new TrackerHitMakerBasic();
71      HitMakingDriver hitMakingDriver = new HitMakingDriver(hitMaker);
72      hitMakingDriver.set("INPUT_MAP_NAME","TrackerClusters");
73      hitMakingDriver.set("OUTPUT_MAP_NAME","NewTrackerHits");
74      add(hitMakingDriver);
75      
76    }
77  
78    public void process(EventHeader event) {
79      
80      System.out.println(" ");
81      System.out.println("Event "+event.getEventNumber());
82  
83      super.process(event);
84      
85      System.out.println(" ");
86      
87      int n = 0;
88      HashMap<Sensor, List<DigiTrackerHit>> digiMap = 
89              (HashMap<Sensor, List<DigiTrackerHit>>) event.get("DigiTrackerHits");
90      for (List<DigiTrackerHit> digiList : digiMap.values()) n += digiList.size();
91      System.out.println("Created " + n + " DigiTrackerHits on " + digiMap.keySet().size() + " sensors");
92      
93      n = 0;
94      HashMap<Sensor, List<TrackerCluster>> clusterMap = 
95              (HashMap<Sensor, List<TrackerCluster>>) event.get("TrackerClusters");
96      for (List<TrackerCluster> clusterList : clusterMap.values()) n += clusterList.size();
97      System.out.println("Created " + n + " TrackerClusters on " + clusterMap.keySet().size() + " sensors");
98      
99      n = 0;
100     HashMap<Sensor, List<TrackerHit>> hitMap = 
101             (HashMap<Sensor, List<TrackerHit>>) event.get("NewTrackerHits");
102     for (List<TrackerHit> hitList : hitMap.values()) n += hitList.size();
103     System.out.println("Created " + n + " TrackerHits on " + hitMap.keySet().size() + " sensors");
104     
105   }
106   
107 }