Author: [log in to unmask]
Date: Sun Sep 27 16:26:28 2015
New Revision: 3723
Log:
Added test to try and elimanate duplicate tracks from trident analysis portion of MTE analysis driver.
Modified:
java/trunk/users/src/main/java/org/hps/users/kmccarty/MTEAnalysis.java
Modified: java/trunk/users/src/main/java/org/hps/users/kmccarty/MTEAnalysis.java
=============================================================================
--- java/trunk/users/src/main/java/org/hps/users/kmccarty/MTEAnalysis.java (original)
+++ java/trunk/users/src/main/java/org/hps/users/kmccarty/MTEAnalysis.java Sun Sep 27 16:26:28 2015
@@ -344,6 +344,11 @@
trackClusters[i] = pair[i].getClusters().get(0);
}
+ // Make sure that the clusters are not the same.
+ if(trackClusters[0] == trackClusters[1]) {
+ continue tridentTrackLoop;
+ }
+
// Require that the track clusters be within a certain
// time window of one another.
CalorimeterHit[] seeds = new CalorimeterHit[2];
@@ -356,58 +361,64 @@
// Require that the energy of the electron is below
// 900 MeV.
- if((pair[0].getCharge() < 0 && pair[0].getMomentum().magnitude() < 0.900) || (pair[1].getCharge() < 0 && pair[1].getMomentum().magnitude() < 0.900)) {
- isTrident = true;
- tridentPlots.addClusterPair(trackClusters);
- if(pair[0].getCharge() > 0) {
- positronPlot.fill(pair[1].getMomentum().magnitude());
- electronPlot[TRIDENT].fill(pair[0].getMomentum().magnitude());
- } else {
- positronPlot.fill(pair[0].getMomentum().magnitude());
- electronPlot[TRIDENT].fill(pair[1].getMomentum().magnitude());
- }
- energyPlot[TRIDENT].fill(VecOp.add(pair[0].getMomentum(), pair[1].getMomentum()).magnitude());
- energy2DPlot[TRIDENT].fill(pair[0].getMomentum().magnitude(), pair[1].getMomentum().magnitude());
-
- // Track which clusters have already been added to the
- // singles plot so that there are no repeats.
- Set<Cluster> plotSet = new HashSet<Cluster>();
- Set<Cluster> plotFiducial = new HashSet<Cluster>();
-
- // Fill the all pairs plots.
- double pairEnergy = trackClusters[0].getEnergy() + trackClusters[1].getEnergy();
- trEnergySumAll.fill(pairEnergy);
- trEnergySum2DAll.fill(trackClusters[1].getEnergy(), trackClusters[0].getEnergy());
- trTimeCoincidenceAll.fill(TriggerModule.getValueTimeCoincidence(trackClusters));
- trSumCoplanarityCalcAll.fill(pairEnergy, getCalculatedCoplanarity(trackClusters));
- trSumCoplanarityAll.fill(pairEnergy, TriggerModule.getValueCoplanarity(trackClusters));
-
- // Fill the singles plots.
- if(!plotSet.contains(trackClusters[0])) {
- plotSet.add(trackClusters[0]);
- trTimeEnergyAll.fill(trackClusters[0].getEnergy(), TriggerModule.getClusterTime(trackClusters[0]));
- } if(!plotSet.contains(trackClusters[1])) {
- plotSet.add(trackClusters[1]);
- trTimeEnergyAll.fill(trackClusters[1].getEnergy(), TriggerModule.getClusterTime(trackClusters[1]));
- }
-
- // Fill the fiducial plots if appropriate.
- if(inFiducialRegion(trackClusters[0]) && inFiducialRegion(trackClusters[1])) {
- trEnergySumFiducial.fill(pairEnergy);
- trEnergySum2DFiducial.fill(trackClusters[1].getEnergy(), trackClusters[0].getEnergy());
- trTimeCoincidenceFiducial.fill(TriggerModule.getValueTimeCoincidence(trackClusters));
- trSumCoplanarityCalcFiducial.fill(pairEnergy, getCalculatedCoplanarity(trackClusters));
- trSumCoplanarityFiducial.fill(pairEnergy, TriggerModule.getValueCoplanarity(trackClusters));
- }
-
- // Fill the singles fiducial plots if appropriate.
- if(!plotFiducial.contains(trackClusters[0]) && inFiducialRegion(trackClusters[0])) {
- plotFiducial.add(trackClusters[0]);
- trTimeEnergyFiducial.fill(trackClusters[0].getEnergy(), TriggerModule.getClusterTime(trackClusters[0]));
- } if(!plotFiducial.contains(trackClusters[1]) && inFiducialRegion(trackClusters[1])) {
- plotFiducial.add(trackClusters[1]);
- trTimeEnergyFiducial.fill(trackClusters[1].getEnergy(), TriggerModule.getClusterTime(trackClusters[1]));
- }
+ boolean electronNotElastic = (pair[0].getCharge() < 0 && pair[0].getMomentum().magnitude() < 0.900)
+ || (pair[1].getCharge() < 0 && pair[1].getMomentum().magnitude() < 0.900);
+ if(!electronNotElastic) {
+ continue tridentTrackLoop;
+ }
+
+ // If all tests are passed, this is a trident. Note
+ // this and populate the trident plots.
+ isTrident = true;
+ tridentPlots.addClusterPair(trackClusters);
+ if(pair[0].getCharge() > 0) {
+ positronPlot.fill(pair[1].getMomentum().magnitude());
+ electronPlot[TRIDENT].fill(pair[0].getMomentum().magnitude());
+ } else {
+ positronPlot.fill(pair[0].getMomentum().magnitude());
+ electronPlot[TRIDENT].fill(pair[1].getMomentum().magnitude());
+ }
+ energyPlot[TRIDENT].fill(VecOp.add(pair[0].getMomentum(), pair[1].getMomentum()).magnitude());
+ energy2DPlot[TRIDENT].fill(pair[0].getMomentum().magnitude(), pair[1].getMomentum().magnitude());
+
+ // Track which clusters have already been added to the
+ // singles plot so that there are no repeats.
+ Set<Cluster> plotSet = new HashSet<Cluster>();
+ Set<Cluster> plotFiducial = new HashSet<Cluster>();
+
+ // Fill the all pairs plots.
+ double pairEnergy = trackClusters[0].getEnergy() + trackClusters[1].getEnergy();
+ trEnergySumAll.fill(pairEnergy);
+ trEnergySum2DAll.fill(trackClusters[1].getEnergy(), trackClusters[0].getEnergy());
+ trTimeCoincidenceAll.fill(TriggerModule.getValueTimeCoincidence(trackClusters));
+ trSumCoplanarityCalcAll.fill(pairEnergy, getCalculatedCoplanarity(trackClusters));
+ trSumCoplanarityAll.fill(pairEnergy, TriggerModule.getValueCoplanarity(trackClusters));
+
+ // Fill the singles plots.
+ if(!plotSet.contains(trackClusters[0])) {
+ plotSet.add(trackClusters[0]);
+ trTimeEnergyAll.fill(trackClusters[0].getEnergy(), TriggerModule.getClusterTime(trackClusters[0]));
+ } if(!plotSet.contains(trackClusters[1])) {
+ plotSet.add(trackClusters[1]);
+ trTimeEnergyAll.fill(trackClusters[1].getEnergy(), TriggerModule.getClusterTime(trackClusters[1]));
+ }
+
+ // Fill the fiducial plots if appropriate.
+ if(inFiducialRegion(trackClusters[0]) && inFiducialRegion(trackClusters[1])) {
+ trEnergySumFiducial.fill(pairEnergy);
+ trEnergySum2DFiducial.fill(trackClusters[1].getEnergy(), trackClusters[0].getEnergy());
+ trTimeCoincidenceFiducial.fill(TriggerModule.getValueTimeCoincidence(trackClusters));
+ trSumCoplanarityCalcFiducial.fill(pairEnergy, getCalculatedCoplanarity(trackClusters));
+ trSumCoplanarityFiducial.fill(pairEnergy, TriggerModule.getValueCoplanarity(trackClusters));
+ }
+
+ // Fill the singles fiducial plots if appropriate.
+ if(!plotFiducial.contains(trackClusters[0]) && inFiducialRegion(trackClusters[0])) {
+ plotFiducial.add(trackClusters[0]);
+ trTimeEnergyFiducial.fill(trackClusters[0].getEnergy(), TriggerModule.getClusterTime(trackClusters[0]));
+ } if(!plotFiducial.contains(trackClusters[1]) && inFiducialRegion(trackClusters[1])) {
+ plotFiducial.add(trackClusters[1]);
+ trTimeEnergyFiducial.fill(trackClusters[1].getEnergy(), TriggerModule.getClusterTime(trackClusters[1]));
}
}
|