#include <BremBinData.h>
Collaboration diagram for Atlfast::BremBinData:
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 |
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.
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 }
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 }
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.