lcsim/src/org/lcsim/contrib/SteveMagill
diff -N PFASelect.java
--- PFASelect.java 18 May 2007 19:59:11 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,170 +0,0 @@
-package org.lcsim.contrib.SteveMagill;
-
-import java.util.List;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.MCParticle;
-import org.lcsim.event.util.JetDriver;
-import org.lcsim.util.Driver;
-import hep.physics.vec.Hep3Vector;
-import org.lcsim.event.ReconstructedParticle;
-import org.lcsim.util.aida.AIDA;
-import hep.physics.jet.*;
-
-/*
- * PFASelect includes fiducial cut to select region for PFA analysis
- */
-
-public class PFASelect extends Driver
-{
-
- private AIDA aida = AIDA.defaultInstance();
-
- public PFASelect()
- {
- add(new PFATemplate());
-
- // now find jets with real Reco Particles
- JetDriver PFAjet = new JetDriver();
- PFAjet.setInputCollectionName("AllRecoParticles");
- PFAjet.setOutputCollectionName("PFAJets");
- JetFinder tworealjets = new FixNumberOfJetsFinder(2);
- PFAjet.setFinder(tworealjets);
- // for Durham jet, ycut = 0.25 at ZPole, 0.01 at 500 GeV ZZ
-// JetFinder rktjet = new DurhamJetFinder(0.0005);
-// PFAjet.setFinder(rktjet);
- add(PFAjet);
-
- // make perfect jets out of perfect particles
- JetDriver j = new JetDriver();
- j.setInputCollectionName("PerfectRecoParticles");
- j.setOutputCollectionName("PerfectJets");
- JetFinder twojet = new FixNumberOfJetsFinder(2);
- j.setFinder(twojet);
- // for Durham jet, ycut = 0.25 at ZPole, 0.01 at 500 GeV ZZ
-// JetFinder ktjet = new DurhamJetFinder(0.0005);
-// j.setFinder(ktjet);
- add(j);
-
- // make plots etc. from results
- PPFAPlotDriver ppfaplots = new PPFAPlotDriver();
- ppfaplots.setMCPartName("CheatReconstructedParticles");
- ppfaplots.setPerfJetName("PerfectJets");
- ppfaplots.setPFAJetName("PFAJets");
- ppfaplots.setPerfPartName("PerfectRecoParticles");
- ppfaplots.setPFAPartName("AllRecoParticles");
- add(ppfaplots);
- }
-
- protected void process(EventHeader event)
- {
- // Only process events with both jets costheta < costhetaMAX
-
- List<MCParticle> mcl = event.get(MCParticle.class,"MCParticle");
- boolean keepit = true;
- double Zmass = 0.;
- int ievt = 0;
- double costmax = 0.8;
- for(MCParticle p:mcl)
- {
- int id = Math.abs(p.getPDGID());
- if( (id == 1 )||(id == 2 )||(id == 3 ) )
- {
- if(p.getParents().get(0).getPDGID() == 23 )
- {
- Zmass = p.getParents().get(0).getMass();
-// System.out.println("Z Mass " + Zmass);
- Hep3Vector pp = p.getMomentum();
- double cost = Math.abs(pp.z()/pp.magnitude());
- if(cost > costmax)
- {
- keepit = false;
- continue;
- }
- }
- }
- }
-
- if(!keepit)
- {
- ievt++;
- return;
- }
- super.process(event);
- // add some plots here - get jet stuff
- List<ReconstructedParticle> perfjets = event.get(ReconstructedParticle.class,"PerfectJets");
- List<ReconstructedParticle> pfajets = event.get(ReconstructedParticle.class,"PFAJets");
-
- // here's some jet stuff for perfect jets
- double jESum = 0;
- double jPXSum = 0;
- double jPYSum = 0;
- double jPZSum = 0;
- double djm = 0;
- double[] jpz = new double[2];
- double[] jp = new double[2];
- int j = 0;
- aida.cloud1D("Number of Perfect Jets").fill(perfjets.size());
- if (perfjets.size() == 2)
- {
- // calculate dijet mass - don't we have something that does this?
- for (ReconstructedParticle perfjet : perfjets)
- {
- aida.cloud1D("Perfect Jet Energy").fill(perfjet.getEnergy());
- aida.cloud1D("Perfect Jet Mass").fill(perfjet.getMass());
-// jESum += perfjet.getEnergy();
- Hep3Vector j3v = perfjet.getMomentum();
- jPXSum += j3v.x();
- jPYSum += j3v.y();
- jPZSum += j3v.z();
- jp[j] = Math.sqrt(j3v.x()*j3v.x()+j3v.y()*j3v.y()+j3v.z()*j3v.z());
- // force jet mass 0
- jESum += jp[j];
- aida.cloud1D("Perfect Jet Energy zero mass").fill(jp[j]);
- jpz[j] = j3v.z();
- j++;
- }
- double jE2 = jESum*jESum;
- double jP2 = jPXSum*jPXSum+jPYSum*jPYSum+jPZSum*jPZSum;
- djm += Math.sqrt(jE2-jP2);
- aida.cloud1D("Perfect Dijet Mass").fill(djm);
- aida.cloud1D("Diff Perfect Dijet Mass").fill((djm-Zmass)/Math.sqrt(Zmass));
- }
-
- // now real PFA jets
- double rjESum = 0;
- double rjPXSum = 0;
- double rjPYSum = 0;
- double rjPZSum = 0;
- double rdjm = 0;
- double[] jrpz = new double[2];
- double[] jrp = new double[2];
- int k = 0;
- aida.cloud1D("Number of PFA Jets").fill(pfajets.size());
- if (pfajets.size() == 2)
- {
- // calculate dijet mass - don't we have something that does this?
- for (ReconstructedParticle pfajet : pfajets)
- {
- aida.cloud1D("PFA Jet Energy").fill(pfajet.getEnergy());
- aida.cloud1D("PFA Jet Mass").fill(pfajet.getMass());
-// rjESum += pfajet.getEnergy();
- Hep3Vector rj3v = pfajet.getMomentum();
- rjPXSum += rj3v.x();
- rjPYSum += rj3v.y();
- rjPZSum += rj3v.z();
- jrp[k] = Math.sqrt(rj3v.x()*rj3v.x()+rj3v.y()*rj3v.y()+rj3v.z()*rj3v.z());
- // force jet mass 0
- rjESum += jrp[k];
- aida.cloud1D("PFA Jet Energy zero mass").fill(jrp[k]);
- jrpz[k] = rj3v.z();
- k++;
- }
- double rjE2 = rjESum*rjESum;
- double rjP2 = rjPXSum*rjPXSum+rjPYSum*rjPYSum+rjPZSum*rjPZSum;
- rdjm += Math.sqrt(rjE2-rjP2);
- aida.cloud1D("PFA Dijet Mass").fill(rdjm);
- aida.cloud1D("Diff PFA Dijet Mass").fill((rdjm-Zmass)/Math.sqrt(Zmass));
- aida.cloud1D("Difference PFAJet and PerfJet DiJet Mass").fill(rdjm-djm);
- }
- }
-}
lcsim/src/org/lcsim/contrib/SteveMagill
diff -N PFATemplate.java
--- PFATemplate.java 19 Sep 2007 18:49:40 -0000 1.8
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,363 +0,0 @@
-package org.lcsim.contrib.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.Cheat.PPRParticleDriver;
-
-import org.lcsim.recon.cluster.fixedcone.*;
-import org.lcsim.recon.cluster.nn.*;
-import org.lcsim.recon.cluster.directedtree.DirectedTreeDriver;
-
-import hep.physics.jet.*;
-
-public class PFATemplate extends Driver
-{
-
-// String FSname = "SimFinalStateParticles";
-// String Tname = "RefinedCheatTracks";
-// String Cname = "CombinedDigiCheatClusters";
-// String defRname = "CheatReconstructedParticles";
- boolean FullPFA = false;
-
- public PFATemplate()
- {
-
-// 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");
-// digi.setSteeringFile("C:\\Documents and Settings\\adminsrm\\.JAS3\\java\\WSc000225.steer");
- digi.setSteeringFile("C:\\cvsstuff\\lcsim\\src\\org\\lcsim\\contrib\\SteveMagill\\WSc000225.steer");
-// digi.setSteeringFile("C:\\Documents and Settings\\tonyj\\.JAS3\\java\\WSc0005.steer");
-// digi.setSteeringFile("C:\\Documents and Settings\\adminsrm\\.JAS3\\java\\WSc000225.steer");
-// digi.setSteeringFile("C:\\Documents and Settings\\adminsrm\\.JAS3\\java\\WSc001.steer");
-// digi.setSteeringFile("C:\\Documents and Settings\\adminsrm\\.JAS3\\java\\WRPCnothr.steer");
- add(digi);
- add(new SimCalorimeterHitsDriver());
- // output of DigiSim is hit collections - EcalBarrDigiHits, EcalEndcapDigiHits, HcalBarrDigiHits, HcalEndcapDigiHits
-
-// make subdetector hitmaps from DigiSim 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);
-
-// 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("digi hitmap");
- add(digiHitMap);
-
- // Set up the MC list for perfect PFA
-// double rcut = 730.; // can have 3 hits in tracker (layer 3 is at 727 for ACME 0605)
-// double zcut = 730.; // can have 3 hits in tracker (layer 3 is at 727 for ACME 0605)
- double rcut = 400.; // Bruce said 400 mm at meeting March 13
- double zcut = 400.;
- CreateFinalStateMCParticleList mcListMakerGen = new CreateFinalStateMCParticleList("Gen");
- CreateFinalStateMCParticleList mcListMakerSim = new CreateFinalStateMCParticleList("Sim");
- mcListMakerSim.setRadiusCut(rcut);
- mcListMakerSim.setZCut(zcut);
-// mcListMakerSim.setKeepContinuousElectrons();
-// mcListMakerSim.setKeepContinuousHadrons();
-// mcListMakerSim.setKeepContinuousPhotons();
- add(mcListMakerGen);
- add(mcListMakerSim);
- String mcListGen = "GenFinalStateParticles";
- String mcListSim = "SimFinalStateParticles";
- String mcList = mcListSim; // Can choose the Gen or Sim list here
-
- String Tname = "RefinedCheatTracks";
- add(new CheatTrackDriver());
-
- String Cname = "PerfectCheatClusters";
- String[] collections = {"EcalBarrDigiHits","EcalEndcapDigiHits","HcalBarrDigiHits","HcalEndcapDigiHits"};
- add (new CheatClusterDriver(collections,Cname));
-
- String CRPname = "CheatReconstructedParticles";
- CheatParticleDriver cpd = new CheatParticleDriver(Cname,Tname,mcList);
- // Inputs Cheated Tracks, Cheated Clusters, and MC particle list to create Cheated Particles
- cpd.setOutputName(CRPname);
- add(cpd);
-
- // now make (more realistic) cheat tracks, etc with PPR driver
- String outName = "PerfectRecoParticles";
- int minT = 3;
- int minC = 2;
- PPRParticleDriver d = new PPRParticleDriver(CRPname, outName);
- d.setMinTrackerHits(minT);
- d.setMinCalorimeterHits(minC);
- add(d);
-
- // this makes perfect tracks from the perfect particles
- PerfectTrackDriver perftrk = new PerfectTrackDriver();
-// perftrk.setParticleNames(CRPname);
- perftrk.setParticleNames(outName);
- perftrk.setTrackNames("PerfectTracks");
- add(perftrk);
-
- // when ready, add real tracks here
-
-// 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.0075; // original default is 0.0075, .008
- double mincd = 2.5; // min density to make mip
- TrackMipClusterDriver TMdriver = new TrackMipClusterDriver(dminE, dminH, dminTrC, mincd);
- String[] tmcollnames = {"EcalBarrDigiHits","HcalBarrDigiHits","EcalEndcapDigiHits","HcalEndcapDigiHits"};
- TMdriver.setCollectionNames(tmcollnames);
- TMdriver.setClusterNameExtension("TMClusters");
- add(TMdriver);
-
- // Convert modified hitmap to hit list 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);
-
-// PHOTON FINDER
- // Fixed Cone (use for photons now until DT is fixed)
- double radius = 0.025;
- double seed = 0.;
- double minE = 0.0;
- FixedConeClusterDriver FCdriver = new FixedConeClusterDriver(radius, seed, minE);
- // for now, use digihits, but will use EMBarrTMHits and EMEndcapTMHits eventually
- String[] fchitcollnames = {"EBTMHits","EECTMHits","HBTMHits","HECTMHits"};
- FCdriver.setCollectionNames(fchitcollnames);
- FCdriver.setClusterNameExtension("FCClus");
- add(FCdriver);
-
- // to select EM clusters for photon finding, first need to eliminate those EM clusters
- // that match with a HAD cluster. Pick a clusterer with good purity - don't want to
- // make clusters from too many different particles.
- // first for barrel
-// CombinedClusterDriver CCBdriver = new CombinedClusterDriver();
-// String embclusname = ("EBTMHitsFCClus");
-// String hadbclusname = ("HBTMHitsFCClus");
-// String EBclname = ("EBOnlyClusters");
-// CCBdriver.setInputEClusterName(embclusname);
-// CCBdriver.setInputHClusterName(hadbclusname);
-// CCBdriver.setOutputClusterName(EBclname);
-// add(CCBdriver);
- // for endcap
-// CombinedClusterDriver CCECdriver = new CombinedClusterDriver();
-// String emecclusname = ("EECTMHitsFCClus");
-// String hadecclusname = ("HECTMHitsFCClus");
-// String EECclname = ("EECOnlyClusters");
-// CCECdriver.setInputEClusterName(emecclusname);
-// CCECdriver.setInputHClusterName(hadecclusname);
-// CCECdriver.setOutputClusterName(EECclname);
-// add(CCECdriver);
-
- // Use Directed Tree clusterer first to set up photon finding
- // this is setup differently than NN - no choice in hit collections - does all hits
-// DirectedTreeDriver DTBdriver = new DirectedTreeDriver();
-// DTBdriver.setInputHitMap("EMBarrhitmap");
-// DTBdriver.setOutputClusterList("EBTMHitsFCClus");
-// add(DTBdriver);
-
-// DirectedTreeDriver DTECdriver = new DirectedTreeDriver();
-// DTECdriver.setInputHitMap("EMEndcaphitmap");
-// DTECdriver.setOutputClusterList("EECTMHitsFCClus");
-// add(DTECdriver);
-
- // add photon finder here - takes above DT (or fixed cone) clusters as input,
- // runs NN 11110 on the cluster hits and applies HMatrix
- // output is photon clusters had mincells=40?, cluster must be more than dTrcl from track
- int mincells = 20;
- double dTrcl = 0.05; // Graham says photons are 0.06 wide
- PhotonFinderDriver Phdriver = new PhotonFinderDriver(mincells,dTrcl);
- String EBclname = ("EBTMHitsFCClus");
- String EECclname = ("EECTMHitsFCClus");
- Phdriver.setBInputClusterName(EBclname);
- Phdriver.setECInputClusterName(EECclname);
-// Phdriver.setClusterNameExtension("PhoClus");
- add(Phdriver);
-
- // Now, modify hitmap taking out hits in Photons, then make collectons for hadron shower clustering
- // 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("EBTMPhitmap");
- add(TMBPhodriver);
- HitMapToHitListDriver btmphoconverter = new HitMapToHitListDriver();
- btmphoconverter.setInputHitMap("EBTMPhitmap");
- 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("EECTMPhitmap");
- add(TMECPhodriver);
- HitMapToHitListDriver ectmphoconverter = new HitMapToHitListDriver();
- ectmphoconverter.setInputHitMap("EECTMPhitmap");
- ectmphoconverter.setOutputList("EECTMPHits");
- add(ectmphoconverter);
-
- // make a combined hitmap for hits left after mip, photon finding
- HitListToHitMapDriver newHitMap = new HitListToHitMapDriver();
- newHitMap.addInputList("EBTMPHits");
- newHitMap.addInputList("EECTMPHits");
- newHitMap.addInputList("HBTMHits");
- newHitMap.addInputList("HECTMHits");
- newHitMap.setOutput("PreTrShowerhitmap");
- add(newHitMap);
-
- // make a collection to display
- HitMapToHitListDriver prTrShconverter = new HitMapToHitListDriver();
- prTrShconverter.setInputHitMap("PreTrShowerhitmap");
- prTrShconverter.setOutputList("PreTrShowHits");
- add(prTrShconverter);
-
-// TRACK - CLUSTER MATCHING Algorithm here
- // cluster remaining hits in ECAL, HCAL for track matching -
- // use loose NN clusterer 10,10,10,10?
- int hdU = 3;
- int hdV = 3;
- int hdLayer = 3;
- int hncells = 2;
- double hthresh = 0;
- NearestNeighborClusterDriver NNHdriver = new NearestNeighborClusterDriver(hdU, hdV, hdLayer, hncells, hthresh);
- String[] nnhhitcollnames = {"HBTMHits","HECTMHits"};
- NNHdriver.setCollectionNames(nnhhitcollnames);
- NNHdriver.setClusterNameExtension("NNHClus");
- add(NNHdriver);
-
- // now do EM also - use NN here
- int dU = 1;
- int dV = 1;
- int dLayer = 3;
- int ncells = 2;
- double thresh = 0;
- NearestNeighborClusterDriver NNEdriver = new NearestNeighborClusterDriver(dU, dV, dLayer, ncells, thresh);
- String[] nnehitcollnames = {"EBTMPHits","EECTMPHits"};
- NNEdriver.setCollectionNames(nnehitcollnames);
- NNEdriver.setClusterNameExtension("NNEClus");
- add(NNEdriver);
-
-// DirectedTreeDriver DTHECdriver = new DirectedTreeDriver();
-// DTHECdriver.setInputHitMap("HADEndcaphitmap");
-// DTHECdriver.setOutputClusterList("HECDTClus");
-// add(DTHECdriver);
-
-// DirectedTreeDriver DTEBdriver = new DirectedTreeDriver();
-// DTEBdriver.setInputHitMap("EBTMPhitmap");
-// DTEBdriver.setOutputClusterList("EBDTClus");
-// add(DTEBdriver);
-
-// DirectedTreeDriver DTEECdriver = new DirectedTreeDriver();
-// DTEECdriver.setInputHitMap("EECTMPhitmap");
-// DTEECdriver.setOutputClusterList("EECDTClus");
-// add(DTEECdriver);
-
- // add matching driver here
- double minsep = 0.015;
- int nloop = 4;
- double minEp = 0.65;
- TrackShowerClusterDriver TrShdriver = new TrackShowerClusterDriver(minsep, nloop, minEp);
-// String[] shclnames = {"EBTMPHitsNNEClus","EECTMPHitsNNEClus","HBDTClus","HECDTClus"}; // EM NN, HAD DT
- String[] shclnames = {"EBTMPHitsNNEClus","EECTMPHitsNNEClus","HBTMHitsNNHClus","HECTMHitsNNHClus"}; // EM NN, HAD NN
-// String[] shclnames = {"EBDTClus","EECDTClus","HBDTClus","HECDTClus"}; // EM DT, HAD DT
- TrShdriver.setClusterNames(shclnames);
- add(TrShdriver);
-
- ClusterListToHitMapDriver TrShowerHitDriver = new ClusterListToHitMapDriver();
- TrShowerHitDriver.addInputList("TrackShowerClusters");
- TrShowerHitDriver.setOutputHitMap("TSHitMap");
- add(TrShowerHitDriver);
- HitMapSubtractDriver TSsubdriver = new HitMapSubtractDriver();
- TSsubdriver.setFirstHitMap("PreTrShowerhitmap");
- TSsubdriver.setSecondHitMap("TSHitMap");
- TSsubdriver.setOutputHitMap("LeftOverhitmap");
- add(TSsubdriver);
-
- HitMapToHitListDriver LOconverter = new HitMapToHitListDriver();
- LOconverter.setInputHitMap("LeftOverhitmap");
- LOconverter.setOutputList("TMPTrHits");
- add(LOconverter);
-
- // try DT here with fewer hits
- DirectedTreeDriver DTNHdriver = new DirectedTreeDriver();
- DTNHdriver.setInputHitMap("LeftOverhitmap");
- DTNHdriver.setOutputClusterList("NHCandClusters");
- add(DTNHdriver);
-
- // add neutral hadron finder here
-// NeutralHadronClusterDriver NHCldriver = new NeutralHadronClusterDriver();
- int ncell = 12; // minimum number of cal cells in a NH cluster
- double Enmin = 0.250; // minimum cluster energy
- double ccdistance = 0.125; // distance in dthdphi to merge clusters
- NHCandClusterDriver NHCldriver = new NHCandClusterDriver(ncell,Enmin,ccdistance);
-// String[] shclnames = {"EBTMPHitsNNEClus","EECTMPHitsNNEClus","HBDTClus","HECDTClus"}; // EM NN, HAD DT
-// String nhclname = {"NHCandClusters"};
-// String[] shclnames = {"EBDTClus","EECDTClus","HBDTClus","HECDTClus"}; // EM DT, HAD DT
- NHCldriver.setInputClusterName("NHCandClusters");
- NHCldriver.setOutputClusterName("NeutralHadronClusters");
- add(NHCldriver);
-
- // Make Reconstructed Particle List from tracks, clusters
- ClusterToReconstructedParticleDriver ClRPdriver = new ClusterToReconstructedParticleDriver();
- ClRPdriver.setTrackNames("PerfectTracks");
- String[] phnames = {"PhotonBClusters","PhotonECClusters"};
- ClRPdriver.setPhotonNames(phnames);
- ClRPdriver.setNeutralHadNames("NeutralHadronClusters");
- ClRPdriver.setRecoParticleName("AllRecoParticles");
- add(ClRPdriver);
-
- }
-}