diff --git a/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2016FullReconMC_KF_Killer_Smearer.lcsim b/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2016FullReconMC_KF_Killer_Smearer.lcsim new file mode 100644 index 000000000..0928aa341 --- /dev/null +++ b/steering-files/src/main/resources/org/hps/steering/recon/PhysicsRun2016FullReconMC_KF_Killer_Smearer.lcsim @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 12 + false + 10.0 + 15.0 + false + + + + + EcalCalHits EcalClusters EcalClustersCorr FinalStateParticles + UnconstrainedMollerCandidates UnconstrainedMollerVertices UnconstrainedV0Candidates + UnconstrainedV0Vertices TargetConstrainedMollerCandidates TargetConstrainedMollerVertices + TargetConstrainedV0Candidates TargetConstrainedV0Vertices BeamspotConstrainedMollerCandidates + BeamspotConstrainedMollerVertices BeamspotConstrainedV0Candidates BeamspotConstrainedV0Vertices + GBLKinkData GBLKinkDataRelations MatchedToGBLTrackRelations HelicalTrackHits + HelicalTrackHitRelations MatchedTracks GBLTracks MatchedToGBLTrackRelations + RotatedHelicalTrackHits RotatedHelicalTrackHitRelations SVTFittedRawTrackerHits + SVTShapeFitParameters StripClusterer_SiTrackerHitStrip1D TrackData TrackDataRelations + TrackResiduals TrackResidualsRelations OtherElectrons UnconstrainedVcCandidates UnconstrainedVcVertices + KFTrackData KFTrackDataRelations KFGBLStripClusterData KFGBLStripClusterDataRelations SVTShapeFitParameters UnconstrainedVcCandidates_KF UnconstrainedVcVertices_KF + KalmanFullTracks UnconstrainedV0Candidates_KF TargetConstrainedV0Candidates_KF BeamspotConstrainedV0Candidates_KF UnconstrainedV0Vertices_KF TargetConstrainedV0Vertices_KF BeamspotConstrainedV0Vertices_KF + + + + + + CONFIG + + + + + + EcalCalHits + true + 2.4 + + + + + + + WARNING + EcalClusters + + + EcalClusters + EcalClustersCorr + + + + + pass4b-KF-hps2016_L1b_axial_hole.txt pass4b-KF-hps2016_L1b_stereo_hole.txt pass4b-KF-hps2016_L1t_axial_hole.txt pass4b-KF-hps2016_L1t_stereo_hole.txt pass4b-KF-hps2016_L2b_axial_hole.txt pass4b-KF-hps2016_L2b_stereo_hole.txt pass4b-KF-hps2016_L2t_axial_hole.txt pass4b-KF-hps2016_L2t_stereo_hole.txt + false + + + + exampleSmearing-0pt008mm.txt + false + + + + timeSmearing-2ns-4nsL0.txt + false + + + + + + SVTRawTrackerHits + + + Pileup + + true + + 171. + + true + + false + + false + + true + + false + + true + false + + + 24.0 + + + + true + 40 + -4.3 + true + false + + + + EcalClustersCorr + KalmanFullTracks + KalmanFullTracks + FinalStateParticles_KF + UnconstrainedV0Candidates_KF + UnconstrainedV0Vertices_KF + BeamspotConstrainedV0Candidates_KF + BeamspotConstrainedV0Vertices_KF + TargetConstrainedV0Candidates_KF + TargetConstrainedV0Vertices_KF + true + false + -0.224 + 0.275 + -0.08 + 0.060 + -4.3 + 2.8 + 2.8 + 0.0 + 5.0 + 10 + 36.8 + true + true + TrackClusterMatcherMinDistance + + + + + + + ${outputFile}.slcio + + + + + + ${outputFile}.root + false + 0.0 + + KalmanFullTracks + 0.1 + 4.8 + 9999 + true + true + + + + + + diff --git a/tracking/src/main/java/org/hps/recon/tracking/kalman/KFOutputDriver.java b/tracking/src/main/java/org/hps/recon/tracking/kalman/KFOutputDriver.java index 083c7186c..c1a7b486a 100644 --- a/tracking/src/main/java/org/hps/recon/tracking/kalman/KFOutputDriver.java +++ b/tracking/src/main/java/org/hps/recon/tracking/kalman/KFOutputDriver.java @@ -380,9 +380,9 @@ private void doEoPPlots(Track track, Cluster cluster) { aidaKF.histogram2D(eopFolder+"EoP_vs_tanLambda").fill(tanL,eop); aidaKF.histogram2D(eopFolder+"EoP_vs_phi").fill(phi,eop); - aidaKF.histogram3D(eopFolder+"EoP_vs_tanLambda_phi").fill(tanL, - phi, - eop); + // aidaKF.histogram3D(eopFolder+"EoP_vs_tanLambda_phi").fill(tanL, + // phi, + // eop); if (TriggerModule.inFiducialRegion(cluster)) { @@ -400,9 +400,9 @@ private void doEoPPlots(Track track, Cluster cluster) { aidaKF.histogram2D(eopFolder+"EoP_vs_tanLambda_fid").fill(tanL,eop); aidaKF.histogram2D(eopFolder+"EoP_vs_phi_fid").fill(phi,eop); - aidaKF.histogram3D(eopFolder+"EoP_vs_tanLambda_phi_fid").fill(tanL, - phi, - eop); + // aidaKF.histogram3D(eopFolder+"EoP_vs_tanLambda_phi_fid").fill(tanL, + //phi, + //eop); @@ -534,10 +534,12 @@ private void FillKFTrackPlot(String str, String isTop, String charge, double val aidaKF.histogram2D(str+isTop+charge).fill(valX,valY); } + /* private void FillKFTrackPlot(String str, String isTop, String charge, double valX, double valY, double valZ) { aidaKF.histogram3D(str+isTop).fill(valX,valY,valZ); aidaKF.histogram3D(str+isTop+charge).fill(valX,valY,valZ); } + */ @@ -598,7 +600,7 @@ private void doBasicKFtrack(Track trk, Map sensorHits) //Momentum maps FillKFTrackPlot(trkpFolder+"p_vs_phi",isTop,charge,trackState.getPhi(),trackp); FillKFTrackPlot(trkpFolder+"p_vs_tanLambda",isTop,charge,trackState.getTanLambda(),trackp); - FillKFTrackPlot(trkpFolder+"p_vs_phi_tanLambda",isTop,charge,trackState.getPhi(),trackState.getTanLambda(),trackp); + // FillKFTrackPlot(trkpFolder+"p_vs_phi_tanLambda",isTop,charge,trackState.getPhi(),trackState.getTanLambda(),trackp); double tanLambda = trackState.getTanLambda(); double cosLambda = 1. / (Math.sqrt(1+tanLambda*tanLambda)); @@ -1034,11 +1036,11 @@ private void setupEoPPlots() { aidaKF.histogram2D(eopFolder+"EoP_vs_tanLambda",200,-0.1,0.1,200,0,2); aidaKF.histogram2D(eopFolder+"EoP_vs_phi",200,-0.2,0.2,200,0,2); - aidaKF.histogram3D(eopFolder+"EoP_vs_tanLambda_phi",200,-0.08,0.08,200,-0.2,0.2,200,0,2); + // aidaKF.histogram3D(eopFolder+"EoP_vs_tanLambda_phi",200,-0.08,0.08,200,-0.2,0.2,200,0,2); aidaKF.histogram2D(eopFolder+"EoP_vs_tanLambda_fid",200,-0.1,0.1,200,0,2); aidaKF.histogram2D(eopFolder+"EoP_vs_phi_fid",200,-0.2,0.2,200,0,2); - aidaKF.histogram3D(eopFolder+"EoP_vs_tanLambda_phi_fid",200,-0.08,0.08,200,-0.2,0.2,200,0,2); + // aidaKF.histogram3D(eopFolder+"EoP_vs_tanLambda_phi_fid",200,-0.08,0.08,200,-0.2,0.2,200,0,2); } @@ -1226,7 +1228,7 @@ private void setupPlots() { aidaKF.histogram2D(trkpFolder+"p_Missing1Hit"+vol+charge,8,0,8,nbins_p,0.0,pmax); aidaKF.histogram2D(trkpFolder+"p_vs_phi"+vol+charge, nbins_t,-0.3,0.3, nbins_p,0.,pmax); aidaKF.histogram2D(trkpFolder+"p_vs_tanLambda"+vol+charge,nbins_t,-0.2,0.2,nbins_p,0.,pmax); - aidaKF.histogram3D(trkpFolder+"p_vs_phi_tanLambda"+vol+charge, 50,-0.3,0.3,50,-0.2,0.2,100,0.,pmax); + // aidaKF.histogram3D(trkpFolder+"p_vs_phi_tanLambda"+vol+charge, 50,-0.3,0.3,50,-0.2,0.2,100,0.,pmax); aidaKF.histogram2D(trkpFolder+"pT_vs_phi"+vol+charge, nbins_t,-0.3,0.3, nbins_p,0.,pmax); aidaKF.histogram2D(trkpFolder+"pT_vs_tanLambda"+vol+charge,nbins_t,-0.2,0.2,nbins_p,0.,pmax); diff --git a/tracking/src/main/java/org/hps/recon/tracking/KalmanSlopeBasedTrackHitKiller.java b/tracking/src/main/java/org/hps/recon/tracking/mctweaking/KalmanSlopeBasedTrackHitKiller.java similarity index 100% rename from tracking/src/main/java/org/hps/recon/tracking/KalmanSlopeBasedTrackHitKiller.java rename to tracking/src/main/java/org/hps/recon/tracking/mctweaking/KalmanSlopeBasedTrackHitKiller.java diff --git a/tracking/src/main/java/org/hps/recon/tracking/mctweaking/RawHitTimeSmearer.java b/tracking/src/main/java/org/hps/recon/tracking/mctweaking/RawHitTimeSmearer.java new file mode 100644 index 000000000..c022df664 --- /dev/null +++ b/tracking/src/main/java/org/hps/recon/tracking/mctweaking/RawHitTimeSmearer.java @@ -0,0 +1,231 @@ +package org.hps.recon.tracking; + +import hep.physics.vec.BasicHep3Vector; +import hep.physics.vec.Hep3Vector; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Random; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import org.lcsim.detector.tracker.silicon.ChargeCarrier; +import org.lcsim.detector.tracker.silicon.HpsSiSensor; +import org.lcsim.detector.tracker.silicon.SiSensorElectrodes; +import org.lcsim.event.EventHeader; +import org.lcsim.event.RawTrackerHit; +import org.lcsim.event.TrackerHit; +import org.lcsim.event.base.BaseTrackerHit; +import org.lcsim.geometry.Detector; +import org.lcsim.lcio.LCIOUtil; +import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D; +import org.lcsim.util.Driver; +import org.lcsim.recon.tracking.digitization.sisim.TrackerHitType; +import hep.physics.matrix.SymmetricMatrix; +import org.lcsim.event.LCRelation; + +/** + * + * @author mgraham created 9/20/24 + * This driver will randomize the position of strip clusters + * within a specified gaussian sigma. + * 11/17/24 + * add in cluster time smearing as well. + * + * Strip collection: + * "StripClusterer_SiTrackerHitStrip1D" (default) + * Important Settables: + * smear: the sigma of smearing gaussian + * + * mg...right now, I smear all hits in all layers by the same amount + * independent of nHits. + */ +public class RawHitTimeSmearer extends Driver { + + + String smearTimeFile="foobar"; + //IMPORTANT...the layer, top/bottom/stereo/axial/slot/hole are derived from these names!!! + Set smearTheseSensors = new HashSet(); + // I may eventually want this, so keep it here + private List _sensorsToSmear = new ArrayList(); + //List of Sensors + private List sensors = null; + private static final String SUBDETECTOR_NAME = "Tracker"; + private static Pattern layerPattern = Pattern.compile("L(\\d+)(t|b)"); + private static Pattern allPattern = Pattern.compile("L(\\all)"); + private Map fittedRawTrackerHitMap = new HashMap(); + private String fittedHitsCollectionName = "SVTFittedRawTrackerHits"; + private boolean _debug = false; + + Random r=new Random(); + + /// + + + + public void setSmearTimeFile(String smearFile){ + System.out.println("Setting SVT sensor time smearing file = "+smearFile); + this.smearTimeFile=smearFile; + } + + public void setDebug(boolean debug) { + this._debug = debug; + } + + public RawHitTimeSmearer() { + } + + @Override + public void detectorChanged(Detector detector) { + // Get the HpsSiSensor objects from the tracker detector element + sensors = detector.getSubdetector(SUBDETECTOR_NAME) + .getDetectorElement().findDescendants(HpsSiSensor.class); + // If the detector element had no sensors associated with it, throw + // an exception + if (sensors.size() == 0) + throw new RuntimeException(this.getClass().getName()+":: No sensors were found in this detector."); + if(_debug) + System.out.println(this.getClass().getName()+":: Reading in time smearing file = "+this.smearTimeFile); + Map mapOfSmearingTime=readSmearingFile(this.smearTimeFile); + if (mapOfSmearingTime.size()==0) + throw new RuntimeException(this.getClass().getName()+":: No sensors to smear???"); + + for (HpsSiSensor sensor: sensors){ + double smearingTime=-666.; + if(mapOfSmearingTime.containsKey(sensor.getName())){ + // found a sensor to smear...set up the object + if(_debug) + System.out.println(this.getClass().getName()+":: adding "+sensor.getName()+" with sigma time = "+mapOfSmearingTime.get(sensor.getName())); + smearingTime=mapOfSmearingTime.get(sensor.getName()); + } + if(smearingTime>0) + _sensorsToSmear.add(new SensorToSmear(sensor, smearingTime)); + } + if(_debug) + System.out.println(this.getClass().getName()+":: will smear cluster hits on "+_sensorsToSmear.size()+" sensors"); + + } + + @Override + public void process(EventHeader event) { + // get the sensor object of the cluster + for (SensorToSmear sensorToSmear : _sensorsToSmear){ + if(sensorToSmear.getSmearTimeSigma()>0){ + HpsSiSensor sensor=(HpsSiSensor)sensorToSmear.getSensor(); + List< LCRelation > fittedHits = sensor.getReadout().getHits(LCRelation.class); + for (LCRelation fittedHit : fittedHits) { + RawTrackerHit rth=FittedRawTrackerHit.getRawTrackerHit(fittedHit); + double oldTime=FittedRawTrackerHit.getT0(fittedHit); + double smearAmount=sensorToSmear.getRandomTimeSmear(); + double newTime=oldTime+smearAmount; + ((FittedRawTrackerHit)fittedHit).getShapeFitParameters().setT0(newTime); + if (_debug) + System.out.println("Smearing this hit Layer = " + sensor.getName() + +" smearTimeSigma= " + sensorToSmear.getSmearTimeSigma() + + " fitted hit time = " + FittedRawTrackerHit.getT0(fittedHit) + + " old time = " + oldTime + + " new time = " + newTime + + " amount smeared = " + smearAmount); + } + } + } + } + + @Override + public void endOfData() { + } + + public Map readSmearingFile(String smearFile){ + Map sensorNameSmearingMap = new HashMap(); + String infile = "/org/hps/recon/tracking/svtTimeAndPositionSmearing/" +smearFile; + if (_debug)System.out.println(this.getClass().getName()+"::Reading sensor smearing file " + infile); + InputStream inSensors = this.getClass().getResourceAsStream(infile); + BufferedReader reader = new BufferedReader(new InputStreamReader(inSensors)); + String line; + String delims = "\\s+";// this will split strings between one or more spaces + try { + while ((line = reader.readLine()) != null) { + String[] tokens = line.split(delims); + if (_debug) System.out.println("sensor name = " + tokens[0] + "; smearing = " + tokens[1]+" mm"); + String sensorName=tokens[0]; + Double smearingSigma=Double.parseDouble(tokens[1]); + sensorNameSmearingMap.put(sensorName,smearingSigma); + } + } catch (IOException ex) { + Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex); + } + return sensorNameSmearingMap; + + } + + public class SensorToSmear { + + int _layer = 1; + HpsSiSensor _sensor = null; + double _smearTimeSigma = -666.0; // units of this is ns + + public SensorToSmear(HpsSiSensor sensor, double smearTime) { + _smearTimeSigma=smearTime; + _sensor = sensor; + } + + void setSmearTimeSigma(double smear) { + this._smearTimeSigma=smear; + } + + + double getSmearTimeSigma() { + return this._smearTimeSigma; + } + + HpsSiSensor getSensor(){ + return _sensor; + } + + boolean matchSensor(HpsSiSensor sensor) { + return _sensor == sensor; + } + + double getRandomTimeSmear(){ + if(this._smearTimeSigma>0) + return r.nextGaussian()*this._smearTimeSigma; + else + return 0.0; + } + } + + //Converts double array into Hep3Vector + private Hep3Vector toHep3(double[] arr) { + return new BasicHep3Vector(arr[0], arr[1], arr[2]); + } + + //Converts position into sensor frame + private Hep3Vector globalToSensor(Hep3Vector hitpos, HpsSiSensor sensor) { + SiSensorElectrodes electrodes = sensor.getReadoutElectrodes(ChargeCarrier.HOLE); + if (electrodes == null) { + electrodes = sensor.getReadoutElectrodes(ChargeCarrier.ELECTRON); + System.out.println("Charge Carrier is NULL"); + } + return electrodes.getGlobalToLocal().transformed(hitpos); + } + + //Converts position from local (sensor) to global frame + private Hep3Vector sensorToGlobal(Hep3Vector hitpos, HpsSiSensor sensor) { + SiSensorElectrodes electrodes = sensor.getReadoutElectrodes(ChargeCarrier.HOLE); + if (electrodes == null) { + electrodes = sensor.getReadoutElectrodes(ChargeCarrier.ELECTRON); + System.out.println("Charge Carrier is NULL"); + } + return electrodes.getLocalToGlobal().transformed(hitpos); + } + +} diff --git a/tracking/src/main/java/org/hps/recon/tracking/SlopeBasedTrackHitKiller.java b/tracking/src/main/java/org/hps/recon/tracking/mctweaking/SlopeBasedTrackHitKiller.java similarity index 100% rename from tracking/src/main/java/org/hps/recon/tracking/SlopeBasedTrackHitKiller.java rename to tracking/src/main/java/org/hps/recon/tracking/mctweaking/SlopeBasedTrackHitKiller.java diff --git a/tracking/src/main/java/org/hps/recon/tracking/StripHitKiller.java b/tracking/src/main/java/org/hps/recon/tracking/mctweaking/StripHitKiller.java similarity index 100% rename from tracking/src/main/java/org/hps/recon/tracking/StripHitKiller.java rename to tracking/src/main/java/org/hps/recon/tracking/mctweaking/StripHitKiller.java diff --git a/tracking/src/main/java/org/hps/recon/tracking/mctweaking/StripHitSmearer.java b/tracking/src/main/java/org/hps/recon/tracking/mctweaking/StripHitSmearer.java new file mode 100644 index 000000000..965990a0e --- /dev/null +++ b/tracking/src/main/java/org/hps/recon/tracking/mctweaking/StripHitSmearer.java @@ -0,0 +1,289 @@ +package org.hps.recon.tracking; + +import hep.physics.vec.BasicHep3Vector; +import hep.physics.vec.Hep3Vector; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Random; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import org.lcsim.detector.tracker.silicon.ChargeCarrier; +import org.lcsim.detector.tracker.silicon.HpsSiSensor; +import org.lcsim.detector.tracker.silicon.SiSensorElectrodes; +import org.lcsim.event.EventHeader; +import org.lcsim.event.RawTrackerHit; +import org.lcsim.event.TrackerHit; +import org.lcsim.event.base.BaseTrackerHit; +import org.lcsim.geometry.Detector; +import org.lcsim.lcio.LCIOUtil; +import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D; +import org.lcsim.util.Driver; +import org.lcsim.recon.tracking.digitization.sisim.TrackerHitType; +import hep.physics.matrix.SymmetricMatrix; + +/** + * + * @author mgraham created 9/20/24 + * This driver will randomize the position of strip clusters + * within a specified gaussian sigma. + * + * Strip collection: + * "StripClusterer_SiTrackerHitStrip1D" (default) + * Important Settables: + * smear: the sigma of smearing gaussian + * + * mg...right now, I smear all hits in all layers by the same amount + * independent of nHits. + */ +public class StripHitSmearer extends Driver { + + + String smearPositionFile="foobar"; + //IMPORTANT...the layer, top/bottom/stereo/axial/slot/hole are derived from these names!!! + Set smearTheseSensors = new HashSet(); + // I may eventually want this, so keep it here + private List _sensorsToSmear = new ArrayList(); + //List of Sensors + private List sensors = null; + private static final String SUBDETECTOR_NAME = "Tracker"; + private static Pattern layerPattern = Pattern.compile("L(\\d+)(t|b)"); + private static Pattern allPattern = Pattern.compile("L(\\all)"); + private String stripHitInputCollectionName = "StripClusterer_SiTrackerHitStrip1D"; + private boolean _debug = false; + + Random r=new Random(); + + /// + + private List siClusters = new ArrayList(); + + // private Map _siClustersAcceptMap = new HashMap(); + //private Map _finalSiClustersAcceptMap = new HashMap(); + + + public void setSmearPositionFile(String smearFile){ + System.out.println("Setting SVT sensor position smearing file = "+smearFile); + this.smearPositionFile=smearFile; + } + + public void setDebug(boolean debug) { + this._debug = debug; + } + + public StripHitSmearer() { + } + + @Override + public void detectorChanged(Detector detector) { + // Get the HpsSiSensor objects from the tracker detector element + sensors = detector.getSubdetector(SUBDETECTOR_NAME) + .getDetectorElement().findDescendants(HpsSiSensor.class); + // If the detector element had no sensors associated with it, throw + // an exception + if (sensors.size() == 0) + throw new RuntimeException(this.getClass().getName()+":: No sensors were found in this detector."); + if(_debug) + System.out.println(this.getClass().getName()+":: Reading in position smearing file = "+this.smearPositionFile); + Map mapOfSmearingPosition=readSmearingFile(this.smearPositionFile); + if (mapOfSmearingPosition.size()==0) + throw new RuntimeException(this.getClass().getName()+":: No sensors to smear???"); + + for (HpsSiSensor sensor: sensors){ + double smearingPosition=-666.; + if(mapOfSmearingPosition.containsKey(sensor.getName())){ + // found a sensor to smear...set up the object + if(_debug) + System.out.println(this.getClass().getName()+":: adding "+sensor.getName()+" with sigma = "+mapOfSmearingPosition.get(sensor.getName())); + smearingPosition=mapOfSmearingPosition.get(sensor.getName()); + // _sensorsToSmear.add(new SensorToSmear(sensor,mapOfSmearingPosition.get(sensor.getName()))); + } + if(smearingPosition>0) + _sensorsToSmear.add(new SensorToSmear(sensor,smearingPosition)); + } + if(_debug) + System.out.println(this.getClass().getName()+":: will smear cluster hits on "+_sensorsToSmear.size()+" sensors"); + + } + + @Override + public void process(EventHeader event) { + List smearedSiClusters=new ArrayList(); + if (event.hasItem(stripHitInputCollectionName)) + siClusters = (List) event.get(stripHitInputCollectionName); + else { + System.out.println("StripHitSmearer::process No Input Collection Found?? " + stripHitInputCollectionName); + return; + } + if (_debug) + System.out.println("Number of SiClusters Found = " + siClusters.size()); + int oldClusterListSize = siClusters.size(); + for (TrackerHit siCluster : siClusters) { // Looping over all clusters + boolean smearedHit = false; + // get the sensor object of the cluster + HpsSiSensor sensor = (HpsSiSensor) ((RawTrackerHit) siCluster.getRawHits().get(0)).getDetectorElement(); + Hep3Vector newPos=toHep3(siCluster.getPosition());//set the "new" variables to the original cluster position + for (SensorToSmear sensorToSmear : _sensorsToSmear) + //get the sensorToSmear object in order to look up smearing size + if (sensorToSmear.matchSensor(sensor)) { + if(sensorToSmear.getSmearPositionSigma()>0){ + //get the local u position + Hep3Vector pos = globalToSensor(toHep3(siCluster.getPosition()), sensor); + + //this gives the amount to move the cluster based on the sigma assigned to the sensor + double smearAmount=sensorToSmear.getRandomPositionSmear(); + double uPosNew=pos.x()+smearAmount; + //get the new global position + newPos=sensorToGlobal(toHep3(new double[]{uPosNew,pos.y(),pos.z()}),sensor); + //make a copy of cluster and set the new position + // SiTrackerHitStrip1D smearedTrackerHit=new SiTrackerHitStrip1D(newPos, new SymmetricMatrix(3,siCluster.getCovMatrix(),true), + //siCluster.getdEdx(),siCluster.getTime(),(List)siCluster.getRawHits(),TrackerHitType.decoded(siCluster.getType())); + + if (_debug) + System.out.println("Smearing this hit Layer = " + sensor.getName() + +" smearPositionSigma= " + sensorToSmear.getSmearPositionSigma() + + " old u = " + pos.x() + + " new u = " + uPosNew + + " amount smeared = " + smearAmount); + if(_debug){ + System.out.println("original position = "+toHep3(siCluster.getPosition()).toString()); + System.out.println("global og position = "+pos.toString()); + } + // set the new position + // smearedTrackerHit.setPosition(new double[]{newPos.x(),newPos.y(),newPos.z()}); + + // add the smeared hit to list and mark it + // smearedSiClusters.add(smearedTrackerHit); + smearedHit=true; + } + } + //make a smeared hit...even if the sensor hit was not smeared, use newPos/newTime since they were filled with original pos/time above + SiTrackerHitStrip1D smearedTrackerHit= + new SiTrackerHitStrip1D(newPos, new SymmetricMatrix(3,siCluster.getCovMatrix(),true), + siCluster.getdEdx(),siCluster.getTime(),(List)siCluster.getRawHits(), + TrackerHitType.decoded(siCluster.getType())); + + smearedSiClusters.add(smearedTrackerHit); + + } + + if (_debug)System.out.println("New Cluster List Has " + smearedSiClusters.size() + "; old List had " + oldClusterListSize); + // TODO flag not used + int flag = LCIOUtil.bitSet(0, 31, true); // Turn on 64-bit cell ID. + event.remove(this.stripHitInputCollectionName); + event.put(this.stripHitInputCollectionName, smearedSiClusters, SiTrackerHitStrip1D.class, 0, toString()); + } + + @Override + public void endOfData() { + } + + public Map readSmearingFile(String smearFile){ + Map sensorNameSmearingMap = new HashMap(); + String infile = "/org/hps/recon/tracking/svtTimeAndPositionSmearing/" +smearFile; + if (_debug)System.out.println(this.getClass().getName()+"::Reading sensor smearing file " + infile); + InputStream inSensors = this.getClass().getResourceAsStream(infile); + BufferedReader reader = new BufferedReader(new InputStreamReader(inSensors)); + String line; + String delims = "\\s+";// this will split strings between one or more spaces + try { + while ((line = reader.readLine()) != null) { + String[] tokens = line.split(delims); + if (_debug) System.out.println("sensor name = " + tokens[0] + "; smearing = " + tokens[1]+" mm"); + String sensorName=tokens[0]; + Double smearingSigma=Double.parseDouble(tokens[1]); + sensorNameSmearingMap.put(sensorName,smearingSigma); + } + } catch (IOException ex) { + Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex); + } + return sensorNameSmearingMap; + + } + + public class SensorToSmear { + + int _layer = 1; + HpsSiSensor _sensor = null; + double _smearPositionSigma = -666.0; // units of this is mm + double _smearTimeSigma = -666.0; // units of this is ns + + public SensorToSmear(HpsSiSensor sensor, double smearPos,double smearTime) { + _smearPositionSigma=smearPos; + _smearTimeSigma=smearTime; + _sensor = sensor; + } + public SensorToSmear(HpsSiSensor sensor, double smearPos) { + _smearPositionSigma=smearPos; + _sensor = sensor; + } + void setSmearPositionSigma(double smear) { + this._smearPositionSigma=smear; + } + + void setSmearTimeSigma(double smear) { + this._smearTimeSigma=smear; + } + + double getSmearPositionSigma() { + return this._smearPositionSigma; + } + + double getSmearTimeSigma() { + return this._smearTimeSigma; + } + + boolean matchSensor(HpsSiSensor sensor) { + return _sensor == sensor; + } + + double getRandomPositionSmear(){ + if(this._smearPositionSigma>0) + return r.nextGaussian()*this._smearPositionSigma; + else + return 0.0; + } + double getRandomTimeSmear(){ + if(this._smearTimeSigma>0) + return r.nextGaussian()*this._smearTimeSigma; + else + return 0.0; + } + } + + //Converts double array into Hep3Vector + private Hep3Vector toHep3(double[] arr) { + return new BasicHep3Vector(arr[0], arr[1], arr[2]); + } + + //Converts position into sensor frame + private Hep3Vector globalToSensor(Hep3Vector hitpos, HpsSiSensor sensor) { + SiSensorElectrodes electrodes = sensor.getReadoutElectrodes(ChargeCarrier.HOLE); + if (electrodes == null) { + electrodes = sensor.getReadoutElectrodes(ChargeCarrier.ELECTRON); + System.out.println("Charge Carrier is NULL"); + } + return electrodes.getGlobalToLocal().transformed(hitpos); + } + + //Converts position from local (sensor) to global frame + private Hep3Vector sensorToGlobal(Hep3Vector hitpos, HpsSiSensor sensor) { + SiSensorElectrodes electrodes = sensor.getReadoutElectrodes(ChargeCarrier.HOLE); + if (electrodes == null) { + electrodes = sensor.getReadoutElectrodes(ChargeCarrier.ELECTRON); + System.out.println("Charge Carrier is NULL"); + } + return electrodes.getLocalToGlobal().transformed(hitpos); + } + +} diff --git a/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/exampleSmearing-0pt008mm.txt b/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/exampleSmearing-0pt008mm.txt new file mode 100644 index 000000000..a1f95db04 --- /dev/null +++ b/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/exampleSmearing-0pt008mm.txt @@ -0,0 +1,36 @@ +module_L1b_halfmodule_axial_sensor0 0.008 +module_L1b_halfmodule_stereo_sensor0 0.008 +module_L2b_halfmodule_axial_sensor0 0.008 +module_L2b_halfmodule_stereo_sensor0 0.008 +module_L3b_halfmodule_axial_sensor0 0.008 +module_L3b_halfmodule_stereo_sensor0 0.008 +module_L4b_halfmodule_axial_hole_sensor0 0.008 +module_L4b_halfmodule_axial_slot_sensor0 0.008 +module_L4b_halfmodule_stereo_hole_sensor0 0.008 +module_L4b_halfmodule_stereo_slot_sensor0 0.008 +module_L5b_halfmodule_axial_hole_sensor0 0.008 +module_L5b_halfmodule_axial_slot_sensor0 0.008 +module_L5b_halfmodule_stereo_hole_sensor0 0.008 +module_L5b_halfmodule_stereo_slot_sensor0 0.008 +module_L6b_halfmodule_axial_hole_sensor0 0.008 +module_L6b_halfmodule_axial_slot_sensor0 0.008 +module_L6b_halfmodule_stereo_hole_sensor0 0.008 +module_L6b_halfmodule_stereo_slot_sensor0 0.008 +module_L1t_halfmodule_axial_sensor0 0.008 +module_L1t_halfmodule_stereo_sensor0 0.008 +module_L2t_halfmodule_axial_sensor0 0.008 +module_L2t_halfmodule_stereo_sensor0 0.008 +module_L3t_halfmodule_axial_sensor0 0.008 +module_L3t_halfmodule_stereo_sensor0 0.008 +module_L4t_halfmodule_axial_hole_sensor0 0.008 +module_L4t_halfmodule_axial_slot_sensor0 0.008 +module_L4t_halfmodule_stereo_hole_sensor0 0.008 +module_L4t_halfmodule_stereo_slot_sensor0 0.008 +module_L5t_halfmodule_axial_hole_sensor0 0.008 +module_L5t_halfmodule_axial_slot_sensor0 0.008 +module_L5t_halfmodule_stereo_hole_sensor0 0.008 +module_L5t_halfmodule_stereo_slot_sensor0 0.008 +module_L6t_halfmodule_axial_hole_sensor0 0.008 +module_L6t_halfmodule_axial_slot_sensor0 0.008 +module_L6t_halfmodule_stereo_hole_sensor0 0.008 +module_L6t_halfmodule_stereo_slot_sensor0 0.008 diff --git a/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/exampleSmearing-0pt01mm.txt b/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/exampleSmearing-0pt01mm.txt new file mode 100644 index 000000000..48a04d84b --- /dev/null +++ b/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/exampleSmearing-0pt01mm.txt @@ -0,0 +1,36 @@ +module_L1b_halfmodule_axial_sensor0 0.01 +module_L1b_halfmodule_stereo_sensor0 0.01 +module_L2b_halfmodule_axial_sensor0 0.01 +module_L2b_halfmodule_stereo_sensor0 0.01 +module_L3b_halfmodule_axial_sensor0 0.01 +module_L3b_halfmodule_stereo_sensor0 0.01 +module_L4b_halfmodule_axial_hole_sensor0 0.01 +module_L4b_halfmodule_axial_slot_sensor0 0.01 +module_L4b_halfmodule_stereo_hole_sensor0 0.01 +module_L4b_halfmodule_stereo_slot_sensor0 0.01 +module_L5b_halfmodule_axial_hole_sensor0 0.01 +module_L5b_halfmodule_axial_slot_sensor0 0.01 +module_L5b_halfmodule_stereo_hole_sensor0 0.01 +module_L5b_halfmodule_stereo_slot_sensor0 0.01 +module_L6b_halfmodule_axial_hole_sensor0 0.01 +module_L6b_halfmodule_axial_slot_sensor0 0.01 +module_L6b_halfmodule_stereo_hole_sensor0 0.01 +module_L6b_halfmodule_stereo_slot_sensor0 0.01 +module_L1t_halfmodule_axial_sensor0 0.01 +module_L1t_halfmodule_stereo_sensor0 0.01 +module_L2t_halfmodule_axial_sensor0 0.01 +module_L2t_halfmodule_stereo_sensor0 0.01 +module_L3t_halfmodule_axial_sensor0 0.01 +module_L3t_halfmodule_stereo_sensor0 0.01 +module_L4t_halfmodule_axial_hole_sensor0 0.01 +module_L4t_halfmodule_axial_slot_sensor0 0.01 +module_L4t_halfmodule_stereo_hole_sensor0 0.01 +module_L4t_halfmodule_stereo_slot_sensor0 0.01 +module_L5t_halfmodule_axial_hole_sensor0 0.01 +module_L5t_halfmodule_axial_slot_sensor0 0.01 +module_L5t_halfmodule_stereo_hole_sensor0 0.01 +module_L5t_halfmodule_stereo_slot_sensor0 0.01 +module_L6t_halfmodule_axial_hole_sensor0 0.01 +module_L6t_halfmodule_axial_slot_sensor0 0.01 +module_L6t_halfmodule_stereo_hole_sensor0 0.01 +module_L6t_halfmodule_stereo_slot_sensor0 0.01 diff --git a/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/exampleSmearing-0pt0mm.txt b/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/exampleSmearing-0pt0mm.txt new file mode 100644 index 000000000..0ee5ea79a --- /dev/null +++ b/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/exampleSmearing-0pt0mm.txt @@ -0,0 +1,36 @@ +module_L1b_halfmodule_axial_sensor0 0.0 +module_L1b_halfmodule_stereo_sensor0 0.0 +module_L2b_halfmodule_axial_sensor0 0.0 +module_L2b_halfmodule_stereo_sensor0 0.0 +module_L3b_halfmodule_axial_sensor0 0.0 +module_L3b_halfmodule_stereo_sensor0 0.0 +module_L4b_halfmodule_axial_hole_sensor0 0.0 +module_L4b_halfmodule_axial_slot_sensor0 0.0 +module_L4b_halfmodule_stereo_hole_sensor0 0.0 +module_L4b_halfmodule_stereo_slot_sensor0 0.0 +module_L5b_halfmodule_axial_hole_sensor0 0.0 +module_L5b_halfmodule_axial_slot_sensor0 0.0 +module_L5b_halfmodule_stereo_hole_sensor0 0.0 +module_L5b_halfmodule_stereo_slot_sensor0 0.0 +module_L6b_halfmodule_axial_hole_sensor0 0.0 +module_L6b_halfmodule_axial_slot_sensor0 0.0 +module_L6b_halfmodule_stereo_hole_sensor0 0.0 +module_L6b_halfmodule_stereo_slot_sensor0 0.0 +module_L1t_halfmodule_axial_sensor0 0.0 +module_L1t_halfmodule_stereo_sensor0 0.0 +module_L2t_halfmodule_axial_sensor0 0.0 +module_L2t_halfmodule_stereo_sensor0 0.0 +module_L3t_halfmodule_axial_sensor0 0.0 +module_L3t_halfmodule_stereo_sensor0 0.0 +module_L4t_halfmodule_axial_hole_sensor0 0.0 +module_L4t_halfmodule_axial_slot_sensor0 0.0 +module_L4t_halfmodule_stereo_hole_sensor0 0.0 +module_L4t_halfmodule_stereo_slot_sensor0 0.0 +module_L5t_halfmodule_axial_hole_sensor0 0.0 +module_L5t_halfmodule_axial_slot_sensor0 0.0 +module_L5t_halfmodule_stereo_hole_sensor0 0.0 +module_L5t_halfmodule_stereo_slot_sensor0 0.0 +module_L6t_halfmodule_axial_hole_sensor0 0.0 +module_L6t_halfmodule_axial_slot_sensor0 0.0 +module_L6t_halfmodule_stereo_hole_sensor0 0.0 +module_L6t_halfmodule_stereo_slot_sensor0 0.0 diff --git a/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/exampleSmearing-0pt1mm.txt b/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/exampleSmearing-0pt1mm.txt new file mode 100644 index 000000000..5c794e237 --- /dev/null +++ b/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/exampleSmearing-0pt1mm.txt @@ -0,0 +1,36 @@ +module_L1b_halfmodule_axial_sensor0 0.1 +module_L1b_halfmodule_stereo_sensor0 0.1 +module_L2b_halfmodule_axial_sensor0 0.1 +module_L2b_halfmodule_stereo_sensor0 0.1 +module_L3b_halfmodule_axial_sensor0 0.1 +module_L3b_halfmodule_stereo_sensor0 0.1 +module_L4b_halfmodule_axial_hole_sensor0 0.1 +module_L4b_halfmodule_axial_slot_sensor0 0.1 +module_L4b_halfmodule_stereo_hole_sensor0 0.1 +module_L4b_halfmodule_stereo_slot_sensor0 0.1 +module_L5b_halfmodule_axial_hole_sensor0 0.1 +module_L5b_halfmodule_axial_slot_sensor0 0.1 +module_L5b_halfmodule_stereo_hole_sensor0 0.1 +module_L5b_halfmodule_stereo_slot_sensor0 0.1 +module_L6b_halfmodule_axial_hole_sensor0 0.1 +module_L6b_halfmodule_axial_slot_sensor0 0.1 +module_L6b_halfmodule_stereo_hole_sensor0 0.1 +module_L6b_halfmodule_stereo_slot_sensor0 0.1 +module_L1t_halfmodule_axial_sensor0 0.1 +module_L1t_halfmodule_stereo_sensor0 0.1 +module_L2t_halfmodule_axial_sensor0 0.1 +module_L2t_halfmodule_stereo_sensor0 0.1 +module_L3t_halfmodule_axial_sensor0 0.1 +module_L3t_halfmodule_stereo_sensor0 0.1 +module_L4t_halfmodule_axial_hole_sensor0 0.1 +module_L4t_halfmodule_axial_slot_sensor0 0.1 +module_L4t_halfmodule_stereo_hole_sensor0 0.1 +module_L4t_halfmodule_stereo_slot_sensor0 0.1 +module_L5t_halfmodule_axial_hole_sensor0 0.1 +module_L5t_halfmodule_axial_slot_sensor0 0.1 +module_L5t_halfmodule_stereo_hole_sensor0 0.1 +module_L5t_halfmodule_stereo_slot_sensor0 0.1 +module_L6t_halfmodule_axial_hole_sensor0 0.1 +module_L6t_halfmodule_axial_slot_sensor0 0.1 +module_L6t_halfmodule_stereo_hole_sensor0 0.1 +module_L6t_halfmodule_stereo_slot_sensor0 0.1 diff --git a/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/timeSmearing-2ns-4nsL0.txt b/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/timeSmearing-2ns-4nsL0.txt new file mode 100644 index 000000000..2f82f048c --- /dev/null +++ b/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/timeSmearing-2ns-4nsL0.txt @@ -0,0 +1,36 @@ +module_L1b_halfmodule_axial_sensor0 4.0 +module_L1b_halfmodule_stereo_sensor0 4.0 +module_L2b_halfmodule_axial_sensor0 2.0 +module_L2b_halfmodule_stereo_sensor0 2.0 +module_L3b_halfmodule_axial_sensor0 2.0 +module_L3b_halfmodule_stereo_sensor0 2.0 +module_L4b_halfmodule_axial_hole_sensor0 2.0 +module_L4b_halfmodule_axial_slot_sensor0 2.0 +module_L4b_halfmodule_stereo_hole_sensor0 2.0 +module_L4b_halfmodule_stereo_slot_sensor0 2.0 +module_L5b_halfmodule_axial_hole_sensor0 2.0 +module_L5b_halfmodule_axial_slot_sensor0 2.0 +module_L5b_halfmodule_stereo_hole_sensor0 2.0 +module_L5b_halfmodule_stereo_slot_sensor0 2.0 +module_L6b_halfmodule_axial_hole_sensor0 2.0 +module_L6b_halfmodule_axial_slot_sensor0 2.0 +module_L6b_halfmodule_stereo_hole_sensor0 2.0 +module_L6b_halfmodule_stereo_slot_sensor0 2.0 +module_L1t_halfmodule_axial_sensor0 4.0 +module_L1t_halfmodule_stereo_sensor0 4.0 +module_L2t_halfmodule_axial_sensor0 2.0 +module_L2t_halfmodule_stereo_sensor0 2.0 +module_L3t_halfmodule_axial_sensor0 2.0 +module_L3t_halfmodule_stereo_sensor0 2.0 +module_L4t_halfmodule_axial_hole_sensor0 2.0 +module_L4t_halfmodule_axial_slot_sensor0 2.0 +module_L4t_halfmodule_stereo_hole_sensor0 2.0 +module_L4t_halfmodule_stereo_slot_sensor0 2.0 +module_L5t_halfmodule_axial_hole_sensor0 2.0 +module_L5t_halfmodule_axial_slot_sensor0 2.0 +module_L5t_halfmodule_stereo_hole_sensor0 2.0 +module_L5t_halfmodule_stereo_slot_sensor0 2.0 +module_L6t_halfmodule_axial_hole_sensor0 2.0 +module_L6t_halfmodule_axial_slot_sensor0 2.0 +module_L6t_halfmodule_stereo_hole_sensor0 2.0 +module_L6t_halfmodule_stereo_slot_sensor0 2.0 diff --git a/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/timeSmearing-2ns.txt b/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/timeSmearing-2ns.txt new file mode 100644 index 000000000..836987547 --- /dev/null +++ b/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/timeSmearing-2ns.txt @@ -0,0 +1,36 @@ +module_L1b_halfmodule_axial_sensor0 2.0 +module_L1b_halfmodule_stereo_sensor0 2.0 +module_L2b_halfmodule_axial_sensor0 2.0 +module_L2b_halfmodule_stereo_sensor0 2.0 +module_L3b_halfmodule_axial_sensor0 2.0 +module_L3b_halfmodule_stereo_sensor0 2.0 +module_L4b_halfmodule_axial_hole_sensor0 2.0 +module_L4b_halfmodule_axial_slot_sensor0 2.0 +module_L4b_halfmodule_stereo_hole_sensor0 2.0 +module_L4b_halfmodule_stereo_slot_sensor0 2.0 +module_L5b_halfmodule_axial_hole_sensor0 2.0 +module_L5b_halfmodule_axial_slot_sensor0 2.0 +module_L5b_halfmodule_stereo_hole_sensor0 2.0 +module_L5b_halfmodule_stereo_slot_sensor0 2.0 +module_L6b_halfmodule_axial_hole_sensor0 2.0 +module_L6b_halfmodule_axial_slot_sensor0 2.0 +module_L6b_halfmodule_stereo_hole_sensor0 2.0 +module_L6b_halfmodule_stereo_slot_sensor0 2.0 +module_L1t_halfmodule_axial_sensor0 2.0 +module_L1t_halfmodule_stereo_sensor0 2.0 +module_L2t_halfmodule_axial_sensor0 2.0 +module_L2t_halfmodule_stereo_sensor0 2.0 +module_L3t_halfmodule_axial_sensor0 2.0 +module_L3t_halfmodule_stereo_sensor0 2.0 +module_L4t_halfmodule_axial_hole_sensor0 2.0 +module_L4t_halfmodule_axial_slot_sensor0 2.0 +module_L4t_halfmodule_stereo_hole_sensor0 2.0 +module_L4t_halfmodule_stereo_slot_sensor0 2.0 +module_L5t_halfmodule_axial_hole_sensor0 2.0 +module_L5t_halfmodule_axial_slot_sensor0 2.0 +module_L5t_halfmodule_stereo_hole_sensor0 2.0 +module_L5t_halfmodule_stereo_slot_sensor0 2.0 +module_L6t_halfmodule_axial_hole_sensor0 2.0 +module_L6t_halfmodule_axial_slot_sensor0 2.0 +module_L6t_halfmodule_stereo_hole_sensor0 2.0 +module_L6t_halfmodule_stereo_slot_sensor0 2.0 diff --git a/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/timeSmearing-5ns.txt b/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/timeSmearing-5ns.txt new file mode 100644 index 000000000..3727b36bc --- /dev/null +++ b/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/timeSmearing-5ns.txt @@ -0,0 +1,36 @@ +module_L1b_halfmodule_axial_sensor0 5.0 +module_L1b_halfmodule_stereo_sensor0 5.0 +module_L2b_halfmodule_axial_sensor0 5.0 +module_L2b_halfmodule_stereo_sensor0 5.0 +module_L3b_halfmodule_axial_sensor0 5.0 +module_L3b_halfmodule_stereo_sensor0 5.0 +module_L4b_halfmodule_axial_hole_sensor0 5.0 +module_L4b_halfmodule_axial_slot_sensor0 5.0 +module_L4b_halfmodule_stereo_hole_sensor0 5.0 +module_L4b_halfmodule_stereo_slot_sensor0 5.0 +module_L5b_halfmodule_axial_hole_sensor0 5.0 +module_L5b_halfmodule_axial_slot_sensor0 5.0 +module_L5b_halfmodule_stereo_hole_sensor0 5.0 +module_L5b_halfmodule_stereo_slot_sensor0 5.0 +module_L6b_halfmodule_axial_hole_sensor0 5.0 +module_L6b_halfmodule_axial_slot_sensor0 5.0 +module_L6b_halfmodule_stereo_hole_sensor0 5.0 +module_L6b_halfmodule_stereo_slot_sensor0 5.0 +module_L1t_halfmodule_axial_sensor0 5.0 +module_L1t_halfmodule_stereo_sensor0 5.0 +module_L2t_halfmodule_axial_sensor0 5.0 +module_L2t_halfmodule_stereo_sensor0 5.0 +module_L3t_halfmodule_axial_sensor0 5.0 +module_L3t_halfmodule_stereo_sensor0 5.0 +module_L4t_halfmodule_axial_hole_sensor0 5.0 +module_L4t_halfmodule_axial_slot_sensor0 5.0 +module_L4t_halfmodule_stereo_hole_sensor0 5.0 +module_L4t_halfmodule_stereo_slot_sensor0 5.0 +module_L5t_halfmodule_axial_hole_sensor0 5.0 +module_L5t_halfmodule_axial_slot_sensor0 5.0 +module_L5t_halfmodule_stereo_hole_sensor0 5.0 +module_L5t_halfmodule_stereo_slot_sensor0 5.0 +module_L6t_halfmodule_axial_hole_sensor0 5.0 +module_L6t_halfmodule_axial_slot_sensor0 5.0 +module_L6t_halfmodule_stereo_hole_sensor0 5.0 +module_L6t_halfmodule_stereo_slot_sensor0 5.0 diff --git a/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/timeSmearing-almost-zero.txt b/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/timeSmearing-almost-zero.txt new file mode 100644 index 000000000..bfe6e9557 --- /dev/null +++ b/tracking/src/main/resources/org/hps/recon/tracking/svtTimeAndPositionSmearing/timeSmearing-almost-zero.txt @@ -0,0 +1,36 @@ +module_L1b_halfmodule_axial_sensor0 0.00001 +module_L1b_halfmodule_stereo_sensor0 0.00001 +module_L2b_halfmodule_axial_sensor0 0.00001 +module_L2b_halfmodule_stereo_sensor0 0.00001 +module_L3b_halfmodule_axial_sensor0 0.00001 +module_L3b_halfmodule_stereo_sensor0 0.00001 +module_L4b_halfmodule_axial_hole_sensor0 0.00001 +module_L4b_halfmodule_axial_slot_sensor0 0.00001 +module_L4b_halfmodule_stereo_hole_sensor0 0.00001 +module_L4b_halfmodule_stereo_slot_sensor0 0.00001 +module_L5b_halfmodule_axial_hole_sensor0 0.00001 +module_L5b_halfmodule_axial_slot_sensor0 0.00001 +module_L5b_halfmodule_stereo_hole_sensor0 0.00001 +module_L5b_halfmodule_stereo_slot_sensor0 0.00001 +module_L6b_halfmodule_axial_hole_sensor0 0.00001 +module_L6b_halfmodule_axial_slot_sensor0 0.00001 +module_L6b_halfmodule_stereo_hole_sensor0 0.00001 +module_L6b_halfmodule_stereo_slot_sensor0 0.00001 +module_L1t_halfmodule_axial_sensor0 0.00001 +module_L1t_halfmodule_stereo_sensor0 0.00001 +module_L2t_halfmodule_axial_sensor0 0.00001 +module_L2t_halfmodule_stereo_sensor0 0.00001 +module_L3t_halfmodule_axial_sensor0 0.00001 +module_L3t_halfmodule_stereo_sensor0 0.00001 +module_L4t_halfmodule_axial_hole_sensor0 0.00001 +module_L4t_halfmodule_axial_slot_sensor0 0.00001 +module_L4t_halfmodule_stereo_hole_sensor0 0.00001 +module_L4t_halfmodule_stereo_slot_sensor0 0.00001 +module_L5t_halfmodule_axial_hole_sensor0 0.00001 +module_L5t_halfmodule_axial_slot_sensor0 0.00001 +module_L5t_halfmodule_stereo_hole_sensor0 0.00001 +module_L5t_halfmodule_stereo_slot_sensor0 0.00001 +module_L6t_halfmodule_axial_hole_sensor0 0.00001 +module_L6t_halfmodule_axial_slot_sensor0 0.00001 +module_L6t_halfmodule_stereo_hole_sensor0 0.00001 +module_L6t_halfmodule_stereo_slot_sensor0 0.00001