Commit in projects/lcsim/trunk/cal-calib/src/main/java/org/lcsim/cal/calib on MAIN
SamplingFractionAnalysisPolyCalDriver.java+37-203303 -> 3304
rework layering calculation

projects/lcsim/trunk/cal-calib/src/main/java/org/lcsim/cal/calib
SamplingFractionAnalysisPolyCalDriver.java 3303 -> 3304
--- projects/lcsim/trunk/cal-calib/src/main/java/org/lcsim/cal/calib/SamplingFractionAnalysisPolyCalDriver.java	2014-09-03 23:34:43 UTC (rev 3303)
+++ projects/lcsim/trunk/cal-calib/src/main/java/org/lcsim/cal/calib/SamplingFractionAnalysisPolyCalDriver.java	2014-09-04 05:23:13 UTC (rev 3304)
@@ -57,8 +57,8 @@
     private boolean _debug = false;
     // TODO fix this dependence on EM calorimeter geometry
     boolean skipFirstLayer = false;
-    int firstEmStartLayer = 0;
-    int secondEmStartLayer = 20;
+//    int firstEmStartLayer = 0;
+//    int secondEmStartLayer = 20;
 
     private double[] _ecalLayering;
     boolean _useFirstLayer;
@@ -114,7 +114,7 @@
 
             _ecalLayering = _cond.getDoubleArray("ECalLayering");
             _useFirstLayer = _cond.getDouble("IsFirstEmLayerSampling") == 1.;
-
+            skipFirstLayer = !_useFirstLayer;
             ConditionsSet hcalProperties = mgr.getConditions("SamplingFractions/HcalBarrel");
 
             _isHcalDigital = hcalProperties.getBoolean("digital");
@@ -122,11 +122,11 @@
 
             AbstractPolyhedraCalorimeter calsubBarrel = (AbstractPolyhedraCalorimeter) event.getDetector().getSubdetectors().get(det[0]);
             // TODO remove this hardcoded dependence on the first layer
-            if (calsubBarrel.getLayering().getLayer(0).getSlices().get(0).isSensitive()) {
-                skipFirstLayer = true;
-                firstEmStartLayer += 1;
-                secondEmStartLayer += 1;
-            }
+//            if (calsubBarrel.getLayering().getLayer(0).getSlices().get(0).isSensitive()) {
+//                skipFirstLayer = true;
+//                firstEmStartLayer += 1;
+//                secondEmStartLayer += 1;
+//            }
 //            Layering layering = calsubBarrel.getLayering();
 //            for(int i=0; i<layering.size(); ++i)
 //            {
@@ -274,7 +274,8 @@
                     // 2.) next 10 EM layers
                     // 3.) Had layers
                     List<CalorimeterHit> hits = c.getCalorimeterHits();
-                    double[] vals = new double[3];
+                    double[] vals = new double[4];
+                    int nHcalHits = 0;
                     double clusterRawEnergy = 0.;
                     for (CalorimeterHit hit : hits) {
                         long id = hit.getCellID();
@@ -286,11 +287,11 @@
                         int caltype = 0;
                         // FIXME Hard-coded name.
                         if (detectorName.toUpperCase().startsWith("ECAL")) {
-                            if (layer >= firstEmStartLayer && layer < secondEmStartLayer) {
-                                type = 0;
-                            } else {
-                                type = 1;
-                            }
+//                            if (layer >= firstEmStartLayer && layer < secondEmStartLayer) {
+//                                type = 0;
+//                            } else {
+//                                type = 1;
+//                            }
                             for (int i = 1; i < _ecalLayering.length + 1; ++i) {
                                 if (layer >= _ecalLayering[i - 1]) {
                                     caltype = i - 1;
@@ -303,18 +304,29 @@
                             caltype = 3;
                             nHCalHits += 1;
                         }
+                        if(_debug)
+                        {
+                            System.out.println(detectorName+" layer: "+layer+" type: "+type+" caltype: "+caltype+" raw");
+                        }
                         clusterRawEnergy += hit.getRawEnergy();
-                        vals[type] += hit.getRawEnergy();
-                        if (_isHcalDigital == true) {
-                                vals[2] = nHCalHits;
+                        vals[caltype] += hit.getRawEnergy();
+//                        if (_isHcalDigital == true) {
+//                                nHcalHits += nHCalHits;
+//                            }
+                    } // end of loop over hits in cluster
+                    if (_isHcalDigital == true) {
+                                vals[3] = nHCalHits;
                             }
-                    } // end of loop over hits in cluster
                     // set up linear least squares:
                     // expectedEnergy = a*E1 + b*E2 +c*E3
                     for (int j = 0; j < 3; ++j) {
-                        _vec[j] += vals[j];
+                        if(_debug)
+                        {
+                            System.out.println("clusterRawEnergy= "+clusterRawEnergy+" vals["+j+"]= "+vals[j]);
+                        }
+                        _vec[j] += expectedEnergy*vals[j+1];
                         for (int k = 0; k < 3; ++k) {
-                            _acc[j][k] += (vals[j] * vals[k]) / expectedEnergy;
+                            _acc[j][k] += vals[j+1] * vals[k+1] ;
                         }
                     }
                 } // end of single cluster cut
@@ -362,4 +374,9 @@
             }
         }
     }
+    
+    public void setDebug(boolean debug)
+    {
+        _debug = debug;
+    }
 }
SVNspam 0.1


Use REPLY-ALL to reply to list

To unsubscribe from the LCDET-SVN list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCDET-SVN&A=1