Print

Print


Commit in lcsim/src/org/lcsim/contrib/SteveMagill on MAIN
HighPTemplate.java+303added 1.1


lcsim/src/org/lcsim/contrib/SteveMagill
HighPTemplate.java added at 1.1
diff -N HighPTemplate.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ HighPTemplate.java	29 May 2008 21:29:24 -0000	1.1
@@ -0,0 +1,303 @@
+package org.lcsim.contrib.compile.SteveMagill;
+
+import java.util.*;
+import org.lcsim.util.*;
+import org.lcsim.event.*;
+import org.lcsim.event.util.*;
+import org.lcsim.util.hitmap.*;
+
+import org.lcsim.recon.cluster.util.CalHitMapDriver;
+import org.lcsim.digisim.DigiSimDriver;
+import org.lcsim.digisim.SimCalorimeterHitsDriver;
+import org.lcsim.util.hitmap.HitListToHitMapDriver;
+import org.lcsim.util.hitmap.HitMapToHitListDriver;
+import org.lcsim.event.util.CreateFinalStateMCParticleList;
+import org.lcsim.recon.cluster.cheat.PerfectClusterer;
+import org.lcsim.recon.pfa.cheat.PerfectIdentifier;
+
+import org.lcsim.recon.cluster.cheat.CheatClusterDriver;
+import org.lcsim.recon.tracking.cheat.CheatTrackDriver;
+import org.lcsim.recon.particle.CheatParticleDriver;
+import org.lcsim.contrib.Cassell.recon.analysis.ClusterCollectionEnergies;
+import org.lcsim.contrib.Cassell.recon.Cheat.PPRDriver;
+import org.lcsim.contrib.Cassell.recon.Cheat.CheatReconDriver;
+import org.lcsim.contrib.Cassell.recon.DTPhotons.*;
+
+import org.lcsim.recon.cluster.fixedcone.*;
+import org.lcsim.recon.cluster.nn.*;
+import org.lcsim.recon.cluster.directedtree.DirectedTreeDriver;
+
+// import org.lcsim.recon.cluster.util.HitInECALDecision;
+import org.lcsim.util.hitmap.HitMapFilter;
+import org.lcsim.util.hitmap.HitMapFilterDriver;
+import org.lcsim.util.decision.NotDecisionMakerSingle;
+
+import hep.physics.jet.*;
+
+public class HighPTemplate extends Driver
+{
+   
+   public HighPTemplate()
+   {
+       
+//  **********************INITIALIZATION****************************************
+       //  use DIGISIM to get hits after timing, threshold, etc. cuts 
+       add(new CalHitMapDriver());
+       DigiSimDriver digi = new DigiSimDriver();
+       add(digi);
+       add(new SimCalorimeterHitsDriver());
+       //  output of DigiSim is hit collections - EcalBarrDigiHits, EcalEndcapDigiHits, HcalBarrDigiHits, HcalEndcapDigiHits
+       
+//  OPTIONAL - make subdetector hitmaps from DigiSim collections so both are available for PFA
+       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);
+
+//  also OPTIONAL - make a combined hitmap for the digisim output hits 
+//  now have 5 hitmaps, 1 for each cal subdetector and 1 with all hits
+       HitListToHitMapDriver digiHitMap = new HitListToHitMapDriver();
+       digiHitMap.addInputList("EcalBarrDigiHits");
+       digiHitMap.addInputList("EcalEndcapDigiHits");
+       digiHitMap.addInputList("HcalBarrDigiHits");
+       digiHitMap.addInputList("HcalEndcapDigiHits");
+       digiHitMap.setOutput("OrigDigiHitMap");
+       add(digiHitMap);
+       
+//  ***********************Perfect PFA******************************************
+//  form Perfect Reconstructed Particles (Perfect PFA) from MC
+       String CCname = "PerfectCheatClusters";
+       String CRPname = "CheatReconstructedParticles";
+       
+       //  do cheat reconstruction
+       CheatReconDriver crd = new CheatReconDriver();
+       crd.setCheatReconstructedParticleOutputName(CRPname);
+       crd.setCheatClusterOutputName(CCname);
+       crd.setCheatFSTrackOutputName("PerfectTracks");
+       add(crd);
+       
+       // now make (more realistic) cheated tracks, etc with PPR driver
+       String outName = "PerfectRecoParticles";
+       add(new PPRDriver(CRPname,outName));
+//  Perfect Reconstructed Particle list - PerfectReconstructedParticles
+//  also have PerfectCheatClusters and Perfect Tracks (FSReconTracks)
+
+//  **************************TRACK Selection Here******************************
+       //  when ready, add real track reconstruction driver here
+//       RealTrackDriver realtrack = new RealTrackDriver();
+//       realtrack.setTrackNames("RealTracks");
+//       add(realtrack);
+
+       //  Utility to get some SpacePoints of extrapolated track positions -
+       //  useful for many algorithms
+       //  So far, 3 output maps - TrkXE0Map (Track pos at ECAL layer 0),
+       //  TrkXEShMaxMap (Track pos at Shower Max), and TrkXH0Map (Track
+       //  pos at HCAL layer 0)
+       TrkXPosDriver txpdriver = new TrkXPosDriver();
+       txpdriver.setInputTrackList("PerfectTracks");
+       add(txpdriver);       
+       
+//  *******************TRACK-MIP ASSOCIATION Driver*****************************
+//  this is an example of a PFA algorithm running on hit collections
+//  hitmaps are modified by the algorithm - mip hits are removed from hitmaps
+       double dminE = 0.005;  // hard-coded now - change to detector independent value
+       double dminH = 3*dminE;  //  same here
+       double dminTrC = 0.01;  // default range is 0.0175 - 0.0225 tuned with muons
+       double mincd = 3.5;  // min density to make mip - default is 3.5 tuned with muons
+       TrackMipClusterDriver TMdriver = new TrackMipClusterDriver(dminE, dminH, dminTrC, mincd);
+       String[] tmcollnames = {"EcalBarrDigiHits","HcalBarrDigiHits","EcalEndcapDigiHits","HcalEndcapDigiHits"};
+//       String[] tmcollnames = {"EBHits","HBHits","EEHits","HEHits"};
+       TMdriver.setCollectionNames(tmcollnames);
+       TMdriver.setClusterNameExtension("TMClusters");
+       add(TMdriver);
+       //  Output of this driver is mip clusters attached to tracks - TMClusters
+
+       //  OPTIONAL - checks purity of mip clusters - diagnostic routine only
+       TrMipCompDriver tmcdriver = new TrMipCompDriver();
+       String tmnames = ("TMClusters");
+       tmcdriver.setTrMipClusName(tmnames);
+       add(tmcdriver);       
+       
+       //  Convert modified hitmaps to new hit collections for clustering after mips removed
+       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);
+       
+//  **********************HMATRIX PHOTON FINDER*********************************************
+       //  Combine barrel, endcap EM hits into hitmap
+       HitListToHitMapDriver NMHitMap = new HitListToHitMapDriver();
+       NMHitMap.addInputList("EBTMHits");
+       NMHitMap.addInputList("EECTMHits");
+       NMHitMap.setOutput("EMNMHitMap");
+       add(NMHitMap);
+       
+       //  also, make a combined barrel,EC had hitmap
+       HitListToHitMapDriver NMPHitMap = new HitListToHitMapDriver();
+       NMPHitMap.addInputList("HBTMHits");
+       NMPHitMap.addInputList("HECTMHits");
+       NMPHitMap.setOutput("NMPHhitmap");
+       add(NMPHitMap);
+       
+       //  Directed Tree clusterer for HM Photon Finder
+       int minsize = 16;
+       DirectedTreeDriver DTPhdriver = new DirectedTreeDriver();
+       DTPhdriver.setInputHitMap("EMNMHitMap");
+       DTPhdriver.setOutputClusterList("NMEMDTClus");
+       DTPhdriver.setMinimumClusterSize(minsize);
+       add(DTPhdriver);     
+       
+       // add HMatrix Photon Finder PFA algorithm here - takes above clusters as input,
+       // runs NN 11110 on the cluster hits and applies HMatrix
+       int mincells = 20;  // default is 20-25, clear break in hits vs e at 20-25, 500 MeV
+       double dTrcl = 0.025;  // min distance from nearest track (0.05 - 0.08 is shoulder)
+       double phminE = 0.75;  // see above for mincells
+       HMPhoDriver HMdriver = new HMPhoDriver(mincells,dTrcl,phminE);
+       String CALclname = ("NMEMDTClus");
+       HMdriver.setInputClusterName(CALclname);
+       HMdriver.setOutputClusterName("HMPhoClusters");
+       add(HMdriver);
+               
+       //  OPTIONAL checks purity of photon clusters - diagnostic routine only
+       PhoCompDriver phdriver = new PhoCompDriver();
+       String phonames = ("HMPhoClusters");       
+       phdriver.setPhoClusNames(phonames);
+       add(phdriver);       
+       
+//  ******************************end of HMPhoton Finder************************************
+       
+       //  Now, modify hitmap taking out hits in Photons, then make collectons for hadron shower clustering
+       ClusterListToHitMapDriver PhotoHitDriver = new ClusterListToHitMapDriver();
+       PhotoHitDriver.addInputList("HMPhoClusters");
+       PhotoHitDriver.setOutputHitMap("PhHitMap");
+       add(PhotoHitDriver);
+       HitMapSubtractDriver TMPdriver = new HitMapSubtractDriver();
+       TMPdriver.setFirstHitMap("EMNMHitMap");
+       TMPdriver.setSecondHitMap("PhHitMap");
+       TMPdriver.setOutputHitMap("NMPEMhitmap");
+       add(TMPdriver);
+       HitMapToHitListDriver tmpconverter = new HitMapToHitListDriver();
+       tmpconverter.setInputHitMap("NMPEMhitmap");
+       tmpconverter.setOutputList("NMPEMHits");
+       add(tmpconverter);
+       
+       HitMapToHitListDriver htmpconverter = new HitMapToHitListDriver();
+       htmpconverter.setInputHitMap("NMPHhitmap");
+       htmpconverter.setOutputList("NMPHHits");
+       add(htmpconverter);       
+
+//  **********************TRACK - CLUSTER MATCHING driver ***********************************
+
+       // make a single hitmap for merge algorithm
+       HitListToHitMapDriver mHitMap = new HitListToHitMapDriver();
+       mHitMap.addInputList("NMPEMHits");
+       mHitMap.addInputList("NMPHHits");
+       mHitMap.setOutput("AllNMPHitMap");
+       add(mHitMap);
+       
+       // cluster with DT 
+       int allsize = 3;
+       DirectedTreeDriver DTAlldriver = new DirectedTreeDriver();
+       DTAlldriver.setInputHitMap("AllNMPHitMap");
+       DTAlldriver.setOutputClusterList("AllDTNMPClus");
+       DTAlldriver.setMinimumClusterSize(allsize);
+       add(DTAlldriver);
+       
+       //  add matching driver here
+       double minsep = 0.01; // default for scin 0.025
+       int nloop = 5;  // default 5
+       double minEp = 0.75;  // default .65
+       double maxEp = 1.8;  // default 1.5
+
+       //  use track core only driver here
+//       TrCoreDriver trcdriver = new TrCoreDriver(minsep, maxEp);
+//       String[] shclnames = {"AllDTNMPClus"};  
+//       trcdriver.setClusterNames(shclnames);
+//       String outcllist = ("TrackCoreClusters");
+//       trcdriver.setOutputClusterList(outcllist);
+//       add(trcdriver);
+       
+       //  OPTIONAL - checks purity of track shower clusters - diagnostic routine only
+//       TrCoreCompDriver tccdriver = new TrCoreCompDriver();
+//       String tcnames = ("TrackCoreClusters");
+//       tccdriver.setTrCoreClusName(tcnames);
+//       add(tccdriver);              
+       
+       //  use full track shower driver here (includes core)
+       TSCDriver TrShdriver = new TSCDriver(minsep, nloop, minEp, maxEp);
+       String[] shclnames = {"AllDTNMPClus"};  
+       TrShdriver.setClusterNames(shclnames);
+       String outcllist = ("TrackCALClusters");
+       TrShdriver.setOutputClusterList(outcllist);
+       add(TrShdriver);
+       
+       //  OPTIONAL - checks purity of track shower clusters - diagnostic routine only
+       TrShowCompDriver tscdriver = new TrShowCompDriver();
+       String tsnames = ("TrackCALClusters");
+       tscdriver.setTrShowClusName(tsnames);
+       add(tscdriver);       
+       
+       //  subtract track-cal clusters from input hitmap
+       ClusterListToHitMapDriver TrShowerHitDriver = new ClusterListToHitMapDriver();
+       TrShowerHitDriver.addInputList("TrackCALClusters");
+       TrShowerHitDriver.setOutputHitMap("TrCALHitMap");
+       add(TrShowerHitDriver);
+       HitMapSubtractDriver TSsubdriver = new HitMapSubtractDriver();
+       TSsubdriver.setFirstHitMap("AllNMPHitMap");
+       TSsubdriver.setSecondHitMap("TrCALHitMap");
+       TSsubdriver.setOutputHitMap("AMPhTrCalhitmap");
+       add(TSsubdriver);
+       
+//  *************************Continue here with photons, N Hadrons*******************************       
+       
+       int nem = 3;
+       DirectedTreeDriver apedriver = new DirectedTreeDriver();
+       apedriver.setMinimumClusterSize(nem);
+       apedriver.setInputHitMap("AMPhTrCalhitmap");
+       apedriver.setOutputClusterList("NPCandClusters");
+       add(apedriver);
+       
+       //  add remaining cluster cheat ID here instead of PFA
+       //  combines HMPhoClusters and MorePhoClusters into PhotonClusters
+       ChClusIDDriver ccidriver = new ChClusIDDriver();
+       String clname = ("NPCandClusters");
+       ccidriver.setInputClusterName(clname);
+       ccidriver.setOutputPhoClusterName("MorePhoClusters");
+       ccidriver.setOutputNHClusterName("NeutralHadronClusters");
+       ccidriver.setOutputCHClusterName("UnusedCHClusters");
+       add(ccidriver);
+
+       //  Make Reconstructed Particle List from tracks, clusters
+       ClusterToReconstructedParticleDriver ClRPdriver = new ClusterToReconstructedParticleDriver();
+       ClRPdriver.setTrackNames("PerfectTracks");
+       ClRPdriver.setPhotonNames("PhotonClusters");
+       ClRPdriver.setNeutralHadNames("NeutralHadronClusters");
+       ClRPdriver.setRecoParticleName("AllRecoParticles");
+       add(ClRPdriver);
+
+   }
+}
CVSspam 0.2.8