Author: [log in to unmask] Date: Wed Sep 9 12:20:05 2015 New Revision: 3565 Log: My own user stuff... Added: java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/Kludged2pt2GevReadout.lcsim - copied, changed from r3537, java/trunk/steering-files/src/main/resources/org/hps/steering/readout/EngineeringRun2015TrigPairs1_Pass2.lcsim java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/Kludged2pt2GevRecon.lcsim - copied, changed from r3537, java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullReconMC_Pass2.lcsim java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/TimingTests.lcsim - copied, changed from r3341, java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullRecon.lcsim java/trunk/users/src/main/java/org/hps/users/mgraham/TridentAnalysis.java - copied, changed from r3537, java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java Modified: java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/MattsScrewAround.lcsim Copied: java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/Kludged2pt2GevReadout.lcsim (from r3537, java/trunk/steering-files/src/main/resources/org/hps/steering/readout/EngineeringRun2015TrigPairs1_Pass2.lcsim) ============================================================================= --- java/trunk/steering-files/src/main/resources/org/hps/steering/readout/EngineeringRun2015TrigPairs1_Pass2.lcsim (original) +++ java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/Kludged2pt2GevReadout.lcsim Wed Sep 9 12:20:05 2015 @@ -3,6 +3,7 @@ <!-- Steering file for readout for the EngRun 2015 MC for pair1 triggers corresponding to pass-2 reconstruction + MG...this is kludged for use with 2.2 GeV signal (A') MC so that it gives high trigger efficiency... @author Matt Graham <[log in to unmask]> --> <control> @@ -70,6 +71,7 @@ Coplanarity Maximum: 30 deg Energy-Dist Slope: 5.5 MeV/mm Energy-Dist Minimum: 600 MeV + MG....HACK THESE UP TO GET ACCEPTANCE FOR 2.2 GEV MC --> <clusterCollectionName>EcalClustersGTP</clusterCollectionName> <deadTime>32</deadTime> @@ -77,11 +79,11 @@ <minHitCount>1</minHitCount> <pairCoincidence>3</pairCoincidence> <clusterEnergyLow>0.054</clusterEnergyLow> - <clusterEnergyHigh>0.630</clusterEnergyHigh> - <energySumLow>0.180</energySumLow> - <energySumHigh>0.860</energySumHigh> - <energyDifferenceHigh>0.540</energyDifferenceHigh> - <coplanarityHigh>30</coplanarityHigh> + <clusterEnergyHigh>2.0</clusterEnergyHigh> + <energySumLow>0.10</energySumLow> + <energySumHigh>2.5</energySumHigh> + <energyDifferenceHigh>1.5</energyDifferenceHigh> + <coplanarityHigh>50</coplanarityHigh> <energySlopeParamF>0.0055</energySlopeParamF> <energySlopeLow>0.600</energySlopeLow> <prescale>1</prescale> Copied: java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/Kludged2pt2GevRecon.lcsim (from r3537, java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullReconMC_Pass2.lcsim) ============================================================================= --- java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullReconMC_Pass2.lcsim (original) +++ java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/Kludged2pt2GevRecon.lcsim Wed Sep 9 12:20:05 2015 @@ -2,6 +2,7 @@ <!-- Offline reconstruction for 2015 (engineering run with SVT+ECal) MC corresponding to the Pass-2 reconstruction + MG...this is kludged for use with 2.2 GeV signal (A') MC ... mainly I just added monitoring driver @author Sho Uemura <[log in to unmask]> @author Matt Graham <[log in to unmask]> --> @@ -9,6 +10,7 @@ xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd"> <execute> + <driver name="ConditionsDriver"/> <driver name="EventMarkerDriver"/> <!-- Ecal reconstruction drivers --> @@ -49,14 +51,17 @@ --> <driver name="TrackReconSeed123Conf5Extd46"/> <!-- - TrackDataDriver needs to be run before ReconParticleDriver so the - ReconstructedParticle types are properly set. - --> - <driver name="TrackDataDriver" /> - <driver name="ReconParticle" /> - <driver name="GBLOutputDriver"/> + TrackDataDriver needs to be run before ReconParticleDriver so the + ReconstructedParticle types are properly set. + --> + <driver name="MergeTrackCollections"/> + <driver name="GBLOutputDriver" /> <driver name="GBLRefitterDriver" /> - <driver name="LCIOWriter"/> + <driver name="TrackDataDriver" /> + <driver name="ReconParticleDriver" /> + <driver name="TridentAnalysis"/> + <!-- <driver name="LCIOWriter"/>--> + <driver name="AidaSaveDriver"/> <driver name="CleanupDriver"/> </execute> <drivers> @@ -67,7 +72,7 @@ </driver> <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver"> - <eventInterval>100</eventInterval> + <eventInterval>1000</eventInterval> </driver> <driver name="RawTrackerHitSensorSetup" type="org.lcsim.recon.tracking.digitization.sisim.config.RawTrackerHitSensorSetup"> <readoutCollections>SVTRawTrackerHits</readoutCollections> @@ -92,9 +97,9 @@ <maxDt>16.0</maxDt> <clusterAmplitudeCut>400.0</clusterAmplitudeCut> </driver> - <!-- SVT Track finding --> + <!-- SVT Track finding --> <driver name="TrackReconSeed345Conf2Extd16" type="org.hps.recon.tracking.TrackerReconDriver"> - <trackCollectionName>MatchedTracks</trackCollectionName> + <trackCollectionName>Tracks_s345_c2_e16</trackCollectionName> <strategyResource>HPS_s345_c2_e16.xml</strategyResource> <debug>false</debug> <rmsTimeCut>8.0</rmsTimeCut> @@ -117,6 +122,7 @@ <debug>false</debug> <rmsTimeCut>8.0</rmsTimeCut> </driver> + <driver name="MergeTrackCollections" type="org.hps.recon.tracking.MergeTrackCollections" /> <driver name="GBLOutputDriver" type="org.hps.recon.tracking.gbl.GBLOutputDriver"/> <driver name="GBLRefitterDriver" type="org.hps.recon.tracking.gbl.HpsGblRefitter"/> <driver name="EcalRawConverter" type="org.hps.recon.ecal.EcalRawConverterDriver"> @@ -159,17 +165,23 @@ <inputCollectionName>EcalClusters</inputCollectionName> <outputCollectionName>EcalClustersCorr</outputCollectionName> <storeHits>true</storeHits> - </driver> - <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriver"> - <ecalClusterCollectionName>EcalClustersCorr</ecalClusterCollectionName> - </driver> + </driver> + <driver name="ReconParticleDriver" type="org.hps.recon.particle.HpsReconParticleDriver"> + <ecalClusterCollectionName>EcalClustersCorr</ecalClusterCollectionName> + <!-- <beamSigmaX>0.04</beamSigmaX> + <beamSigmaX>0.04</beamSigmaX>--> + <beamSigmaX>${sigX}</beamSigmaX> + <beamSigmaY>${sigY}</beamSigmaY> + </driver> <driver name="TrackDataDriver" type="org.hps.recon.tracking.TrackDataDriver" /> <driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver"> <outputFilePath>${outputFile}.slcio</outputFilePath> </driver> + <driver name="TridentAnalysis" type="org.hps.users.mgraham.TridentAnalysis"/> <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"/> <driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver"> <outputFileName>${outputFile}.root</outputFileName> </driver> </drivers> + </lcsim> Modified: java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/MattsScrewAround.lcsim ============================================================================= --- java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/MattsScrewAround.lcsim (original) +++ java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/MattsScrewAround.lcsim Wed Sep 9 12:20:05 2015 @@ -21,6 +21,7 @@ <driver name="TrackingResidualsDQM"/> <driver name="FinalStateDQM"/> <driver name="V0DQM"/> + <driver name="TridentMonitoring"/> <driver name="AidaSaveDriver"/> <driver name="CleanupDriver" /> </execute> @@ -85,6 +86,9 @@ <outputPlots>v0recon</outputPlots> </driver> + <driver name="TridentMonitoring" type="org.hps.analysis.dataquality.TridentMonitoring"> + <triggerType>all</triggerType> + </driver> <driver name="TrackingDQM" type="org.hps.analysis.dataquality.TrackingMonitoring"> <overwriteDB>false</overwriteDB> Copied: java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/TimingTests.lcsim (from r3341, java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullRecon.lcsim) ============================================================================= --- java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullRecon.lcsim (original) +++ java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/TimingTests.lcsim Wed Sep 9 12:20:05 2015 @@ -2,6 +2,7 @@ <lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd"> <!-- Offline reconstruction for 2015 (engineering run with SVT+ECal) data. + mg...modified EngineeringRun2015FullRecon to study looser SVT hit time cuts @author Sho Uemura <[log in to unmask]> --> <execute> @@ -14,17 +15,25 @@ <driver name="EcalRunningPedestal"/> <driver name="EcalRawConverter" /> <driver name="ReconClusterer" /> - <driver name="GTPOnlineClusterer" /> +<!-- <driver name="GTPOnlineClusterer" />--> <driver name="CopyCluster" /> <driver name="ReconParticle" /> <driver name="TrackDataDriver" /> - <driver name="GBLOutputDriver"/> +<!-- <driver name="GBLOutputDriver"/> --> + <driver name="EcalMonitoringPairs1"/> + <driver name="SVTMonitoringPairs1"/> + <driver name="TrackingMonitoringPairs1"/> + <driver name="TrackingResidualsPairs1"/> + <driver name="FinalStateMonitoringPairs1"/> + <driver name="V0MonitoringPairs1"/> + <driver name="TridentMonitoringPairs1"/> + <driver name="AidaSaveDriver"/> <driver name="LCIOWriter"/> <driver name="CleanupDriver"/> </execute> <drivers> <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver"> - <eventInterval>1000</eventInterval> + <eventInterval>10</eventInterval> </driver> <driver name="RawTrackerHitSensorSetup" type="org.lcsim.recon.tracking.digitization.sisim.config.RawTrackerHitSensorSetup"> <readoutCollections>SVTRawTrackerHits</readoutCollections> @@ -41,18 +50,22 @@ <debug>false</debug> </driver> <driver name="TrackerHitDriver" type="org.hps.recon.tracking.DataTrackerHitDriver"> - <neighborDeltaT>8.0</neighborDeltaT> +<!-- <neighborDeltaT>16.0</neighborDeltaT>--> + <neighborDeltaT>8.0</neighborDeltaT> </driver> <driver name="HelicalTrackHitDriver" type="org.hps.recon.tracking.HelicalTrackHitDriver"> <debug>false</debug> <clusterTimeCut>12.0</clusterTimeCut> - <maxDt>16.0</maxDt> + <maxDt>16.0</maxDt> +<!-- <clusterTimeCut>24.0</clusterTimeCut> + <maxDt>32.0</maxDt>--> <clusterAmplitudeCut>400.0</clusterAmplitudeCut> </driver> <driver name="TrackerReconDriver" type="org.hps.recon.tracking.TrackerReconDriver"> <strategyResource>HPS-Full.xml</strategyResource> <debug>false</debug> - <rmsTimeCut>8.0</rmsTimeCut> + <rmsTimeCut>8.0</rmsTimeCut><!-- + <rmsTimeCut>16.0</rmsTimeCut>--> </driver> <driver name="GBLOutputDriver" type="org.hps.recon.tracking.gbl.GBLOutputDriver"> <debug>0</debug> @@ -111,6 +124,30 @@ <outputFilePath>${outputFile}.slcio</outputFilePath> </driver> <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"/> + +<!-- pairs1 triggers --> + <driver name="EcalMonitoringPairs1" type="org.hps.analysis.dataquality.EcalMonitoring"> + <triggerType>pairs1</triggerType> + </driver> + <driver name="SVTMonitoringPairs1" type="org.hps.analysis.dataquality.SvtMonitoring"> + <triggerType>pairs1</triggerType> + </driver> + <driver name="TrackingMonitoringPairs1" type="org.hps.analysis.dataquality.TrackingMonitoring"> + <overwriteDB>false</overwriteDB> + <triggerType>pairs1</triggerType> + </driver> + <driver name="TrackingResidualsPairs1" type="org.hps.analysis.dataquality.TrackingResiduals"> + <triggerType>pairs1</triggerType> + </driver> + <driver name="FinalStateMonitoringPairs1" type="org.hps.analysis.dataquality.FinalStateMonitoring"> + <triggerType>pairs1</triggerType> + </driver> + <driver name="V0MonitoringPairs1" type="org.hps.analysis.dataquality.V0Monitoring"> + <triggerType>pairs1</triggerType> + </driver> + <driver name="TridentMonitoringPairs1" type="org.hps.analysis.dataquality.TridentMonitoring"> + <triggerType>pairs1</triggerType> + </driver> <driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver"> <outputFileName>${outputFile}.root</outputFileName> </driver> Copied: java/trunk/users/src/main/java/org/hps/users/mgraham/TridentAnalysis.java (from r3537, java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java) ============================================================================= --- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java (original) +++ java/trunk/users/src/main/java/org/hps/users/mgraham/TridentAnalysis.java Wed Sep 9 12:20:05 2015 @@ -1,4 +1,4 @@ -package org.hps.analysis.dataquality; +package org.hps.users.mgraham; import hep.aida.IAnalysisFactory; import hep.aida.IFitFactory; @@ -11,6 +11,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map.Entry; +import org.hps.analysis.dataquality.DataQualityMonitor; import org.hps.recon.tracking.TrackUtils; import org.lcsim.event.EventHeader; import org.lcsim.event.ReconstructedParticle; @@ -26,9 +27,9 @@ * @author mgraham on May 14, 2014 * */ -public class TridentMonitoring extends DataQualityMonitor { - - private double ebeam = 1.05; +public class TridentAnalysis extends DataQualityMonitor { + + private double ebeam = 2.2; String finalStateParticlesColName = "FinalStateParticles"; String unconstrainedV0CandidatesColName = "UnconstrainedV0Candidates"; String beamConV0CandidatesColName = "BeamspotConstrainedV0Candidates"; @@ -36,7 +37,8 @@ String trackListName = "MatchedTracks"; String[] fpQuantNames = {"nV0_per_Event", "avg_BSCon_mass", "avg_BSCon_Vx", "avg_BSCon_Vy", "avg_BSCon_Vz", "sig_BSCon_Vx", "sig_BSCon_Vy", "sig_BSCon_Vz", "avg_BSCon_Chi2"}; - private final String plotDir = "TridentMonitoring/"; + private final String plotDir = "TridentAnalysis/"; + IHistogram2D trackTime2D; IHistogram1D trackTimeDiff; IHistogram2D vertexMassMomentum; @@ -57,12 +59,19 @@ IHistogram2D vertexVZ; IHistogram2D vertexZY; + IHistogram1D tarconMass; + IHistogram1D tarconVx; + IHistogram1D tarconVy; + IHistogram1D tarconVz; + IHistogram1D tarconChi2; + IHistogram1D deltaP; IHistogram1D deltaPRad; IHistogram1D sumP; IHistogram2D vertexedTrackMomentum2DRad; //clean up event first + int trackType = 33; int nTrkMax = 3; int nPosMax = 1; //v0 cuts @@ -106,7 +115,7 @@ protected void detectorChanged(Detector detector) { System.out.println("TridentMonitoring::detectorChanged Setting up the plotter"); aida.tree().cd("/"); - + String triggerType = getTriggerType(); /* V0 Quantities */ /* Mass, vertex, chi^2 of fit */ /* beamspot constrained */ @@ -117,11 +126,13 @@ // IHistogram1D bsconVz = aida.histogram1D(plotDir + triggerType + "/"+"BS Constrained Vz (mm)", 50, -10, 10); // IHistogram1D bsconChi2 = aida.histogram1D(plotDir + triggerType + "/"+"BS Constrained Chi2", 25, 0, 25); // /* target constrained */ -// IHistogram1D tarconMass = aida.histogram1D(plotDir + triggerType + "/"+"Target Constrained Mass (GeV)", 100, 0, 0.200); -// IHistogram1D tarconVx = aida.histogram1D(plotDir + triggerType + "/"+ triggerType + "/"+"Target Constrained Vx (mm)", 50, -1, 1); -// IHistogram1D tarconVy = aida.histogram1D(plotDir + triggerType + "/"+ triggerType + "/"+"Target Constrained Vy (mm)", 50, -1, 1); -// IHistogram1D tarconVz = aida.histogram1D(plotDir + triggerType + "/"+ triggerType + "/"+"Target Constrained Vz (mm)", 50, -10, 10); -// IHistogram1D tarconChi2 = aida.histogram1D(plotDir + triggerType + "/"+ triggerType + "/"+"Target Constrained Chi2", 25, 0, 25); + double massMin = 0.125; + double massMax = 0.175; + tarconMass = aida.histogram1D(plotDir + triggerType + "/" + "Target Constrained Mass (GeV)", 100, massMin, massMax); + tarconVx = aida.histogram1D(plotDir + triggerType + "/" + "Target Constrained Vx (mm)", 50, -1, 1); + tarconVy = aida.histogram1D(plotDir + triggerType + "/" + "Target Constrained Vy (mm)", 50, -1, 1); + tarconVz = aida.histogram1D(plotDir + triggerType + "/" + "Target Constrained Vz (mm)", 50, -10, 10); + tarconChi2 = aida.histogram1D(plotDir + "/" + triggerType + "/" + "Target Constrained Chi2", 25, 0, 25); pyEleVspyPos = aida.histogram2D(plotDir + triggerType + "/" + "Py(e) vs Py(p)", 50, -0.04, 0.04, 50, -0.04, 0.04); pxEleVspxPos = aida.histogram2D(plotDir + triggerType + "/" + "Px(e) vs Px(p)", 50, -0.02, 0.06, 50, -0.02, 0.06); trackTimeDiff = aida.histogram1D(plotDir + triggerType + "/" + "Track time difference", 100, -10, 10); @@ -130,7 +141,7 @@ vertexedTrackMomentum2D = aida.histogram2D(plotDir + triggerType + "/" + "Positron vs. electron momentum", 100, 0, 1.1, 100, 0, 1.1); vertexedTrackMomentum2DRad = aida.histogram2D(plotDir + triggerType + "/" + "Positron vs. electron momentum: Radiative", 100, 0, 1.1, 100, 0, 1.1); vertexPxPy = aida.histogram2D(plotDir + triggerType + "/" + "Vertex Py vs. Px", 100, -0.02, 0.06, 100, -0.04, 0.04); - goodVertexMass = aida.histogram1D(plotDir + triggerType + "/" + "Good vertex mass", 100, 0, 0.11); + goodVertexMass = aida.histogram1D(plotDir + triggerType + "/" + "Unconstrained Mass", 100, massMin, massMax); deltaP = aida.histogram1D(plotDir + triggerType + "/" + "Positron - electron momentum", 100, -1., 1.0); deltaPRad = aida.histogram1D(plotDir + triggerType + "/" + "Positron - electron momentum", 100, -1., 1.0); sumP = aida.histogram1D(plotDir + triggerType + "/" + "Positron + electron momentum", 100, 0.2, 1.25); @@ -150,106 +161,93 @@ @Override public void process(EventHeader event) { /* make sure everything is there */ - if (!event.hasCollection(ReconstructedParticle.class, finalStateParticlesColName)) { - return; - } - if (!event.hasCollection(ReconstructedParticle.class, unconstrainedV0CandidatesColName)) { - return; - } - if (!event.hasCollection(ReconstructedParticle.class, beamConV0CandidatesColName)) { - return; - } - if (!event.hasCollection(ReconstructedParticle.class, targetV0ConCandidatesColName)) { - return; - } - if (!event.hasCollection(Track.class, trackListName)) { - return; - } + if (!event.hasCollection(ReconstructedParticle.class, finalStateParticlesColName)) + return; + if (!event.hasCollection(ReconstructedParticle.class, unconstrainedV0CandidatesColName)) + return; + if (!event.hasCollection(ReconstructedParticle.class, beamConV0CandidatesColName)) + return; + if (!event.hasCollection(ReconstructedParticle.class, targetV0ConCandidatesColName)) + return; + if (!event.hasCollection(Track.class, trackListName)) + return; //check to see if this event is from the correct trigger (or "all"); - if (!matchTrigger(event)) { - return; - } + if (!matchTrigger(event)) + return; nRecoEvents++; RelationalTable hitToStrips = TrackUtils.getHitToStripsTable(event); RelationalTable hitToRotated = TrackUtils.getHitToRotatedTable(event); - - List<Track> trks = event.get(Track.class, trackListName); - int ntracks = trks.size(); - if (ntracks > nTrkMax || ntracks < 2) { - return; - } - List<ReconstructedParticle> fspList = event.get(ReconstructedParticle.class, finalStateParticlesColName); - int npos = 0; - for (ReconstructedParticle fsp : fspList) { - if (fsp.getCharge() > 0) { - npos++; - } - } - if (npos < 1 || npos > nPosMax) { - return; - } +// +// List<Track> trks = event.get(Track.class, trackListName); +// int ntracks = trks.size(); +// if (ntracks > nTrkMax || ntracks < 2) +// return; +// List<ReconstructedParticle> fspList = event.get(ReconstructedParticle.class, finalStateParticlesColName); +// int npos = 0; +// for (ReconstructedParticle fsp : fspList) +// if (fsp.getCharge() > 0) +// npos++; +// if (npos < 1 || npos > nPosMax) +// return; nPassBasicCuts++;//passed some basic event-level cuts... List<ReconstructedParticle> unConstrainedV0List = event.get(ReconstructedParticle.class, unconstrainedV0CandidatesColName); for (ReconstructedParticle uncV0 : unConstrainedV0List) { +// System.out.println("Vertex Track Type = " + uncV0.getType()); + if (uncV0.getType() < trackType) { +// System.out.println("Vertex Track Type = " + uncV0.getType() + "; cut = " + trackType); + continue; + } Vertex uncVert = uncV0.getStartVertex(); // v0 & vertex-quality cuts // Hep3Vector v0Mom = uncV0.getMomentum(); Hep3Vector v0Mom = VecOp.add(uncV0.getParticles().get(1).getMomentum(), uncV0.getParticles().get(0).getMomentum()); - if (v0Mom.z() > v0PzMax || v0Mom.z() < v0PzMin) { - continue; - } - if (Math.abs(v0Mom.y()) > v0PyMax) { - continue; - } - if (Math.abs(v0Mom.x()) > v0PxMax) { - continue; - } + // System.out.println(v0Mom.toString()); + if (v0Mom.z() > v0PzMax || v0Mom.z() < v0PzMin) + continue; + if (Math.abs(v0Mom.y()) > v0PyMax) + continue; + if (Math.abs(v0Mom.x()) > v0PxMax) + continue; Hep3Vector v0Vtx = uncVert.getPosition(); - if (Math.abs(v0Vtx.z()) > v0VzMax) { - continue; - } - if (Math.abs(v0Vtx.y()) > v0VyMax) { - continue; - } - if (Math.abs(v0Vtx.x()) > v0VxMax) { - continue; - } - + // System.out.println(v0Vtx.toString()); + if (Math.abs(v0Vtx.z()) > v0VzMax) + continue; + if (Math.abs(v0Vtx.y()) > v0VyMax) + continue; + if (Math.abs(v0Vtx.x()) > v0VxMax) + continue; +// System.out.println("Passed V0 cuts"); List<Track> tracks = new ArrayList<Track>(); ReconstructedParticle electron = null, positron = null; for (ReconstructedParticle particle : uncV0.getParticles()) // tracks.addAll(particle.getTracks()); //add add electron first, then positron...down below - { - if (particle.getCharge() > 0) { + if (particle.getCharge() > 0) positron = particle; - } else if (particle.getCharge() < 0) { + else if (particle.getCharge() < 0) electron = particle; - } else { + else throw new RuntimeException("expected only electron and positron in vertex, got something with charge 0"); - } - } - if (electron == null || positron == null) { + if (electron == null || positron == null) throw new RuntimeException("vertex needs e+ and e- but is missing one or both"); - } + // System.out.println("..."); tracks.add(electron.getTracks().get(0)); tracks.add(positron.getTracks().get(0)); - if (tracks.size() != 2) { + if (tracks.size() != 2) throw new RuntimeException("expected two tracks in vertex, got " + tracks.size()); - } List<Double> trackTimes = new ArrayList<Double>(); - for (Track track : tracks) { + for (Track track : tracks) trackTimes.add(TrackUtils.getTrackTime(track, hitToStrips, hitToRotated)); - } trackTime2D.fill(trackTimes.get(0), trackTimes.get(1)); trackTimeDiff.fill(trackTimes.get(0) - trackTimes.get(1)); boolean trackTimeDiffCut = Math.abs(trackTimes.get(0) - trackTimes.get(1)) < trkTimeDiff; boolean pCut = electron.getMomentum().magnitude() > trkPzMin && positron.getMomentum().magnitude() > trkPzMin; boolean pTotCut = uncV0.getMomentum().magnitude() > v0PzMin && uncV0.getMomentum().magnitude() < v0PzMax; // if (electron.getMomentum().y()* positron.getMomentum().y()<0) continue; +// System.out.println("Track Time Diff Cut = " + trackTimeDiffCut); if (trackTimeDiffCut) { vertexMassMomentum.fill(uncV0.getMomentum().magnitude(), uncV0.getMass()); vertexedTrackMomentum2D.fill(electron.getMomentum().magnitude(), positron.getMomentum().magnitude()); @@ -261,6 +259,8 @@ vertexedTrackMomentum2DRad.fill(electron.getMomentum().magnitude(), positron.getMomentum().magnitude()); deltaPRad.fill(positron.getMomentum().magnitude() - electron.getMomentum().magnitude()); } +// System.out.println("pCut = " + pCut + "; pTotCut=" + pTotCut); + if (pCut && pTotCut) { vertexPxPy.fill(uncV0.getMomentum().x(), uncV0.getMomentum().y()); goodVertexMass.fill(uncV0.getMass()); @@ -270,23 +270,51 @@ vertexPx.fill(uncV0.getMomentum().x()); vertexPy.fill(uncV0.getMomentum().y()); vertexPz.fill(uncV0.getMomentum().z()); - vertexU.fill(uncV0.getMomentum().x()/uncV0.getMomentum().magnitude()); - vertexV.fill(uncV0.getMomentum().y()/uncV0.getMomentum().magnitude()); + vertexU.fill(uncV0.getMomentum().x() / uncV0.getMomentum().magnitude()); + vertexV.fill(uncV0.getMomentum().y() / uncV0.getMomentum().magnitude()); // vertexW.fill(uncV0.getMomentum().z()/uncV0.getMomentum().magnitude()); - vertexVZ.fill(v0Vtx.z(), uncV0.getMomentum().y()/uncV0.getMomentum().magnitude()); + vertexVZ.fill(v0Vtx.z(), uncV0.getMomentum().y() / uncV0.getMomentum().magnitude()); vertexZY.fill(v0Vtx.y(), v0Vtx.z()); } } // System.out.println(tarV0.getTracks()) } + + List<ReconstructedParticle> targetConstrainedV0List = event.get(ReconstructedParticle.class, targetV0ConCandidatesColName); + for (ReconstructedParticle targetV0 : targetConstrainedV0List) { + if (targetV0.getType() < trackType) + continue; + Vertex targetVert = targetV0.getStartVertex(); + // v0 & vertex-quality cuts + + Hep3Vector v0Mom = VecOp.add(targetV0.getParticles().get(1).getMomentum(), targetV0.getParticles().get(0).getMomentum()); + if (v0Mom.z() > v0PzMax || v0Mom.z() < v0PzMin) + continue; + if (Math.abs(v0Mom.y()) > v0PyMax) + continue; + if (Math.abs(v0Mom.x()) > v0PxMax) + continue; + Hep3Vector v0Vtx = targetVert.getPosition(); + if (Math.abs(v0Vtx.z()) > v0VzMax) + continue; + if (Math.abs(v0Vtx.y()) > v0VyMax) + continue; + if (Math.abs(v0Vtx.x()) > v0VxMax) + continue; + tarconMass.fill(targetV0.getMass()); + tarconVx.fill(v0Vtx.x()); + tarconVy.fill(v0Vtx.y()); + tarconVz.fill(v0Vtx.z()); + tarconChi2.fill(targetVert.getChi2()); + + } } @Override public void printDQMData() { System.out.println("TridentMonitoring::printDQMData"); - for (Entry<String, Double> entry : monitoredQuantityMap.entrySet()) { + for (Entry<String, Double> entry : monitoredQuantityMap.entrySet()) System.out.println(entry.getKey() + " = " + entry.getValue()); - } System.out.println("*******************************"); } @@ -305,9 +333,8 @@ @Override public void printDQMStrings() { for (int i = 0; i < 9; i++)//TODO: do this in a smarter way...loop over the map - { + System.out.println("ALTER TABLE dqm ADD " + fpQuantNames[i] + " double;"); - } } IFitResult fitVertexPosition(IHistogram1D h1d, IFitter fitter, double[] init, String range) {