Author: holly Date: Sun Dec 21 07:15:56 2014 New Revision: 1800 Log: ensure shared hits in calorimeter hit list Modified: java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalClusterIC.java Modified: java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalClusterIC.java ============================================================================= --- java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalClusterIC.java (original) +++ java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalClusterIC.java Sun Dec 21 07:15:56 2014 @@ -10,12 +10,10 @@ import java.util.Collections; import java.util.Comparator; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; -import org.hps.recon.ecal.HPSEcalClusterIC; import org.lcsim.detector.IGeometryInfo; import org.lcsim.detector.solids.Trd; import org.lcsim.event.CalorimeterHit; @@ -84,24 +82,6 @@ double minTime = 0.0; // Maximum time cut window range. Units in ns. double timeWindow = 20.0; - // Variables for electron position corrections - static final double ELECTRON_POS_A = 0.0066; - static final double ELECTRON_POS_B = -0.03; - static final double ELECTRON_POS_C = 0.028; - static final double ELECTRON_POS_D = -0.45; - static final double ELECTRON_POS_E = 0.465; - // Variables for positron position corrections - static final double POSITRON_POS_A = 0.0072; - static final double POSITRON_POS_B = -0.031; - static final double POSITRON_POS_C = 0.007; - static final double POSITRON_POS_D = 0.342; - static final double POSITRON_POS_E = 0.108; - // Variables for photon position corrections - static final double PHOTON_POS_A = 0.005; - static final double PHOTON_POS_B = -0.032; - static final double PHOTON_POS_C = 0.011; - static final double PHOTON_POS_D = -0.037; - static final double PHOTON_POS_E = 0.294; public void setClusterCollectionName(String clusterCollectionName) { @@ -573,19 +553,6 @@ Point hitIndex = new Point(ix, iy); rawPosition[2] = correctedPositionMap.get(hitIndex)[2]; - - - // Apply position correction factors: - // Position correction for electron: - int pdg = 11; - double xCorr = posCorrection(pdg, xCl*10.0, seedEnergyTot.get(seedP)); - - double[] corrPosition = new double[3]; - corrPosition[0] = xCorr*10.0;//mm - corrPosition[1] = yCl*10.0;//mm - corrPosition[2] = correctedPositionMap.get(hitIndex)[2]; - - corrSeedPosition.put(seedP, corrPosition); rawSeedPosition.put(seedP, rawPosition); @@ -623,12 +590,14 @@ } } - for (Map.Entry<CalorimeterHit, List<CalorimeterHit>> entry4 : commonHits.entrySet()) { - if (entry4.getValue().contains(entry2.getKey())) { - // Add shared hits for energy distribution between clusters - cluster.addSharedHit(entry4.getKey()); - } - } + for (Map.Entry<CalorimeterHit, List<CalorimeterHit>> entry4 : commonHits.entrySet()) { + if (entry4.getValue().contains(entry2.getKey())) { + // Add shared hits for energy distribution between clusters + cluster.addSharedHit(entry4.getKey()); + //fixes bug for SIO Writer? + cluster.addHit(entry4.getKey()); + } + } //Input uncorrected cluster energies if (seedEnergyTot.values().size() > 0){ @@ -636,8 +605,7 @@ cluster.setUncorrectedEnergy(seedEnergyTot.get(entry2.getKey())); } - //Input both uncorrected and corrected cluster positions. - cluster.setCorrPosition(corrSeedPosition.get(entry2.getKey())); + //Input uncorrected cluster positions. cluster.setRawPosition(rawSeedPosition.get(entry2.getKey())); @@ -756,62 +724,8 @@ } return isSeed; } - /** - * Calculates energy correction based on cluster raw energy and particle type as per - *<a href="https://misportal.jlab.org/mis/physics/hps_notes/index.cfm?note_year=2014">HPS Note 2014-001</a> - * @param pdg Particle id as per PDG - * @param rawEnergy Raw Energy of the cluster (sum of hits with shared hit distribution) - * @return Corrected Energy - */ - - - /** - * Calculates position correction based on cluster raw energy, x calculated position, - * and particle type as per - * <a href="https://misportal.jlab.org/mis/physics/hps_notes/index.cfm?note_year=2014">HPS Note 2014-001</a> - * @param pdg Particle id as per PDG - * @param xCl Calculated x centroid position of the cluster, uncorrected, at face - * @param rawEnergy Raw energy of the cluster (sum of hits with shared hit distribution) - * @return Corrected x position - */ - public double posCorrection(int pdg, double xPos, double rawEnergy){ - double xCl = xPos/10.0;//convert to mm - if (pdg == 11) { //Particle is electron - double xCorr = positionCorrection(xCl, rawEnergy, ELECTRON_POS_A, ELECTRON_POS_B, ELECTRON_POS_C, ELECTRON_POS_D, ELECTRON_POS_E); - return xCorr*10.0; - } - else if (pdg == -11) {// Particle is positron - double xCorr = positionCorrection(xCl, rawEnergy, POSITRON_POS_A, POSITRON_POS_B, POSITRON_POS_C, POSITRON_POS_D, POSITRON_POS_E); - return xCorr*10.0; - } - else if (pdg == 22) {// Particle is photon - double xCorr = positionCorrection(xCl, rawEnergy, PHOTON_POS_A, PHOTON_POS_B, PHOTON_POS_C, PHOTON_POS_D, PHOTON_POS_E); - return xCorr*10.0; - } - else { //Unknown - double xCorr = xCl; - return xCorr*10.0;} - } - - - /** - * Calculates the position correction in cm using the raw energy and variables associated with the fit - * of the particle as described in - * <a href="https://misportal.jlab.org/mis/physics/hps_notes/index.cfm?note_year=2014">HPS Note 2014-001</a> - * @param xCl - * @param rawEnergy - * @param varA - * @param varB - * @param varC - * @param varD - * @param varE - * @return - */ - public double positionCorrection(double xCl, double rawEnergy, double varA, double varB, double varC, double varD, double varE){ - double xCorr = xCl-(varA/Math.sqrt(rawEnergy) + varB )*xCl- - (varC*rawEnergy + varD/Math.sqrt(rawEnergy) + varE); - return xCorr; - } + + }