Print

Print


Commit in lcsim/src/org/lcsim/contrib/Cassell/recon/Cheat on MAIN
CheatReconDriver.java+43-11.10 -> 1.11
PPRParticleDriver.java+181.9 -> 1.10
PPRReconParticleConstructor.java+511.7 -> 1.8
+112-1
3 modified files
Add collections for vertexing

lcsim/src/org/lcsim/contrib/Cassell/recon/Cheat
CheatReconDriver.java 1.10 -> 1.11
diff -u -r1.10 -r1.11
--- CheatReconDriver.java	19 Aug 2008 14:56:43 -0000	1.10
+++ CheatReconDriver.java	1 Sep 2008 17:05:24 -0000	1.11
@@ -37,6 +37,8 @@
 import hep.physics.vec.Hep3Vector;
 import hep.physics.vec.BasicHep3Vector;
 import org.lcsim.util.aida.AIDA;
+import org.lcsim.event.LCRelation;
+import org.lcsim.digisim.MyLCRelation;
 /**
  *
  * @author cassell
@@ -144,16 +146,22 @@
         List<MCParticle> trreconfs = new ArrayList<MCParticle>();
         List<Track> fstracks = new ArrayList<Track>();
         List<Track> tracks = new ArrayList<Track>();
+        List<Track> forvtxingt = new ArrayList<Track>();
         List<Cluster> fsclusters = new ArrayList<Cluster>();
         List<Cluster> nonfsclusters = new ArrayList<Cluster>();
         List<ReconstructedParticle> perfect = new ArrayList<ReconstructedParticle>();
         List<ReconstructedParticle> visperfect = new ArrayList<ReconstructedParticle>();
         List<ReconstructedParticle> genperfect = new ArrayList<ReconstructedParticle>();
         List<ReconstructedParticle> genvisperfect = new ArrayList<ReconstructedParticle>();
+        List<ReconstructedParticle> forvtxingperfect = new ArrayList<ReconstructedParticle>();
         tmap = new HashMap<MCParticle,Track>();
 //
-//     Make a map of trackable tracks
+//     Make a map of trackable tracks, and add LCRelations to event:
+//     "ReconTracksToMCP" -> from=Track, to = MCParticle
+//     "TracksToParent" -> from=Track, to=Track, linking tracks to parent tracks. Most to Tracks are null
 //
+        List<LCRelation> lcrelationList = new ArrayList<LCRelation>();
+        List<LCRelation> parentage = new ArrayList<LCRelation>();
         for(Track t:inittracks)
         {
             MCParticle p = ((BaseTrackMC) t).getMCParticle();
@@ -161,8 +169,18 @@
             {
                 tmap.put(p,t);
                 tracks.add(t);
+                lcrelationList.add(new MyLCRelation(t,p));
             }
         }
+        for(MCParticle p:tmap.keySet())
+        {
+            Track t = tmap.get(p);
+            Track pt = getParentTrack(p);
+            parentage.add(new MyLCRelation(t,pt));
+            if(pt == null)forvtxingt.add(t);
+        }
+        event.put("ReconTracksToMCP", lcrelationList, LCRelation.class, 0);
+        event.put("TracksToParent", parentage, LCRelation.class, 0);
 //
 //     Start with the generator final state particles
 //
@@ -343,6 +361,7 @@
         int flag = 1<<LCIOConstants.TRBIT_HITS;
         event.put(outTname,tracks,BaseTrackMC.class,flag);
         event.put(outFSTname,fstracks,BaseTrackMC.class,flag);
+        event.put("ForVtxingTracks",forvtxingt,BaseTrackMC.class,flag);
         event.getMetaData(fstracks).setSubset(true);
         flag = 1<<LCIOConstants.CLBIT_HITS;
         event.put(outCname,fsclusters,CheatCluster.class,flag);
@@ -360,8 +379,17 @@
             perfect.add(rp);
             if(tmap.containsKey(p)||fsclmap.containsKey(p))visperfect.add(rp);
         }
+        for(Track t:forvtxingt)
+        {
+           MCParticle p = ((BaseTrackMC) t).getMCParticle();
+           MCReconstructedParticle rp = new MCReconstructedParticle(p);
+           rp.addTrack(t);
+           if(fsclmap.containsKey(p))rp.addCluster(fsclmap.get(p));
+           forvtxingperfect.add(rp);
+        }
         event.put(outRname,perfect);
         event.put(outVRname,visperfect);
+        event.put("ForVtxingPerfect",forvtxingperfect);
         for(MCParticle p:initfs)
         {
 //
@@ -423,6 +451,20 @@
         }
         return tr;
     }
+    private Track getParentTrack(MCParticle p)
+    {
+       Track rtr = null;
+       MCParticle parent = p;
+       while((parent.getParents().size() == 1)&&(rtr == null))
+       {
+          parent = parent.getParents().get(0);
+          if(tmap.containsKey(parent))
+          {
+             rtr = tmap.get(parent);
+          }
+       }
+       return rtr;
+    }
     private boolean hasTrackableDaughters(MCParticle p)
     {
         boolean htd = false;

lcsim/src/org/lcsim/contrib/Cassell/recon/Cheat
PPRParticleDriver.java 1.9 -> 1.10
diff -u -r1.9 -r1.10
--- PPRParticleDriver.java	24 Jun 2008 13:28:06 -0000	1.9
+++ PPRParticleDriver.java	1 Sep 2008 17:05:24 -0000	1.10
@@ -91,6 +91,7 @@
         List<List<Track>> all = event.get(Track.class);
         List<Cluster> pprclusters = new ArrayList<Cluster>();
         Map<MCParticle,Track> rrtl = new HashMap<MCParticle,Track>();
+        Map<MCParticle,Track> vtl = new HashMap<MCParticle,Track>();
         for(List<Track> tl:all)
         {
             if(event.getMetaData(tl).getName().compareTo(fastMC) == 0)
@@ -112,6 +113,16 @@
                     rrtl.put(pp,rt);
                 }
             }
+            else if(event.getMetaData(tl).getName().compareTo("ForVtxingTracks") == 0)
+            {
+                for(Track t:tl)
+                {
+                    BaseTrackMC rt = (BaseTrackMC) t;
+                    MCParticle pp = (MCParticle) rt.getMCParticle();
+                    vtl.put(pp,rt);
+                }
+            }
+            
         }
         Map<ReconstructedParticle,ReconstructedParticle> rmap = new HashMap<ReconstructedParticle,ReconstructedParticle>();
         for(MCReconstructedParticle p:rl)
@@ -223,6 +234,13 @@
             forjets.add(rp);
         }
         event.put("J"+outlist,forjets,ReconstructedParticle.class,0);
+        List<ReconstructedParticle> forvtxing = new ArrayList<ReconstructedParticle>();
+        for(MCParticle p:vtl.keySet())
+        {
+            ReconstructedParticle rp = crpc.makeReconParticleChNoCuts(p,vtl.get(p),rtl.get(p));
+            forvtxing.add(rp);
+        }
+        event.put("ForVtxingReconParticles",forvtxing,ReconstructedParticle.class,0);
     }
     
 }

lcsim/src/org/lcsim/contrib/Cassell/recon/Cheat
PPRReconParticleConstructor.java 1.7 -> 1.8
diff -u -r1.7 -r1.8
--- PPRReconParticleConstructor.java	26 Mar 2008 16:34:25 -0000	1.7
+++ PPRReconParticleConstructor.java	1 Sep 2008 17:05:24 -0000	1.8
@@ -205,4 +205,55 @@
         return nrp;
     }
     
+    public ReconstructedParticle makeReconParticleChNoCuts(
+        MCParticle p,Track t,ReconTrack rt)
+    {
+        double E = 0.;
+        double px = 0.;
+        double py = 0.;
+        double pz = 0.;
+        Hep3Vector mom;
+        mom = new BasicHep3Vector(px,py,pz);
+        BaseReconstructedParticle rp = new BaseReconstructedParticle(0.,mom);
+        if(p.getCharge() != 0)
+        {
+                Hep3Vector ref;
+                if(rt == null)
+                {
+                    mom = p.getMomentum();
+                    ref = p.getOrigin();
+                }
+                else
+                {
+                    mom = rt.getDocaMomentumVec(p.getOrigin());
+                    ref = rt.getDocaPositionVec(p.getOrigin());
+                }
+                double mass = pimass;
+                ParticleID pid = pippid;
+                if(p.getCharge() < 0.)pid = pimpid;
+                int pdg = Math.abs(p.getPDGID());
+                if(pdg == 11)
+                {
+                    mass = emass;
+                    pid = empid;
+                    if(p.getCharge() > 0.)pid = eppid;
+                }
+                else if(pdg == 13)
+                {
+                    mass = mumass;
+                    pid = mumpid;
+                    if(p.getCharge() > 0.)pid = muppid;
+                }
+                E = Math.sqrt(mom.magnitude()*mom.magnitude() + mass*mass);
+                rp = new BaseReconstructedParticle(E,mom);
+                rp.setMass(mass);
+                rp.setCharge(p.getCharge());
+                rp.setReferencePoint(ref);
+                rp.setParticleIdUsed(pid);
+                rp.addParticleID(pid);
+                    rp.addTrack(t);
+                return rp;
+        }
+        return rp;
+    }
 }
CVSspam 0.2.8