Skip to content

Commit

Permalink
Merge pull request #1075 from JeffersonLab/iss1050
Browse files Browse the repository at this point in the history
Iss1050:  svt hit position and time smearing for MC
  • Loading branch information
bloodyyugo authored Jan 24, 2025
2 parents 625633e + 4e243b6 commit 630370f
Show file tree
Hide file tree
Showing 15 changed files with 1,025 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,205 @@
<?xml version="1.0" encoding="UTF-8"?>
<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
<!--
@brief Steering file that will be used for MC reconstruction of
the 2016 Engineering Run data including strip hit killing
and svt cluster position and time smearing.
@author <a href="mailto:[email protected]">Omar Moreno</a>
@author <a href="mailto:[email protected]">Norman Graf</a>
@author <a href="mailto:[email protected]">Matt Graham</a>
-->
<execute>

<!--RF driver-->
<driver name="RfFitter"/>
<driver name="PreCleanupDriver"/>
<!-- Ecal reconstruction drivers -->
<driver name="EcalRunningPedestal"/>
<driver name="EcalRawConverter" />
<driver name="HitTimeSmear"/>
<driver name="ReconClusterer" />
<driver name="CopyCluster" />
<!-- SVT reconstruction drivers -->
<driver name="RawTrackerHitSensorSetup"/>
<driver name="RawTrackerHitFitterDriver" />
<driver name="RawHitTimeSmearer"/>
<driver name="TrackerHitDriver"/>
<driver name="StripHitKiller"/>
<driver name="StripHitSmearer"/>
<!-- KF tracking -->
<driver name="KalmanPatRecDriver"/>
<driver name="ReconParticleDriver_Kalman" />
<!-- <driver name="LCIOWriter"/> -->
<!-- uncomment the next 3 drivers to save some diagnostic plots -->
<!-- <driver name="KFTrackingReconPlots"/>-->
<driver name="KFOutputDriver"/>
<!-- <driver name="SVTHitEfficiency"/> -->
<!-- <driver name="AidaSaveDriver"/> -->
<driver name="CleanupDriver"/>
</execute>
<drivers>
<driver name="SVTHitEfficiency" type="org.hps.recon.tracking.kalman.SvtHitEfficiencyKalman">
<maxLayer>12</maxLayer>
<useTrkTimeCut>false</useTrkTimeCut>
<trkTimeCut>10.0</trkTimeCut>
<trkTimeMean>15.0</trkTimeMean>
<debug>false</debug>
</driver>

<driver name="RfFitter" type="org.hps.evio.RfFitterDriver"/>
<driver name="PreCleanupDriver" type="org.hps.analysis.dataquality.ReadoutCleanupDriver">
<collectionNames>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
</collectionNames>
</driver>

<!-- Ecal reconstruction drivers -->
<driver name="EcalRunningPedestal" type="org.hps.recon.ecal.EcalRunningPedestalDriver">
<logLevel>CONFIG</logLevel>
</driver>

<!--<driver name="EcalRawConverter" type="org.hps.recon.ecal.EcalRawConverter2Driver">
</driver>-->

<driver name="EcalRawConverter" type="org.hps.recon.ecal.EcalRawConverterDriver">
<ecalCollectionName>EcalCalHits</ecalCollectionName>
<fixShapeParameter>true</fixShapeParameter>
<globalFixedPulseWidth>2.4</globalFixedPulseWidth>
</driver>

<driver name="HitTimeSmear" type="org.hps.recon.ecal.cluster.HitTMCSmearDriver">
</driver>

<driver name="ReconClusterer" type="org.hps.recon.ecal.cluster.ReconClusterDriver">
<logLevel>WARNING</logLevel>
<outputClusterCollectionName>EcalClusters</outputClusterCollectionName>
</driver>
<driver name="CopyCluster" type="org.hps.recon.ecal.cluster.CopyClusterCollectionDriver">
<inputCollectionName>EcalClusters</inputCollectionName>
<outputCollectionName>EcalClustersCorr</outputCollectionName>
</driver>

<driver name="StripHitKiller" type="org.hps.recon.tracking.StripHitKiller">
<!-- <ratioFiles>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_L6b_axial_hole.txt pass4b-KF-hps2016_L6b_axial_slot.txt pass4b-KF-hps2016_L6b_stereo_hole.txt pass4b-KF-hps2016_L6b_stereo_slot.txt pass4b-KF-hps2016_L6t_axial_hole.txt pass4b-KF-hps2016_L6t_axial_slot.txt pass4b-KF-hps2016_L6t_stereo_hole.txt pass4b-KF-hps2016_L6t_stereo_slot.txt</ratioFiles> -->
<ratioFiles>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</ratioFiles>
<debug>false</debug>
</driver>

<driver name="StripHitSmearer" type="org.hps.recon.tracking.StripHitSmearer">
<smearPositionFile>exampleSmearing-0pt008mm.txt</smearPositionFile>
<debug>false</debug>
</driver>

<driver name="RawHitTimeSmearer" type="org.hps.recon.tracking.RawHitTimeSmearer">
<smearTimeFile>timeSmearing-2ns-4nsL0.txt</smearTimeFile>
<debug>false</debug>
</driver>


<!-- SVT reconstruction drivers -->
<driver name="RawTrackerHitSensorSetup" type="org.lcsim.recon.tracking.digitization.sisim.config.RawTrackerHitSensorSetup">
<readoutCollections>SVTRawTrackerHits</readoutCollections>
</driver>
<driver name="RawTrackerHitFitterDriver" type="org.hps.recon.tracking.RawTrackerHitFitterDriver">
<fitAlgorithm>Pileup</fitAlgorithm>
<!--use this to correct for trigger time in MC instead of subtractTriggerTime-->
<useTimestamps>true</useTimestamps>
<!--offset to get times centered at 0 after timestamp correction-->
<tsCorrectionScale>171.</tsCorrectionScale>
<!--correct for the SVT fit time offset...this should be on if <useTimingConditions> is turned on in readout-->
<correctTimeOffset>true</correctTimeOffset>
<!--per sensor shift...set false becasue it's not in readout sim-->
<correctT0Shift>false</correctT0Shift>
<!--use truth time for MC??? typically not used-->
<useTruthTime>false</useTruthTime>
<!--time of flight corrections-->
<subtractTOF>true</subtractTOF>
<!--set this false for MC, true for data-->
<subtractTriggerTime>false</subtractTriggerTime>
<!--per-strip timing correction from database...this should be on i f <useTimingConditions> is turned on in readout -->
<correctChanT0>true</correctChanT0>
<debug>false</debug>
</driver>
<driver name="TrackerHitDriver" type="org.hps.recon.tracking.DataTrackerHitDriver">
<neighborDeltaT>24.0</neighborDeltaT>
</driver>

<driver name="KalmanPatRecDriver" type="org.hps.recon.tracking.kalman.KalmanPatRecDriver">
<addResiduals>true</addResiduals>
<numEvtPlots>40</numEvtPlots>
<targetPosition>-4.3</targetPosition>
<addTrackStateAtTarget>true</addTrackStateAtTarget>
<verbose>false</verbose>
</driver>
<!--
<driver name="KalmanPatRecDriver" type="org.hps.recon.tracking.kalman.KalmanPatRecDriver">
<verbose>false</verbose>
</driver>
-->
<driver name="ReconParticleDriver_Kalman" type="org.hps.recon.particle.HpsReconParticleDriver" >
<ecalClusterCollectionName>EcalClustersCorr</ecalClusterCollectionName>
<trackCollectionNames>KalmanFullTracks</trackCollectionNames>
<matcherTrackCollectionName>KalmanFullTracks</matcherTrackCollectionName>
<finalStateParticlesColName>FinalStateParticles_KF</finalStateParticlesColName>
<unconstrainedV0CandidatesColName>UnconstrainedV0Candidates_KF</unconstrainedV0CandidatesColName>
<unconstrainedV0VerticesColName>UnconstrainedV0Vertices_KF</unconstrainedV0VerticesColName>
<beamConV0CandidatesColName>BeamspotConstrainedV0Candidates_KF</beamConV0CandidatesColName>
<beamConV0VerticesColName>BeamspotConstrainedV0Vertices_KF</beamConV0VerticesColName>
<targetConV0CandidatesColName>TargetConstrainedV0Candidates_KF</targetConV0CandidatesColName>
<targetConV0VerticesColName>TargetConstrainedV0Vertices_KF</targetConV0VerticesColName>
<includeUnmatchedTracksInFSP>true</includeUnmatchedTracksInFSP>
<useInternalVertexXYPositions>false</useInternalVertexXYPositions>
<beamPositionX>-0.224</beamPositionX>
<beamSigmaX>0.275</beamSigmaX>
<beamPositionY>-0.08</beamPositionY>
<beamSigmaY>0.060</beamSigmaY>
<beamPositionZ>-4.3</beamPositionZ>
<maxElectronP>2.8</maxElectronP>
<maxVertexP>2.8</maxVertexP>
<minVertexChisqProb>0.0</minVertexChisqProb>
<maxVertexClusterDt>5.0</maxVertexClusterDt>
<maxMatchDt>10</maxMatchDt>
<trackClusterTimeOffset>36.8</trackClusterTimeOffset>
<isMC>true</isMC>
<trackClusterMatchPlots>true</trackClusterMatchPlots>
<trackClusterMatcherAlgo>TrackClusterMatcherMinDistance</trackClusterMatcherAlgo>
</driver>


<driver name="KFTrackingReconPlots" type="org.hps.monitoring.drivers.trackrecon.KFTrackingReconPlots"/>

<driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver">
<outputFilePath>${outputFile}.slcio</outputFilePath>
</driver>
<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> -->

<driver name="KFOutputDriver" type="org.hps.recon.tracking.kalman.KFOutputDriver">
<outputPlotsFilename>${outputFile}.root</outputPlotsFilename>
<debug>false</debug>
<bsZ>0.0</bsZ>
<!--<trackCollectionName>GBLTracks</trackCollectionName> -->
<trackCollectionName>KalmanFullTracks</trackCollectionName>
<minMom>0.1</minMom>
<maxMom>4.8</maxMom>
<chi2Cut>9999</chi2Cut>
<doKFresiduals>true</doKFresiduals>
<useParticles>true</useParticles>
</driver>



</drivers>
</lcsim>
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand All @@ -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);



Expand Down Expand Up @@ -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);
}
*/



Expand Down Expand Up @@ -598,7 +600,7 @@ private void doBasicKFtrack(Track trk, Map<HpsSiSensor, TrackerHit> 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));
Expand Down Expand Up @@ -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);

}

Expand Down Expand Up @@ -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);
Expand Down
Loading

0 comments on commit 630370f

Please sign in to comment.