lcsim/src/org/lcsim/recon/vertexing/pixsim
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>();