Print

Print


Commit in lcsim/src/org/lcsim/contrib/SteveMagill on MAIN
TrackMipClusterDriver.java+51-51.5 -> 1.6


lcsim/src/org/lcsim/contrib/SteveMagill
TrackMipClusterDriver.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- TrackMipClusterDriver.java	6 Jun 2008 18:40:50 -0000	1.5
+++ TrackMipClusterDriver.java	20 Aug 2008 20:19:39 -0000	1.6
@@ -99,7 +99,7 @@
             for (int i=0; i<_numbemlayers; ++i)
             {
                 BRadii[i]=emb.getLayering().getDistanceToLayerSensorMid(i);
-//                System.out.println("EM Barrel Layer Number " +i+ " EM Barrel Radius " +_emBRadii[i]);
+//                System.out.println("EM Barrel Layer Number " +i+ " EM Barrel Radius " + BRadii[i]);
             }
             
             CylindricalCalorimeter emec = ((CylindricalCalorimeter) det.getSubdetectors().get("EMEndcap"));
@@ -118,7 +118,7 @@
             for (int i=0; i<_numbhadlayers; ++i)
             {
                 BRadii[i+_numbemlayers]=hadb.getLayering().getDistanceToLayerSensorMid(i);
-//                System.out.println("HAD Barrel Layer Number " +i+ " HAD Barrel Radius " +_hadBRadii[i]);
+//                System.out.println("HAD Barrel Layer Number " +i+ " HAD Barrel Radius " + BRadii[i+_numbemlayers]);
             }
             
             CylindricalCalorimeter hadec = ((CylindricalCalorimeter) det.getSubdetectors().get("HADEndcap"));       
@@ -357,8 +357,10 @@
         List<BasicCluster> mipclusters = new ArrayList<BasicCluster>();
         //  also, need a map linking tracks to mip clusters for future use and map linking IL to track
         Map<Track, BasicCluster> trkmipmap = new HashMap<Track, BasicCluster>();
+        Map<Track, Integer> TrILmap = new HashMap<Track, Integer>();
         Map<BasicCluster, Integer> clusILmap = new HashMap<BasicCluster, Integer>();
-//        Map<Track, SpacePoint> trkposmap = new HashMap<Track, SpacePoint>();
+        Map<Track, SpacePoint> trkposmap = new HashMap<Track, SpacePoint>();
+        Map<Track, SpacePoint> trkmepmap = new HashMap<Track, SpacePoint>();
         // Make hitmaps that contain mip hits
         HitMap embhitmap = (HitMap) (event.get("EMBarrhitmap"));
         HitMap hadbhitmap = (HitMap) (event.get("HADBarrhitmap"));
@@ -368,11 +370,20 @@
         int jt = 0;
         int[] IntLay = new int[200];
 //        System.out.println(" Starting Track Loop in TMC");
+        SpacePoint trackspacept = new SpacePoint();
+        SpacePoint lastmipSP = new SpacePoint();
         for (Track itrack : evtracks)
         {
             BasicCluster mipclus = new BasicCluster();
+            double mipE = 0.;
             double trpt = Math.sqrt(itrack.getPX()*itrack.getPX()+itrack.getPY()*itrack.getPY());
+            double TrP = Math.sqrt(itrack.getPX()*itrack.getPX()+itrack.getPY()*itrack.getPY()+itrack.getPZ()*itrack.getPZ());
             double[] trp = itrack.getMomentum();
+            if (TrP<0.75)
+            {
+                if (trp[2]>0) trp[2] = trp[2]-.002;  // dEdx subtraction approx on z comp
+                if (trp[2]<0) trp[2] = trp[2]+.002;
+            }
             Hep3Vector trp3 = new BasicHep3Vector(trp);
             double[] trrp = itrack.getReferencePoint();
             double[] trpar = itrack.getTrackParameters();
@@ -450,10 +461,19 @@
                         if (prden == 0 || prden>_mincd) 
                         {
                             IntLay[jt] = j;
+                            trackspacept = trackSP;
+//                            System.out.println("Track SpacePoint at IL" + trackspacept);
+                            if (trmipD)
+                            {
+                                if (j==0) aida.cloud1D("Track pt for B layer 0 IL").fill(trpt);
+                                if (prden==0 && j==0) aida.cloud1D("No Hits in IL B layer 0").fill(prden);
+                                if (prden>_mincd && j==0) aida.cloud1D("Many Hits in IL B layer 0").fill(prden);
+                            }
                             nointeraction = false;
                             if (trmipD) aida.cloud1D("Cell Density Sum for B Interactions").fill(prden);
                         } else
                         {
+                            lastmipSP = trackSP;
                             if (trmipD) aida.cloud1D("Cell Density Sum for B Noninteractions").fill(prden);
                             // add hits in this layer to mip cluster, remove from hitmap
                             for (int l=0; l<ntcmatch; ++l)
@@ -461,6 +481,10 @@
 //                                System.out.println("Add this hit to B mip cluster " + l + " Layer " +j);
 //                                System.out.println("Hit ID " + layerid[l] + " Hit " + layerHit[l]);
                                 mipclus.addHit(layerHit[l]);
+                                //  increment hit energy using dEdx per layer
+                                if (j<_numbemlayers-10) mipE += 0.0055;
+                                if (j>_numbemlayers-11 && j<_numbemlayers) mipE += 0.0111;
+                                if (j>_numbemlayers-1) mipE += 0.0228;
                                 if (j<_numbemlayers)
                                 {
                                     embhitmap.remove(layerid[l]);
@@ -526,10 +550,18 @@
                         if (prden == 0 || prden>_mincd) 
                         {
                             IntLay[jt] = j;
+                            trackspacept = trackSP;
+                            if (trmipD)
+                            {
+                                if (j==0) aida.cloud1D("Track pt for EC layer 0 IL").fill(trpt);
+                                if (prden==0 && j==0) aida.cloud1D("No Hits in IL EC layer 0").fill(prden);
+                                if (prden>_mincd && j==0) aida.cloud1D("Many Hits in IL EC layer 0").fill(prden);
+                            }
                             nointeraction = false;
                             if (trmipD) aida.cloud1D("Cell Density Sum for EC Interactions").fill(prden);
                         } else
                         {
+                            lastmipSP = trackSP;
                             if (trmipD) aida.cloud1D("Cell Density Sum for EC Noninteractions").fill(prden);
                             // add hits in this layer to mip cluster
 //                            System.out.println("Number of matches " + ntcmatch);
@@ -539,6 +571,10 @@
 //                                System.out.println("Add this hit to EC mip cluster " + l + " Layer " +j);
 //                                System.out.println("Hit ID " + layerid[l] + " Hit " + layerHit[l]);
                                 mipclus.addHit(layerHit[l]);
+                                //  increment hit energy using dEdx per layer
+                                if (j<_numecemlayers-10) mipE += 0.0055;
+                                if (j>_numecemlayers-11 && j<_numecemlayers) mipE += 0.0111;
+                                if (j>_numecemlayers-1) mipE += 0.0228;                                
                                 if (j<_numecemlayers)
                                 {
                                     emechitmap.remove(layerid[l]);
@@ -554,29 +590,39 @@
                 aida.cloud1D("Interaction Layer in EC").fill(IntLay[jt]);
             }
             //  add mip cluster to cluster list and fill maps
+            //  first, set energy based on dEdx in various layers
+            mipclus.setEnergy(mipE);
             mipclusters.add(mipclus);
             trkmipmap.put(itrack, mipclus);
             clusILmap.put(mipclus, IntLay[jt]);
-//            trkposmap.put(itrack, trackspacept);
+            TrILmap.put(itrack, IntLay[jt]);
+            trkposmap.put(itrack, trackspacept);
+            trkmepmap.put(itrack, lastmipSP);
             jt++;  // increment track index
         }
         if (trmipD) aida.cloud1D("Total Track Momentum").fill(TotTrP);
         if (trmipD) aida.cloud1D("Number of Perfect Tracks").fill(evtracks.size());
         if (trmipD) aida.cloud1D("Number of mip clusters").fill(mipclusters.size());
         if (trmipD) aida.cloud2D("No of Tracks vs No of MipClus").fill(mipclusters.size(),evtracks.size());
+        int strmiph = 0;
         for (BasicCluster mipcluster : mipclusters)
         {
+            if (evtracks.size()==1) strmiph = mipcluster.getCalorimeterHits().size();
             if (trmipD) aida.cloud1D("Number of hits in Mip Cluster").fill(mipcluster.getCalorimeterHits().size());
         }
         for (int i=0; i<evtracks.size(); ++i)
         {
             aida.cloud1D("Interaction Layer all Tracks").fill(IntLay[i]);
+            if (evtracks.size()==1 && trmipD) aida.cloud1D("Interaction Layer 1 Track only").fill(IntLay[i]);
+            if (evtracks.size()==1 && trmipD) aida.cloud2D("NumHits MipCLus vs IL 1Tr").fill(IntLay[0],strmiph);
 //            System.out.println("Interaction Layer for Track " + IntLay[i]);
         }
         if (mipclusters.size() > 0) event.put(_nameExt, mipclusters);
         event.put("TrackMipMap",trkmipmap);
         event.put("MipClusILMap",clusILmap);
-//        event.put("TrackPosMap",trkposmap);
+        event.put("TrackILPosMap",trkposmap);
+        event.put("TrackMipEPMap",trkmepmap);
+        event.put("TrackILMap",TrILmap);
     }
     public void setClusterNameExtension(String ext)
     {
CVSspam 0.2.8