LCOV - code coverage report
Current view: top level - src/module - BreakCondition.cpp (source / functions) Coverage Total Hit
Test: coverage.info.cleaned Lines: 36.6 % 172 63
Test Date: 2026-06-18 09:49:19 Functions: 39.5 % 38 15

            Line data    Source code
       1              : #include "crpropa/module/BreakCondition.h"
       2              : #include "crpropa/ParticleID.h"
       3              : #include "crpropa/Units.h"
       4              : 
       5              : #include <sstream>
       6              : 
       7              : namespace crpropa {
       8              : 
       9           13 : MaximumTrajectoryLength::MaximumTrajectoryLength(double maxLength) :
      10           13 :                 maxLength(maxLength) {
      11           13 : }
      12              : 
      13            0 : void MaximumTrajectoryLength::setMaximumTrajectoryLength(double length) {
      14            0 :         maxLength = length;
      15            0 : }
      16              : 
      17            0 : double MaximumTrajectoryLength::getMaximumTrajectoryLength() const {
      18            0 :         return maxLength;
      19              : }
      20              : 
      21            1 : void MaximumTrajectoryLength::addObserverPosition(const Vector3d& position) {
      22            1 :         observerPositions.push_back(position);
      23            1 : }
      24              : 
      25            0 : const std::vector<Vector3d>& MaximumTrajectoryLength::getObserverPositions() const {
      26            0 :         return observerPositions;
      27              : }
      28              : 
      29            0 : std::string MaximumTrajectoryLength::getDescription() const {
      30            0 :         std::stringstream s;
      31            0 :         s << "Maximum trajectory length: " << maxLength / Mpc << " Mpc, ";
      32            0 :         s << "Flag: '" << rejectFlagKey << "' -> '" << rejectFlagValue << "', ";
      33            0 :         s << "MakeInactive: " << (makeRejectedInactive ? "yes" : "no");
      34            0 :         if (rejectAction.valid())
      35            0 :                 s << ", Action: " << rejectAction->getDescription();
      36            0 :         s << "\n  Observer positions: \n";
      37            0 :         for (size_t i = 0; i < observerPositions.size(); i++)
      38            0 :                 s << "    - " << observerPositions[i] / Mpc << " Mpc\n";
      39            0 :         return s.str();
      40            0 : }
      41              : 
      42       491649 : void MaximumTrajectoryLength::process(Candidate *c) const {
      43       491649 :         double length = c->getTrajectoryLength();
      44       491649 :         Vector3d position = c->current.getPosition();
      45              : 
      46       491649 :         if(observerPositions.size()) {
      47              :                 bool inRange = false;
      48            4 :                 for (size_t i = 0; i < observerPositions.size(); i++) {
      49            2 :                         double distance = position.getDistanceTo(observerPositions[i]);
      50            2 :                         if (distance + length < maxLength)
      51              :                                 inRange = true;
      52              :                 }
      53            2 :                 if (!inRange) {
      54            1 :                         reject(c);
      55              :                         return;
      56              :                 }
      57              :         }
      58              : 
      59       491648 :         if (length >= maxLength) {
      60         1107 :                 reject(c);
      61              :         } else {
      62       490541 :                 c->limitNextStep(maxLength - length);
      63              :         }
      64              : }
      65              : 
      66              : //*****************************************************************************
      67            2 : MinimumEnergy::MinimumEnergy(double minEnergy) :
      68            2 :                 minEnergy(minEnergy) {
      69            2 : }
      70              : 
      71            0 : void MinimumEnergy::setMinimumEnergy(double energy) {
      72            0 :         minEnergy = energy;
      73            0 : }
      74              : 
      75            0 : double MinimumEnergy::getMinimumEnergy() const {
      76            0 :         return minEnergy;
      77              : }
      78              : 
      79          436 : void MinimumEnergy::process(Candidate *c) const {
      80          436 :         if (c->current.getEnergy() > minEnergy)
      81              :                 return;
      82              :         else
      83            1 :                 reject(c);
      84              : }
      85              : 
      86            0 : std::string MinimumEnergy::getDescription() const {
      87            0 :         std::stringstream s;
      88            0 :         s << "Minimum energy: " << minEnergy / EeV << " EeV, ";
      89            0 :         s << "Flag: '" << rejectFlagKey << "' -> '" << rejectFlagValue << "', ";
      90            0 :         s << "MakeInactive: " << (makeRejectedInactive ? "yes" : "no");
      91            0 :         if (rejectAction.valid())
      92            0 :                 s << ", Action: " << rejectAction->getDescription();
      93            0 :         return s.str();
      94            0 : }
      95              : 
      96              : //*****************************************************************************
      97            0 : MinimumRigidity::MinimumRigidity(double minRigidity) :
      98            0 :                 minRigidity(minRigidity) {
      99            0 : }
     100              : 
     101            0 : void MinimumRigidity::setMinimumRigidity(double minRigidity) {
     102            0 :         this->minRigidity = minRigidity;
     103            0 : }
     104              : 
     105            0 : double MinimumRigidity::getMinimumRigidity() const {
     106            0 :         return minRigidity;
     107              : }
     108              : 
     109            0 : void MinimumRigidity::process(Candidate *c) const {
     110            0 :         if (c->current.getRigidity() < minRigidity)
     111            0 :                 reject(c);
     112            0 : }
     113              : 
     114            0 : std::string MinimumRigidity::getDescription() const {
     115            0 :         std::stringstream s;
     116            0 :         s << "Minimum rigidity: " << minRigidity / EeV << " EeV, ";
     117            0 :         s << "Flag: '" << rejectFlagKey << "' -> '" << rejectFlagValue << "', ";
     118            0 :         s << "MakeInactive: " << (makeRejectedInactive ? "yes" : "no");
     119            0 :         if (rejectAction.valid())
     120            0 :                 s << ", Action: " << rejectAction->getDescription();
     121            0 :         return s.str();
     122            0 : }
     123              : 
     124              : //*****************************************************************************
     125            1 : MinimumRedshift::MinimumRedshift(double zmin) :
     126            1 :                 zmin(zmin) {
     127            1 : }
     128              : 
     129            0 : void MinimumRedshift::setMinimumRedshift(double z) {
     130            0 :         zmin = z;
     131            0 : }
     132              : 
     133            0 : double MinimumRedshift::getMinimumRedshift() {
     134            0 :         return zmin;
     135              : }
     136              : 
     137            2 : void MinimumRedshift::process(Candidate* c) const {
     138            2 :         if (c->getRedshift() > zmin)
     139              :                 return;
     140              :         else
     141            1 :                 reject(c);
     142              : }
     143              : 
     144            0 : std::string MinimumRedshift::getDescription() const {
     145            0 :         std::stringstream s;
     146            0 :         s << "Minimum redshift: " << zmin << ", ";
     147            0 :         s << "Flag: '" << rejectFlagKey << "' -> '" << rejectFlagValue << "', ";
     148            0 :         s << "MakeInactive: " << (makeRejectedInactive ? "yes" : "no");
     149            0 :         if (rejectAction.valid())
     150            0 :                 s << ", Action: " << rejectAction->getDescription();
     151            0 :         return s.str();
     152            0 : }
     153              : 
     154              : //*****************************************************************************
     155            1 : MinimumChargeNumber::MinimumChargeNumber(int minChargeNumber) :
     156            1 :                 minChargeNumber(minChargeNumber) {
     157            1 : }
     158              : 
     159            0 : void MinimumChargeNumber::setMinimumChargeNumber(int chargeNumber) {
     160            0 :         minChargeNumber = chargeNumber;
     161            0 : }
     162              : 
     163            0 : int MinimumChargeNumber::getMinimumChargeNumber() const {
     164            0 :         return minChargeNumber;
     165              : }
     166              : 
     167            4 : void MinimumChargeNumber::process(Candidate *c) const {
     168            4 :         if (chargeNumber(c->current.getId()) > minChargeNumber)
     169              :                 return;
     170              :         else
     171            2 :                 reject(c);
     172              : }
     173              : 
     174            0 : std::string MinimumChargeNumber::getDescription() const {
     175            0 :         std::stringstream s;
     176            0 :         s << "Minimum charge number: " << minChargeNumber;
     177            0 :         s << "Flag: '" << rejectFlagKey << "' -> '" << rejectFlagValue << "', ";
     178            0 :         s << "MakeInactive: " << (makeRejectedInactive ? "yes" : "no");
     179            0 :         if (rejectAction.valid())
     180            0 :                 s << ", Action: " << rejectAction->getDescription();
     181            0 :         return s.str();
     182            0 : }
     183              : 
     184              : //*****************************************************************************
     185            1 : MinimumEnergyPerParticleId::MinimumEnergyPerParticleId(double minEnergyOthers) {
     186            1 :         setMinimumEnergyOthers(minEnergyOthers);
     187            1 : }
     188              : 
     189            3 : void MinimumEnergyPerParticleId::add(int id, double energy) {
     190            3 :         particleIds.push_back(id);
     191            3 :         minEnergies.push_back(energy);
     192            3 : }
     193              : 
     194            1 : void MinimumEnergyPerParticleId::setMinimumEnergyOthers(double energy) {
     195            1 :         minEnergyOthers = energy;
     196            1 : }
     197              : 
     198            0 : double MinimumEnergyPerParticleId::getMinimumEnergyOthers() const {
     199            0 :         return minEnergyOthers;
     200              : }
     201              : 
     202            5 : void MinimumEnergyPerParticleId::process(Candidate *c) const {
     203           15 :         for (int i = 0; i < particleIds.size(); i++) {
     204           12 :                 if (c->current.getId() == particleIds[i]) {
     205            5 :                         if (c->current.getEnergy() < minEnergies[i])
     206            3 :                                 reject(c);
     207              :                         else
     208              :                                 return;
     209              :                 }
     210              :         }
     211              : 
     212            3 :         if (c->current.getEnergy() < minEnergyOthers)
     213            1 :                 reject(c);
     214              :         else
     215              :                 return;
     216              : }
     217              : 
     218            0 : std::string MinimumEnergyPerParticleId::getDescription() const {
     219            0 :         std::stringstream s;
     220            0 :         s << "Minimum energy for non-specified particles: " << minEnergyOthers / eV << " eV";
     221            0 :         for (int i = 0; i < minEnergies.size(); i++) {
     222            0 :                 s << "  for particle " << particleIds[i] << " : " << minEnergies[i] / eV << " eV";
     223              :         }
     224            0 :         s << "Flag: '" << rejectFlagKey << "' -> '" << rejectFlagValue << "', ";
     225            0 :         s << "MakeInactive: " << (makeRejectedInactive ? "yes" : "no");
     226            0 :         if (rejectAction.valid())
     227            0 :                 s << ", Action: " << rejectAction->getDescription();
     228            0 :         return s.str();
     229            0 : }
     230              : 
     231              : //*****************************************************************************
     232            1 : DetectionLength::DetectionLength(double detLength) :
     233            1 :                 detLength(detLength) {
     234            1 : }
     235              : 
     236            0 : void DetectionLength::setDetectionLength(double length) {
     237            0 :         detLength = length;
     238            0 : }
     239              : 
     240            0 : double DetectionLength::getDetectionLength() const {
     241            0 :         return detLength;
     242              : }
     243              : 
     244              : 
     245            0 : std::string DetectionLength::getDescription() const {
     246            0 :         std::stringstream s;
     247            0 :         s << "Detection length: " << detLength / kpc << " kpc, ";
     248            0 :         s << "Flag: '" << rejectFlagKey << "' -> '" << rejectFlagValue << "', ";
     249            0 :         s << "MakeInactive: " << (makeRejectedInactive ? "yes" : "no");
     250            0 :         if (rejectAction.valid())
     251            0 :                 s << ", Action: " << rejectAction->getDescription();
     252            0 :         return s.str();
     253            0 : }
     254              : 
     255            2 : void DetectionLength::process(Candidate *c) const {
     256            2 :         double length = c->getTrajectoryLength();
     257            2 :         double step = c->getCurrentStep();
     258              : 
     259            2 :         if (length >= detLength && length - step < detLength) {
     260            1 :                 reject(c);
     261              :         } else {
     262            1 :                 c->limitNextStep(detLength - length);
     263              :         }
     264            2 : }
     265              : 
     266              : 
     267              : } // namespace crpropa
        

Generated by: LCOV version 2.0-1