00001
00002
00003
00004
00005 #include "Event/VeloRMeasurement.h"
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 VeloRMeasurement::VeloRMeasurement( VeloCluster& cluster,
00019 DeVelo& det,
00020 double phi )
00021 {
00022 m_mtype = Measurement::VeloR;
00023
00024 m_phi = phi;
00025 m_cluster = &cluster;
00026
00027 int sensor = m_cluster->sensor();
00028 double sum = 0.;
00029 double sum2 = 0.;
00030 double sums = 0.;
00031
00032 std::vector< std::pair<long,double> > sign = m_cluster->stripSignals();
00033 std::vector< std::pair<long,double> >::const_iterator strIt;
00034 VeloChannelID channelOne(sensor,(*sign.begin()).first);
00035 double radius = det.rOfStrip( channelOne );
00036 double pitch = det.rPitch( channelOne );
00037
00038 for ( strIt = sign.begin() ; sign.end() != strIt ; strIt++ ) {
00039 VeloChannelID channel(sensor,(*strIt).first);
00040 radius= det.rOfStrip( channel );
00041 sum += (*strIt).second;
00042 sum2 += pow((*strIt).second,2) ;
00043 sums += (*strIt).second * radius ;
00044 }
00045 if ( 0 < sum ) {
00046 m_measure = sums / sum;
00047
00048
00049 m_errMeasure = 0.8 * ( pitch / sum ) * sqrt( sum2 / 12 );
00050
00051
00052 }
00053
00054 m_z = det.zSensor( m_cluster->sensor() );
00055
00056
00057 setLhcbID ( LHCbID( channelOne ) );
00058 }
00059