Print

Print


Commit in lcsim/src/org/lcsim/recon/vertexing/pixsim on MAIN
CCDElectronics.java+21.1 -> 1.2
CarrierPropagator.java+81.1 -> 1.2
PixilatedSensorManager.java+19-111.2 -> 1.3
+29-11
3 modified files
new setters were added: setIgnoreDiffusion for CarrierPropagator, setNoiseLevel and includeElectronicsNoise for PixilatedSensorManager, noise amplitude distribution was fixed for CCDElectronics (needs more checking though)

lcsim/src/org/lcsim/recon/vertexing/pixsim
CCDElectronics.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- CCDElectronics.java	9 Dec 2008 23:36:34 -0000	1.1
+++ CCDElectronics.java	14 Dec 2010 21:42:12 -0000	1.2
@@ -41,6 +41,8 @@
     {
      double bpro = erprob.getProbability(((double)(thr+i))/noise_level) 
      - erprob.getProbability(((double)(thr+i+1))/noise_level);
+     if(useCDS) bpro=bpro*bpro;
+     if(i==0) System.out.println("Probability of hit exceeding pixel threshold "+thr+" is "+bpro); 
      apro+=bpro;
      indist[i]=apro; 
     }

lcsim/src/org/lcsim/recon/vertexing/pixsim
CarrierPropagator.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- CarrierPropagator.java	9 Dec 2008 23:36:34 -0000	1.1
+++ CarrierPropagator.java	14 Dec 2010 21:42:13 -0000	1.2
@@ -24,6 +24,8 @@
      boolean debug = false;
      boolean trace = false;
      boolean init_OK = true;
+     boolean ignore_dif = false; 
+     //just for fun we can set it to true and see carrier move without diffusion 
      boolean pconf_real = true;
      String name="CCD_classic";
      Random rnd = new Random();
@@ -245,6 +247,11 @@
      return p_trace;
     }
 
+    public void setIgnoreDiffusion(boolean yes)
+    {
+     ignore_dif=yes;
+    }
+
     public String getName() { return name; }
 
     public IPixelConfiguration getPixelConfiguration() { return pconf; }
@@ -1135,6 +1142,7 @@
        }
        trT+=dt; 
        dilen = Math.abs(disig * rnd.nextGaussian());   // diffusion distance
+       if(ignore_dif) dilen=0.;
        Hep3Vector rv = rnv.nextVector();   // finding diffusion movement direction.
        double dx = move.x() + dilen * rv.x();
        double dy = move.y() + dilen * rv.y(); 

lcsim/src/org/lcsim/recon/vertexing/pixsim
PixilatedSensorManager.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- PixilatedSensorManager.java	18 Mar 2010 01:15:11 -0000	1.2
+++ PixilatedSensorManager.java	14 Dec 2010 21:42:13 -0000	1.3
@@ -20,7 +20,7 @@
  * for each event (only sensors which have hits in them are created)
  *
  * @author Nick Sinev
- * @version $Id: PixilatedSensorManager.java,v 1.2 2010/03/18 01:15:11 jeremy Exp $
+ * @version $Id: PixilatedSensorManager.java,v 1.3 2010/12/14 21:42:13 sinev Exp $
  */
 
 public class PixilatedSensorManager extends Driver
@@ -39,6 +39,7 @@
  private static int cluster_thr_ec = 8; 
  private static boolean firstcall = true;
  private static boolean assign_bc = true;
+ private static double enoise = 50.;
 
 // boolean choises for 3 sensor positions - Barrel, ECPlus and ECMinus
 
@@ -255,7 +256,7 @@
     IPixelSensorElectronics el = new CCDElectronics();
     el.includeElectronicNoiseHits(incl_el_noise);
     el.setADCScale(25.);
-    el.setNoiseLevel(50.);
+    el.setNoiseLevel(enoise);
     el.setADCSaturation(255);
     el.setBunchesPerClock(30); // this is about maximum clock image speed (100 KHz) for classic CCD - asuming 50MHz speed in R register
                               // for VXD3 CCD we would set this value to 300 (10 KHz image clock and 5 MHz R register speed)
@@ -276,7 +277,7 @@
     IPixelSensorElectronics el = new CCDElectronics();
     el.includeElectronicNoiseHits(incl_el_noise);
     el.setADCScale(25.);
-    el.setNoiseLevel(50.);
+    el.setNoiseLevel(enoise);
     el.setADCSaturation(255);
     el.useCorrelatedDoubleSampling(true);
     el.setPixelThreshold(4);
@@ -310,6 +311,8 @@
 
  public void includeElectronicsNoise(boolean yes) { incl_el_noise=yes; }
 
+ public void setNoiseLevel(double noise) { enoise=noise; }
+
  public List<IDetectorElement> getBarrelDetectorElements()
  {
    return vxbrels;
@@ -542,9 +545,11 @@
         {
          lvl--;
          name = child.getName();
-         if(name.indexOf("positive") != -1)
+//         System.out.println("found encap element with name: "+name);
+         if(((name.indexOf("reflected") == -1) || (name.indexOf("positive") != -1)) 
+           && (name.indexOf("negative") == -1))
            vxecpels.add(child);
-         if(name.indexOf("negative") != -1)
+         if((name.indexOf("reflected") != -1) || (name.indexOf("negative") != -1))
           vxecmels.add(child);
          ind[lvl]++;
         }
@@ -633,18 +638,19 @@
   String ehcname=null;
   if(evhits != null)
   {
-//   System.out.println("Event has  "+evhits.size()+" SimTrackerHit collections: ");
+   System.out.println("Event has  "+evhits.size()+" SimTrackerHit collections: ");
    for(List<SimTrackerHit> sdhits:evhits)
    {
     EventHeader.LCMetaData md = event.getMetaData(sdhits);
     String cname = md.getName();
+    System.out.println("Collection name: "+cname);
     if((cname.indexOf("Vtx")!=-1)||(cname.indexOf("Vertex") != -1))
     {
      if(cname.indexOf("Barrel")!=-1) bhcname=cname;
      if(cname.indexOf("Endcap")!=-1) ehcname=cname;
     }
    }
-//   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);
   }
   int asshts = 0;
   int nprints = 0; 
@@ -653,7 +659,7 @@
    if(bhcname != null)
    {
     List<SimTrackerHit> vxbhts = event.get(SimTrackerHit.class,bhcname);
-//    System.out.println("SimTrackerHit collection size for barrel: "+vxbhts.size());
+    System.out.println("SimTrackerHit collection size for barrel: "+vxbhts.size());
     for(SimTrackerHit hit:vxbhts)
     {
      double[] hpnt = hit.getPoint();    
@@ -683,7 +689,7 @@
    if(ehcname != null)
    {
     List<SimTrackerHit> vxehts = event.get(SimTrackerHit.class,ehcname);
-//    System.out.println("SimTrackerHit collection size for endcap: "+vxehts.size());
+    System.out.println("SimTrackerHit collection size for endcap: "+vxehts.size());
     for(SimTrackerHit hit:vxehts)
     {
      double[] hpnt = hit.getPoint();    
@@ -801,10 +807,12 @@
    }
   } 
 //  System.out.println("Endcap minus hits processed!");
+  System.out.println("Adding "+ebhits.size()+" hits to RecVtxBarrHits collection");
   event.put("RecVtxBarrHits",ebhits,TrackerHit.class,0);  
+  System.out.println("Adding "+eehits.size()+" hits to RecVtxEndcapHits collection");
   event.put("RecVtxEndcapHits",eehits,TrackerHit.class,0);
-  //event.put("RecVtxRawHits",rawhits,RawTrackerHit.class,(1 << LCIOConstants.RTHBIT_HITS));
-  event.put("RecVtxRawHits",rawhits,RawTrackerHit.class,0);
+  event.put("RecVtxRawHits",rawhits,RawTrackerHit.class,(1 << LCIOConstants.RTHBIT_HITS));
+//  event.put("RecVtxRawHits",rawhits,RawTrackerHit.class,0);
 
  } // end function process
 
CVSspam 0.2.8