IAP GITLAB

Skip to content
Snippets Groups Projects
stack_example.cpp 1.34 KiB
Newer Older
 * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
 *
 * This software is distributed under the terms of the GNU General Public
 * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
 * the license.
 */

ralfulrich's avatar
ralfulrich committed
#include <corsika/framework/core/ParticleProperties.hpp>
ralfulrich's avatar
ralfulrich committed
#include <corsika/stack/SimpleStack.hpp>
ralfulrich's avatar
ralfulrich committed
#include <corsika/framework/geometry/Point.hpp>
#include <corsika/framework/geometry/RootCoordinateSystem.hpp>

#include <cassert>
#include <iomanip>
#include <iostream>

using namespace corsika;
using namespace std;

ralfulrich's avatar
ralfulrich committed
void fill(SimpleStack& s) {
ralfulrich's avatar
ralfulrich committed
  CoordinateSystemPtr const& rootCS = get_root_CoordinateSystem();
  for (int i = 0; i < 11; ++i) {
ralfulrich's avatar
ralfulrich committed
    s.addParticle(std::make_tuple(Code::Electron, 1.5_GeV * i,
                                  MomentumVector(rootCS, {0_GeV, 0_GeV, 1_GeV}),
                                  Point(rootCS, 0_m, 0_m, 0_m), 0_ns));
ralfulrich's avatar
ralfulrich committed
void read(SimpleStack& s) {
  assert(s.getEntries() == 11); // stack has 11 particles

  HEPEnergyType total_energy;
  int i = 0;
  for (auto& p : s) {
ralfulrich's avatar
ralfulrich committed
    total_energy += p.getEnergy();
    // particles are electrons with 1.5 GeV energy times i
ralfulrich's avatar
ralfulrich committed
    assert(p.getPID() == Code::Electron);
    assert(p.getEnergy() == 1.5_GeV * (i++));

  std::cout << "stack_example" << std::endl;
ralfulrich's avatar
ralfulrich committed
  SimpleStack s;