Author: [log in to unmask] Date: Thu Oct 8 13:42:11 2015 New Revision: 3811 Log: Updated some trident analysis drivers. Modified: java/trunk/users/src/main/java/org/hps/users/kmccarty/MTEAnalysis.java java/trunk/users/src/main/java/org/hps/users/kmccarty/RafoAnalysis.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 Thu Oct 8 13:42:11 2015 @@ -60,18 +60,20 @@ private IHistogram1D posTrackCount = aida.histogram1D("MTE Analysis/All Positive Event Tracks", 10, -0.5, 9.5); private IHistogram1D chargedTrackCount = aida.histogram1D("MTE Analysis/All Event Event Tracks", 10, -0.5, 9.5); - private IHistogram1D trTimeCoincidenceAll = aida.histogram1D("Trident/Time Coincidence", 150, 0.0, 15.0); - private IHistogram1D trTimeCoincidenceFiducial = aida.histogram1D("Trident/Time Coincidence (Fiducial Region)", 150, 0.0, 15.0); - private IHistogram1D trEnergySumAll = aida.histogram1D("Trident/Energy Sum", 220, 0.0, 1.1); - private IHistogram1D trEnergySumFiducial = aida.histogram1D("Trident/Energy Sum (Fiducial Region)", 220, 0.0, 1.1); - private IHistogram2D trEnergySum2DAll = aida.histogram2D("Trident/First Cluster Energy vs. Second Cluster Energy", 220, 0, 1.1, 220, 0, 1.1); - private IHistogram2D trEnergySum2DFiducial = aida.histogram2D("Trident/First Cluster Energy vs. Second Cluster Energy (Fiducial Region)", 220, 0, 1.1, 220, 0, 1.1); + private IHistogram1D trInvariantMassAll = aida.histogram1D("Trident/Invariant Mass", 2200, 0.0, 1.1); + private IHistogram1D trInvariantMassFiducial = aida.histogram1D("Trident/Invariant Mass (Fiducial Region)", 2200, 0.0, 1.1); + private IHistogram1D trTimeCoincidenceAll = aida.histogram1D("Trident/Time Coincidence", 300, -15.0, 15.0); + private IHistogram1D trTimeCoincidenceFiducial = aida.histogram1D("Trident/Time Coincidence (Fiducial Region)", 300, -15.0, 15.0); + private IHistogram1D trEnergySumAll = aida.histogram1D("Trident/Energy Sum", 220, 0.0, 1.1); + private IHistogram1D trEnergySumFiducial = aida.histogram1D("Trident/Energy Sum (Fiducial Region)", 220, 0.0, 1.1); + private IHistogram2D trEnergySum2DAll = aida.histogram2D("Trident/First Cluster Energy vs. Second Cluster Energy", 220, 0, 1.1, 220, 0, 1.5); + private IHistogram2D trEnergySum2DFiducial = aida.histogram2D("Trident/First Cluster Energy vs. Second Cluster Energy (Fiducial Region)", 220, 0, 1.1, 220, 0, 1.5); private IHistogram2D trSumCoplanarityAll = aida.histogram2D("Trident/Hardware Coplanarity vs. Energy Sum", 220, 0, 1.1, 115, 0, 180); private IHistogram2D trSumCoplanarityFiducial = aida.histogram2D("Trident/Hardware Coplanarity vs. Energy Sum (Fiducial Region)", 220, 0, 1.1, 115, 0, 180); private IHistogram2D trSumCoplanarityCalcAll = aida.histogram2D("Trident/Calculated Coplanarity vs. Energy Sum", 220, 0, 1.1, 115, 130, 230); private IHistogram2D trSumCoplanarityCalcFiducial = aida.histogram2D("Trident/Calculated Coplanarity vs. Energy Sum (Fiducial Region)", 220, 0, 1.1, 115, 130, 230); - private IHistogram2D trTimeEnergyAll = aida.histogram2D("Trident/Cluster Time vs. Cluster Energy", 220, 0, 1.1, 100, 0, 100); - private IHistogram2D trTimeEnergyFiducial = aida.histogram2D("Trident/Cluster Time vs. Cluster Energy (Fiducial Region)", 220, 0, 1.1, 100, 0, 100); + private IHistogram2D trTimeEnergyAll = aida.histogram2D("Trident/Cluster Time vs. Cluster Energy", 440, 0, 1.1, 100, 0, 100); + private IHistogram2D trTimeEnergyFiducial = aida.histogram2D("Trident/Cluster Time vs. Cluster Energy (Fiducial Region)", 440, 0, 1.1, 100, 0, 100); private TriggerPlotsModule allPlots = new TriggerPlotsModule("All"); private TriggerPlotsModule møllerPlots = new TriggerPlotsModule("Møller"); @@ -324,13 +326,21 @@ for(ReconstructedParticle[] pair : pairList) { // If trackless events are to be excluded, then require // that each "track" have a real track. - if(excludeNoTrackEvents && (pair[0].getTracks().isEmpty() || pair[1].getTracks().isEmpty())) { + if(pair[0].getTracks().isEmpty() || pair[1].getTracks().isEmpty()) { continue tridentTrackLoop; } - // Check the trident condition. + // Require that all tridents consist of a positive and + // negative pair. boolean isPosNeg = (pair[0].getCharge() < 0 && pair[1].getCharge() > 0) || (pair[0].getCharge() > 0 && pair[1].getCharge() < 0); if(!isPosNeg) { continue tridentTrackLoop; } + + // Require that tridents also be a top/bottom pair. + boolean isTopBot = (pair[0].getTracks().get(0).getTrackStates().get(0).getTanLambda() > 0 && pair[0].getTracks().get(0).getTrackStates().get(0).getTanLambda() < 0) + || (pair[0].getTracks().get(0).getTrackStates().get(0).getTanLambda() < 0 && pair[0].getTracks().get(0).getTrackStates().get(0).getTanLambda() > 0); + if(!isTopBot) { + continue tridentTrackLoop; + } // Both tracks must have clusters associated with them. Cluster[] trackClusters = new Cluster[pair.length]; @@ -390,9 +400,10 @@ double pairEnergy = trackClusters[0].getEnergy() + trackClusters[1].getEnergy(); trEnergySumAll.fill(pairEnergy); trEnergySum2DAll.fill(trackClusters[1].getEnergy(), trackClusters[0].getEnergy()); - trTimeCoincidenceAll.fill(TriggerModule.getValueTimeCoincidence(trackClusters)); + trTimeCoincidenceAll.fill(RafoAnalysis.getTimeConicidence(trackClusters)); trSumCoplanarityCalcAll.fill(pairEnergy, getCalculatedCoplanarity(trackClusters)); trSumCoplanarityAll.fill(pairEnergy, TriggerModule.getValueCoplanarity(trackClusters)); + trInvariantMassAll.fill(RafoAnalysis.getInvariantMass(pair)); // Fill the singles plots. if(!plotSet.contains(trackClusters[0])) { @@ -407,9 +418,10 @@ if(inFiducialRegion(trackClusters[0]) && inFiducialRegion(trackClusters[1])) { trEnergySumFiducial.fill(pairEnergy); trEnergySum2DFiducial.fill(trackClusters[1].getEnergy(), trackClusters[0].getEnergy()); - trTimeCoincidenceFiducial.fill(TriggerModule.getValueTimeCoincidence(trackClusters)); + trTimeCoincidenceFiducial.fill(RafoAnalysis.getTimeConicidence(trackClusters)); trSumCoplanarityCalcFiducial.fill(pairEnergy, getCalculatedCoplanarity(trackClusters)); trSumCoplanarityFiducial.fill(pairEnergy, TriggerModule.getValueCoplanarity(trackClusters)); + trInvariantMassFiducial.fill(RafoAnalysis.getInvariantMass(pair)); } // Fill the singles fiducial plots if appropriate. Modified: java/trunk/users/src/main/java/org/hps/users/kmccarty/RafoAnalysis.java ============================================================================= --- java/trunk/users/src/main/java/org/hps/users/kmccarty/RafoAnalysis.java (original) +++ java/trunk/users/src/main/java/org/hps/users/kmccarty/RafoAnalysis.java Thu Oct 8 13:42:11 2015 @@ -17,48 +17,51 @@ public class RafoAnalysis extends Driver { private boolean useGoodSVT = false; - private String clusterCollectionName = "EcalClusters"; + private String clusterCollectionName = "EcalClustersCorr"; private String particleCollectionName = "FinalStateParticles"; private AIDA aida = AIDA.defaultInstance(); - private IHistogram1D t0TimeCoincidenceAll = aida.histogram1D("Tier 0/Time Coincidence", 45, 0.0, 15.0); - private IHistogram1D t0TimeCoincidenceFiducial = aida.histogram1D("Tier 0/Time Coincidence (Fiducial Region)", 45, 0.0, 15.0); - private IHistogram1D t0EnergySumAll = aida.histogram1D("Tier 0/Energy Sum", 220, 0.0, 1.1); - private IHistogram1D t0EnergySumFiducial = aida.histogram1D("Tier 0/Energy Sum (Fiducial Region)", 220, 0.0, 1.1); - private IHistogram2D t0EnergySum2DAll = aida.histogram2D("Tier 0/Top Cluster Energy vs. Bottom Cluster Energy", 220, 0, 1.1, 220, 0, 1.1); - private IHistogram2D t0EnergySum2DFiducial = aida.histogram2D("Tier 0/Top Cluster Energy vs. Bottom Cluster Energy (Fiducial Region)", 220, 0, 1.1, 220, 0, 1.1); - private IHistogram2D t0SumCoplanarityAll = aida.histogram2D("Tier 0/Hardware Coplanarity vs. Energy Sum", 220, 0, 1.1, 115, 0, 230); - private IHistogram2D t0SumCoplanarityFiducial = aida.histogram2D("Tier 0/Hardware Coplanarity vs. Energy Sum (Fiducial Region)", 220, 0, 1.1, 115, 0, 230); - private IHistogram2D t0SumCoplanarityCalcAll = aida.histogram2D("Tier 0/Calculated Coplanarity vs. Energy Sum", 220, 0, 1.1, 115, 0, 230); - private IHistogram2D t0SumCoplanarityCalcFiducial = aida.histogram2D("Tier 0/Calculated Coplanarity vs. Energy Sum (Fiducial Region)", 220, 0, 1.1, 115, 0, 230); - private IHistogram2D t0TimeEnergyAll = aida.histogram2D("Tier 0/Cluster Time vs. Cluster Energy", 220, 0, 1.1, 100, 0, 100); - private IHistogram2D t0TimeEnergyFiducial = aida.histogram2D("Tier 0/Cluster Time vs. Cluster Energy (Fiducial Region)", 220, 0, 1.1, 100, 0, 100); - - private IHistogram1D t1TimeCoincidenceAll = aida.histogram1D("Tier 1/Time Coincidence", 45, 0.0, 15.0); - private IHistogram1D t1TimeCoincidenceFiducial = aida.histogram1D("Tier 1/Time Coincidence (Fiducial Region)", 45, 0.0, 15.0); - private IHistogram1D t1EnergySumAll = aida.histogram1D("Tier 1/Energy Sum", 220, 0.0, 1.1); - private IHistogram1D t1EnergySumFiducial = aida.histogram1D("Tier 1/Energy Sum (Fiducial Region)", 220, 0.0, 1.1); - private IHistogram2D t1EnergySum2DAll = aida.histogram2D("Tier 1/Top Cluster Energy vs. Bottom Cluster Energy", 220, 0, 1.1, 220, 0, 1.1); - private IHistogram2D t1EnergySum2DFiducial = aida.histogram2D("Tier 1/Top Cluster Energy vs. Bottom Cluster Energy (Fiducial Region)", 220, 0, 1.1, 220, 0, 1.1); - private IHistogram2D t1SumCoplanarityAll = aida.histogram2D("Tier 1/Hardware Coplanarity vs. Energy Sum", 220, 0, 1.1, 115, 0, 230); - private IHistogram2D t1SumCoplanarityFiducial = aida.histogram2D("Tier 1/Hardware Coplanarity vs. Energy Sum (Fiducial Region)", 220, 0, 1.1, 115, 0, 230); - private IHistogram2D t1SumCoplanarityCalcAll = aida.histogram2D("Tier 1/Calculated Coplanarity vs. Energy Sum", 220, 0, 1.1, 115, 0, 230); - private IHistogram2D t1SumCoplanarityCalcFiducial = aida.histogram2D("Tier 1/Calculated Coplanarity vs. Energy Sum (Fiducial Region)", 220, 0, 1.1, 115, 0, 230); + private IHistogram1D t0TimeCoincidenceAll = aida.histogram1D("Tier 0/Time Coincidence", 300, -15.0, 15.0); + private IHistogram1D t0TimeCoincidenceFiducial = aida.histogram1D("Tier 0/Time Coincidence (Fiducial Region)", 300, -15.0, 15.0); + private IHistogram1D t0EnergySumAll = aida.histogram1D("Tier 0/Energy Sum", 220, 0.0, 1.1); + private IHistogram1D t0EnergySumFiducial = aida.histogram1D("Tier 0/Energy Sum (Fiducial Region)", 220, 0.0, 1.1); + private IHistogram1D t0InvariantMassAll = aida.histogram1D("Tier 0/Invariant Mass", 2200, 0.0, 1.1); + private IHistogram2D t0EnergySum2DAll = aida.histogram2D("Tier 0/Top Cluster Energy vs. Bottom Cluster Energy", 220, 0, 1.1, 220, 0, 1.1); + private IHistogram2D t0EnergySum2DFiducial = aida.histogram2D("Tier 0/Top Cluster Energy vs. Bottom Cluster Energy (Fiducial Region)", 220, 0, 1.1, 220, 0, 1.1); + private IHistogram2D t0SumCoplanarityAll = aida.histogram2D("Tier 0/Hardware Coplanarity vs. Energy Sum", 220, 0, 1.1, 115, 0, 230); + private IHistogram2D t0SumCoplanarityFiducial = aida.histogram2D("Tier 0/Hardware Coplanarity vs. Energy Sum (Fiducial Region)", 220, 0, 1.1, 115, 0, 230); + private IHistogram2D t0SumCoplanarityCalcAll = aida.histogram2D("Tier 0/Calculated Coplanarity vs. Energy Sum", 220, 0, 1.1, 115, 130, 230); + private IHistogram2D t0SumCoplanarityCalcFiducial = aida.histogram2D("Tier 0/Calculated Coplanarity vs. Energy Sum (Fiducial Region)", 220, 0, 1.1, 115, 130, 230); + private IHistogram2D t0TimeEnergyAll = aida.histogram2D("Tier 0/Cluster Time vs. Cluster Energy", 220, 0, 1.1, 100, 0, 100); + private IHistogram2D t0TimeEnergyFiducial = aida.histogram2D("Tier 0/Cluster Time vs. Cluster Energy (Fiducial Region)", 220, 0, 1.1, 100, 0, 100); + + private IHistogram1D t1TimeCoincidenceAll = aida.histogram1D("Tier 1/Time Coincidence", 300, -15.0, 15.0); + private IHistogram1D t1TimeCoincidenceFiducial = aida.histogram1D("Tier 1/Time Coincidence (Fiducial Region)", 300, -15.0, 15.0); + private IHistogram1D t1EnergySumAll = aida.histogram1D("Tier 1/Energy Sum", 220, 0.0, 1.1); + private IHistogram1D t1EnergySumFiducial = aida.histogram1D("Tier 1/Energy Sum (Fiducial Region)", 220, 0.0, 1.1); + private IHistogram1D t1InvariantMassAll = aida.histogram1D("Tier 1/Invariant Mass", 2200, 0.0, 1.1); + private IHistogram2D t1EnergySum2DAll = aida.histogram2D("Tier 1/Top Cluster Energy vs. Bottom Cluster Energy", 220, 0, 1.1, 220, 0, 1.1); + private IHistogram2D t1EnergySum2DFiducial = aida.histogram2D("Tier 1/Top Cluster Energy vs. Bottom Cluster Energy (Fiducial Region)", 220, 0, 1.1, 220, 0, 1.1); + private IHistogram2D t1SumCoplanarityAll = aida.histogram2D("Tier 1/Hardware Coplanarity vs. Energy Sum", 220, 0, 1.1, 115, 0, 230); + private IHistogram2D t1SumCoplanarityFiducial = aida.histogram2D("Tier 1/Hardware Coplanarity vs. Energy Sum (Fiducial Region)", 220, 0, 1.1, 115, 0, 230); + private IHistogram2D t1SumCoplanarityCalcAll = aida.histogram2D("Tier 1/Calculated Coplanarity vs. Energy Sum", 220, 0, 1.1, 115, 130, 230); + private IHistogram2D t1SumCoplanarityCalcFiducial = aida.histogram2D("Tier 1/Calculated Coplanarity vs. Energy Sum (Fiducial Region)", 220, 0, 1.1, 115, 130, 230); private IHistogram2D t1TimeEnergyAll = aida.histogram2D("Tier 1/Cluster Time vs. Cluster Energy", 220, 0, 1.1, 100, 0, 100); private IHistogram2D t1TimeEnergyFiducial = aida.histogram2D("Tier 1/Cluster Time vs. Cluster Energy (Fiducial Region)", 220, 0, 1.1, 100, 0, 100); - - private IHistogram1D t2TimeCoincidenceAll = aida.histogram1D("Tier 2/Time Coincidence", 45, 0.0, 15.0); - private IHistogram1D t2TimeCoincidenceFiducial = aida.histogram1D("Tier 2/Time Coincidence (Fiducial Region)", 45, 0.0, 15.0); - private IHistogram1D t2EnergySumAll = aida.histogram1D("Tier 2/Energy Sum", 220, 0.0, 1.1); - private IHistogram1D t2EnergySumFiducial = aida.histogram1D("Tier 2/Energy Sum (Fiducial Region)", 220, 0.0, 1.1); - private IHistogram2D t2EnergySum2DAll = aida.histogram2D("Tier 2/Top Cluster Energy vs. Bottom Cluster Energy", 220, 0, 1.1, 220, 0, 1.1); - private IHistogram2D t2EnergySum2DFiducial = aida.histogram2D("Tier 2/Top Cluster Energy vs. Bottom Cluster Energy (Fiducial Region)", 220, 0, 1.1, 220, 0, 1.1); - private IHistogram2D t2SumCoplanarityAll = aida.histogram2D("Tier 2/Hardware Coplanarity vs. Energy Sum", 220, 0, 1.1, 115, 0, 230); - private IHistogram2D t2SumCoplanarityFiducial = aida.histogram2D("Tier 2/Hardware Coplanarity vs. Energy Sum (Fiducial Region)", 220, 0, 1.1, 115, 0, 230); - private IHistogram2D t2SumCoplanarityCalcAll = aida.histogram2D("Tier 2/Calculated Coplanarity vs. Energy Sum", 220, 0, 1.1, 115, 0, 230); - private IHistogram2D t2SumCoplanarityCalcFiducial = aida.histogram2D("Tier 2/Calculated Coplanarity vs. Energy Sum (Fiducial Region)", 220, 0, 1.1, 115, 0, 230); - private IHistogram2D t2TimeEnergyAll = aida.histogram2D("Tier 2/Cluster Time vs. Cluster Energy", 220, 0, 1.1, 100, 0, 100); - private IHistogram2D t2TimeEnergyFiducial = aida.histogram2D("Tier 2/Cluster Time vs. Cluster Energy (Fiducial Region)", 220, 0, 1.1, 100, 0, 100); + + private IHistogram1D t2TimeCoincidenceAll = aida.histogram1D("Tier 2/Time Coincidence", 300, -15.0, 15.0); + private IHistogram1D t2TimeCoincidenceFiducial = aida.histogram1D("Tier 2/Time Coincidence (Fiducial Region)", 300, -15.0, 15.0); + private IHistogram1D t2EnergySumAll = aida.histogram1D("Tier 2/Energy Sum", 220, 0.0, 1.1); + private IHistogram1D t2EnergySumFiducial = aida.histogram1D("Tier 2/Energy Sum (Fiducial Region)", 220, 0.0, 1.1); + private IHistogram1D t2InvariantMassAll = aida.histogram1D("Tier 2/Invariant Mass", 2200, 0.0, 1.1); + private IHistogram2D t2EnergySum2DAll = aida.histogram2D("Tier 2/Top Cluster Energy vs. Bottom Cluster Energy", 220, 0, 1.1, 220, 0, 1.1); + private IHistogram2D t2EnergySum2DFiducial = aida.histogram2D("Tier 2/Top Cluster Energy vs. Bottom Cluster Energy (Fiducial Region)", 220, 0, 1.1, 220, 0, 1.1); + private IHistogram2D t2SumCoplanarityAll = aida.histogram2D("Tier 2/Hardware Coplanarity vs. Energy Sum", 220, 0, 1.1, 115, 0, 230); + private IHistogram2D t2SumCoplanarityFiducial = aida.histogram2D("Tier 2/Hardware Coplanarity vs. Energy Sum (Fiducial Region)", 220, 0, 1.1, 115, 0, 230); + private IHistogram2D t2SumCoplanarityCalcAll = aida.histogram2D("Tier 2/Calculated Coplanarity vs. Energy Sum", 220, 0, 1.1, 115, 130, 230); + private IHistogram2D t2SumCoplanarityCalcFiducial = aida.histogram2D("Tier 2/Calculated Coplanarity vs. Energy Sum (Fiducial Region)", 220, 0, 1.1, 115, 130, 230); + private IHistogram2D t2TimeEnergyAll = aida.histogram2D("Tier 2/Cluster Time vs. Cluster Energy", 220, 0, 1.1, 100, 0, 100); + private IHistogram2D t2TimeEnergyFiducial = aida.histogram2D("Tier 2/Cluster Time vs. Cluster Energy (Fiducial Region)", 220, 0, 1.1, 100, 0, 100); private int t0Events = 0; private int t1Events = 0; @@ -106,7 +109,7 @@ // Perform tier 1 analysis. This requires that there be at // least one top/bottom cluster pair with a time difference // of less then 4 ns. - double t1TimeThreshold = 4; + double t1TimeThreshold = 2.5; // Get a list of cluster pairs. List<Cluster[]> pairList = getClusterPairs(clusterList); @@ -138,8 +141,7 @@ boolean t2Passed = false; t2TrackLoop: for(ReconstructedParticle[] pair : trackPairList) { - if((pair[0].getCharge() > 0 && pair[1].getCharge() < 0) - || (pair[0].getCharge() < 0 && pair[1].getCharge() > 0)) { + if((pair[0].getCharge() > 0 && pair[1].getCharge() < 0) || (pair[0].getCharge() < 0 && pair[1].getCharge() > 0)) { t2Passed = true; break t2TrackLoop; } @@ -154,13 +156,17 @@ // singles plot so that there are no repeats. Set<Cluster> plotSet = new HashSet<Cluster>(clusterList.size()); Set<Cluster> plotFiducial = new HashSet<Cluster>(clusterList.size()); + + for(ReconstructedParticle[] pair : trackPairList) { + t0InvariantMassAll.fill(getInvariantMass(pair)); + } for(Cluster[] pair : pairList) { // Fill the all pairs plots. double pairEnergy = pair[0].getEnergy() + pair[1].getEnergy(); t0EnergySumAll.fill(pairEnergy); t0EnergySum2DAll.fill(pair[1].getEnergy(), pair[0].getEnergy()); - t0TimeCoincidenceAll.fill(TriggerModule.getValueTimeCoincidence(pair)); + t0TimeCoincidenceAll.fill(getTimeConicidence(pair)); t0SumCoplanarityCalcAll.fill(pairEnergy, getCalculatedCoplanarity(pair)); t0SumCoplanarityAll.fill(pairEnergy, TriggerModule.getValueCoplanarity(pair)); @@ -177,7 +183,7 @@ if(inFiducialRegion(pair[0]) && inFiducialRegion(pair[1])) { t0EnergySumFiducial.fill(pairEnergy); t0EnergySum2DFiducial.fill(pair[1].getEnergy(), pair[0].getEnergy()); - t0TimeCoincidenceFiducial.fill(TriggerModule.getValueTimeCoincidence(pair)); + t0TimeCoincidenceFiducial.fill(getTimeConicidence(pair)); t0SumCoplanarityCalcFiducial.fill(pairEnergy, getCalculatedCoplanarity(pair)); t0SumCoplanarityFiducial.fill(pairEnergy, TriggerModule.getValueCoplanarity(pair)); } @@ -203,12 +209,16 @@ Set<Cluster> plotSet = new HashSet<Cluster>(clusterList.size()); Set<Cluster> plotFiducial = new HashSet<Cluster>(clusterList.size()); + for(ReconstructedParticle[] pair : trackPairList) { + t1InvariantMassAll.fill(getInvariantMass(pair)); + } + for(Cluster[] pair : pairList) { // Fill the all pairs plots. double pairEnergy = pair[0].getEnergy() + pair[1].getEnergy(); t1EnergySumAll.fill(pairEnergy); t1EnergySum2DAll.fill(pair[1].getEnergy(), pair[0].getEnergy()); - t1TimeCoincidenceAll.fill(TriggerModule.getValueTimeCoincidence(pair)); + t1TimeCoincidenceAll.fill(getTimeConicidence(pair)); t1SumCoplanarityCalcAll.fill(pairEnergy, getCalculatedCoplanarity(pair)); t1SumCoplanarityAll.fill(pairEnergy, TriggerModule.getValueCoplanarity(pair)); @@ -225,7 +235,7 @@ if(inFiducialRegion(pair[0]) && inFiducialRegion(pair[1])) { t1EnergySumFiducial.fill(pairEnergy); t1EnergySum2DFiducial.fill(pair[1].getEnergy(), pair[0].getEnergy()); - t1TimeCoincidenceFiducial.fill(TriggerModule.getValueTimeCoincidence(pair)); + t1TimeCoincidenceFiducial.fill(getTimeConicidence(pair)); t1SumCoplanarityCalcFiducial.fill(pairEnergy, getCalculatedCoplanarity(pair)); t1SumCoplanarityFiducial.fill(pairEnergy, TriggerModule.getValueCoplanarity(pair)); } @@ -242,7 +252,7 @@ } // Populate the tier 2 analysis plots, if the conditions were met. - if(t2Passed) { + if(t1Passed && t2Passed) { // Increment the number of tier 2 events found. t2Events++; @@ -250,13 +260,17 @@ // singles plot so that there are no repeats. Set<Cluster> plotSet = new HashSet<Cluster>(clusterList.size()); Set<Cluster> plotFiducial = new HashSet<Cluster>(clusterList.size()); + + for(ReconstructedParticle[] pair : trackPairList) { + t2InvariantMassAll.fill(getInvariantMass(pair)); + } for(Cluster[] pair : pairList) { // Fill the all pairs plots. double pairEnergy = pair[0].getEnergy() + pair[1].getEnergy(); t2EnergySumAll.fill(pairEnergy); t2EnergySum2DAll.fill(pair[1].getEnergy(), pair[0].getEnergy()); - t2TimeCoincidenceAll.fill(TriggerModule.getValueTimeCoincidence(pair)); + t2TimeCoincidenceAll.fill(getTimeConicidence(pair)); t2SumCoplanarityCalcAll.fill(pairEnergy, getCalculatedCoplanarity(pair)); t2SumCoplanarityAll.fill(pairEnergy, TriggerModule.getValueCoplanarity(pair)); @@ -273,7 +287,7 @@ if(inFiducialRegion(pair[0]) && inFiducialRegion(pair[1])) { t2EnergySumFiducial.fill(pairEnergy); t2EnergySum2DFiducial.fill(pair[1].getEnergy(), pair[0].getEnergy()); - t2TimeCoincidenceFiducial.fill(TriggerModule.getValueTimeCoincidence(pair)); + t2TimeCoincidenceFiducial.fill(getTimeConicidence(pair)); t2SumCoplanarityCalcFiducial.fill(pairEnergy, getCalculatedCoplanarity(pair)); t2SumCoplanarityFiducial.fill(pairEnergy, TriggerModule.getValueCoplanarity(pair)); } @@ -290,7 +304,19 @@ } } - private static final double getCalculatedCoplanarity(Cluster[] pair) { + public static final double getInvariantMass(ReconstructedParticle[] pair) { + // Get energy. + double[] energy = new double[2]; + final double electronMassSquared = Math.pow(0.00051099891, 2); + energy[0] = Math.sqrt(pair[0].getMomentum().magnitudeSquared() + electronMassSquared); + energy[1] = Math.sqrt(pair[1].getMomentum().magnitudeSquared() + electronMassSquared); + + // Calculate the invariant mass. + return Math.sqrt(Math.pow(energy[0] + energy[1], 2) - Math.pow(pair[0].getMomentum().x() - pair[1].getMomentum().x(), 2) + + Math.pow(pair[0].getMomentum().y() - pair[1].getMomentum().y(), 2) + Math.pow(pair[0].getMomentum().z() - pair[1].getMomentum().z(), 2)); + } + + public static final double getCalculatedCoplanarity(Cluster[] pair) { // Define the x- and y-coordinates of the clusters as well as // calorimeter center. final double ORIGIN_X = 42.52; @@ -400,6 +426,10 @@ return pairList; } + public static final double getTimeConicidence(Cluster[] pair) { + return TriggerModule.getClusterSeedHit(pair[1]).getTime() - TriggerModule.getClusterSeedHit(pair[0]).getTime(); + } + public void setUseGoodSVT(boolean state) { useGoodSVT = state; }