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_phi = phi;
00023 m_cluster = &cluster;
00024
00025 int sensor = m_cluster->sensor();
00026 double sum = 0.;
00027 double sum2 = 0.;
00028 double sums = 0.;
00029
00030 std::vector< std::pair<long,double> > sign = m_cluster->stripSignals();
00031 std::vector< std::pair<long,double> >::const_iterator strIt;
00032 VeloChannelID channelOne(sensor,(*sign.begin()).first);
00033 double radius = det.rOfStrip( channelOne );
00034 double pitch = det.rPitch( channelOne );
00035
00036 for ( strIt = sign.begin() ; sign.end() != strIt ; strIt++ ) {
00037 VeloChannelID channel(sensor,(*strIt).first);
00038 radius= det.rOfStrip( channel );
00039 sum += (*strIt).second;
00040 sum2 += pow((*strIt).second,2) ;
00041 sums += (*strIt).second * radius ;
00042 }
00043 if ( 0 < sum ) {
00044 m_measure = sums / sum;
00045
00046
00047 m_errMeasure = 0.8 * ( pitch / sum ) * sqrt( sum2 / 12 );
00048
00049
00050 }
00051
00052 m_z = det.zSensor( m_cluster->sensor() );
00053
00054 }
00055