lcsim-contrib/src/main/java/org/lcsim/contrib/SteveMagill
diff -N CherClusDriver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ CherClusDriver.java 12 Aug 2009 18:23:26 -0000 1.1
@@ -0,0 +1,508 @@
+package org.lcsim.contrib.SteveMagill;
+
+import org.lcsim.util.*;
+import org.lcsim.recon.cluster.util.*;
+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.event.util.JetDriver;
+import org.lcsim.recon.cluster.nn.*;
+import org.lcsim.recon.cluster.fixedcone.*;
+import org.lcsim.recon.cheater.*;
+import org.lcsim.recon.tracking.cheat.CheatTrackDriver;
+import org.lcsim.mc.fast.tracking.MCFastTracking;
+import hep.physics.jet.*;
+
+public class CherClusDriver extends Driver
+{
+
+ public CherClusDriver()
+ {
+
+// use DIGISIM - makes threshold and timing cuts from steering file CCAL001.steer
+ add(new CalHitMapDriver());
+ DigiSimDriver digi = new DigiSimDriver();
+ String dsteer = ("C:\\LC Data\\CCAL002M10.steer");
+ digi.setSteeringFile(dsteer);
+ add(digi);
+ add(new SimCalorimeterHitsDriver());
+
+// make subdetector hitmaps from DigiSim scintillator collections
+ HitListToHitMapDriver ebhitmap = new HitListToHitMapDriver();
+ ebhitmap.addInputList("Edep_EcalBarrDigiHits");
+ ebhitmap.setOutput("SCEBarrhitmap");
+ add(ebhitmap);
+ HitListToHitMapDriver hbhitmap = new HitListToHitMapDriver();
+ hbhitmap.addInputList("Edep_HcalBarrDigiHits");
+ hbhitmap.setOutput("SCHBarrhitmap");
+ add(hbhitmap);
+ HitListToHitMapDriver eehitmap = new HitListToHitMapDriver();
+ eehitmap.addInputList("Edep_EcalEndcapDigiHits");
+ eehitmap.setOutput("SCEEndcaphitmap");
+ add(eehitmap);
+ HitListToHitMapDriver hehitmap = new HitListToHitMapDriver();
+ hehitmap.addInputList("Edep_HcalEndcapDigiHits");
+ hehitmap.setOutput("SCHEndcaphitmap");
+ add(hehitmap);
+
+// Can 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("Edep_EcalBarrDigiHits");
+ digiHitMap.addInputList("Edep_EcalEndcapDigiHits");
+ digiHitMap.addInputList("Edep_HcalBarrDigiHits");
+ digiHitMap.addInputList("Edep_HcalEndcapDigiHits");
+ digiHitMap.setOutput("AllScDigiHitMap");
+ add(digiHitMap);
+
+// Convert to hit collection for display
+ HitMapToHitListDriver testlist = new HitMapToHitListDriver();
+ testlist.setInputHitMap("AllScDigiHitMap");
+ testlist.setOutputList("AllScDigiHits");
+ add(testlist);
+
+// Same thing for DigiSim cherenkov hits
+ HitListToHitMapDriver ebchitmap = new HitListToHitMapDriver();
+ ebchitmap.addInputList("Ceren_EcalBarrDigiHits");
+ ebchitmap.setOutput("ChEBarrhitmap");
+ add(ebchitmap);
+ HitListToHitMapDriver hbchitmap = new HitListToHitMapDriver();
+ hbchitmap.addInputList("Ceren_HcalBarrDigiHits");
+ hbchitmap.setOutput("ChHBarrhitmap");
+ add(hbchitmap);
+ HitListToHitMapDriver eechitmap = new HitListToHitMapDriver();
+ eechitmap.addInputList("Ceren_EcalEndcapDigiHits");
+ eechitmap.setOutput("ChEEndcaphitmap");
+ add(eechitmap);
+ HitListToHitMapDriver hechitmap = new HitListToHitMapDriver();
+ hechitmap.addInputList("Ceren_HcalEndcapDigiHits");
+ hechitmap.setOutput("ChHEndcaphitmap");
+ add(hechitmap);
+
+// Can make a combined hitmap for the digisim output hits - now have 5 hitmaps,
+// 1 for each cal subdetector and 1 with all hits
+ HitListToHitMapDriver cdigiHitMap = new HitListToHitMapDriver();
+ cdigiHitMap.addInputList("Ceren_EcalBarrDigiHits");
+ cdigiHitMap.addInputList("Ceren_EcalEndcapDigiHits");
+ cdigiHitMap.addInputList("Ceren_HcalBarrDigiHits");
+ cdigiHitMap.addInputList("Ceren_HcalEndcapDigiHits");
+ cdigiHitMap.setOutput("AllChDigiHitMap");
+ add(cdigiHitMap);
+
+// Convert to hit collection for display
+ HitMapToHitListDriver ctestlist = new HitMapToHitListDriver();
+ ctestlist.setInputHitMap("AllChDigiHitMap");
+ ctestlist.setOutputList("AllChDigiHits");
+ add(ctestlist);
+
+// check # of MC particle contribution to hits for both scintillator and cerenkov hits
+ MCContribHitDriver mcconthits = new MCContribHitDriver();
+ String singsc = ("SingMCScHits");
+ String multisc = ("MultiMCScHits");
+ String singch = ("SingMCChHits");
+ String multich = ("MultiMCChHits");
+ String[] scmcollnames = {"Edep_EcalBarrDigiHits","Edep_HcalBarrDigiHits","Edep_EcalEndcapDigiHits","Edep_HcalEndcapDigiHits"};
+ String[] chmcollnames = {"Ceren_EcalBarrDigiHits","Ceren_HcalBarrDigiHits","Ceren_EcalEndcapDigiHits","Ceren_HcalEndcapDigiHits"};
+ mcconthits.setScHitNames(scmcollnames);
+ mcconthits.setChHitNames(chmcollnames);
+ mcconthits.setOutSingScHitName(singsc);
+ mcconthits.setOutMultiScHitName(multisc);
+ mcconthits.setOutSingChHitName(singch);
+ mcconthits.setOutMultiChHitName(multich);
+ add(mcconthits);
+
+// Make a list of MCParticles to be considered - this gets final states from generator
+// eventually replace with Perfect DR objects for each simulated detector
+ CreateFinalStateMCParticleList cfs = new CreateFinalStateMCParticleList("Gen");
+ String fname = ("MCGenFSParticles");
+ cfs.setCollectionName(fname);
+ add(cfs);
+
+ // get perfect tracks
+ String tempTname = "TempCheatTracks";
+ String tempPname = "TempCheatParticles";
+ add(new CheatTrackDriver(tempTname, tempPname));
+
+ String outFastMC = ("PerfectTracks");
+ MCFastTracking mcft = new MCFastTracking();
+// mcft.setFSList(tempPname);
+ mcft.setFSList(fname);
+ mcft.setOutputList(outFastMC);
+ add(mcft);
+
+// check MC for qqbar M and E and make MC Particle jets if generated this way
+// make the perfect DR objects into perfect ReconstructedParticles
+ MCqqbarME mcme = new MCqqbarME();
+ String mcrpname = ("MCFSRecoParticles");
+ mcme.setMCParticleName(fname);
+ mcme.setMCRecoParticleName(mcrpname);
+ add(mcme);
+
+// get tracks from MC for now, eventually get from reconstructed track list
+// need tracks for some algorithms
+// String outptrack = ("PerfectTracks");
+// MCFSTrackDriver ptrack = new MCFSTrackDriver();
+// ptrack.setMCFSNames(fname);
+// ptrack.setTrackNames(outptrack);
+// add(ptrack);
+
+// this gets MC info for cheated tracks using LCRelation
+ MCTrPropertyDriver mtprop = new MCTrPropertyDriver();
+ String mtrelation = ("TracksToMCP");
+ mtprop.setTrackName(outFastMC);
+ mtprop.setTrMCRelationName(mtrelation);
+ add(mtprop);
+
+// now get mip hits - use cerenkov light to find mip trace and interaction point
+// this calorimeter has large visible back-scattering since no non-active absorber
+// interaction layer is embedded in the shower and found by directional light going
+// forward - back-scattered particles maybe too slow to emit cerenkov light anyway?
+ double dminE = 0.055; // default 0.0052
+ double dminH = 2*dminE;
+ double dminTrC = 0.04; // default range is 0.0175 - 0.0225 tuned with muons
+ double mincd = 2.75; // min density to make mip (def 3.5)
+ GTrackMipClusterDriver TMdriver = new GTrackMipClusterDriver(dminE, dminH, dminTrC, mincd);
+ String[] tmcollnames = {"Ceren_EcalBarrDigiHits","Ceren_HcalBarrDigiHits","Ceren_EcalEndcapDigiHits","Ceren_HcalEndcapDigiHits"};
+ TMdriver.setCollectionNames(tmcollnames);
+ TMdriver.setClusterNameExtension("TMClusters");
+ add(TMdriver);
+
+// Diagnostic routine checks results from mip finder
+ GTrMipCompDriver tmcdriver = new GTrMipCompDriver();
+ tmcdriver.setTrMipClusName("TMClusters");
+ add(tmcdriver);
+
+// make modified hit collections from hitmaps modified by mip finder
+ HitMapToHitListDriver eblist = new HitMapToHitListDriver();
+ eblist.setInputHitMap("ChEBarrhitmap");
+ eblist.setOutputList("ChEBHits");
+ add(eblist);
+ HitMapToHitListDriver eeclist = new HitMapToHitListDriver();
+ eeclist.setInputHitMap("ChEEndcaphitmap");
+ eeclist.setOutputList("ChEECHits");
+ add(eeclist);
+ HitMapToHitListDriver hblist = new HitMapToHitListDriver();
+ hblist.setInputHitMap("ChHBarrhitmap");
+ hblist.setOutputList("ChHBHits");
+ add(hblist);
+ HitMapToHitListDriver heclist = new HitMapToHitListDriver();
+ heclist.setInputHitMap("ChHEndcaphitmap");
+ heclist.setOutputList("ChHECHits");
+ add(heclist);
+
+// make some maps linking cellID to CalHits for each collection (facillitates cluster
+// linking later
+ IDHitMapDriver semidmap = new IDHitMapDriver();
+ String[] semidnames = {"Edep_EcalBarrDigiHits","Edep_EcalEndcapDigiHits"};
+ String semidoutmap = "ScEMIDMap";
+ semidmap.setInHitnames(semidnames);
+ semidmap.setOutMapname(semidoutmap);
+ add(semidmap);
+
+ IDHitMapDriver cemidmap = new IDHitMapDriver();
+ String[] cemidnames = {"Ceren_EcalBarrDigiHits","Ceren_EcalEndcapDigiHits"};
+ String cemidoutmap = "ChEMIDMap";
+ cemidmap.setInHitnames(cemidnames);
+ cemidmap.setOutMapname(cemidoutmap);
+ add(cemidmap);
+
+ IDHitMapDriver shadidmap = new IDHitMapDriver();
+ String[] shadidnames = {"Edep_HcalBarrDigiHits","Edep_HcalEndcapDigiHits"};
+ String shadidoutmap = "ScHADIDMap";
+ shadidmap.setInHitnames(shadidnames);
+ shadidmap.setOutMapname(shadidoutmap);
+ add(shadidmap);
+
+ IDHitMapDriver chadidmap = new IDHitMapDriver();
+ String[] chadidnames = {"Ceren_HcalBarrDigiHits","Ceren_HcalEndcapDigiHits"};
+ String chadidoutmap = "ChHADIDMap";
+ chadidmap.setInHitnames(chadidnames);
+ chadidmap.setOutMapname(chadidoutmap);
+ add(chadidmap);
+
+// make some test histos for cal
+ ChCalHitDriver ccalhits = new ChCalHitDriver();
+ String[] sccollnames = {"Edep_EcalBarrDigiHits","Edep_HcalBarrDigiHits","Edep_EcalEndcapDigiHits","Edep_HcalEndcapDigiHits"};
+// String[] chcollnames = {"Ceren_EcalBarrDigiHits","Ceren_HcalBarrDigiHits"};
+ String[] chcollnames = {"ChEBHits","ChHBHits","ChEECHits","ChHECHits"};
+ ccalhits.setScHitNames(sccollnames);
+ ccalhits.setChHitNames(chcollnames);
+ add(ccalhits);
+
+// Now, have removed mip hits from cerenkov collection, ready to cluster remaining
+// hits in both cerenkov and scintillator collections
+// Cluster scintillator hits with Nearest Neighbor clusterer
+ int sdU = 1;
+ int sdV = 1;
+ int sdLayer = 1;
+ int sncells = 3; // for NN, 3 means number of hits at least 4 in cluster
+ double sthresh = 0.001;
+ NearestNeighborClusterDriver NNSdriver = new NearestNeighborClusterDriver(sdU, sdV, sdLayer, sncells, sthresh);
+ String[] snhhitcollnames = {"Edep_EcalBarrDigiHits","Edep_HcalBarrDigiHits","Edep_EcalEndcapDigiHits","Edep_HcalEndcapDigiHits"};
+ NNSdriver.setCollectionNames(snhhitcollnames);
+ NNSdriver.setClusterNameExtension("NNSClus");
+ add(NNSdriver);
+
+// Cluster cherenkov hits with Nearest Neighbor clusterer
+ int cdU = 1;
+ int cdV = 1;
+ int cdLayer = 1;
+ int cncells = 3; // for NN, 3 means number of hits at least 4 in cluster
+ double cthresh = 0.000001;
+ NearestNeighborClusterDriver NNCdriver = new NearestNeighborClusterDriver(cdU, cdV, cdLayer, cncells, cthresh);
+// String[] cnhhitcollnames = {"Ceren_EcalBarrDigiHits","Ceren_HcalBarrDigiHits","Ceren_EcalEndcapDigiHits","Ceren_HcalEndcapDigiHits"};
+ String[] cnhhitcollnames = {"ChEBHits","ChHBHits","ChEECHits","ChHECHits"};
+ NNCdriver.setCollectionNames(cnhhitcollnames);
+ NNCdriver.setClusterNameExtension("NNCClus");
+ add(NNCdriver);
+
+// try cone clusterer on hit collections - this works, but radius cut artificially defines
+// the number of clusters found - not the cluster shape as in NN
+// double radius = 0.2;
+// double seedE = 0.025;
+// double minE = 0.005;
+// FixedConeClusterDriver fcdriver = new FixedConeClusterDriver(radius,seedE,minE);
+// String[] hitcollnames = {"Edep_EcalBarrDigiHits","Edep_HcalBarrDigiHits","Edep_EcalEndcapDigiHits","Edep_HcalEndcapDigiHits"};
+// fcdriver.setCollectionNames(hitcollnames);
+// fcdriver.setClusterNameExtension("FCClus");
+// add(fcdriver);
+
+// Try DT clusterer on hitmaps
+// int minBsize = 50;
+// int idbug = 5;
+// int minden = 5; // another DT parameter, not used
+// DirectedTreeDriver DTHBdriver = new DirectedTreeDriver();
+// DTHBdriver.setInputHitMap("OrigSCHitMap");
+// DTHBdriver.setOutputClusterList("SCDTClus");
+// DTHBdriver.setMinimumClusterSize(minBsize);
+// DTHBdriver.setMinimumHitDensity(minden);
+// DTHBdriver.setDebugLevel(idbug);
+// add(DTHBdriver);
+
+ // try out cluster pointing algorithm here
+// double mdisip = 0.20;
+// double mdisil = 0.04; // default is 0.04 from ZZ events
+// double mdiscl = 0.07; // default 0.07 from ZZ events
+// ClusterPointAlgDriver clpdriver = new ClusterPointAlgDriver(mdisip,mdisil,mdiscl);
+// clpdriver.setInputClusterList("AllCandClusters");
+// String[] ptclnames = {"IPClusters","ILSPClusters","NPClusters"};
+// clpdriver.setOutputClusterLists(ptclnames);
+// add(clpdriver);
+
+// combine scintillator clusters into a single cluster list
+ String[] inList = {"Edep_EcalBarrDigiHitsNNSClus","Edep_HcalBarrDigiHitsNNSClus","Edep_EcalEndcapDigiHitsNNSClus","Edep_HcalEndcapDigiHitsNNSClus"};
+ String outList = "AllNNSClus";
+ CombineClLists ccldriver = new CombineClLists(inList,outList);
+ add(ccldriver);
+
+// combine cerenkov clusters into a single cluster list
+ String[] incList = {"ChEBHitsNNCClus","ChHBHitsNNCClus","ChEECHitsNNCClus","ChHECHitsNNCClus"};
+ String outcList = "AllNNCClus";
+ CombineClLists cclcdriver = new CombineClLists(incList,outcList);
+ add(cclcdriver);
+
+// Combine EM Scin and EM Ceren clusters for future RPs
+ String[] insemList = {"Edep_EcalBarrDigiHitsNNSClus","Edep_EcalEndcapDigiHitsNNSClus"};
+ String outsemList = "AllNNSEMClus";
+ CombineClLists cclsemdriver = new CombineClLists(insemList,outsemList);
+ add(cclsemdriver);
+ String[] incemList = {"ChEBHitsNNCClus","ChEECHitsNNCClus"};
+ String outcemList = "AllNNCEMClus";
+ CombineClLists cclcemdriver = new CombineClLists(incemList,outcemList);
+ add(cclcemdriver);
+
+// Combine Scin HAD clusters and Ceren HAD clusters
+ String[] inchList = {"ChHBHitsNNCClus","ChHECHitsNNCClus"};
+ String outchList = "AllNNCHADClus";
+ CombineClLists cclchdriver = new CombineClLists(inchList,outchList);
+ add(cclchdriver);
+ String[] inshList = {"Edep_HcalBarrDigiHitsNNSClus","Edep_HcalEndcapDigiHitsNNSClus"};
+ String outshList = "AllNNSHADClus";
+ CombineClLists cclshdriver = new CombineClLists(inshList,outshList);
+ add(cclshdriver);
+
+// Cluster Pointing algorithm here - requires mip finding first (or fake shower IL track link)
+ double mdisip = 0.20; // .2 gets most photons
+ double mdisil = 0.04; // .03 to .04 seems to be best for gas, scint
+ double mdiscl = 0.07;
+ ClPointDriver clpdriver = new ClPointDriver(mdisip,mdisil,mdiscl);
+ clpdriver.setInputClusterName("AllNNSClus");
+ String[] clpnames = {"ILSPClusters","IPClusters","NPClusters"};
+ clpdriver.setOutputClusterLists(clpnames);
+ add(clpdriver);
+
+ // try to merge em and had clusters for scintillator signal in barrel
+ double distee = 0.075;
+ double disthh = 0.075;
+ double disteh = 0.075;
+ int nhmerg = 10;
+ ClMergeDriver emhdriver = new ClMergeDriver(distee,disthh,disteh,nhmerg);
+ String emname = ("Edep_EcalBarrDigiHitsNNSClus");
+ String hadname = ("Edep_HcalBarrDigiHitsNNSClus");
+ String mergname = ("MergedEHSBClus");
+ emhdriver.setInputEMClusterName(emname);
+ emhdriver.setInputHADClusterName(hadname);
+ emhdriver.setOutputClusterName(mergname);
+ add(emhdriver);
+
+ // try to merge em and had clusters for scintillator signal in endcap
+// double distee = 0.075;
+// double disthh = 0.075;
+// double disteh = 0.075;
+// int nhmerg = 10;
+ ClMergeDriver emhecdriver = new ClMergeDriver(distee,disthh,disteh,nhmerg);
+ String emecname = ("Edep_EcalEndcapDigiHitsNNSClus");
+ String hadecname = ("Edep_HcalEndcapDigiHitsNNSClus");
+ String mergecname = ("MergedEHSECClus");
+ emhecdriver.setInputEMClusterName(emecname);
+ emhecdriver.setInputHADClusterName(hadecname);
+ emhecdriver.setOutputClusterName(mergecname);
+ add(emhecdriver);
+
+ // try to merge em and had clusters for cherenkov signal in barrel
+ double cdistee = 0.075;
+ double cdisthh = 0.075;
+ double cdisteh = 0.075;
+ int cnhmerg = 5;
+ ClMergeDriver cemhdriver = new ClMergeDriver(cdistee,cdisthh,cdisteh,cnhmerg);
+ String cemname = ("ChEBHitsNNCClus");
+ String chadname = ("ChHBHitsNNCClus");
+ String cmergname = ("MergedEHChBClus");
+ cemhdriver.setInputEMClusterName(cemname);
+ cemhdriver.setInputHADClusterName(chadname);
+ cemhdriver.setOutputClusterName(cmergname);
+ add(cemhdriver);
+
+ // try to merge em and had clusters for cherenkov signal in endcap
+// double cdistee = 0.075;
+// double cdisthh = 0.075;
+// double cdisteh = 0.075;
+// int cnhmerg = 5;
+ ClMergeDriver cemhecdriver = new ClMergeDriver(cdistee,cdisthh,cdisteh,cnhmerg);
+ String cemecname = ("ChEECHitsNNCClus");
+ String chadecname = ("ChHECHitsNNCClus");
+ String cmergecname = ("MergedEHChECClus");
+ cemhecdriver.setInputEMClusterName(cemecname);
+ cemhecdriver.setInputHADClusterName(chadecname);
+ cemhecdriver.setOutputClusterName(cmergecname);
+ add(cemhecdriver);
+
+// combine uncorrected scintillator clusters into a single cluster list
+ String[] inListms = {mergname,mergecname};
+ String outListms = "AllMergedSClus";
+ CombineClLists cclmsdriver = new CombineClLists(inListms,outListms);
+ add(cclmsdriver);
+
+// combine cerenkov clusters into a single cluster list
+ String[] inListmc = {cmergname,cmergecname};
+ String outListmc = "AllMergedCClus";
+ CombineClLists cclmcdriver = new CombineClLists(inListmc,outListmc);
+ add(cclmcdriver);
+
+// now link scintillator and cherenkov had clusters by map
+// double ldist = 0.05;
+// SChClLinkDriver linkdriver = new SChClLinkDriver(ldist);
+// String linkmap = ("SChHClusMap");
+// linkdriver.setInputScinClusterName(outshList);
+// linkdriver.setInputCherClusterName(outchList);
+// linkdriver.setOutputLinkMapName(linkmap);
+// add(linkdriver);
+
+ // Correct scintillator cluster energy with cherenkov
+// ScinClusCorrDriver sccdriver = new ScinClusCorrDriver();
+// sccdriver.setScChMapName(linkmap);
+// add(sccdriver);
+
+ // make Scin clusters into Rec Part for input to jet algorithm
+ double scalib = 1.047;
+ ClusterToRPDriver clrpdriver = new ClusterToRPDriver(scalib);
+ String RPname = ("SClusRecParticles");
+// clrpdriver.setClusterNames("AllMergedSClus"); // uses merged clusters
+ clrpdriver.setClusterNames("AllNNSClus"); // uses all Scin clusters
+// clrpdriver.setClusterNames("AllNNSHADClus"); // uses all Scin HAD clusters
+ clrpdriver.setRecoParticleName(RPname);
+ add(clrpdriver);
+
+ // make Ceren clusters into Rec Part for input to jet algorithm
+ double ccalib = 7913.0;
+ ClusterToRPDriver cclrpdriver = new ClusterToRPDriver(ccalib);
+ String cRPname = ("CClusRecParticles");
+// cclrpdriver.setClusterNames("AllMergedCClus"); // uses merged clusters
+ cclrpdriver.setClusterNames("AllNNCClus"); // uses all Ceren clusters
+// cclrpdriver.setClusterNames("AllNNCHADClus"); // uses all Ceren HAD clusters
+ cclrpdriver.setRecoParticleName(cRPname);
+ add(cclrpdriver);
+
+// find jets with MC Reco Particles
+ JetDriver mcjet = new JetDriver();
+ mcjet.setInputCollectionName(mcrpname);
+ mcjet.setOutputCollectionName("MCRPJets");
+// JetFinder tworealjets = new FixNumberOfJetsFinder(2); // uses Jade by default
+// mcjet.setFinder(tworealjets);
+ DurhamJetFinder ktjet = new DurhamJetFinder(0.02);
+ JetFinder twoktjets = new FixNumberOfJetsFinder(2,ktjet);
+ mcjet.setFinder(twoktjets);
+// JetFinder sixrealjets = new FixNumberOfJetsFinder(6);
+// PFAjet.setFinder(sixrealjets);
+ // for Durham jet, ycut = 0.25 at ZPole, 0.01 at 500 GeV ZZ
+// JetFinder rktjet = new DurhamJetFinder(0.1025);
+// mcjet.setFinder(rktjet);
+ add(mcjet);
+
+// find jets with Scin Cluster Reco Particles
+ JetDriver cljet = new JetDriver();
+ cljet.setInputCollectionName(RPname);
+ cljet.setOutputCollectionName("SClusRPJets");
+// JetFinder tworealjets = new FixNumberOfJetsFinder(2); // uses Jade by default
+// cljet.setFinder(tworealjets);
+ DurhamJetFinder ktcljet = new DurhamJetFinder(0.02);
+ JetFinder twoktcljets = new FixNumberOfJetsFinder(2,ktcljet);
+ cljet.setFinder(twoktcljets);
+// JetFinder sixrealjets = new FixNumberOfJetsFinder(6);
+// PFAjet.setFinder(sixrealjets);
+ // for Durham jet, ycut = 0.25 at ZPole, 0.01 at 500 GeV ZZ
+// JetFinder rktjet = new DurhamJetFinder(0.1025);
+// mcjet.setFinder(rktjet);
+ add(cljet);
+
+// find jets with Ceren Cluster Reco Particles
+ JetDriver chjet = new JetDriver();
+ chjet.setInputCollectionName(cRPname);
+ chjet.setOutputCollectionName("CClusRPJets");
+ // default 2 jet finder uses JADE
+// JetFinder tworealjets = new FixNumberOfJetsFinder(2); // uses Jade by default
+// chjet.setFinder(tworealjets);
+ // for kT jet finder
+ DurhamJetFinder ktchjet = new DurhamJetFinder(0.02);
+ JetFinder twoktchjets = new FixNumberOfJetsFinder(2,ktchjet);
+ chjet.setFinder(twoktchjets);
+ // 6 jet finder
+// JetFinder sixrealjets = new FixNumberOfJetsFinder(6);
+// PFAjet.setFinder(sixrealjets);
+ // for Durham jet, ycut = 0.25 at ZPole, 0.01 at 500 GeV ZZ
+// JetFinder rktjet = new DurhamJetFinder(0.1025);
+// mcjet.setFinder(rktjet);
+ add(chjet);
+
+ // now link scintillator and cherenkov jets by map
+ double jdist = 0.7;
+ SChJetLinkDriver jlinkdriver = new SChJetLinkDriver(jdist);
+ String jlinkmap = ("SChJetMap");
+ jlinkdriver.setInputScinJetName("SClusRPJets");
+ jlinkdriver.setInputCherJetName("CClusRPJets");
+ jlinkdriver.setOutputLinkMapName(jlinkmap);
+ add(jlinkdriver);
+
+ MCRPdijetm djm = new MCRPdijetm();
+ djm.setInputJets("MCRPJets");
+ add(djm);
+
+ SRPdijetm sdjm = new SRPdijetm();
+ sdjm.setInputScChJetMap(jlinkmap);
+ sdjm.setInputScinJets("SClusRPJets");
+ add(sdjm);
+
+ }
+}