Atlfast::BremBinData Class Reference

Class to hold smearing matrix data. More...

#include <BremBinData.h>

Collaboration diagram for Atlfast::BremBinData:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 BremBinData (BinID &, vector< ParameterResolutions * >, vector< ParameterResolutions * >, vector< ParameterResolutions * >, int randSeed)
 ~BremBinData ()
TrackTrajectory getBremTrack (const TrackTrajectory &track) const

Private Attributes

BinID m_id
vector< ParameterResolutions * > m_startPoints
vector< ParameterResolutions * > m_slopes
vector< ParameterResolutions * > m_sigmas
HepRandomEngine * m_randomEngine

Detailed Description

Class to hold smearing matrix data.

The data is provided through the constructor in the format found in the flat file and the correlation matrix corresponding to the bin can be calculated and returned via public methods.

Definition at line 38 of file BremBinData.h.


Constructor & Destructor Documentation

Atlfast::BremBinData::BremBinData ( BinID ,
vector< ParameterResolutions * >  ,
vector< ParameterResolutions * >  ,
vector< ParameterResolutions * >  ,
int  randSeed 
)

Constructor from flat file contents

Definition at line 9 of file BremBinData.cxx.

00014                             :
00015                 m_id(id),
00016                 m_startPoints(startPoints),    
00017                 m_slopes(slopes),
00018                 m_sigmas(sigmas)
00019   {
00020     m_randomEngine = new HepJamesRandom(randSeed);
00021   }    
  

Atlfast::BremBinData::~BremBinData (  ) 

Default destructor

Definition at line 27 of file BremBinData.cxx.

00028   {
00029     for (size_t i = 0; i < m_startPoints.size(); i++)
00030       delete m_startPoints[i];
00031     for (size_t i = 0; i < m_slopes.size(); i++)
00032       delete m_slopes[i];
00033     for (size_t i = 0; i < m_sigmas.size(); i++)
00034       delete m_sigmas[i];
00035     delete m_randomEngine;
00036   }  


Member Function Documentation

TrackTrajectory Atlfast::BremBinData::getBremTrack ( const TrackTrajectory track  )  const

returns smeared track parameters depending on an internally generated random number and track trajectory supplied as argument getMatrix is not needed in this context

Definition at line 43 of file BremBinData.cxx.

00044   {
00045     // data necessary to generate bremsstrahlung corrections
00046     double x0[3], lambda[3], sigma[3];
00047     for ( int i = 0; i < 3; i++ )
00048     {
00049       x0[i]     = std::abs( m_startPoints[i]->resolution(traj) );
00050       lambda[i] = std::abs( m_slopes[i]->resolution(traj) );
00051       sigma[i]  = m_sigmas[i]->resolution(traj);
00052     }  
00053     // range of power-function distribution [x0, xMax]
00054     // for q/pT, 500MeV is the offline reconstruction cut
00055     double xMax[3] = { 90 * sigma[0], 90 * sigma[1], 1.0 / (0.5*GeV) };
00056 
00057     double charge = double( traj.signOfCharge() );
00058     // bremsstrahlung results in both pos and neg tails, depending on charge and parameter
00059     double sign[3] = { -charge, charge, charge };
00060      
00061     double random[3];
00062     random[0] = m_randomEngine->flat();
00063     random[1] = random[0];  // introduce correlation (d0,phi0) 
00064     random[2] = random[0];  // introduce correlation (d0,q/pT), (phi0,q/pT)
00065 
00066     double var[3];
00067     for ( int i = 0; i < 3; i++ )
00068     {
00069       double denom = 1 - random[i] * ( 1 - std::pow( x0[i] / xMax[i], lambda[i] - 1 ) );
00070       denom = std::pow( denom, 1.0 / ( lambda[i] - 1 ) );
00071       var[i] = sign[i] * x0[i] / denom;   // normalised power-series distribution
00072     }  
00073    
00074     // create output TrackTrajectory object: longitudinal parameters remain unchanged
00075     // (small effects taken into account in double-Gaussian smearing in ElectronMatrixManager)
00076     TrackParameters trkParam = traj.parameters();
00077 
00078     double impactParameter = var[0];
00079     double zPerigee        = trkParam.zPerigee();
00080     Phi phi                = var[1];
00081     double cotTheta        = trkParam.cotTheta();
00082     double invPtCharge     = var[2];
00083 
00084     double curvature = traj.curvature(); 
00085     double pT = std::abs( 1. / invPtCharge );
00086     Hep3Vector vec;
00087     vec.setX( pT * std::cos(phi) );
00088     vec.setY( pT * std::sin(phi) );
00089     vec.setZ( pT * cotTheta );
00090     
00091     // Convert results to object
00092     TrackTrajectory newTrajectory( TrackParameters( vec.pseudoRapidity(), 
00093                                                     phi, pT, impactParameter,
00094                                                     zPerigee, cotTheta,
00095                                                     invPtCharge ), 
00096                                    traj.startPoint(),
00097                                    curvature );
00098     return newTrajectory;
00099   }


Member Data Documentation

BinID Atlfast::BremBinData::m_id [private]

Definition at line 62 of file BremBinData.h.

vector< ParameterResolutions* > Atlfast::BremBinData::m_startPoints [private]

Definition at line 64 of file BremBinData.h.

vector< ParameterResolutions* > Atlfast::BremBinData::m_slopes [private]

Definition at line 65 of file BremBinData.h.

vector< ParameterResolutions* > Atlfast::BremBinData::m_sigmas [private]

Definition at line 66 of file BremBinData.h.

HepRandomEngine* Atlfast::BremBinData::m_randomEngine [private]

Definition at line 68 of file BremBinData.h.


The documentation for this class was generated from the following files:
Generated on Mon Sep 24 14:19:34 2007 for AtlfastAlgs by  doxygen 1.5.1