From bce1df9586464f5a3f47ae2f22b9f7946fd0a0b4 Mon Sep 17 00:00:00 2001
From: Maximilian Reininghaus <maximilian.reininghaus@kit.edu>
Date: Sat, 3 Oct 2020 22:26:03 +0200
Subject: [PATCH] added Stack::first() to access first particle irrespective of
 deleted flag

---
 Documentation/Examples/vertical_EAS.cc  | 4 ++--
 Framework/StackInterface/ParticleBase.h | 1 -
 Framework/StackInterface/Stack.h        | 7 ++++++-
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/Documentation/Examples/vertical_EAS.cc b/Documentation/Examples/vertical_EAS.cc
index be2de7fe9..2f4bd7dab 100644
--- a/Documentation/Examples/vertical_EAS.cc
+++ b/Documentation/Examples/vertical_EAS.cc
@@ -6,7 +6,6 @@
  * the license.
  */
 
-#include <corsika/process/interaction_counter/InteractionCounter.hpp>
 #include <corsika/cascade/Cascade.h>
 #include <corsika/environment/Environment.h>
 #include <corsika/environment/FlatExponential.h>
@@ -31,12 +30,13 @@
 #include <corsika/process/sibyll/NuclearInteraction.h>
 #include <corsika/process/switch_process/SwitchProcess.h>
 #include <corsika/process/tracking_line/TrackingLine.h>
+#include <corsika/process/urqmd/UrQMD.h>
 #include <corsika/random/RNGManager.h>
 #include <corsika/setup/SetupStack.h>
 #include <corsika/setup/SetupTrajectory.h>
 #include <corsika/units/PhysicalUnits.h>
 #include <corsika/utl/CorsikaFenv.h>
-#include <corsika/process/urqmd/UrQMD.h>
+#include <corsika/process/interaction_counter/InteractionCounter.hpp>
 
 #include <iomanip>
 #include <iostream>
diff --git a/Framework/StackInterface/ParticleBase.h b/Framework/StackInterface/ParticleBase.h
index e372b768e..1bf7d0ad8 100644
--- a/Framework/StackInterface/ParticleBase.h
+++ b/Framework/StackInterface/ParticleBase.h
@@ -8,7 +8,6 @@
 
 #pragma once
 
-
 namespace corsika::stack {
 
   /**
diff --git a/Framework/StackInterface/Stack.h b/Framework/StackInterface/Stack.h
index d91ac679f..103d7b63c 100644
--- a/Framework/StackInterface/Stack.h
+++ b/Framework/StackInterface/Stack.h
@@ -165,6 +165,11 @@ namespace corsika::stack {
       }
       return StackIterator(*this, i);
     }
+
+    StackIterator first() { return StackIterator{*this, 0}; }
+
+    ConstStackIterator cfirst() const { return ConstStackIterator{*this, 0}; }
+
     StackIterator end() { return StackIterator(*this, getSize()); }
     StackIterator last() {
       unsigned int i = 0;
@@ -345,9 +350,9 @@ namespace corsika::stack {
       nDeleted_ = 0;
     }
 
-  protected:
     unsigned int getSize() const { return data_.GetSize(); }
 
+  protected:
     bool isDeleted(unsigned int i) const {
       if (i >= deleted_.size()) return false;
       return deleted_.at(i);
-- 
GitLab