00001 #include "AtlfastAlgs/PionBinData.h"
00002
00003 namespace Atlfast {
00004
00005
00006
00007
00008
00009 PionBinData::PionBinData(
00010 BinID& id,
00011 vector< ParameterResolutions* > core,
00012 vector< ParameterResolutions* > tails,
00013 vector< ParameterResolutions* > fractions,
00014 vector< ParameterResolutions* > correlations,
00015 int randSeed
00016 ):
00017 m_id(id),
00018 m_cores(core),
00019 m_tails(tails),
00020 m_fractions(fractions),
00021 m_correlations(correlations)
00022
00023 {
00024 m_randomEngine = new HepJamesRandom(randSeed);
00025 }
00026
00027
00028
00029
00030
00031
00032
00033
00034 HepMatrix PionBinData::getMatrix(const TrackTrajectory& traj) const{
00035
00036 HepMatrix sigma(5,5,0);
00037
00038 double resolution, random[5];
00039
00040 random[0] = m_randomEngine->flat() ;
00041 random[1] = m_randomEngine->flat() ;
00042
00043 random[2] = random[0];
00044 random[3] = random[1];
00045 random[4] = random[0];
00046
00047
00048 for (int param = 0; param<5; param++)
00049 {
00050 resolution = m_fractions[param]->resolution( traj );
00051
00052
00053
00054
00055 if (random[param] < resolution )
00056 {
00057 sigma[param][param] =
00058 pow( m_cores[param]->resolution( traj ), 2 );
00059 }
00060 else
00061 {
00062 sigma[param][param] =
00063 pow( m_tails[param]->resolution( traj ), 2 );
00064 }
00065 }
00066
00067
00068
00069 sigma(3,1) = sigma(1,3) =
00070 m_correlations[0]->resolution( traj ) *
00071 pow( (sigma(1,1)*sigma(3,3)) , 0.5 );
00072
00073 sigma(5,1) = sigma(1,5) =
00074 m_correlations[1]->resolution( traj ) *
00075 pow( (sigma(1,1)*sigma(5,5)) , 0.5 );
00076
00077 sigma(2,4) = sigma(4,2) =
00078 m_correlations[2]->resolution( traj ) *
00079 pow( (sigma(2,2)*sigma(4,4)) , 0.5 );
00080
00081 sigma(3,5) = sigma(5,3) =
00082 m_correlations[3]->resolution( traj ) *
00083 pow( (sigma(3,3)*sigma(5,5)) , 0.5 );
00084
00085
00086 return sigma;
00087
00088 }
00089
00090 }