Print

Print


Author: [log in to unmask]
Date: Fri Aug 28 12:08:13 2015
New Revision: 3434

Log:
Modify GBLOutputDriver to use all track collections in event; modify the recon drivers to call GBLOutputDriver.  Add all tracking collections to the MC pass2 driver. 

Modified:
    java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullReconMC_Pass2.lcsim
    java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullRecon_Pass2.lcsim
    java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLOutputDriver.java

Modified: java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullReconMC_Pass2.lcsim
 =============================================================================
--- java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullReconMC_Pass2.lcsim	(original)
+++ java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullReconMC_Pass2.lcsim	Fri Aug 28 12:08:13 2015
@@ -13,17 +13,46 @@
         <driver name="RawTrackerHitSensorSetup"/>
         <driver name="RawTrackerHitFitterDriver" />
         <driver name="TrackerHitDriver"/>
-        <driver name="HelicalTrackHitDriver"/>
-        <driver name="TrackerReconDriver"/>
+        <driver name="HelicalTrackHitDriver"/>     
+        <!-- 
+            Will run track finding algorithm using layers 345 as a seed, 
+            layer 2 to confirm and layers 1 and 6 to extend. The collection
+            name of the tracks found with this strategy will be "MatchedTracks".
+        -->
+        <driver name="TrackReconSeed345Conf2Extd16"/>       
+        <!-- 
+            Will run track finding algorithm using layers 456 as a seed, 
+            layer 3 to confirm and layers 2 and 1 to extend.  The collection
+            name of the tracks found with this strategy will be 
+            "Tracks_s456_c3_e21"
+        -->
+        <driver name="TrackReconSeed456Conf3Extd21"/>
+        <!-- 
+            Will run track finding algorithm using layers 123 as a seed, 
+            layer 4 to confirm and layers 5 and 6 to extend.  The collection
+            name of the tracks found with this strategy will be 
+            "Tracks_s123_c4_e56"
+        -->
+        <driver name="TrackReconSeed123Conf4Extd56"/>
+        <!-- 
+            Will run track finding algorithm using layers 123 as a seed, 
+            layer 5 to confirm and layers 4 and 6 to extend.  The collection
+            name of the tracks found with this strategy will be 
+            "Tracks_s123_c5_e46"
+        --> 
+        <driver name="TrackReconSeed123Conf5Extd46"/>
+        <!-- 
+            TrackDataDriver needs to be run before ReconParticleDriver so the
+            ReconstructedParticle types are properly set.
+         -->
         <driver name="EcalRawConverter" />
         <driver name="ReconClusterer" />
         <driver name="GTPOnlineClusterer" />
         <driver name="CopyCluster" />
         <driver name="ReconParticle" />  
         <driver name="TrackDataDriver" />              
-        <driver name="GBLDriver"/>
+        <driver name="GBLOutputDriver"/>
         <driver name="LCIOWriter"/>
-
         <driver name="CleanupDriver"/>
     </execute>    
     <drivers>    
@@ -57,17 +86,34 @@
             <debug>false</debug>
             <clusterTimeCut>12.0</clusterTimeCut>
             <maxDt>16.0</maxDt>
+            <clusterAmplitudeCut>400.0</clusterAmplitudeCut>
         </driver>
-        <driver name="TrackerReconDriver" type="org.hps.recon.tracking.TrackerReconDriver">
-            <strategyResource>HPS-Full.xml</strategyResource>
+          <!-- SVT Track finding -->
+        <driver name="TrackReconSeed345Conf2Extd16" type="org.hps.recon.tracking.TrackerReconDriver">
+            <trackCollectionName>MatchedTracks</trackCollectionName>
+            <strategyResource>HPS_s345_c2_e16.xml</strategyResource>
             <debug>false</debug>
             <rmsTimeCut>8.0</rmsTimeCut>
-        </driver>        
-        <driver name="GBLDriver" type="org.hps.recon.tracking.gbl.GBLOutputDriver">
-            <debug>0</debug>
-            <isMC>false</isMC>
-            <gblFileName></gblFileName>
-        </driver>
+        </driver>                
+        <driver name="TrackReconSeed456Conf3Extd21" type="org.hps.recon.tracking.TrackerReconDriver">
+            <trackCollectionName>Tracks_s456_c3_e21</trackCollectionName>
+            <strategyResource>HPS_s456_c3_e21.xml</strategyResource>
+            <debug>false</debug>
+            <rmsTimeCut>8.0</rmsTimeCut>
+        </driver>                
+        <driver name="TrackReconSeed123Conf4Extd56" type="org.hps.recon.tracking.TrackerReconDriver">
+            <trackCollectionName>Tracks_s123_c4_e56</trackCollectionName>
+            <strategyResource>HPS_s123_c4_e56.xml</strategyResource>
+            <debug>false</debug>
+            <rmsTimeCut>8.0</rmsTimeCut>
+        </driver>                
+        <driver name="TrackReconSeed123Conf5Extd46" type="org.hps.recon.tracking.TrackerReconDriver">
+            <trackCollectionName>Tracks_s123_c5_e46</trackCollectionName>
+            <strategyResource>HPS_s123_c5_e46.xml</strategyResource>
+            <debug>false</debug>
+            <rmsTimeCut>8.0</rmsTimeCut>
+        </driver>       
+        <driver name="GBLOutputDriver" type="org.hps.recon.tracking.gbl.GBLOutputDriver"/>             
         <driver name="EcalRawConverter" type="org.hps.recon.ecal.EcalRawConverterDriver">
             <ecalCollectionName>EcalCalHits</ecalCollectionName>
             <use2014Gain>false</use2014Gain>

Modified: java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullRecon_Pass2.lcsim
 =============================================================================
--- java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullRecon_Pass2.lcsim	(original)
+++ java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullRecon_Pass2.lcsim	Fri Aug 28 12:08:13 2015
@@ -25,7 +25,7 @@
             layer 2 to confirm and layers 1 and 6 to extend. The collection
             name of the tracks found with this strategy will be "MatchedTracks".
         -->
-        <driver name="TrackReconSeed345Conf2Extd16"/>
+        <driver name="TrackReconSeed345Conf2Extd16"/>       
         <!-- 
             Will run track finding algorithm using layers 456 as a seed, 
             layer 3 to confirm and layers 2 and 1 to extend.  The collection
@@ -52,8 +52,8 @@
             ReconstructedParticle types are properly set.
          -->
         <driver name="TrackDataDriver" />
+        <driver name="GBLOutputDriver" />
         <driver name="ReconParticleDriver" />   
-        <driver name="GBLOutputDriver"/>              
         <driver name="LCIOWriter"/>
         <driver name="CleanupDriver"/>
     </execute>    
@@ -159,11 +159,7 @@
         </driver>             
         <driver name="TrackDataDriver" type="org.hps.recon.tracking.TrackDataDriver" />
         <driver name="ReconParticleDriver" type="org.hps.recon.particle.HpsReconParticleDriver" />  
-        <driver name="GBLOutputDriver" type="org.hps.recon.tracking.gbl.GBLOutputDriver">
-            <debug>0</debug>
-            <isMC>false</isMC>
-            <gblFileName>${outputFile}.gbl</gblFileName>
-        </driver>   
+        <driver name="GBLOutputDriver" type="org.hps.recon.tracking.gbl.GBLOutputDriver"/>      
         <driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver">
             <outputFilePath>${outputFile}.slcio</outputFilePath>
         </driver>

Modified: java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLOutputDriver.java
 =============================================================================
--- java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLOutputDriver.java	(original)
+++ java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLOutputDriver.java	Fri Aug 28 12:08:13 2015
@@ -23,16 +23,18 @@
 import org.lcsim.util.aida.AIDA;
 
 /**
-* This driver class is used to 
-* 1) write lcio collection of GBL info objects OR
-* 2) write GBL info into a unstructures text-based output
-* 
-* It uses a helper class that does the actual work. We will port GBL to java and that will replace this driver.
-* 
-* @author Per Hansson Adrian <[log in to unmask]>
-* @version $Id: GBLOutputDriver.java,v 1.9 2013/11/07 03:54:58 phansson Exp $ $Date: 2013/11/07 03:54:58 $ $Author: phansson $ 
-* 
-*/
+ * This driver class is used to
+ * 1) write lcio collection of GBL info objects OR
+ * 2) write GBL info into a unstructures text-based output
+ *
+ * It uses a helper class that does the actual work. We will port GBL to java
+ * and that will replace this driver.
+ *
+ * @author Per Hansson Adrian <[log in to unmask]>
+ * @version $Id: GBLOutputDriver.java,v 1.9 2013/11/07 03:54:58 phansson Exp $
+ * $Date: 2013/11/07 03:54:58 $ $Author: phansson $
+ *
+ */
 public class GBLOutputDriver extends Driver {
 
     private AIDA aida = AIDA.defaultInstance();
@@ -40,27 +42,24 @@
     GBLOutput gbl = null;
     TruthResiduals truthRes = null;
     private String gblFileName = "";
-    private String outputPlotFileName="";
-    private String MCParticleCollectionName = "MCParticle";
+    private String outputPlotFileName = "";
+    private String MCParticleCollectionName = "MCParticle";   
     private int _debug = 0;
-    private boolean isMC = true;
-    private int totalTracks=0;
-    private int totalTracksProcessed=0;
+    private boolean isMC = false;
+    private int totalTracks = 0;
+    private int totalTracksProcessed = 0;
     private int iTrack = 0;
     private int iEvent = 0;
-    
-    
-    
+
     public GBLOutputDriver() {
     }
 
-    
     @Override
     public void detectorChanged(Detector detector) {
         Hep3Vector bfield = detector.getFieldMap().getField(new BasicHep3Vector(0., 0., 1.));
-        
+
         // Create the class that handles all the GBL output
-        gbl = new GBLOutput(gblFileName,bfield); // if filename is empty no text file is written
+        gbl = new GBLOutput(gblFileName, bfield); // if filename is empty no text file is written
         gbl.setDebug(_debug);
         gbl.buildModel(detector);
         gbl.setAPrimeEventFlag(false);
@@ -71,85 +70,82 @@
         //truthRes.setDebug(_debug);
         //truthRes.setHideFrame(hideFrame);
     }
-    
-    
-    
+
     @Override
-    public void process(EventHeader event) {
-
-        
-        List<Track> tracklist = null;
-        if(event.hasCollection(Track.class,"MatchedTracks")) {        
-            tracklist = event.get(Track.class, "MatchedTracks");
-             if(_debug>0) {
-                System.out.printf("%s: Event %d has %d tracks\n", this.getClass().getSimpleName(),event.getEventNumber(),tracklist.size());
-             }
-        }
+    public void process(EventHeader event) {      
+        // Check if the event contains a collection of the type Track. If it
+        // doesn't skip the event.
+        if (!event.hasCollection(Track.class))
+            return;
+
+        // Get all collections of the type Track from the event. This is
+        // required since the event contains a track collection for each of the
+        // different tracking strategies.
+        List<List<Track>> trackCollections = event.get(Track.class);
+        if (_debug > 0)
+            System.out.printf("%s: Event %d has %d tracks\n", this.getClass().getSimpleName(), event.getEventNumber(), trackCollections.size());
 
         List<SiTrackerHitStrip1D> stripHits = event.get(SiTrackerHitStrip1D.class, "StripClusterer_SiTrackerHitStrip1D");
-        if(_debug>0) System.out.printf("%s: Got %d SiTrackerHitStrip1D in this event\n", stripHits.size());
-        
-       
+        if (_debug > 0)
+            System.out.printf("%s: Got %d SiTrackerHitStrip1D in this event\n", stripHits.size());
 
         List<MCParticle> mcParticles = new ArrayList<MCParticle>();
-        if(event.hasCollection(MCParticle.class,this.MCParticleCollectionName)) {
-        	mcParticles = event.get(MCParticle.class,this.MCParticleCollectionName);
-        }
+        if (event.hasCollection(MCParticle.class, this.MCParticleCollectionName))
+            mcParticles = event.get(MCParticle.class, this.MCParticleCollectionName);
 
         List<SimTrackerHit> simTrackerHits = new ArrayList<SimTrackerHit>();
-        if (event.hasCollection(SimTrackerHit.class, "TrackerHits")) {
-        	simTrackerHits = event.get(SimTrackerHit.class, "TrackerHits");
-        }
-        
-        if(isMC) {
-        	if(truthRes != null) {
-        		truthRes.processSim(mcParticles, simTrackerHits);
-        	}	
-        }
-        
-        
-        List<Track> selected_tracks = new ArrayList<Track>();
-        for (Track trk : tracklist) {
-            totalTracks++;            
-            if(TrackUtils.isGoodTrack(trk, tracklist, EventQuality.Quality.NONE)) {
-                if(_debug>0) System.out.printf("%s: Track failed selection\n", this.getClass().getSimpleName());
-                selected_tracks.add(trk);
+        if (event.hasCollection(SimTrackerHit.class, "TrackerHits"))
+            simTrackerHits = event.get(SimTrackerHit.class, "TrackerHits");
+
+        if (isMC)
+            if (truthRes != null)
+                truthRes.processSim(mcParticles, simTrackerHits);
+        // Loop over each of the track collections retrieved from the event
+         List<Track> selected_tracks = new ArrayList<Track>();
+        for (List<Track> tracklist : trackCollections) {           
+            for (Track trk : tracklist) {
+                totalTracks++;
+                if (TrackUtils.isGoodTrack(trk, tracklist, EventQuality.Quality.NONE)) {
+                    if (_debug > 0)
+                        System.out.printf("%s: Track failed selection\n", this.getClass().getSimpleName());
+                    selected_tracks.add(trk);
+                }
             }
         }
-
         // GBLData 
         // containers and data
-        List<GBLEventData> gblEventData =  new ArrayList<GBLEventData>(); 
-        gblEventData.add(new GBLEventData(event.getEventNumber(),gbl.get_B().z()));
-        List<GBLTrackData> gblTrackDataList =  new ArrayList<GBLTrackData>(); 
-        List<GBLStripClusterData> gblStripDataListAll  = new ArrayList<GBLStripClusterData>();
-        List<GBLStripClusterData> gblStripDataList  = new ArrayList<GBLStripClusterData>();
+        List<GBLEventData> gblEventData = new ArrayList<GBLEventData>();
+        gblEventData.add(new GBLEventData(event.getEventNumber(), gbl.get_B().z()));
+        List<GBLTrackData> gblTrackDataList = new ArrayList<GBLTrackData>();
+        List<GBLStripClusterData> gblStripDataListAll = new ArrayList<GBLStripClusterData>();
+        List<GBLStripClusterData> gblStripDataList = new ArrayList<GBLStripClusterData>();
         List<LCRelation> gblTrackToStripClusterRelationListAll = new ArrayList<LCRelation>();
         List<LCRelation> trackToGBLTrackRelationListAll = new ArrayList<LCRelation>();
-        
-        gbl.printNewEvent(iEvent,gbl.get_B().z());
+
+        gbl.printNewEvent(iEvent, gbl.get_B().z());
 
         iTrack = 0;
         for (Track trk : selected_tracks) {
-            if(_debug>0) System.out.printf("%s: Print GBL output for this track\n", this.getClass().getSimpleName());
-            
+            if (_debug > 0)
+                System.out.printf("%s: Print GBL output for this track\n", this.getClass().getSimpleName());
+
             //GBLDATA
             GBLTrackData gblTrackData = new GBLTrackData(iTrack);
-            gblTrackDataList.add(gblTrackData);            
-            
+            gblTrackDataList.add(gblTrackData);
+
             //print to text file
             gbl.printTrackID(iTrack);
-            gbl.printGBL(trk, stripHits, gblTrackData,gblStripDataList,mcParticles,simTrackerHits,this.isMC);
-            
+            gbl.printGBL(trk, stripHits, gblTrackData, gblStripDataList, mcParticles, simTrackerHits, this.isMC);
+
             //GBLDATA
             //add relation to normal track object
-            trackToGBLTrackRelationListAll.add(new MyLCRelation(trk,gblTrackData));
+            trackToGBLTrackRelationListAll.add(new MyLCRelation(trk, gblTrackData));
             // add strip clusters to lists
-            for(GBLStripClusterData gblStripClusterData : gblStripDataList) {
+            for (GBLStripClusterData gblStripClusterData : gblStripDataList) {
                 // add all strip clusters from this track to output list
                 gblStripDataListAll.add(gblStripClusterData);
                 // add LC relations between cluster and track
-                gblTrackToStripClusterRelationListAll.add(new MyLCRelation(gblTrackData,gblStripClusterData));
+                gblTrackToStripClusterRelationListAll.add(new MyLCRelation(gblTrackData, gblStripClusterData));
             }
             // clear list of strips for next track
             gblStripDataList.clear();
@@ -157,50 +153,48 @@
             totalTracksProcessed++;
             ++iTrack;
         }
-        
-        // Put GBL info into event
-        event.put("GBLEventData", gblEventData, GBLEventData.class, 0);
-        event.put("GBLTrackData", gblTrackDataList, GBLTrackData.class, 0);
-        event.put("GBLStripClusterData", gblStripDataListAll, GBLStripClusterData.class, 0);
-        event.put("GBLTrackToStripData", gblTrackToStripClusterRelationListAll, LCRelation.class, 0);
-        event.put("TrackToGBLTrack", trackToGBLTrackRelationListAll, LCRelation.class, 0);
+    
+        event.put("GBLEventData" , gblEventData, GBLEventData.class, 0);
+        event.put("GBLTrackData" , gblTrackDataList, GBLTrackData.class, 0);
+        event.put("GBLStripClusterData" , gblStripDataListAll, GBLStripClusterData.class, 0);
+        event.put("GBLTrackToStripData" , gblTrackToStripClusterRelationListAll, LCRelation.class, 0);
+        event.put("TrackToGBLTrack" , trackToGBLTrackRelationListAll, LCRelation.class, 0);
 
         ++iEvent;
-        
+
     }
 
     @Override
     public void endOfData() {
-        if(gbl!=null)
+        if (gbl != null)
             gbl.close();
-        
-        if (!"".equals(outputPlotFileName)) {
+
+        if (!"".equals(outputPlotFileName))
             try {
                 aida.saveAs(outputPlotFileName);
             } catch (IOException ex) {
                 Logger.getLogger(GBLOutputDriver.class.getName()).log(Level.SEVERE, "Couldn't save aida plots to file " + outputPlotFileName, ex);
             }
-        }
-        System.out.println(this.getClass().getSimpleName() + ": Total Number of Events           = "+iEvent);
-        System.out.println(this.getClass().getSimpleName() + ": Total Number of Tracks           = "+totalTracks);
-        System.out.println(this.getClass().getSimpleName() + ": Total Number of Tracks Processed = "+totalTracksProcessed);
-        
-        
-    }
-    
+        System.out.println(this.getClass().getSimpleName() + ": Total Number of Events           = " + iEvent);
+        System.out.println(this.getClass().getSimpleName() + ": Total Number of Tracks           = " + totalTracks);
+        System.out.println(this.getClass().getSimpleName() + ": Total Number of Tracks Processed = " + totalTracksProcessed);
+
+    }
+
     public void setDebug(int v) {
         this._debug = v;
     }
+
     public void setGblFileName(String filename) {
         gblFileName = filename;
     }
+
     public void setOutputPlotFileName(String filename) {
         outputPlotFileName = filename;
-    }    
+    }
+
     public void setIsMC(boolean isMC) {
         this.isMC = isMC;
     }
 
-    
-    
 }