Author: [log in to unmask] Date: Fri Jul 8 16:41:14 2016 New Revision: 4425 Log: dump event information to tuple Added: java/trunk/analysis/src/main/java/org/hps/analysis/tuple/TridentTruthTupleDriver.java - copied, changed from r4422, java/trunk/analysis/src/main/java/org/hps/analysis/tuple/TridentTupleDriver.java java/trunk/steering-files/src/main/resources/org/hps/steering/analysis/MakeTuplesSlic.lcsim - copied, changed from r4422, java/trunk/steering-files/src/main/resources/org/hps/steering/analysis/MakeTuples.lcsim Modified: java/trunk/analysis/src/main/java/org/hps/analysis/tuple/TupleDriver.java Copied: java/trunk/analysis/src/main/java/org/hps/analysis/tuple/TridentTruthTupleDriver.java (from r4422, java/trunk/analysis/src/main/java/org/hps/analysis/tuple/TridentTupleDriver.java) ============================================================================= --- java/trunk/analysis/src/main/java/org/hps/analysis/tuple/TridentTupleDriver.java (original) +++ java/trunk/analysis/src/main/java/org/hps/analysis/tuple/TridentTruthTupleDriver.java Fri Jul 8 16:41:14 2016 @@ -1,111 +1,22 @@ package org.hps.analysis.tuple; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import org.hps.recon.particle.ReconParticleDriver; -import org.hps.recon.tracking.TrackType; -import org.hps.recon.vertexing.BilliorTrack; -import org.hps.record.triggerbank.AbstractIntData; -import org.hps.record.triggerbank.TIData; import org.lcsim.event.EventHeader; -import org.lcsim.event.GenericObject; -import org.lcsim.event.ReconstructedParticle; -import org.lcsim.event.Track; -import org.lcsim.event.TrackState; -public class TridentTupleDriver extends TupleDriver { - - private final String unconstrainedV0CandidatesColName = "UnconstrainedV0Candidates"; - - private final double tupleTrkPCut = 0.9; - private final double tupleMaxSumCut = 1.3; - private boolean getMC = false; +public class TridentTruthTupleDriver extends TupleDriver { @Override protected void setupVariables() { tupleVariables.clear(); - addEventVariables(); - addVertexVariables(); - addParticleVariables("ele"); - addParticleVariables("pos"); - String[] newVars = new String[]{"minPositiveIso/D", "minNegativeIso/D", "minIso/D"}; - tupleVariables.addAll(Arrays.asList(newVars)); - if (getMC) { - addMCTridentVariables(); - } - } - - public void setGetMC(boolean getMC) { - this.getMC = getMC; + addMCTridentVariables(); } @Override public void process(EventHeader event) { - /* make sure everything is there */ - if (!event.hasCollection(ReconstructedParticle.class, unconstrainedV0CandidatesColName)) { - return; - } - TIData triggerData = null; - if (event.hasCollection(GenericObject.class, "TriggerBank")) { - for (GenericObject data : event.get(GenericObject.class, "TriggerBank")) { - if (AbstractIntData.getTag(data) == TIData.BANK_TAG) { - triggerData = new TIData(data); - } - } - } + fillMCTridentVariables(event); - //check to see if this event is from the correct trigger (or "all"); - if (triggerData != null && !matchTriggerType(triggerData)) { - return; - } - List<ReconstructedParticle> unConstrainedV0List = event.get(ReconstructedParticle.class, unconstrainedV0CandidatesColName); - - for (ReconstructedParticle uncV0 : unConstrainedV0List) { - if (isGBL != TrackType.isGBL(uncV0.getType())) { - continue; - } - tupleMap.clear(); - fillEventVariables(event, triggerData); - - ReconstructedParticle electron = uncV0.getParticles().get(ReconParticleDriver.ELECTRON); - ReconstructedParticle positron = uncV0.getParticles().get(ReconParticleDriver.POSITRON); - if (electron.getCharge() != -1 || positron.getCharge() != 1) { - throw new RuntimeException("incorrect charge on v0 daughters"); - } - - Track eleTrack = electron.getTracks().get(0); - Track posTrack = positron.getTracks().get(0); - - TrackState eleTSTweaked = fillParticleVariables(event, electron, "ele"); - TrackState posTSTweaked = fillParticleVariables(event, positron, "pos"); - - List<BilliorTrack> billiorTracks = new ArrayList<BilliorTrack>(); - billiorTracks.add(new BilliorTrack(eleTSTweaked, eleTrack.getChi2(), eleTrack.getNDF())); - billiorTracks.add(new BilliorTrack(posTSTweaked, posTrack.getChi2(), posTrack.getNDF())); - - double minPositiveIso = Math.min(tupleMap.get("eleMinPositiveIso/D"), tupleMap.get("posMinPositiveIso/D")); - double minNegativeIso = Math.min(Math.abs(tupleMap.get("eleMinNegativeIso/D")), Math.abs(tupleMap.get("posMinNegativeIso/D"))); - double minIso = Math.min(minPositiveIso, minNegativeIso); - - fillVertexVariables(event, billiorTracks, electron, positron); - - tupleMap.put("minPositiveIso/D", minPositiveIso); - tupleMap.put("minNegativeIso/D", minNegativeIso); - tupleMap.put("minIso/D", minIso); - - if (getMC) { - fillMCTridentVariables(event); - } - - if (tupleWriter != null) { - boolean trkCut = tupleMap.get("eleP/D") < tupleTrkPCut * ebeam && tupleMap.get("posP/D") < tupleTrkPCut * ebeam; - boolean sumCut = tupleMap.get("eleP/D") + tupleMap.get("posP/D") < tupleMaxSumCut * ebeam; - if (!cutTuple || (trkCut && sumCut)) { - writeTuple(); - } - } + if (tupleWriter != null) { + writeTuple(); } } } Modified: java/trunk/analysis/src/main/java/org/hps/analysis/tuple/TupleDriver.java ============================================================================= --- java/trunk/analysis/src/main/java/org/hps/analysis/tuple/TupleDriver.java (original) +++ java/trunk/analysis/src/main/java/org/hps/analysis/tuple/TupleDriver.java Fri Jul 8 16:41:14 2016 @@ -149,10 +149,13 @@ beamAxisRotation.setActiveEuler(Math.PI / 2, -0.0305, -Math.PI / 2); bfield = TrackUtils.getBField(detector).magnitude(); - BeamEnergy.BeamEnergyCollection beamEnergyCollection - = this.getConditionsManager().getCachedConditions(BeamEnergy.BeamEnergyCollection.class, "beam_energies").getCachedData(); if (Double.isNaN(ebeam)) { - ebeam = beamEnergyCollection.get(0).getBeamEnergy(); + try { + BeamEnergy.BeamEnergyCollection beamEnergyCollection + = this.getConditionsManager().getCachedConditions(BeamEnergy.BeamEnergyCollection.class, "beam_energies").getCachedData(); + ebeam = beamEnergyCollection.get(0).getBeamEnergy(); + } catch (Exception e) { + } } setupVariables(); if (tupleFile != null) { Copied: java/trunk/steering-files/src/main/resources/org/hps/steering/analysis/MakeTuplesSlic.lcsim (from r4422, java/trunk/steering-files/src/main/resources/org/hps/steering/analysis/MakeTuples.lcsim) ============================================================================= --- java/trunk/steering-files/src/main/resources/org/hps/steering/analysis/MakeTuples.lcsim (original) +++ java/trunk/steering-files/src/main/resources/org/hps/steering/analysis/MakeTuplesSlic.lcsim Fri Jul 8 16:41:14 2016 @@ -1,70 +1,20 @@ +<!-- +This steering file dumps truth information to ROOT tuple format. It only uses the MCParticle collection, so it should work on any MC LCIO file (SLIC output, readout sim, recon). +--> + <lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd"> <execute> <driver name="EventMarkerDriver"/> - <driver name="CleanupDriver"/> - <driver name="EventFlagFilter"/> - <driver name="RawTrackerHitSensorSetup"/> - - <driver name="TridentTuple"/> - <driver name="MollerTuple"/> - <driver name="FEETuple"/> + <driver name="TruthTuple"/> </execute> <drivers> <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver"> <eventInterval>1000</eventInterval> </driver> - <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"/> - <driver name="EventFlagFilter" type="org.hps.recon.filtering.EventFlagFilter"> - </driver> - <driver name="RawTrackerHitSensorSetup" type="org.lcsim.recon.tracking.digitization.sisim.config.RawTrackerHitSensorSetup"> - <readoutCollections>SVTRawTrackerHits</readoutCollections> - </driver> - <driver name="TridentTuple" type="org.hps.analysis.tuple.TridentTupleDriver"> - <triggerType>all</triggerType> - <isGBL>true</isGBL> - <tupleFile>${outputFile}_tri.txt</tupleFile> - <cutTuple>true</cutTuple> - <beamPosZ>-5.0</beamPosZ> - <topDOmega>-1.04e-6</topDOmega> - <botDOmega>0.83e-6</botDOmega> - <topDLambda>-5e-4</topDLambda> - <botDLambda>13e-4</botDLambda> - <topDPhi>1.5e-3</topDPhi> - <botDPhi>-0.3e-3</botDPhi> - <topDZ0>0.14</topDZ0> - <botDZ0>-0.16</botDZ0> - </driver> - <driver name="MollerTuple" type="org.hps.analysis.tuple.MollerTupleDriver"> - <triggerType>all</triggerType> - <isGBL>true</isGBL> - <tupleFile>${outputFile}_moller.txt</tupleFile> - <cutTuple>true</cutTuple> - <beamPosZ>-5.0</beamPosZ> - <topDOmega>-1.04e-6</topDOmega> - <botDOmega>0.83e-6</botDOmega> - <topDLambda>-5e-4</topDLambda> - <botDLambda>13e-4</botDLambda> - <topDPhi>1.5e-3</topDPhi> - <botDPhi>-0.3e-3</botDPhi> - <topDZ0>0.14</topDZ0> - <botDZ0>-0.16</botDZ0> - </driver> - <driver name="FEETuple" type="org.hps.analysis.tuple.FEETupleDriver"> - <triggerType>all</triggerType> - <isGBL>true</isGBL> - <tupleFile>${outputFile}_fee.txt</tupleFile> - <cutTuple>true</cutTuple> - <beamPosZ>-5.0</beamPosZ> - <topDOmega>-1.04e-6</topDOmega> - <botDOmega>0.83e-6</botDOmega> - <topDLambda>-5e-4</topDLambda> - <botDLambda>13e-4</botDLambda> - <topDPhi>1.5e-3</topDPhi> - <botDPhi>-0.3e-3</botDPhi> - <topDZ0>0.14</topDZ0> - <botDZ0>-0.16</botDZ0> + <driver name="TruthTuple" type="org.hps.analysis.tuple.TridentTruthTupleDriver"> + <tupleFile>${outputFile}_truth.txt</tupleFile> </driver> </drivers> </lcsim>