Commit in mcd-analysis/src/main/java/org/lcsim/mcd/analysis/DRCorrection/alexDRCorr on MAIN | |||
backgroundAnalysisDriver.java | +97 | -1 | 1.1 -> 1.2 |
DualCorrection.java | +27 | -25 | 1.2 -> 1.3 |
Resolution.java | +20 | -19 | 1.2 -> 1.3 |
electronCorrection.java | +1 | -1 | 1.2 -> 1.3 |
+145 | -46 |
Fixed some bugs.
diff -u -r1.1 -r1.2 --- backgroundAnalysisDriver.java 18 Apr 2014 22:02:58 -0000 1.1 +++ backgroundAnalysisDriver.java 19 Apr 2014 00:26:02 -0000 1.2 @@ -1,7 +1,12 @@
package org.lcsim.mcd.analysis.DRCorrection.alexDRCorr;
+import hep.aida.IHistogram1D; +import java.util.HashMap; +import java.util.List;
import org.lcsim.event.EventHeader;
+import org.lcsim.event.SimCalorimeterHit;
import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
/** * Driver to look at machine backgrounds of a single event.
@@ -13,9 +18,100 @@
* @author aconway */ public class backgroundAnalysisDriver extends Driver {
+ AIDA aida = AIDA.defaultInstance(); + IHistogram1D Edep_vs_tofl; + double[] t_cuts = {1.0,2.0,3.0,4.0,5.0,7.0,10.0}; + + HashMap<Long,HashMap<Double,Double>> Scintmap; + HashMap<Long,HashMap<Double,Double>> Cerenmap; + HashMap<Long,HashMap<Double,Double>> Mucalmap; + + @Override + protected void startOfData() { + Scintmap = new HashMap<Long,HashMap<Double,Double>>(); + Cerenmap = new HashMap<Long,HashMap<Double,Double>>(); + Mucalmap = new HashMap<Long,HashMap<Double,Double>>(); + }
@Override protected void process(EventHeader event) {
-
+ List<List<SimCalorimeterHit>> simCalorimeterHitCollections = event.get(SimCalorimeterHit.class); + for (List<SimCalorimeterHit> simCalHits : simCalorimeterHitCollections) { + String CollectionName = event.getMetaData(simCalHits).getName(); + HashMap<Long,HashMap<Double,Double>> map; + String pfix = "MuCal"; + if (CollectionName.contains("Edep")) { + pfix = "Scint"; + map = Scintmap; + } else if (CollectionName.contains("Opti")) { + pfix = "Ceren"; + map = Cerenmap; + } else { + map = Mucalmap; + } + for (SimCalorimeterHit hit : simCalHits) { + HashMap<Double,Double> submap; + if (map.containsKey((Long)hit.getCellID())) { + submap = map.get((Long)hit.getCellID()); + } else { + submap = new HashMap<Double,Double>(); + map.put((Long)hit.getCellID(), submap); + } + int ncontribs = hit.getMCParticleCount(); + double[] E_contribs = new double[t_cuts.length]; + for (int i=0; i<ncontribs; i++) { + double tdep = hit.getContributedTime(i); + double tofl = tdep - hit.getPositionVec().magnitude()/299.79; + double edep = hit.getContributedEnergy(i); + aida.cloud1D(pfix + "/contribs/edep vs t").fill(tdep,edep); + aida.cloud1D(pfix + "/contribs/edep vs tofl").fill(tofl,edep); + double logt; + if (tofl >= 0.0) { + logt = Math.log10(tofl+0.001); + aida.cloud1D(pfix + "/contribs/edep vs log tofl t>0").fill(logt,edep); + } else { + logt = -1.0*Math.log10(-1.0*tofl); + aida.cloud1D(pfix + "/contribs/edep vs log tofl t<0").fill(logt,edep); + } + for (int j=0; j<t_cuts.length; j++) { + if ( (tofl < t_cuts[j]) && (tofl > 0.0) ) { + E_contribs[j] += edep; + } + } + } + for (int i=0; i<t_cuts.length; i++) { + if (E_contribs[i] > 0.0) { + aida.cloud1D(pfix + "/t_cuts/Edep " + String.valueOf(t_cuts[i]) + "ns").fill(E_contribs[i]); + aida.cloud1D(pfix + "/t_cuts/log Edep " + String.valueOf(t_cuts[i]) + "ns").fill(Math.log10(E_contribs[i])); + if (submap.containsKey(t_cuts[i])) { + double newEdep = submap.get(t_cuts[i]) + E_contribs[i]; + submap.remove(t_cuts[i]); + submap.put(t_cuts[i], newEdep); + } else { + submap.put(t_cuts[i], E_contribs[i]); + } + } + } + } + } + } + + @Override + protected void endOfData() { + mapPlots(Scintmap, "Scint"); + mapPlots(Cerenmap, "Ceren"); + mapPlots(Mucalmap, "Mucal"); + } + + private void mapPlots(HashMap<Long,HashMap<Double,Double>> map, String name) { + for (HashMap<Double,Double> submap : map.values()) { + for (Double tcut : submap.keySet()) { + Double edep = submap.get(tcut); + String pfix = "/maps/" + name + "/Edep " + String.valueOf(tcut) + "ns"; + aida.cloud1D(pfix).fill(Math.log10(edep)); + pfix = "/maps/" + name + "/wtd Edep " + String.valueOf(tcut) + "ns"; + aida.cloud1D(pfix).fill(Math.log10(edep),edep); + } + }
} }
diff -u -r1.2 -r1.3 --- DualCorrection.java 18 Apr 2014 22:02:58 -0000 1.2 +++ DualCorrection.java 19 Apr 2014 00:26:02 -0000 1.3 @@ -170,7 +170,7 @@
E_contrib += calorimeterHit.getContributedEnergy(i); } }
- if (E_contrib > cutCon.S_thresh) {
+ if (E_contrib > cutCon.S_thresh/1000.0) {
sumEEdep += E_contrib; } }
@@ -193,7 +193,7 @@
} } if (E_contrib > cutCon.C_thresh) {
- sumEEdep += E_contrib;
+ sumECeren += E_contrib;
} } else {
@@ -204,30 +204,32 @@
} Edep.fill(sumEEdep); Eceren.fill(sumECeren);
- Edep_frac.fill(sumEEdep/E_kin); - - double[] xval = {0.0}; - xval[0] = sumEEdep; - double sumEEdep_cor = corfus.getFunction("SC").value(xval); - xval[0] = sumECeren; - double sumECeren_cor = corfus.getFunction("CC").value(xval); - Edep_cor.fill(sumEEdep_cor); - Eceren_cor.fill(sumECeren_cor); - double ratio = sumECeren_cor / sumEEdep_cor; - double fraction = sumEEdep_cor / E_kin; - aida.cloud1D("frac").fill(fraction); - aida.cloud1D("c_CerenEdep_ratio").fill(ratio); - c_Ceren_vs_Edep.fill(sumECeren_cor, sumEEdep_cor); - aida.cloud2D("c_efrac_ratio").fill(ratio, fraction); - - int bin = (int) Math.rint(ratio / binwidth); - if (bin < 0) { - bin = 0; - } - if (bin > maxbin - 1) { - bin = maxbin;
+ Edep_frac.fill(sumEEdep / E_kin); + + if (sumEEdep > 0.0) { + double[] xval = {0.0}; + xval[0] = sumEEdep; + double sumEEdep_cor = corfus.getFunction("SC").value(xval); + xval[0] = sumECeren; + double sumECeren_cor = corfus.getFunction("CC").value(xval); + Edep_cor.fill(sumEEdep_cor); + Eceren_cor.fill(sumECeren_cor); + double ratio = sumECeren_cor / sumEEdep_cor; + double fraction = sumEEdep_cor / E_kin; + aida.cloud1D("frac").fill(fraction); + aida.cloud1D("c_CerenEdep_ratio").fill(ratio); + c_Ceren_vs_Edep.fill(sumECeren_cor, sumEEdep_cor); + aida.cloud2D("c_efrac_ratio").fill(ratio, fraction); + + int bin = (int) Math.rint(ratio / binwidth); + if (bin < 0) { + bin = 0; + } + if (bin > maxbin - 1) { + bin = maxbin; + } + slice[bin].fill(fraction);
}
- slice[bin].fill(fraction);
} // Run final fits
diff -u -r1.2 -r1.3 --- Resolution.java 18 Apr 2014 22:02:58 -0000 1.2 +++ Resolution.java 19 Apr 2014 00:26:02 -0000 1.3 @@ -182,7 +182,7 @@
E_contrib += calorimeterHit.getContributedEnergy(i); } }
- if (E_contrib > cutCon.S_thresh) {
+ if (E_contrib > cutCon.S_thresh/1000.0) {
sumEEdep += E_contrib; } }
@@ -205,7 +205,7 @@
} } if (E_contrib > cutCon.C_thresh) {
- sumEEdep += E_contrib;
+ sumECeren += E_contrib;
} } else {
@@ -216,23 +216,24 @@
} Edep.fill(sumEEdep); ECeren.fill(sumECeren);
- - xval[0] = sumEEdep; - double sumEEdep_cor = corfus.getFunction("SC").value(xval); - xval[0] = sumECeren; - double sumECeren_cor = corfus.getFunction("CC").value(xval); - Edep_cor.fill(sumEEdep_cor); - Eceren_cor.fill(sumECeren_cor); - - double ratio = sumECeren_cor / sumEEdep_cor; - double fraction = sumEEdep_cor / E_in; - xval[0] = ratio; - String cfname = "CS" + Ein.toString() + "gev"; - double cfac = corfus.getFunction(cfname).value(xval); - Edep_dcor.fill(sumEEdep_cor / cfac); - String sfname = "S" + Ein.toString() + "gev"; - double sfac = corfus.getFunction(sfname).parameter("mean"); - Edep_scor.fill(sumEEdep_cor / sfac);
+ if (sumEEdep > 0.0) { + xval[0] = sumEEdep; + double sumEEdep_cor = corfus.getFunction("SC").value(xval); + xval[0] = sumECeren; + double sumECeren_cor = corfus.getFunction("CC").value(xval); + Edep_cor.fill(sumEEdep_cor); + Eceren_cor.fill(sumECeren_cor); + + double ratio = sumECeren_cor / sumEEdep_cor; + double fraction = sumEEdep_cor / E_in; + xval[0] = ratio; + String cfname = "CS" + Ein.toString() + "gev"; + double cfac = corfus.getFunction(cfname).value(xval); + Edep_dcor.fill(sumEEdep_cor / cfac); + String sfname = "S" + Ein.toString() + "gev"; + double sfac = corfus.getFunction(sfname).parameter("mean"); + Edep_scor.fill(sumEEdep_cor / sfac); + }
} @Override
diff -u -r1.2 -r1.3 --- electronCorrection.java 18 Apr 2014 22:02:58 -0000 1.2 +++ electronCorrection.java 19 Apr 2014 00:26:02 -0000 1.3 @@ -150,7 +150,7 @@
E_contrib += calorimeterHit.getContributedEnergy(i); } }
- if (E_contrib > cutCon.S_thresh) {
+ if (E_contrib > cutCon.S_thresh/1000.0) {
sumEEdep += E_contrib; } }
Use REPLY-ALL to reply to list
To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1