Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages  

CalClustersAlg Class Reference

Performs high level energy corrections. More...

#include <CalClustersAlg.h>

Inheritance diagram for CalClustersAlg:

Algorithm List of all members.

Public Methods

 CalClustersAlg (const std::string& name, ISvcLocator* pSvcLocator)
 constructor. More...

virtual ~CalClustersAlg ()
 destructor. More...

StatusCode initialize ()
StatusCode execute ()
StatusCode finalize ()
double Leak (double sum,double elast)
 Leakage corrections with last layer. More...

void Profile (double sum, CsICluster* cl)
 Leakage corrections with profile fitting. More...

Vector Fit_Direction (std::vector<Vector> pos,std::vector<Vector> sigma2,int nlayers)
 Direction reconstruction. More...


Protected Methods

StatusCode retrieve ()

Private Attributes

ICalGeometrySvcm_CalGeo
CalRecLogsm_CalRecLogs
 the log list, the input of the reconstruction. More...

CsIClusterListm_CsIClusterList
 the clusters list, the output of the reconstruction. More...

Midnightminuit
 the minimizer for Profile(). More...

int m_callNumber

Detailed Description

Performs high level energy corrections.

The reconstruction here uses CalRecLogs to produce a CsIClusterList. It evaluates the barycenter for each layer using the coordinates stored in the CalRecLogs, and tries to correct for energy leakage using two different methods:

See the description of Profile() and Leak() for a description For most of the test beam energies Leak() should give better results. there can be a strong bias though because of miscalibration

For a comparison one can see on the following plots the results of this method on R138 data and a MC run of 20 GeV positrons

figurearticle2.gif
figuresim2.gif
Author(s):
Regis Terrier , Alexandre Chehtman

Bugs and limitations:
These energy correction methods are implemented on axis.
Warning:
May not give sensible results when there is a large uncertainty in the gains especially for the Leak method if there is a problem in the last layer.
High energy corrections are intended for high energy
Todo:
Add low energy corrections

Definition at line 56 of file CalClustersAlg.h.


Constructor & Destructor Documentation

CalClustersAlg::CalClustersAlg ( const std::string & name,
ISvcLocator * pSvcLocator )
 

constructor.

Definition at line 427 of file CalClustersAlg.cpp.

CalClustersAlg::~CalClustersAlg ( ) [inline, virtual]
 

destructor.

Definition at line 64 of file CalClustersAlg.h.


Member Function Documentation

Vector CalClustersAlg::Fit_Direction ( std::vector< Vector > pos,
std::vector< Vector > sigma2,
int nlayers )
 

Direction reconstruction.

Basic algorithm for now, since we need to have knowledge on longitudinal errors Simply reconstruct direction on both sides XZ and YZ

Definition at line 337 of file CalClustersAlg.cpp.

double CalClustersAlg::Leak ( double eTotal,
double elast )
 

Leakage corrections with last layer.

The second method uses the correlation between the escaping energy and the energy deposited in the last layer of the calorimeter. Indeed, the last layer carries the most important information concerning the leaking energy: the total number of particles escaping through the back should be nearly proportional to the energy deposited in the last layer. The measured signal in that layer can therefore be modified to account for the leaking energy.

We used the Monte Carlo simulation of the GLAST beam test configuration to deter mine this correlation at several energies, from 2 GeV up to 40 GeV. For one par ticular incident energy, the bidimensionnal distribution of the energy escaping and the energy deposited in the last layer can be fitted by a simple linear function:

The and parameters are proportional to the logarithm of the incident energy and to its square, respectively. Because the only information we have, initially, on the incident energy is the total measured energy , we have to use it as the estimator of . The reconstructed energy is then:

To improve the result, one can iterate using the new estimator to determine the correct values of and .

The methods takes 2 arguments:
Parameters:
eTotal   Total energy measured in the calorimeter in MeV
elast   Total energy measured in the last layer in MeV

Returns:
Corrected energy in MeV

Warning:
Has been developped on axis only
Give biased results when the last layergains are misaligned

Author(s):
Regis Terrier

Revision:
  • 10/17/00 RT comments added
  • 09/15/00 RT bias correction added, tuned on MC data
  • 08/20/00 RT first implementation

Definition at line 134 of file CalClustersAlg.cpp.

void CalClustersAlg::Profile ( double eTotal,
CsICluster * cl )
 

Leakage corrections with profile fitting.

It performs a longitudinal profile fitting using the incomplete gamma function ( gamma.cxx). The mean energy density per length unit is taken as:

Thus integrated on the i th Xtal pathlength it gives

the 2 shower parameters here alpha and lambda describes the maximum position and and the exponential decrease of the profile. Those parameters have been estimated using a MC and their dependance over E has been fitted by a power law. They are log-normally distributed with a very broad distribution ( hence some of the shower fluctuations ). Therefore they should not be included in the fitting process.

Here we use 4 parameters: total energy starting point alpha lambda They can be fixed or released in Profile()

The input is:

Parameters:
eTotal   total energy measured in the calorimeter in MeV
cl   the CsICluster in which the results are saved

The output ( the 4 fitting parameters and the chi square) of this method is stored in the CsICluster.

Warning:
The algorithm works only on axis thats why slope=1 in execute()
Gives sensible results only at large enough energies ie ~10GeV

Revision:
  • 10/17/00 RT comments added
  • 05/00 RT first implementation

Definition at line 198 of file CalClustersAlg.cpp.

StatusCode CalClustersAlg::execute ( )
 

Performs the reconstruction.

  • Energy per layer is computed and stored in CsICluster in MeV
  • Barycenter per layer is also computed and stored in CsICluster
  • Performs high energy corrections: see Profile() and Leak() for details

Definition at line 513 of file CalClustersAlg.cpp.

StatusCode CalClustersAlg::finalize ( )
 

Finalization of algorithm

Definition at line 698 of file CalClustersAlg.cpp.

StatusCode CalClustersAlg::initialize ( )
 

Definition at line 436 of file CalClustersAlg.cpp.

StatusCode CalClustersAlg::retrieve ( ) [protected]
 

Definition at line 469 of file CalClustersAlg.cpp.


Member Data Documentation

ICalGeometrySvc * CalClustersAlg::m_CalGeo [private]
 

Definition at line 84 of file CalClustersAlg.h.

CalRecLogs * CalClustersAlg::m_CalRecLogs [private]
 

the log list, the input of the reconstruction.

Definition at line 86 of file CalClustersAlg.h.

CsIClusterList * CalClustersAlg::m_CsIClusterList [private]
 

the clusters list, the output of the reconstruction.

Definition at line 88 of file CalClustersAlg.h.

int CalClustersAlg::m_callNumber [private]
 

Definition at line 91 of file CalClustersAlg.h.

Midnight * CalClustersAlg::minuit [private]
 

the minimizer for Profile().

Definition at line 90 of file CalClustersAlg.h.


The documentation for this class was generated from the following files:
Generated at Wed Nov 21 12:21:05 2001 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000