projects/lcsim/trunk/cal-calib/src/main/java/org/lcsim/cal/calib
--- 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;
+ }
}