Print

Print


Commit in lcsim/src/org/lcsim/mc/fast/tracking on MAIN
SimpleTables.java+33added 1.1
SmearTrackSimple.java+87added 1.1
+120
2 added files
Daniel's updates.

lcsim/src/org/lcsim/mc/fast/tracking
SimpleTables.java added at 1.1
diff -N SimpleTables.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ SimpleTables.java	9 Aug 2005 18:34:03 -0000	1.1
@@ -0,0 +1,33 @@
+
+package org.lcsim.mc.fast.tracking;
+
+
+import org.lcsim.conditions.ConditionsSet;
+
+/**
+ *
+ * @author Daniel
+ */
+public class SimpleTables {
+
+    private double  ConstantTerm;
+    private double  ThetaTerm;
+    
+    /** Creates a new instance of SimpleTables */
+    SimpleTables(ConditionsSet set) 
+    {
+        ConstantTerm = set.getDouble("ConstantTerm");
+        ThetaTerm = set.getDouble("ThetaTerm");      
+    }
+    
+    public double getConstantTerm()
+    {
+        return ConstantTerm;
+    }
+    
+    public double getThetaTerm()
+    {
+        return ThetaTerm;
+    }
+
+}

lcsim/src/org/lcsim/mc/fast/tracking
SmearTrackSimple.java added at 1.1
diff -N SmearTrackSimple.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ SmearTrackSimple.java	9 Aug 2005 18:34:03 -0000	1.1
@@ -0,0 +1,87 @@
+package org.lcsim.mc.fast.tracking;
+
+import java.util.Random;
+import org.lcsim.mc.fast.tracking.SimpleTables;
+import org.lcsim.util.aida.AIDA;
+
+/**
+ *
+ * @author Daniel
+ */
+public class SmearTrackSimple
+    {
+    
+    /** Creates a new instance of SmearTrackSimple */
+    /**
+    * Smear track parameters according to the track's stored error matrix.
+    *
+    * @see TrackParameters
+    */
+    private static AIDA aida = AIDA.defaultInstance();
+    
+    static DocaTrackParameters smearTrackSimple(double bField, TrackParameters noSmear, Random rand, SimpleTables SmTbl, double pt, boolean hist)
+    {
+       // get error matrix and do a sanity check
+       
+       double[] dev = noSmear.getTrackParameters();
+       for (int i = 0; i < 5; i++)
+       {
+          if (noSmear.getErrorMatrix()[i][i] <= 0)
+          {
+             throw new RuntimeException("Non-positive Eigenvalue seen!");
+          }
+          
+          
+          if (i == 2)
+          {
+             double th = Math.atan(1/(noSmear.getTanL()));
+             
+             double a = SmTbl.getConstantTerm();
+             double b = SmTbl.getThetaTerm()/(pt*Math.sin(th));
+             
+             double smmat = (Math.sqrt(noSmear.getErrorMatrix()[i][i])) / (Math.abs(pt * dev[i]));
+             double p = Math.sqrt( noSmear.getPX()*noSmear.getPX() + noSmear.getPY()*noSmear.getPY() + noSmear.getPZ()*noSmear.getPZ() );
+             
+             if ((p < 102) && (p > 98) &&(hist))
+             {
+                 aida.histogram2D("theta dependence of matrix element", 400, 0, 2, 400, .000005, .0005).fill(-Math.log10(1-Math.cos(th)),smmat); 
+                 aida.histogram2D("theta dependence of parameterization", 400, 0, 2, 400, .000005, .0005).fill(-Math.log10(1-Math.cos(th)),Math.sqrt(a*a + b*b)); 
+             }
+             
+             dev[i] = dev[i] + dev[i] * pt * Math.sqrt(a*a + b*b) * rand.nextGaussian();  
+             
+             //dev[i] = dev[i] + Math.sqrt(noSmear.getErrorMatrix()[i][i]) * rand.nextGaussian();
+             
+          } else {
+              
+              dev[i] = dev[i] + Math.sqrt(noSmear.getErrorMatrix()[i][i]) * rand.nextGaussian();
+              
+          }
+           
+ 
+       }
+         
+ 
+       // adjust new phi value to [-pi,pi] if necessary
+       if (dev[1] > Math.PI)
+       {
+           dev[1] -= (2. * Math.PI);
+       }
+       if (dev[1] < -Math.PI)
+       {
+           dev[1] += (2. * Math.PI);
+       } 
+ 
+       // Chi2 calculation
+       double chi2 = dev[0]*dev[0]*noSmear.getErrorMatrix()[0][0]; 
+ 
+       DocaTrackParameters smeared = new DocaTrackParameters(bField, dev, noSmear.getErrorMatrix(), chi2);
+       if (noSmear instanceof DocaTrackParameters)
+       {
+          smeared.setL0(((DocaTrackParameters) noSmear).getL0());
+       } 
+ 
+       return smeared;
+    }
+
+}
CVSspam 0.2.8