Print

Print


Commit in lcsim/src/org/lcsim/contrib/SteveMagill on MAIN
PFATemplate.java+190added 1.1


lcsim/src/org/lcsim/contrib/SteveMagill
PFATemplate.java added at 1.1
diff -N PFATemplate.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ PFATemplate.java	12 Jan 2007 21:44:50 -0000	1.1
@@ -0,0 +1,190 @@
+import java.util.*;
+import org.lcsim.util.*;
+import org.lcsim.util.hitmap.*;
+import org.lcsim.util.aida.AIDA;
+import org.lcsim.recon.cluster.util.CalHitMapDriver;
+import org.lcsim.digisim.DigiSimDriver;
+import org.lcsim.digisim.SimCalorimeterHitsDriver;
+import org.lcsim.recon.cluster.fixedcone.*;
+import org.lcsim.recon.cluster.nn.*;
+
+public class PFATemplate extends Driver
+{
+   private AIDA aida = AIDA.defaultInstance();
+   
+   public PFATemplate()
+   {
+       
+//  INITIALIZE Analysis - use DIGISIM to get hits after timing, threshold, etc. cuts 
+//  this implementation allows individual steering file to be used
+       add(new CalHitMapDriver());
+       DigiSimDriver digi = new DigiSimDriver();
+       //  set steering file - CHANGE THIS TO YOUR DIRECTORY
+       digi.setSteeringFile("C:\\Documents and Settings\\adminsrm\\.JAS3\\java\\WSc0005.steer");
+       add(digi);
+       add(new SimCalorimeterHitsDriver());
+       //  output of DigiSim is hit collections - EcalBarrDigiHits, EcalEndcapDigiHits, HcalBarrDigiHits, HcalEndcapDigiHits
+
+//  MCFILTER here, PERFECT PFA here, etc.
+       //  add a MC Filter if wanted
+//       add(new ZPoleMCFilter());  //my old ZPole filter, but needs changed to reflect changes in Perfect PFA
+       //  add Perfect PFA calculation here - make perfect charged clusters, neutral clusters and photon clusters
+//       PerfectPFADriver ppfadriver = new PerfectPFADriver();
+//       String[] ppcollnames = {"EcalBarrDigiHits","HcalBarrDigiHits","EcalEndcapDigiHits","HcalEndcapDigiHits"};
+//       ppfadriver.setCollectionNames(ppcollnames);
+//       add(ppfadriver);
+
+//  To start PFA, make hitmaps - for now, separate by subdetector - uses DigiSim output collections
+       HitListToHitMapDriver ebhitmap = new HitListToHitMapDriver();
+       ebhitmap.addInputList("EcalBarrDigiHits");
+       ebhitmap.setOutput("EMBarrhitmap");
+       add(ebhitmap);
+       HitListToHitMapDriver hbhitmap = new HitListToHitMapDriver();
+       hbhitmap.addInputList("HcalBarrDigiHits");
+       hbhitmap.setOutput("HADBarrhitmap");
+       add(hbhitmap);
+       HitListToHitMapDriver eehitmap = new HitListToHitMapDriver();
+       eehitmap.addInputList("EcalEndcapDigiHits");
+       eehitmap.setOutput("EMEndcaphitmap");
+       add(eehitmap);
+       HitListToHitMapDriver hehitmap = new HitListToHitMapDriver();
+       hehitmap.addInputList("HcalEndcapDigiHits");
+       hehitmap.setOutput("HADEndcaphitmap"); 
+       add(hehitmap);
+       
+//  TRACK-MIP ASSOCIATION driver - this is an example of a PFA algorithm running on collections
+//  hitmaps are modified by the algorithm - mip hits are removed from hitmaps
+//       double dminE = 0.005;
+//       double dminH = 3*dminE;
+//       double dminTrC = 0.008;  // original default is 0.0075
+//       TrackMipClusterDriver TMdriver = new TrackMipClusterDriver(dminE, dminH, dminTrC);
+//       String[] tmcollnames = {"EcalBarrDigiHits","HcalBarrDigiHits","EcalEndcapDigiHits","HcalEndcapDigiHits"};
+//       TMdriver.setCollectionNames(tmcollnames);
+//       TMdriver.setClusterNameExtension("TMClusters");
+//       add(TMdriver);
+       
+//  Convert modified hitmaps to new hit collections for clustering
+       HitMapToHitListDriver embconverter = new HitMapToHitListDriver();
+       embconverter.setInputHitMap("EMBarrhitmap");
+       embconverter.setOutputList("EBTMHits");
+       add(embconverter);
+       HitMapToHitListDriver emeconverter = new HitMapToHitListDriver();
+       emeconverter.setInputHitMap("EMEndcaphitmap");
+       emeconverter.setOutputList("EECTMHits");
+       add(emeconverter);
+       HitMapToHitListDriver hadbconverter = new HitMapToHitListDriver();
+       hadbconverter.setInputHitMap("HADBarrhitmap");
+       hadbconverter.setOutputList("HBTMHits");
+       add(hadbconverter);
+       HitMapToHitListDriver hadeconverter = new HitMapToHitListDriver();
+       hadeconverter.setInputHitMap("HADEndcaphitmap");
+       hadeconverter.setOutputList("HECTMHits");
+       add(hadeconverter);
+       
+//  PHOTON FINDER - another example algorithm - starts with clusters from selected collections
+       double radius = 0.05;
+       double seed = 0.;
+       double minE = 0.;
+       FixedConeClusterDriver FCdriver = new FixedConeClusterDriver(radius, seed, minE);
+       String[] fchitcollnames = {"EBTMHits","EECTMHits"};
+       FCdriver.setCollectionNames(fchitcollnames);
+       FCdriver.setClusterNameExtension("FCClus");
+       add(FCdriver);
+
+// add photon finder here - takes above clusters as input, output is photon clusters
+//       int mincells = 10;
+//       PhotonFinderDriver Phdriver = new PhotonFinderDriver(mincells);
+//       String[] phclusnames = {"EBTMHitsFCClus","EECTMHitsFCClus"};
+//       Phdriver.setClusterNames(phcollnames);
+//       Phdriver.setClusterNameExtension("PhoClus");
+//       add(Phdriver);
+       
+//  Now, first make photon clusters into a hitmap, then modify original hitmap by subtracting Photon hitmaps from original
+//  then make collectons for clustering again (ONLY WORKS WHEN PHOTONS ARE FOUND)
+       //  barrel
+//       ClusterListToHitMapDriver BPhotoHitDriver = new ClusterListToHitMapDriver();
+//       BPhotoHitDriver.addInputList("PhotonBClusters");
+//       BPhotoHitDriver.setOutputHitMap("BPHitMap");
+//       add(BPhotoHitDriver);
+//       HitMapSubtractDriver TMBPhodriver = new HitMapSubtractDriver();
+//       TMBPhodriver.setFirstHitMap("EMBarrhitmap");
+//       TMBPhodriver.setSecondHitMap("BPHitMap");
+//       TMBPhodriver.setOutputHitMap("EMBarrhitmap");
+//       add(TMBPhodriver);
+       HitMapToHitListDriver btmphoconverter = new HitMapToHitListDriver();
+       btmphoconverter.setInputHitMap("EMBarrhitmap");
+       btmphoconverter.setOutputList("EBTMPHits");
+       add(btmphoconverter);
+       //  endcap
+//       ClusterListToHitMapDriver ECPhotoHitDriver = new ClusterListToHitMapDriver();
+//       ECPhotoHitDriver.addInputList("PhotonECClusters");
+//       ECPhotoHitDriver.setOutputHitMap("ECPHitMap");
+//       add(ECPhotoHitDriver);
+//       HitMapSubtractDriver TMECPhodriver = new HitMapSubtractDriver();
+//       TMECPhodriver.setFirstHitMap("EMEndcaphitmap");
+//       TMECPhodriver.setSecondHitMap("ECPHitMap");
+//       TMECPhodriver.setOutputHitMap("EMEndcaphitmap");
+//       add(TMECPhodriver);
+       HitMapToHitListDriver ectmphoconverter = new HitMapToHitListDriver();
+       ectmphoconverter.setInputHitMap("EMEndcaphitmap");
+       ectmphoconverter.setOutputList("EECTMPHits");
+       add(ectmphoconverter);
+       
+//  TRACK - CLUSTER MATCHING Algorithm here, first cluster remaining hits in ECAL, HCAL
+       //  HCALs
+       int dU = 6;
+       int dV = 6;
+       int dLayer = 6;
+       int ncells = 6;
+       double thresh = 0;
+       NearestNeighborClusterDriver NNHdriver = new NearestNeighborClusterDriver(dU, dV, dLayer, ncells, thresh);
+       String[] nnhhitcollnames = {"HBTMHits","HECTMHits"};
+       NNHdriver.setCollectionNames(nnhhitcollnames);
+       NNHdriver.setClusterNameExtension("NNHClus");
+       add(NNHdriver);
+
+       //  ECALs
+       dU = 5;
+       dV = 5;
+       dLayer = 5;
+       ncells = 5;
+       thresh = 0;
+       NearestNeighborClusterDriver NNEdriver = new NearestNeighborClusterDriver(dU, dV, dLayer, ncells, thresh);
+       String[] nnehitcollnames = {"EBTMPHits","EECTMPHits"};
+       NNEdriver.setCollectionNames(nnehitcollnames);
+       NNEdriver.setClusterNameExtension("NNEClus");
+       add(NNEdriver);       
+       
+//  add track/shower matching driver here
+//       TrackShowerClusterDriver TrShdriver = new TrackShowerClusterDriver();
+//       String[] shclnames = {"EBTMPHitsNNEClus","EECTMPHitsNNEClus","HBTMHitsNNHClus","HECTMHitsNNHClus"};
+//       TrShdriver.setClusterNames(shclnames);
+//       add(TrShdriver);
+
+//  more hitmap manipulation here if needed
+//  add neutral hadron finder driver here
+//       NeutralHadronDriver NHdriver = new NeutralHadronDriver();
+//       String[] nshclnames = {"EBTMPHitsNNEClus","EECTMPHitsNNEClus","HBTMHitsNNHClus","HECTMHitsNNHClus"};
+//       NHdriver.setClusterNames(nshclnames);
+//       add(NHdriver);  
+       
+   }
+
+//  if you need event loop, add here (shows how filter is applied
+//   protected void process(EventHeader event)
+//   {
+       
+//       super.process(event);    // executes all added drivers
+       
+//        boolean mcfltr = true;
+//        mcfltr = (Boolean)event.get("MCFilt");
+//        System.out.println("MCFilt is " +mcfltr);
+//        if (mcfltr)
+//        {
+            // put processing here
+            
+//        }
+
+   //  end of everything in event   
+//   }
+}
CVSspam 0.2.8