lcsim-contrib/src/main/java/org/lcsim/contrib/SteveMagill
diff -u -r1.1 -r1.2
--- CherClusDriver.java 12 Aug 2009 18:23:26 -0000 1.1
+++ CherClusDriver.java 14 Feb 2012 19:35:08 -0000 1.2
@@ -24,7 +24,8 @@
// 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");
+// String dsteer = ("C:\\LC Data\\CCAL002M10.steer");
+ String dsteer = ("C:\\LC Data\\CCAL002M50.steer");
digi.setSteeringFile(dsteer);
add(digi);
add(new SimCalorimeterHitsDriver());
@@ -134,6 +135,7 @@
// check MC for qqbar M and E and make MC Particle jets if generated this way
// make the perfect DR objects into perfect ReconstructedParticles
+// Also calculates deltaM from true MC tracks
MCqqbarME mcme = new MCqqbarME();
String mcrpname = ("MCFSRecoParticles");
mcme.setMCParticleName(fname);
@@ -141,7 +143,7 @@
add(mcme);
// get tracks from MC for now, eventually get from reconstructed track list
-// need tracks for some algorithms
+// need tracks for some algorithms DONT NEED THIS ANYMORE
// String outptrack = ("PerfectTracks");
// MCFSTrackDriver ptrack = new MCFSTrackDriver();
// ptrack.setMCFSNames(fname);
@@ -155,6 +157,38 @@
mtprop.setTrMCRelationName(mtrelation);
add(mtprop);
+// make a track to RP routine so jet finding can be done with tracks only
+ TrackToRPDriver trpdriver = new TrackToRPDriver();
+ trpdriver.setInputTrackList(outFastMC);
+ trpdriver.setTrRPName("TrackRecoParticles");
+ add(trpdriver);
+
+// check value of event mass using Nayeli's combined true deltaM and ceren corrections
+// argument is fraction of total ESum (uncorrected Scin) required to eliminate leakage
+// double tefrac = 0.90;
+// double scal = 1.0079;
+// double ccal = 7711.4;
+// TotalEventMassDriver temdriver = new TotalEventMassDriver(scal, ccal, tefrac);
+// temdriver.setMCFSRecoPNames(mcrpname);
+// temdriver.setDeltaMName("MCDelM");
+// add(temdriver);
+
+// find jets with tracks and calculate deltaM for each track jet
+ JetDriver trjet = new JetDriver();
+ trjet.setInputCollectionName("TrackRecoParticles");
+ trjet.setOutputCollectionName("TrRPJets");
+// JetFinder tworealjets = new FixNumberOfJetsFinder(2); // uses Jade by default
+// mcjet.setFinder(tworealjets);
+ DurhamJetFinder kttrjet = new DurhamJetFinder(0.02);
+ JetFinder twokttrjets = new FixNumberOfJetsFinder(2,kttrjet);
+ trjet.setFinder(twokttrjets);
+// 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(trjet);
+
// 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
@@ -174,6 +208,21 @@
tmcdriver.setTrMipClusName("TMClusters");
add(tmcdriver);
+// add driver here to get delta M correction from all tracks and their endpoints
+ TrBMCorr tbmdriver = new TrBMCorr();
+ tbmdriver.setInputTrackList(outFastMC);
+ tbmdriver.setTrackSpacepointMap("TrackILPosMap");
+ tbmdriver.setDeltaMObjectName("TrDelM");
+ add(tbmdriver);
+
+ // get DeltaM from tracks in each track jet and make map
+ TJetBMCorr tjbmdriver = new TJetBMCorr();
+ tjbmdriver.setInputJetList("TrRPJets");
+ tjbmdriver.setTrackSpacepointMap("TrackILPosMap");
+ tjbmdriver.setDeltaMObjectName("TJetDelM");
+ tjbmdriver.setTrackDelMMap("TJetDMMap");
+ add(tjbmdriver);
+
// make modified hit collections from hitmaps modified by mip finder
HitMapToHitListDriver eblist = new HitMapToHitListDriver();
eblist.setInputHitMap("ChEBarrhitmap");
@@ -222,6 +271,14 @@
chadidmap.setOutMapname(chadidoutmap);
add(chadidmap);
+ // try to make one map for all cerenkov hits
+ IDHitMapDriver cidmap = new IDHitMapDriver();
+ String[] cidnames = {"Ceren_EcalBarrDigiHits","Ceren_EcalEndcapDigiHits","Ceren_HcalBarrDigiHits","Ceren_HcalEndcapDigiHits"};
+ String cidoutmap = "ChIDMap";
+ cidmap.setInHitnames(cidnames);
+ cidmap.setOutMapname(cidoutmap);
+ add(cidmap);
+
// make some test histos for cal
ChCalHitDriver ccalhits = new ChCalHitDriver();
String[] sccollnames = {"Edep_EcalBarrDigiHits","Edep_HcalBarrDigiHits","Edep_EcalEndcapDigiHits","Edep_HcalEndcapDigiHits"};
@@ -281,16 +338,6 @@
// 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";
@@ -328,9 +375,10 @@
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");
+ clpdriver.setInputClusterList("AllNNSClus");
String[] clpnames = {"ILSPClusters","IPClusters","NPClusters"};
- clpdriver.setOutputClusterLists(clpnames);
+ clpdriver.setOutPointClusterLists(clpnames);
+ clpdriver.setTrackILPosMap("TrackILPosMap");
add(clpdriver);
// try to merge em and had clusters for scintillator signal in barrel
@@ -405,8 +453,8 @@
// double ldist = 0.05;
// SChClLinkDriver linkdriver = new SChClLinkDriver(ldist);
// String linkmap = ("SChHClusMap");
-// linkdriver.setInputScinClusterName(outshList);
-// linkdriver.setInputCherClusterName(outchList);
+// linkdriver.setInputScinClusterName("AllNNSClus");
+// linkdriver.setInputCherClusterName("AllNNCClus");
// linkdriver.setOutputLinkMapName(linkmap);
// add(linkdriver);
@@ -415,9 +463,57 @@
// 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);
+// Make scintillator clusters into reco particles after correcting with ceren hits
+// which match the scintillator cluster hits (use maps)
+ double scalib = 1.0079;
+ double ccalib = 7711.4;
+ double pa1 = 0.587;
+ double pa2 = 0.173;
+ double pa3 = -.291;
+ double pa4 = 0.531;
+ double scclus = 1.02;
+ double chclus = 1.05;
+ CorrScClusToRPDriver csdriver = new CorrScClusToRPDriver(scalib, ccalib, pa1, pa2, pa3, pa4, scclus, chclus);
+ String CorrRPName = ("CorrRecoParticles");
+ csdriver.setClusterNames("AllNNSClus");
+ csdriver.setRecoParticleName(CorrRPName);
+ add(csdriver);
+
+// find jets with Corrected Scin Cluster Reco Particles
+ JetDriver cojet = new JetDriver();
+ cojet.setInputCollectionName(CorrRPName);
+ cojet.setOutputCollectionName("CorrRPJets");
+// JetFinder tworealjets = new FixNumberOfJetsFinder(2); // uses Jade by default
+// cljet.setFinder(tworealjets);
+ DurhamJetFinder ktcojet = new DurhamJetFinder(0.02);
+ JetFinder twoktcojets = new FixNumberOfJetsFinder(2,ktcojet);
+ cojet.setFinder(twoktcojets);
+// 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(cojet);
+
+// link these jets with track jets
+ double ctdist = 0.7;
+ STrJetLinkDriver cstdriver = new STrJetLinkDriver(ctdist);
+ String cstlinkmap = ("CSTrJetMap");
+ cstdriver.setInputScinJetName("CorrRPJets");
+ cstdriver.setInputTrackJetName("TrRPJets");
+ cstdriver.setOutputLinkMapName(cstlinkmap);
+ add(cstdriver);
+
+// calculate (di)jet mass with these jets
+ CorrRPdijetm codjm = new CorrRPdijetm();
+ codjm.setInputScinJets("CorrRPJets");
+ codjm.setSTJetMap(cstlinkmap);
+ codjm.setTJetDMMap("TJetDMMap");
+ add(codjm);
+
+// make Scin clusters into Rec Part for input to jet algorithm
+// double scalib = 1.047;
+ CalibClusterToRPDriver clrpdriver = new CalibClusterToRPDriver(scalib);
String RPname = ("SClusRecParticles");
// clrpdriver.setClusterNames("AllMergedSClus"); // uses merged clusters
clrpdriver.setClusterNames("AllNNSClus"); // uses all Scin clusters
@@ -425,9 +521,9 @@
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);
+// make Ceren clusters into Rec Part for input to jet algorithm
+// double ccalib = 7913.0;
+ CalibClusterToRPDriver cclrpdriver = new CalibClusterToRPDriver(ccalib);
String cRPname = ("CClusRecParticles");
// cclrpdriver.setClusterNames("AllMergedCClus"); // uses merged clusters
cclrpdriver.setClusterNames("AllNNCClus"); // uses all Ceren clusters
@@ -495,6 +591,14 @@
jlinkdriver.setOutputLinkMapName(jlinkmap);
add(jlinkdriver);
+ // link track jets and scintillator jets by map
+ STrJetLinkDriver tlinkdriver = new STrJetLinkDriver(jdist);
+ String tlinkmap = ("STrJetMap");
+ tlinkdriver.setInputScinJetName("SClusRPJets");
+ tlinkdriver.setInputTrackJetName("TrRPJets");
+ tlinkdriver.setOutputLinkMapName(tlinkmap);
+ add(tlinkdriver);
+
MCRPdijetm djm = new MCRPdijetm();
djm.setInputJets("MCRPJets");
add(djm);
@@ -502,6 +606,7 @@
SRPdijetm sdjm = new SRPdijetm();
sdjm.setInputScChJetMap(jlinkmap);
sdjm.setInputScinJets("SClusRPJets");
+ sdjm.setDeltaMCorr("TrDelM");
add(sdjm);
}