3 modified files
lcsim/src/org/lcsim/contrib/Cassell/recon/Cheat
diff -u -r1.5 -r1.6
--- CheatReconDriver.java 8 Nov 2007 23:18:22 -0000 1.5
+++ CheatReconDriver.java 20 Nov 2007 16:34:49 -0000 1.6
@@ -28,6 +28,7 @@
import org.lcsim.geometry.Detector;
import org.lcsim.geometry.compact.Subdetector;
import org.lcsim.detector.solids.Tube;
+import org.lcsim.mc.fast.tracking.MCFastTracking;
import java.util.HashMap;
import java.util.List;
import java.util.ArrayList;
@@ -55,6 +56,7 @@
String outTname;
String outFSTname;
String outCname;
+ String outFastMC = "FastMCTracks";
String[] diginames = {"EcalBarrDigiHits", "EcalEndcapDigiHits","HcalBarrDigiHits", "HcalEndcapDigiHits"};
//
// Default parameters for defining "trackable" track
@@ -89,9 +91,16 @@
cfs.setCollectionName(inFSname);
add(cfs);
//
+// Make FastMC smeared tracks
+//
+ MCFastTracking mcft = new MCFastTracking();
+ mcft.setFSList("MCParticle");
+ mcft.setOutputList(outFastMC);
+ add(mcft);
+//
// Make cheating TrackerHit Clusters
//
- add(new CheatTrackDriver(inTname));
+ add(new CheatTrackDriver(inTname,outFastMC));
//
// Make CalorimeterHit Cheat Clusters
//
lcsim/src/org/lcsim/contrib/Cassell/recon/Cheat
diff -u -r1.5 -r1.6
--- PPRParticleDriver.java 16 Oct 2007 18:19:08 -0000 1.5
+++ PPRParticleDriver.java 20 Nov 2007 16:34:49 -0000 1.6
@@ -13,9 +13,13 @@
import org.lcsim.util.Driver;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
import org.lcsim.event.EventHeader;
+import org.lcsim.event.Track;
import org.lcsim.event.ReconstructedParticle;
import org.lcsim.event.base.MCReconstructedParticle;
+import org.lcsim.mc.fast.tracking.ReconTrack;
/**
*
@@ -30,6 +34,7 @@
int minThits = 3;
int minChits = 3;
PPRReconParticleConstructor crpc;
+ String fastMC = "FastMCTracks";
/** Creates a new instance of PPRParticleDriver */
public PPRParticleDriver(String in,String out)
{
@@ -61,9 +66,32 @@
crpc = new PPRReconParticleConstructor();
crpc.setMinTrackerHits(minThits);
crpc.setMinCalorimeterHits(minChits);
+ Map<MCParticle,ReconTrack> rtl = null;
+ List<List<Track>> all = event.get(Track.class);
+ for(List<Track> tl:all)
+ {
+ if(event.getMetaData(tl).getName().compareTo(fastMC) == 0)
+ {
+ rtl = new HashMap<MCParticle,ReconTrack>();
+ for(Track t:tl)
+ {
+ ReconTrack rt = (ReconTrack) t;
+ MCParticle pp = (MCParticle) rt.getMCParticle();
+ rtl.put(pp,rt);
+ }
+ }
+ }
for(MCReconstructedParticle p:rl)
{
- ReconstructedParticle rp = crpc.makeReconParticle(p.getMCParticle(),p.getClusters(),p.getTracks());
+ ReconTrack rt = null;
+ if(rtl != null)
+ {
+ if(rtl.containsKey(p.getMCParticle()))
+ {
+ rt = rtl.get(p.getMCParticle());
+ }
+ }
+ ReconstructedParticle rp = crpc.makeReconParticle(p.getMCParticle(),p.getClusters(),p.getTracks(),rt);
if(rp.getEnergy() > 0.)
{
rp.addParticle(p);
lcsim/src/org/lcsim/contrib/Cassell/recon/Cheat
diff -u -r1.4 -r1.5
--- PPRReconParticleConstructor.java 16 Oct 2007 18:19:08 -0000 1.4
+++ PPRReconParticleConstructor.java 20 Nov 2007 16:34:49 -0000 1.5
@@ -21,6 +21,7 @@
import org.lcsim.recon.cluster.util.Clusterer;
import org.lcsim.recon.cluster.util.DetailedNeutralHadronClusterEnergyCalculator;
import org.lcsim.recon.cluster.util.PhotonClusterEnergyCalculator;
+import org.lcsim.mc.fast.tracking.ReconTrack;
/**
*
@@ -54,6 +55,11 @@
public ReconstructedParticle makeReconParticle(
MCParticle p,List<Cluster> lc,List<Track> lt)
{
+ return makeReconParticle(p,lc,lt,null);
+ }
+ public ReconstructedParticle makeReconParticle(
+ MCParticle p,List<Cluster> lc,List<Track> lt,ReconTrack rt)
+ {
if(scalc == null)scalc = new PhotonClusterEnergyCalculator();
if(calc == null)calc = new DetailedNeutralHadronClusterEnergyCalculator();
double E = 0.;
@@ -79,12 +85,22 @@
}
if(nthits >= minTrkhits)
{
- mom = p.getMomentum();
+ Hep3Vector ref;
+ if(rt == null)
+ {
+ mom = p.getMomentum();
+ ref = p.getOrigin();
+ }
+ else
+ {
+ mom = rt.getDocaMomentumVec(p.getOrigin());
+ ref = rt.getDocaPositionVec(p.getOrigin());
+ }
E = Math.sqrt(mom.magnitude()*mom.magnitude() + cmass*cmass);
BaseReconstructedParticle rp = new BaseReconstructedParticle(E,mom);
rp.setMass(cmass);
rp.setCharge(p.getCharge());
- rp.setReferencePoint(p.getOrigin());
+ rp.setReferencePoint(ref);
ParticleID id = new CheatParticleID(p.getPDGID());
rp.setParticleIdUsed(id);
rp.addParticleID(id);
CVSspam 0.2.8