LCOV - code coverage report
Current view: top level - src/module - Tools.cpp (source / functions) Hit Total Coverage
Test: coverage.info.cleaned Lines: 7 70 10.0 %
Date: 2024-04-29 14:43:01 Functions: 2 16 12.5 %

          Line data    Source code
       1             : #include "crpropa/module/Tools.h"
       2             : #include "crpropa/Clock.h"
       3             : 
       4             : #include <iostream>
       5             : #include <sstream>
       6             : 
       7             : using namespace std;
       8             : 
       9             : namespace crpropa {
      10             : 
      11           0 : PerformanceModule::~PerformanceModule() {
      12             :         double total = 0;
      13           0 :         for (size_t i = 0; i < modules.size(); i++) {
      14             :                 _module_info &m = modules[i];
      15           0 :                 total += m.time;
      16             :         }
      17           0 :         cout << "Performance for " << calls << " calls:" << endl;
      18           0 :         for (size_t i = 0; i < modules.size(); i++) {
      19             :                 _module_info &m = modules[i];
      20           0 :                 cout << " - " << floor((1000 * m.time / total) + 0.5) / 10 << "% -> "
      21           0 :                                 << m.module->getDescription() << ": " << (m.time / calls)
      22             :                                 << endl;
      23             :         }
      24           0 : }
      25             : 
      26           0 : void PerformanceModule::add(Module *module) {
      27             :         _module_info info;
      28           0 :         info.module = module;
      29           0 :         info.time = 0;
      30           0 :         modules.push_back(info);
      31           0 : }
      32             : 
      33           0 : void PerformanceModule::process(Candidate *candidate) const {
      34           0 :         vector<double> times(modules.size());
      35           0 :         for (size_t i = 0; i < modules.size(); i++) {
      36             :                 _module_info &m = modules[i];
      37           0 :                 double start = Clock::getInstance().getMillisecond();
      38           0 :                 m.module->process(candidate);
      39           0 :                 double end = Clock::getInstance().getMillisecond();
      40           0 :                 times[i] = end - start;
      41             :         }
      42             : 
      43           0 : #pragma omp critical
      44             :         {
      45           0 :                 for (size_t i = 0; i < modules.size(); i++) {
      46             :                         _module_info &m = modules[i];
      47           0 :                         m.time += times[i];
      48             :                 }
      49           0 :                 calls++;
      50             :         }
      51           0 : }
      52             : 
      53           0 : string PerformanceModule::getDescription() const {
      54           0 :         stringstream sstr;
      55           0 :         sstr << "PerformanceModule (";
      56           0 :         for (size_t i = 0; i < modules.size(); i++) {
      57             :                 _module_info &m = modules[i];
      58           0 :                 if (i > 0)
      59           0 :                         sstr << ", ";
      60           0 :                 sstr << m.module->getDescription();
      61             :         }
      62           0 :         sstr << ")";
      63           0 :         return sstr.str();
      64           0 : }
      65             : 
      66             : // ----------------------------------------------------------------------------
      67           0 : ParticleFilter::ParticleFilter() {
      68             : 
      69           0 : }
      70           1 : ParticleFilter::ParticleFilter(const std::set<int> &ids) : ids(ids) {
      71             : 
      72           1 : }
      73           0 : void ParticleFilter::addId(int id) {
      74             :         ids.insert(id);
      75           0 : }
      76           0 : void ParticleFilter::removeId(int id) {
      77             :         ids.erase(id);
      78           0 : }
      79             : 
      80           0 : std::set<int> &ParticleFilter::getIds() {
      81           0 :         return ids;
      82             : }
      83             : 
      84           7 : void ParticleFilter::process(Candidate* candidate) const {
      85          14 :         if (ids.find(candidate->current.getId()) == ids.end())
      86           5 :                 reject(candidate);
      87             :         else
      88           2 :                 accept(candidate);
      89           7 : }
      90             : 
      91           0 : string ParticleFilter::getDescription() const {
      92           0 :         stringstream sstr;
      93           0 :         sstr << "ParticleFilter: ";
      94           0 :         for (std::set<int>::const_iterator i = ids.begin(); i != ids.end(); i++) {
      95           0 :                 sstr << *i << ", ";
      96             :         }
      97           0 :         sstr << ")";
      98           0 :         return sstr.str();
      99           0 : }
     100             : 
     101             : // ----------------------------------------------------------------------------
     102           0 : EmissionMapFiller::EmissionMapFiller(EmissionMap *emissionMap) : emissionMap(emissionMap) {
     103             : 
     104           0 : }
     105             : 
     106           0 : void EmissionMapFiller::setEmissionMap(EmissionMap *emissionMap) {
     107           0 :         this->emissionMap = emissionMap;
     108           0 : }
     109             : 
     110           0 : void EmissionMapFiller::process(Candidate* candidate) const {
     111           0 :         if (emissionMap) {
     112           0 :                 #pragma omp critical
     113             :                 {
     114           0 :                         emissionMap->fillMap(candidate->source);
     115             :                 }
     116             :         }
     117           0 : }
     118             : 
     119           0 : string EmissionMapFiller::getDescription() const {
     120           0 :         return "EmissionMapFiller";
     121             : }
     122             : 
     123             : } // namespace crpropa

Generated by: LCOV version 1.14