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