This page describes the job options and ntuple output of an ATLAS HLT Beamline Algorithm. The algorithm was originally designed for the CDF experiment at Fermilab and was ported to ATLAS in 2008 by Alessandro Cerri. Over the summer of 2008 the algorithm was debugged, and an output ntuple was created for it.

For a brief overview of how the fitter works and some assessment of its performance, please see the following attached document:

The beamline algorithm is divided into four subalgorithms: FakeHLTTracks, HLTBeam, HLTBeamLineFitterFex and CBNTAA_HLTBeam. The FakeHLTTracks subalgorithm generates fake track information that can be used to test the performance of the other subalgorithms. It is a "toy" Monte Carlo in the sense that it presently does not simulate the detector's track reconstruction algorithms. It sets all error values on the track parameters to 0 and the chi-squared value for all the tracks to 1. The HLTBeam subalgorithm performs all of the calculations for the fitter. HLTBeamLineFitterFex is a wrapper that reads in the track information from FakeHLTTracks, calls methods from HLTBeam to perform the fit, and sends all of the fit results to StoreGate. Finally, the CBNTAA subalgorithm retrieves the fitter output from StoreGate and stores the output in an ntuple as described below.

* job options: A job options file that works for release 14.2.10.7

As you can see at the end of the attached job options file, you can change the parameters in two of the subalgorithms, FakeHLTTracks and HLTBeamLineFitterFex. The coordinates of the average vertex position for the fake tracks follow Gaussian distributions. You can set the average values x0, y0, and z0 (in millimeters) as well as the variances sxx, syy and the standard deviation Z0Sigma. The parameters dxdz and dydz (dimensionless ratios) control the tilt of the beam in the x and y directions. The transverse momentum of the tracks follows an exponential distribution with minimum value MinimumPt and decay constant PtDecay (should be less than 0 ). The pseudorapidity of the tracks follows a uniform distribution between - MaximumEta and MaximumEta.

The angular direction of the tracks phi0 is generated following a uniform distribution between 0 and 2 pi. The program then computes the impact parameter of the fake tracks by using the formula y*cos(phi0) - x* sin(phi0).

You can simulate "ghost tracks" by designating a certain fraction of the total tracks generated, FlatFraction, to have a flat distribution of d0 versus phi0; d0 will be uniformly distributed between - MaximumD0 and MaximumD0.

The HLTBeamLineFitterFex class contains parameters the following that affect the performance of the beamline fitter. Many of the default values come from the CDF experiment:

- NIter: The number of fit iterations (see general comments section). Default value = 5
- MinimumTrackPt: Minimum transverse momentum needed for a track to be used for fit. Default value = 2.0
- MaximumTrackAbsEta: Maximum pseudo-rapidity magnitude needed for a track to be used for fit. Default value = 2.0
- MinimumTrackZ0: Minimum z-coordinate of vertex needed for a track to be used for fit. Default value = -20.
- MaximumTrackZ0: Maximum z-coordinate of vertex needed for a track to be used for fit. Default value = 20.
- NZBins: Number of phi sections used to divide the detector into wedges. Default value = 6
- NPhiBins: Number of phi sections used to divide the detector into wedges. Default value = 12
- MaxTracks: Number of tracks needed to accumulate in a specified number of wedges (MinWedges) before fit is performed. Default value = 100
- MinWedges Minimum number of wedges with more than MaxTracks for a fit to be performed
- NChanPhi: Number of channels in the monitoring histogram for phi0. Default value = 24
- NChanD: Number of channels in the monitoring histogram for d0. Default value = 30
- HistStep: Step size of d0 monitoring histogram (in mm). Default value = 0.0333
- WMinTotPairs: Minimum total number of track pairs before the width fit function is called. Default value = 50000
- WMaxTrk: Maximum number of tracks to store per wedge that will be used to form track pairs for width fit. Default value =10
- WMinPairs: Minimum pairs needed for width to be computed for a given wedge. Default value = 100
- WZMinPairs Minimum pairs needed for width to be computed for a given z segment. Default value = 1000
- EvtMaxTracks: As far as I can tell this parameter is not used. Default value = 10
- BWFDMax: Maximum impact parameter for a track to be used in the width fit. Default value = 0.2
- BWFPTMin: Minimum transverse momentum for a track to be used for the width fit. Default value = 1500
- BWFChiMax: Maximum chi-squared for a track to be used for the width fit. Default value = 15.
- BWFDelPhiMin: Minimum angle separation for a track pair to be used for beam width fit. Default value = .02
- NPhi: As far as I can tell this should be equivalent to NPhiBins. Default value = 12
- NZ: As far as I can tell this should be equivalent to NZBins. Default value = 6
- XInit: Initial default x-coordinate of primary vertex position (a guess, used for the first dcorr cut). Default value = 0.
- YInit: Initial default y-coordinate of primary vertex position (a guess, used for the first dcorr cut). Default value = 0.
- MinTracks: Minimum number of tracks in a wedge for a position fit to be computed for that wedge. Default value = 100
- ChiMax: Maximum chi-squared value for a track to be used in the beam fit. (Presently not being used). Default value = 25.
- MinDetA: Minimum determinant of the linear system used to calculate beam position in a z segment. Default value = 1E-15
- MinDetB: Minimum determinant for the linear system used to calculate 3D beam position. Default value = 1E-15
- DCorrCutLow1: A track must have an impact parameter of at least this value to be used in a position fit. The impact parameter is initially computed using XInit as the origin, and in subsequent iterations (DCorrCutLow2, etc) the impact parameter is computed using the fitted beam position from the previous iteration. For default values, see the attached job options file
- DCorrCutHigh1: A track must have an impact parameter of at most this value to be used in a position fit. The impact parameter is initially computed using XInit as the origin, and in subsequent iterations (DCorrCutHigh2, etc) the impact parameter is computed using the fitted beam position from the previous iteration. For default values, see the attached job options file

The fitter output is organized into five groups: Wedge position fit (prefixed by PhiWedgePos), Z segment position fit (prefixed by ZsegPos), 3D position fit (prefixed by Pos3D), beam width fit (prefixed by Width), and fake track information (prefixed by Fake).

The fitter sends output to the ntuple branches each event. For the fake track information, one value is stored per branch per event, and this value remains the same for all of the events in the simulation.

For the 3D position fit information, one value is stored per branch per event. If no fit has yet been performed, all the branches will store a value of 0. If a fit is computed in a given event, the branches (listed below) will be filled with the information for that event

- Pos3DX: The x-coordinate of the vertex position from the 3D fit
- Pos3DXVariance: The estimated variance of Pos3DX due to statistical uncertainty
- Pos3DY: The y-coordinate of the vertex position from the 3D fit
- Pos3DYVariance: The estimated variance of Pos3DY due to statistical uncertainty
- Pos3DY: The y-coordinate of the vertex position from the 3D fit
- Pos3DYVariance: The estimated variance of Pos3DY due to statistical uncertainty
- Pos3DDxdz: The fitted value of the tilt of the beam in the x direction
- Pos3DDxdzVariance: The estimated variance of Pos3DDxdz due to statistical uncertainty
- Pos3DDydz: The fitted value of the tilt of the beam in the y direction
- Pos3DDydzVariance: The estimated variance of Pos3DDydz due to statistical uncertainty
- Pos3DXandDxdzCovariance: The estimated covariance of Pos3DX and Dxdz due to statistical uncertainty
- Pos3DYandDydzCovariance: The estimated covariance of Pos3DY and Dydz due to statistical uncertainty
- Pos3DNewFitFlag: Stores 1 if the fit( ) function has been called for this event, 0 otherwise
- Pos3DFitQualityFlag: Stores 1 if there were sufficient statistics to perform the 3D fit, and 0 otherwise
- Pos3DFitErrorFlag: Stores 1 if the determinant of the linear system used to perform the 3D fit was too small, and 0 otherwise

The only fit results that should be counted for future analysis are those with NewFitFlag = 1, FitQualityFlag = 1, and FitErrorFlag = 0

For the z-segment position fit information, NBinsZ * NIter (by default, 30) values are stored per branch per event: one value for each fit iteration of each z segment. Just as for the 3D case, if no fit has yet been performed, all the branches will store a value of 0. The branches are as follows:

- ZsegPosX: The x-coordinate of the fitted vertex position for a given z-segment (ZsegPosZindex) and for a given iteration (ZsegPosFitIteration)
- ZsegPosXVariance: The estimated variance of ZsegPosX due to statistical uncertainty
- ZsegPosY: The y-coordinate of the fitted vertex position for a given z-segment (ZsegPosZindex) and for a given iteration (ZsegPosFitIteration)
- ZsegPosYVariance: The estimated variance of ZsegPosY due to statistical uncertainty
- ZsegPosXYCovariance: The estimated covariance of the ZsegPosX and ZsegPosY due to statistical uncertainty
- ZsegPosSigma2: The estimated total error on ZsegPosX and ZsegPosY, taking into account track measurement error
- ZsegPosTotalTracks: The number of tracks in a given z segment
- ZsegPosTracksInFit: The number of tracks used in the fit in a given z-segment (ZsegPosZindex) and for a given iteration (ZsegPosFitIteration)
- ZsegPosFitIteration: The number of the fit iteration of this set of values (ranges from 0 to NIter - 1)
- ZsegPosZindex: The index identifying the z-segment to which these values belong
- ZsegPosNewFitFlag: Stores 1 if the fit( ) function has been called for this event, 0 otherwise
- ZsegPosFitQualityFlag: Stores 1 if there were sufficient statistics to perform the fit, and 0 otherwise
- ZsegPosFitErrorFlag: Stores 1 if the determinant of the linear system used to perform the fit was too small, and 0 otherwise

Just as with the 3D position fit, the only fit results that should be counted for future analysis are those with NewFitFlag = 1, FitQualityFlag = 1, and FitErrorFlag = 0.

The branches for the phi wedge fits are essentially the same as the z-segment branches listed above. There is one additional branch, PhiWedgePosPhiIndex, which stores the index identifying the phi wedge to which a given set of values belongs.

As an example, let's say that I wanted to look at the fitted x-coordinates from the second z-segment on the third fit iteration. If the name of the tree in the ntuple is CollectionTree (the default name), then I would use the following ROOT command:

CollectionTree->Draw("ZsegPosX", "ZsegPosZindex == 1 && ZsegPosFitIteration == 2 && ZsegPosNewFitFlag == 1 && ZsegPosFitQualityFlag == 1 && ZsegPosFitErrorFlag == 0")

The branches for the beam width fit are as follows:

- WidthX: The fitted value of the standard deviation of the x-coordinates of the vertex position
- WidthXStdDev: The estimated standard deviation of WidthXStdDev due to statistical uncertainty
- WidthY: The fitted value of the standard deviation of the y-coordinates of the vertex position
- WidthYStdDev: The estimated standard deviation of WidthYStdDev due to statistical uncertainty
- WidthXBivariate: The same as WidthX, except the fit is performed assuming a bivariate normal distribution for WidthX and WidthY, allowing for the computation of the covariance, WidthXYBivariate
- WidthYBivariate: The same as WidthY, except that the fit is performed assuming a bivariate normal distribution for WidthX and WidthY, allowing for the computation of the covariance, WidthXYBivariate
- WidthXYBivariate: The fitted value of the covariance of the x and y coordinates of the vertex position
- WidthNpairs: The number of track pairs used in this width fit
- WidthNewFitFlag: Stores 1 if the width( ) function has been called for this event, 0 otherwise
- WidthFitErrorFlag: Stores 1 if no new width fit has been calculated (even if the width( ) function has been called), and 0 otherwise.

It is **crucial** to make a cut on WidthFitErrorFlag == 0 before viewing these width fit results.

-- NathanielRoth - 20 Aug 2008

I | Attachment | History | Action | Size | Date | Who | Comment |
---|---|---|---|---|---|---|---|

michigan_paper2.pdf | r1 | manage | 163.9 K | 2008-08-21 - 00:04 | NathanielRoth | A brief report on how the fitter works, as well as some preliminary tests of its performance | |

txt | testHLTCosmic_standalone_Nathan3.py.txt | r1 | manage | 33.5 K | 2008-08-20 - 17:51 | NathanielRoth | A job options file for the algorithm that worked for release 14.2.10.7 |

Topic revision: r8 - 2008-09-12 - NathanielRoth

Copyright &© 2008-2021 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.

or Ideas, requests, problems regarding TWiki? use Discourse or Send feedback

or Ideas, requests, problems regarding TWiki? use Discourse or Send feedback