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.event.SimTrackerHit;
8   import org.lcsim.recon.cat.util.NoSuchParameterException;
9   import org.lcsim.units.clhep.SystemOfUnits;
10  import org.lcsim.util.Driver;
11  import org.lcsim.util.aida.AIDA;
12  import hep.physics.vec.BasicHep3Vector;
13  import hep.physics.vec.Hep3Vector;
14  import hep.physics.vec.VecOp;
15  
16  import org.lcsim.recon.tracking.vsegment.clustering.ClusteringDriver;
17  import org.lcsim.recon.tracking.vsegment.clustering.clusterers.NearestNeighborClusterer;
18  import org.lcsim.recon.tracking.vsegment.digitization.SimToDigiDriver;
19  import org.lcsim.recon.tracking.vsegment.digitization.SimToDigiConverter;
20  import org.lcsim.recon.tracking.vsegment.digitization.algorithms.ConverterSimple;
21  import org.lcsim.recon.tracking.vsegment.geom.SegmentationManager;
22  import org.lcsim.recon.tracking.vsegment.geom.Segmenter;
23  import org.lcsim.recon.tracking.vsegment.geom.Sensor;
24  import org.lcsim.recon.tracking.vsegment.geom.SensorType;
25  import org.lcsim.recon.tracking.vsegment.hit.DigiTrackerHit;
26  import org.lcsim.recon.tracking.vsegment.hit.TrackerCluster;
27  import org.lcsim.recon.tracking.vsegment.hit.TrackerHit;
28  import org.lcsim.recon.tracking.vsegment.hitmaking.HitMakingDriver;
29  import org.lcsim.recon.tracking.vsegment.hitmaking.TrackerHitConverter;
30  import org.lcsim.recon.tracking.vsegment.hitmaking.TrackerHitMaker;
31  import org.lcsim.recon.tracking.vsegment.hitmaking.hitmakers.TrackerHitMakerBasic;
32  import org.lcsim.recon.tracking.vsegment.mctruth.MCTruth;
33  import org.lcsim.recon.tracking.vsegment.mctruth.MCTruthDriver;
34  import org.lcsim.recon.tracking.vsegment.mctruth.SimGroup;
35  
36  /**
37   * An Example of how to define virtual segmentation of the tracker, 
38   * and use {@link TrackerHitConverter} to create
39   * "standard" <tt>org.lcsim.event.TrackerHits</tt>.
40   * Parameters are chosen to define reasonable segmentation for SiD01.
41   *
42   * @author D. Onoprienko
43   * @version $Id: ExampleDriver2.java,v 1.1 2008/12/06 21:53:43 onoprien Exp $
44   */
45  public class ExampleDriver2 extends Driver {
46    
47  // -- Constructors :  ----------------------------------------------------------
48    
49    public ExampleDriver2() {
50  
51      add(new MCTruthDriver());
52      
53      // Segmentation description :
54      
55      Segmenter segmenter = new ExampleSegmenter1();
56      SegmentationManager segMan = new SegmentationManager(segmenter);
57      SegmentationManager.setDefaultInstance(segMan);
58      add(segMan);
59      
60      // Digitization :
61  
62      SimToDigiConverter converter = new ConverterSimple();
63      SimToDigiDriver conversionDriver = new SimToDigiDriver(converter);
64      conversionDriver.set("OUTPUT_MAP_NAME", "DigiTrackerHits");
65      add(conversionDriver);
66  
67      // Clustering :
68      
69      ClusteringDriver clusteringDriver = new ClusteringDriver(new NearestNeighborClusterer());
70      clusteringDriver.set("INPUT_MAP_NAME","DigiTrackerHits");
71      clusteringDriver.set("OUTPUT_MAP_NAME","TrackerClusters");
72      add(clusteringDriver);
73      
74      // Conversion to "standard" org.lcsim.event.TrackerHit :  ------------------
75      
76      TrackerHitConverter hitConverter = new TrackerHitConverter();
77      hitConverter.set("INPUT_CLUSTER_MAP_NAME", "TrackerClusters");
78      hitConverter.set("OUTPUT_HIT_LIST_NAME", "StandardTrackerHits");
79      add(hitConverter);
80    }
81    
82    
83  // -- Event processing :  ------------------------------------------------------
84  
85    public void process(EventHeader event) {
86      
87      System.out.println(" ");
88      System.out.println("Event "+event.getEventNumber());
89  
90      super.process(event);
91      
92      MCTruth mcTruth = (MCTruth) event.get("MCTruth");
93      
94      System.out.println(" ");
95      
96      int n = 0;
97      HashMap<Sensor, List<DigiTrackerHit>> digiMap = 
98              (HashMap<Sensor, List<DigiTrackerHit>>) event.get("DigiTrackerHits");
99      for (List<DigiTrackerHit> digiList : digiMap.values()) n += digiList.size();
100     System.out.println("Created " + n + " DigiTrackerHits on " + digiMap.keySet().size() + " sensors");
101     
102     n = 0;
103     HashMap<Sensor, List<TrackerCluster>> clusterMap = 
104             (HashMap<Sensor, List<TrackerCluster>>) event.get("TrackerClusters");
105     for (List<TrackerCluster> clusterList : clusterMap.values()) n += clusterList.size();
106     System.out.println("Created " + n + " TrackerClusters on " + clusterMap.keySet().size() + " sensors");
107     
108     n = 0;
109     List<org.lcsim.event.TrackerHit> oldHitList = (List<org.lcsim.event.TrackerHit>) event.get("StandardTrackerHits");
110     System.out.println("Created " + oldHitList.size() + " org.lcsim.event.TrackerHits");
111   }
112 
113 }