Print

Print


Commit in lcsim/src/org/lcsim/recon/vertexing/pixsim on MAIN
PixilatedSensorManager.java+99-81.9 -> 1.10
added forward tracker to the list of pixel detectors

lcsim/src/org/lcsim/recon/vertexing/pixsim
PixilatedSensorManager.java 1.9 -> 1.10
diff -u -r1.9 -r1.10
--- PixilatedSensorManager.java	8 Mar 2011 19:16:01 -0000	1.9
+++ PixilatedSensorManager.java	8 Mar 2011 23:09:26 -0000	1.10
@@ -23,7 +23,7 @@
  * for each event (only sensors which have hits in them are created)
  *
  * @author Nick Sinev
- * @version $Id: PixilatedSensorManager.java,v 1.9 2011/03/08 19:16:01 sinev Exp $
+ * @version $Id: PixilatedSensorManager.java,v 1.10 2011/03/08 23:09:26 sinev Exp $
  */
 
 public class PixilatedSensorManager extends Driver
@@ -214,7 +214,7 @@
  };
 
  private static String[] opt_rtab_name_ec_pl=
- {"CCD_20x20x20_B5_res_EC.dat",
+ {"CCD_20x20x20_B5_res_ec.dat",
   "Chronopix_20x20x20_hr_B5_res_EC.dat",
   "CPCCD_20x20x20_B5_res_EC.dat",
   "Chronopix_20x20x16_hr_B5_res_EC.dat",
@@ -227,7 +227,7 @@
  };
 
  private static String[] opt_rtab_name_ec_mi = 
- {"CCD_20x20x20_B5_res_EC.dat",
+ {"CCD_20x20x20_B5_res_ec.dat",
   "Chronopix_20x20x20_B5_res_EC.dat",
   "CPCCD_20x20x20_B5_res_EC.dat",
   "Chronopix_20x20x16_hr_B5_res_EC.dat",
@@ -913,7 +913,7 @@
     for(IDetectorElement chld:chlds)
     {
      String name = chld.getName();
-     if((name.indexOf("Vtx")!=-1) || (name.indexOf("Vertex") != -1))
+     if((name.indexOf("Vtx")!=-1) || (name.indexOf("Vertex") != -1) || (name.indexOf("Forward") != -1))
      {
        int tot=0;
        int lvl=0;
@@ -956,7 +956,7 @@
         }
        } // end of while
       }
-      if(name.indexOf("Endcap") !=-1)
+      if((name.indexOf("Endcap") !=-1) || (name.indexOf("Tracker") !=-1))
       {
        while((lvl > -1) && (tot<2000) && (ind[lvl] <= nchldrn[lvl]))
        {
@@ -1097,6 +1097,7 @@
   List<List<SimTrackerHit>> evhits = event.get(SimTrackerHit.class);
   String bhcname=null;
   String ehcname=null;
+  String fwcname=null;
   if(evhits != null)
   {
    if(dbg_lvl > 1) System.out.println("Event has  "+evhits.size()+" SimTrackerHit collections: ");
@@ -1105,14 +1106,16 @@
     EventHeader.LCMetaData md = event.getMetaData(sdhits);
     String cname = md.getName();
     if(dbg_lvl > 1) System.out.println("Collection name: "+cname);
-    if((cname.indexOf("Vtx")!=-1)||(cname.indexOf("Vertex") != -1))
+    if((cname.indexOf("Vtx")!=-1)||(cname.indexOf("Vertex") != -1) || (cname.indexOf("Forward") != -1))
     {
      if(cname.indexOf("Barr")!=-1) bhcname=cname;
      if(cname.indexOf("Endcap")!=-1) ehcname=cname;
+     if(cname.indexOf("Forward") != -1) fwcname=cname;
     }
    }
   if(dbg_lvl > 1) 
-   System.out.println("Vertex barrel sim hit collection name is: "+bhcname+" and for encap it is: "+ehcname);
+   System.out.println(
+   "Vertex barrel sim hit collection name is: "+bhcname+" and for encap it is: "+ehcname+" forward "+fwcname);
   }
   int asshts = 0;
   int nprints = 0; 
@@ -1245,7 +1248,95 @@
       }
      }
     }
-   } 
+   }
+
+   if(fwcname != null)
+   {
+    List<SimTrackerHit> vxehts = event.get(SimTrackerHit.class,fwcname);
+    if(dbg_lvl > 1) System.out.println("SimTrackerHit collection size for forward tracker: "+vxehts.size());
+    for(SimTrackerHit hit:vxehts)
+    {
+     double[] hpnt = hit.getPoint();    
+     Hep3Vector vhitp = new BasicHep3Vector(hpnt[0],hpnt[1],hpnt[2]);
+     IDetectorElement hitde = null;
+     if(hpnt[2] > 0.)
+     {
+      for(IDetectorElement vtxp:vxecpels)
+      {
+       IDetectorElement de = vtxp.findDetectorElement(vhitp);
+       if(de !=null) hitde=de;
+      }
+      if(hitde == null)
+      { 
+       System.out.println("Could not find sensor for hit: "+vhitp.x()+" "+vhitp.y()+" "+vhitp.z());
+//       throw new RuntimeException("Hit belongs to unknown sensor!");
+      }
+      if((hitde != null) && (asshts < MAXHTSPEV))
+      {
+       boolean isbox = false;
+       IDetectorElement parent = hitde;
+       if(parent.hasGeometryInfo())
+       {
+        IGeometryInfo geometry_info = parent.getGeometry();
+        ITransform3D local = geometry_info.getGlobalToLocal();
+        ILogicalVolume lv = geometry_info.getLogicalVolume();
+        ISolid body = lv.getSolid();
+        if(body instanceof Box)
+        {
+         isbox = true;
+         double lenX = 2.* ((Box) body).getXHalfLength();
+         double lenY = 2.* ((Box) body).getYHalfLength();
+         double bulk_thick = 2. * ((Box) body).getZHalfLength();
+        }
+       }
+       asshts++;  
+       IReadout hts = hitde.getReadout();
+       double t=hit.getTime()*cons.nanosecond;
+       if(assign_bc) t+=phys_time;
+       SimPixelHit spht= new SimPixelHit(hit,t);
+       hts.addHit(hit);
+       boolean foundmatch = false;
+       for(PixilatedSensor psen:psecpl)
+       {
+        if((psen.getParent() !=null) && (psen.getParent() == hitde)) 
+        { 
+         psen.addSimPixelHit(spht);
+         foundmatch = true;
+        }
+       }
+       if(!foundmatch) System.out.println("Can't find matching pixilated sensor! "); 
+      }
+     }
+     if(hpnt[2] < 0.)
+     {
+      for(IDetectorElement vtxp:vxecmels)
+      {
+       IDetectorElement de = vtxp.findDetectorElement(vhitp);
+       if(de !=null) hitde=de;
+      }
+      if(hitde == null)
+      { 
+       System.out.println("Could not find sensor for hit: "+vhitp.x()+" "+vhitp.y()+" "+vhitp.z());
+//       throw new RuntimeException("Hit belongs to unknown sensor!");
+      }
+      if((hitde != null) && (asshts < MAXHTSPEV))
+      {
+       asshts++;  
+       IReadout hts = hitde.getReadout();
+       double t=hit.getTime()*cons.nanosecond;
+       if(assign_bc) t+=phys_time;
+       SimPixelHit spht= new SimPixelHit(hit,t);
+       hts.addHit(hit);
+       for(PixilatedSensor psen:psecml)
+       {
+        if((psen.getParent() !=null) && (psen.getParent() == hitde)) psen.addSimPixelHit(spht);
+       }
+      }
+     }
+    }
+   }
+
+ 
    if(dbg_lvl > 1) System.out.println("Total number of assigned vertex hits: "+asshts);
   } // end if(evhits != null)
   List<TrackerHit> ebhits = new ArrayList<TrackerHit>();
CVSspam 0.2.8