# The SimpleVertexTree class

Complete:

Contents:

## Overview

The class `SWGuideSimpleVertexTree` produces a Root TTree containing the basic information to analyse the reconstructed vertices. As for now, no information of the tracks is included, but this will be added in time.

• Simulated Vertex: Position
• Reconstructed vertex: position, error, total chi^2, the chi^2 probability and number of degrees of freedom, number of used `TransientTracks`

## Reported summary statistics

At the end of the job, some simple statistics are printed:

```  Number of vertices fit: 5000
Mean of Residual distribution X: -1.16979e-05
Mean of Residual distribution Y: 6.54429e-06
Mean of Residual distribution Z: 1.99276e-05
RMS of Residual distribution X:  0.00179476
RMS of Residual distribution Y:  0.00141025
RMS of Residual distribution Z:  0.00141628
Mean of Pull distribution X: -0.00629075
Mean of Pull distribution Y: 0.00160147
Mean of Pull distribution Z: 0.0130681
RMS of Pull distribution X:  1.00777
RMS of Pull distribution Y:  0.994121
RMS of Pull distribution Z:  0.997755
Average chi-square probability: 0.509143
Average normalized chi-square : 0.989101
```

## Using SimpleVertexTree objects

In your reconstruction code, at the beginning, instantiate it:

```  theFile = new TFile("simpleVertexTree.root","RECREATE");
theFile->SetCompressionLevel(2);
theTree = new SimpleVertexTree();
```

An optional name can be given in the constructor, which will be the name of the TTree produced. The default name is `VertexFitter`.

Once you have reconstrcuted the vertex, and found the simulated vertex, the only thing to be done is to call the method fill for each vertex:

`theTree->fill(recVertex, simVertex);`

Another way is to give also the complete vector of `TransientTracks` with which the fitter was called. This might help you to understand why certain features of your vertex fitter, since all the `TransientTracks` will be stored independently:

`theTree->fill(recVertex, tTrackVector, simVertex);`

And at the end of the job, all you have to do at the end of your job is to delete the

```  delete theTree;
delete theFile;
```

The name of the TTree is the name given in the constructor (or the default `VertexFitter`). The name of the histograms is first the name of the TTree, with appended "_ResX", "_PullX", etc...
For the default `VertexFitter`, the list of histograms would be `VertexFitter_ResY`, `VertexFitter_ResZ`, `VertexFitter_PullX`, `VertexFitter_PullY`, `VertexFitter_PullZ`, `VertexFitter_ChiNorm`, `VertexFitter_ChiProb`.

## Analysis output

A simple root analysis is given in the test directory: SimpleVertexAnalysis. It produces several histograms:

• `ResX, ResY, ResZ`: Resolutions
• `PullX, PullY, PullZ`: Pulls
• `ChiNorm, ChiProb`: nomalized chi^2 and the chi^2 probability.
• `RecTrk`: Number of tracks of each vertex
• `weight`: Sum of the weights with which each track has contributed in the fit (Robust fitters may downweigh some of the tracks)
• `SimTrk`: Number of Sim Tracks of the associated Sim Vertex
• `Shared`: Number of shared tracks between the RecVertex and the SimVertex
• `Ratio`: Ratio of shared tracks (shared/nbr Tracks)

The name of each of these plots is appended with the TTree name. (e.g. `ResX_VertexFitter`)

At the beginning, compile the code:

`.L SimpleVertexAnalysis.C++`

Two constructors are provided, one for a single file:

```t=new SimpleVertexAnalysis("simpleVertexTree.root","VertexFitter")=
```

and another for a series of files, of the type result_1.root, result_2.root, etc:

```t=new SimpleVertexAnalysis("result",1,10,"VertexFitter")
```

For the study of the vertex (resolution, pulls, etc), to loop of the events and fill the histograms:

`t->vertexLoop()`

The main results out of the plots can be evaluated using three methods:

• `t->singleGaussianVertexResult()` Fit of the residual and pull plots with a single Gaussian, and printout of the main results.
• `t->doubleGaussianVertexResult()` Fit of the residual and pull plots with two Gaussians (one for the core, the other for the tails, and printout of the main results
• `t->vertexCoverage()` Measurement of the coverage of the residual distributions (50%, 90% and 95% coverage)

To redraw the plots on the two page:

`t->plotVertexResult("pvr_result")`

and finally output the two pages into a ps file (called pvr_result.ps here)

`t->psVertexResult("pvr_result")`

## Review Status

Editor/Reviewer and date Comments
Main.speer - 17 Jul 2006 Page author
JennyWilliams - 10 Apr 2007 general editing

Responsible: Main.speer (Thomas Speer)
Last reviewed by:

Edit | Watch | Print version | History: r4 < r3 < r2 < r1 | Backlinks | Raw View | More topic actions
Topic revision: r4 - 2007-04-11 - JennyWilliams

 Cern Search TWiki Search Google Search CMSPublic All webs
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