Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Standard Alignment Steering Files #973

Open
tomeichlersmith opened this issue Apr 5, 2023 · 2 comments
Open

Standard Alignment Steering Files #973

tomeichlersmith opened this issue Apr 5, 2023 · 2 comments

Comments

@tomeichlersmith
Copy link
Collaborator

We should put the standard alignment steering files along with other standard steering files so we can all share and run the same ones.

Below, I have a "template" one where many of the SimpleGBLTrajAliDriver parameters are required to be passed on the command line (which is helpful in the hps-mc example to allow for the job to define them).

https://github.com/JeffersonLab/hps-mc/blob/master/examples/alignment/tracking/tracking_kf_alignment.lcsim

@cbravo135 @pbutti @sarahgaiser let's try to unify our steering files, post what you've been using here!

@tomeichlersmith
Copy link
Collaborator Author

https://github.com/Shoobx/xmldiff might be of use to us as we compare xml files.

@tomeichlersmith
Copy link
Collaborator Author

Notes

One-stop-shop to get everything you need for alignment.

  • need vertexing (for track+cluster matching) to get EoP plots
    • maybe separate out track+cluster matching from vertexing? @omar-moreno
    • EoP plots work on /sdf/group/hps/users/bravo/run/ali21/alignmentDriver_gblplots_new.lcsim
  • chi2 of GBL fit is different from the KF fit
    • relation tables necessary to figure out whats happening
  • put SimpleGBLTrajAliDriver as late as possible so it can have all the information
  • add lcio output driver at the end so we can write out refitted tracks and relation tables if desired
  • possibly expand GBLOutputDriver to multiple collections so that each collection can have its own directory for each one
  • dynamic ones: nHits, min/max momentum, phi cut,

copy of steering file to edit...

<?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">
    <!-- 
      Steering file for running KF tracking and mille alignment
      created:  Nov 2022
      @author Tom Eichlersmith <[email protected]>
      @author Cam Bravo <[email protected]>
      @author PF <[email protected]>
    -->
    <execute>
      
      <!-- Enable the following if re-processing lcio files -->
      <driver name="PreCleanupDriver"/>      
      
      <driver name="RfFitter"/>
      <driver name="EcalRunningPedestal"/> 
      <driver name="EcalRawConverter" />
      <driver name="EcalTimeCorrection"/> 
      <driver name="ReconClusterer" /> 
      <driver name="CopyCluster" /> 
      
      <!-- 
        SVT reconstruction drivers 
    
        SensorSetup associates hits with sensors without having to re-decode them.
        TrackerHitDriver assocites clusters with tracker modules without having to re-cluster.
      -->
      <driver name="SensorSetup"/>
      <driver name="TrackerHitDriver"/> 

      <!--
        Kalman tracking
      -->
      <driver name="KalmanPatRecDriver"/>
      <driver name="KalmanKinkFitDriver"/>

      <!--
        Use milli+GBL to prepare alignment data file for pede
      -->
      <driver name="SimpleGBLTrajAliDriverKF"/>
            
      <!-- it has to be before GBLOutputDriver(s) -->
      <driver name="MultEvtVtx" />

      <!--
      Write out histograms
      <driver name="GBLOutputDriverKF"/>
      -->
      <driver name="GBLOutputDriver" />
      
      <driver name="CleanupDriver"/>
    </execute>    
    <drivers>    
        <driver name="PreCleanupDriver" type="org.hps.analysis.dataquality.ReadoutCleanupDriver">
          <!--Clean collections-->
          
          <collectionNames>KFTrackData KFTrackDataRelations KalmanFullTracks KalmanFullTracksToMCParticleRelations KallmanFullTracksToTruthTrackRelations KalmanFullTracksTruth EcalCalHits EcalClusters EcalClustersCorr FinalStateParticles UnconstrainedV0Candidates UnconstrainedV0Vertices TargetConstrainedV0Candidates TargetConstrainedV0Vertices BeamspotConstrainedV0Candidates BeamspotConstrainedV0Vertices GBLKinkData GBLKinkDataRelations MatchedToGBLTrackRelations HelicalTrackHits HelicalTrackHitRelations MatchedTracks GBLTracks MatchedToGBLTrackRelations RotatedHelicalTrackHits RotatedHelicalTrackHitRelations TrackData TrackDataRelations TrackResiduals TrackResidualsRelations RotatedHelicalTrackHits RotatedHelicalTrackHitRelations StripClusterer_SiTrackerHitStrip1D </collectionNames>

        </driver>
        
        <driver name="RfFitter" type="org.hps.evio.RfFitterDriver"/>       

        <!-- 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">
            <!-- ecalCollectionName>EcalCalHits</ecalCollectionName -->
            <!-- fixShapeParameter>true</fixShapeParameter -->
            <!-- globalFixedPulseWidth>2.4</globalFixedPulseWidth -->
        </driver> 
        <driver name="EcalTimeCorrection" type="org.hps.recon.ecal.EcalTimeCorrectionDriver"/> 
        <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>
        
        <!-- SVT reconstruction drivers -->
        <driver name="SensorSetup" type="org.hps.recon.tracking.SensorSetup" >
          <readoutCollections>SVTRawTrackerHits</readoutCollections>
          <fittedHitCollection>SVTFittedRawTrackerHits</fittedHitCollection>
        </driver>
        
        <driver name="TrackerHitDriver" type="org.hps.recon.tracking.DataTrackerHitDriver">
            <neighborDeltaT>8.0</neighborDeltaT>
            <saveMonsterEvents>false</saveMonsterEvents>
            <thresholdMonsterEvents>200</thresholdMonsterEvents>
            <debug>false</debug>
        </driver>

        <driver name="GBLOutputDriver" type="org.hps.recon.tracking.gbl.GBLOutputDriver">
          <nHits>6</nHits> <!-- minimum hits -->
          <outputPlotsFilename>${outputFile}_gblplots.root</outputPlotsFilename>
          <bsZ>-7.5</bsZ>
          <trackCollectionName>GBLTracks</trackCollectionName>

          <!--the KF tracks refitted as GBL don't have kinks?? -->
          <doGBLkinks>false</doGBLkinks> 
          <dataRelationCollection>""</dataRelationCollection>

          <chi2Cut>9999</chi2Cut>
        </driver>

        <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"/>

        <driver name="MultEvtVtx" type="org.hps.recon.vertexing.MultipleEventsVertexingDriver">
          <ntrks>100</ntrks>
        </driver>

        <driver name="KalmanPatRecDriver" type="org.hps.recon.tracking.kalman.KalmanPatRecDriver">
          <!--<doDebugPlots>false</doDebugPlots>-->
          <!-- <siHitsLimit>50</siHitsLimit> -->
          <seedCompThr>0.05</seedCompThr>
          <addResiduals>true</addResiduals>
          <verbose>true</verbose>
        </driver>
        
        <!-- do front-back kink plots -->
        <driver name="KalmanKinkFitDriver" type="org.hps.recon.tracking.kalman.KalmanKinkFitDriver">
        </driver>

        <!-- Form trajectories for MPII using the GBL algorithm -->
        <driver name="SimpleGBLTrajAliDriverKF" 
                type="org.hps.recon.tracking.gbl.SimpleGBLTrajAliDriver" >

          <!-- apply the track quality cuts -->
          <enableAlignmentCuts>${enableAlignmentCuts}</enableAlignmentCuts> 
          <doCOMAlignment>${doCOMAlignment}</doCOMAlignment>
          <minMom>${minMom}</minMom> 
          <maxMom>${maxMom}</maxMom> 
          <nHitsCut>${nHitsCut}</nHitsCut> <!-- minimum number of hits to be included -->

          <debugAlignmentDs>${debugAlignmentDs}</debugAlignmentDs>

          <correctTrack>${correctTrack}</correctTrack> <!-- refit with GBL before doing Mille -->
          <includeNoHitScatters>${includeNoHitScatters}</includeNoHitScatters>
          <gblRefitIterations>${gblRefitIterations}</gblRefitIterations>
          <storeTrackStates>${storeTrackStates}</storeTrackStates>
          <compositeAlign>${compositeAlign}</compositeAlign>

          <momC>${momC}</momC> <!-- momentum constraint [GeV] -->
          <constrainedFit>${constrainedFit}</constrainedFit> <!-- apply momentum constraint -->

          <constrainedBSFit>${constrainedBSFit}</constrainedBSFit> <!-- apply beam spot constraint -->
          <bsZ>${bsZ}</bsZ> <!-- beam spot z-coordinate, used to calculate beam spot -->

          <trackSide>${trackSide}</trackSide> <!--hole-->

          <writeMilleBinary>true</writeMilleBinary>
          <milleBinaryFileName>${outputFile}.bin</milleBinaryFileName>
          <!-- can't use numbers in variable substition from commandline defs -->
          <writeMilleChi2Cut>${writeMilleChisqCut}</writeMilleChi2Cut>  <!-- max Chi2/Ndf to be included -->

          <enableStandardCuts>${enableStandardCuts}</enableStandardCuts>
          <maxTrackChisq4hits>${maxTrackChisqFourHits}</maxTrackChisq4hits>
          <maxTrackChisq5hits>${maxTrackChisqFiveHits}</maxTrackChisq5hits>
          <maxTrackChisq6hits>${maxTrackChisqSixHits}</maxTrackChisq6hits>

          <inputCollectionName>KalmanFullTracks</inputCollectionName>
        </driver> 
        
        <driver name="GBLOutputDriverKF" type="org.hps.recon.tracking.gbl.GBLOutputDriver">
          <nHits>0</nHits> <!-- minimum hits -->
          <outputPlotsFilename>${outputFile}_gblplots_from_kf.root</outputPlotsFilename>
          <bsZ>-7.5</bsZ>
          <trackCollectionName>KalmanFullTracks</trackCollectionName>
          <trackResidualsRelColName>TrackResidualsKFtoGBLRelations</trackResidualsRelColName>

          <!-- need to find relation collection for Kalma -->
          <doGBLkinks>false</doGBLkinks>
          <dataRelationCollection>""</dataRelationCollection>

          <chi2Cut>9999</chi2Cut>
        </driver>
        
    </drivers>
</lcsim>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant