LCOV - code coverage report
Current view: top level - air_casawvr/src/apps - antennautils.cc (source / functions) Hit Total Coverage
Test: casacpp_coverage.info Lines: 10 34 29.4 %
Date: 2024-12-11 20:54:31 Functions: 1 3 33.3 %

          Line data    Source code
       1             : /**
       2             :    Bojan Nikolic <b.nikolic@mrao.cam.ac.uk>, <bojan@bnikolic.co.uk>
       3             :    Initial version September 2010.
       4             :    Maintained by ESO since 2013.
       5             : 
       6             :    This file is part of LibAIR and is licensed under GNU Public
       7             :    License Version 2
       8             : 
       9             :    \file antennautils.cpp
      10             :    Renamed antennautils.cc 2023
      11             : 
      12             : */
      13             : 
      14             : #include "antennautils.h"
      15             : 
      16             : 
      17             : namespace LibAIR2 {
      18          58 :   AntSetD antsDist(const antpos_t &pos,
      19             :                    size_t i,
      20             :                    const AntSet &flag)
      21             :   {
      22          58 :     AntSetD dist;
      23        1130 :     for (size_t j=0; j<pos.nrow(); ++j)
      24             :     {
      25        1072 :       if (j==i or flag.count(j))
      26         140 :         continue;
      27         932 :       double d=std::sqrt(std::pow(pos(j,0)-pos(i,0),2)+
      28         932 :                          std::pow(pos(j,1)-pos(i,1),2)+
      29         932 :                          std::pow(pos(j,2)-pos(i,2),2));
      30         932 :       dist.insert(std::make_pair(d, j));
      31             :     }
      32          58 :     return dist;
      33           0 :   }
      34             : 
      35           0 :   AntSet nearestAnts(const antpos_t &pos,
      36             :                      size_t i,
      37             :                      const AntSet &flag,
      38             :                      size_t n)
      39             :   {
      40           0 :     AntSetD dist=antsDist(pos, i, flag);
      41           0 :     AntSet res;
      42           0 :     AntSetD::const_iterator s=dist.begin();
      43           0 :     for (size_t j=0; j<n; ++j)
      44             :     {
      45           0 :       res.insert(s->second);
      46           0 :       ++s;
      47             :     }
      48           0 :     return res;
      49           0 :   }
      50             : 
      51           0 :   AntSetWeight linNearestAnt(const antpos_t &pos,
      52             :                              size_t i,
      53             :                              const AntSet &flag,
      54             :                              size_t n)
      55             :   {
      56           0 :     AntSetD dist=antsDist(pos, i, flag);
      57           0 :     AntSetWeight res;
      58             :     
      59           0 :     double total=0;
      60           0 :     AntSetD::const_iterator s=dist.begin();
      61           0 :     for (size_t j=0; j<n; ++j)
      62             :     {
      63           0 :       total+=s->first;
      64           0 :       ++s;
      65             :     }
      66             : 
      67           0 :     s=dist.begin();
      68           0 :     for (size_t j=0; j<n; ++j)
      69             :     {
      70           0 :       res.insert(std::make_pair(s->first/total, s->second));
      71           0 :       ++s;
      72             :     }
      73             : 
      74           0 :     return res;
      75             : 
      76           0 :   }
      77             : 
      78             : }
      79             : 
      80             : 

Generated by: LCOV version 1.16