diff --git a/.gitignore b/.gitignore index 9656bc848ff52f63938067173e1372348527c92a..13cf148097e976bcd75db46f2ada28fcbd2cd064 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ **/*~ +**/*.bak +**/*log build/ Framework/Particles/GeneratedParticleProperties.inc +flymd.html +flymd.md diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000000000000000000000000000000000000..7036fa76902c4d4368664f0b745b5ea621a7e62f --- /dev/null +++ b/AUTHORS @@ -0,0 +1,2 @@ +Maximilian Reininghaus, maximilian.reininghaus@kit.edu +Ralf Ulrich, ralf.ulrich@kit.edu diff --git a/CHANGELOG b/CHANGELOG index a9f540121d9ebf883db73ed96c4fdd0fee6f50d6..354e583bf8dd89dc38113d5ca8228c29224b697b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1 +1,2 @@ -Everything \ No newline at end of file +* milestone1 release: So 7. Okt 15:51:07 CEST 2018 + diff --git a/CMakeLists.txt b/CMakeLists.txt index a04d2acbb9eeca7ef29f2e45091be5bc652a5a70..2fd59736e161af2d4f53e57e75613e8d6fe667f6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,6 @@ include (CorsikaUtilities) # a few cmake function # enable warnings and disallow non-standard language set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Wextra") -# --std=c++17 set (CMAKE_CXX_STANDARD 17) enable_testing () set (CTEST_OUTPUT_ON_FAILURE 1) @@ -37,15 +36,16 @@ set (CTEST_OUTPUT_ON_FAILURE 1) #add_custom_command (TARGET corsika_pre_build PRE_BUILD COMMAND "${PROJECT_SOURCE_DIR}/pre_compile.py") # dependencies -find_package (Boost 1.40 COMPONENTS program_options REQUIRED) +#find_package (Boost 1.40 COMPONENTS program_options REQUIRED) find_package (Eigen3 REQUIRED) #find_package (HDF5) # not yet needed # order of subdirectories add_subdirectory (ThirdParty) +#add_subdirectory (Utilities) add_subdirectory (Framework) add_subdirectory (Stack) +add_subdirectory (Setup) add_subdirectory (Processes) add_subdirectory (Documentation) add_subdirectory (Main) - diff --git a/CMakeModules/CorsikaUtilities.cmake b/CMakeModules/CorsikaUtilities.cmake index f98a7585468a68c1845192c4ff779debb5396a76..0ba70d8ff63f1e372fd8daae3e4f06cc96343a8e 100644 --- a/CMakeModules/CorsikaUtilities.cmake +++ b/CMakeModules/CorsikaUtilities.cmake @@ -55,3 +55,26 @@ function (CORSIKA_COPY_HEADERS_TO_NAMESPACE for_library in_namespace) endfunction (CORSIKA_COPY_HEADERS_TO_NAMESPACE) + + + +# +# use: CORSIKA_ADD_FILES_ABSOLUTE varname +# +# add list of filenames with absolute paths (pointing to CMAKE_SOURCE_DIR) to ${varname} in PARAENT_SCOPE +# + +macro (CORSIKA_ADD_FILES_ABSOLUTE varname) + file (RELATIVE_PATH _relPath "${PROJECT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}") + foreach (_src ${ARGN}) + if (_relPath) + list (APPEND "${varname}" "${CMAKE_SOURCE_DIR}/${_relPath}/${_src}") + else() + list (APPEND "${varname}" "${CMAKE_SOURCE_DIR}/${_src}") + endif() + endforeach() + if (_relPath) + # propagate SRCS to parent directory + set ("${varname}" "${${varname}}" PARENT_SCOPE) + endif() +endmacro(CORSIKA_ADD_FILES_ABSOLUTE) diff --git a/COLLABORATION_AGREEMENT.md b/COLLABORATION_AGREEMENT.md new file mode 100644 index 0000000000000000000000000000000000000000..c00bec0f76a902d205a291c14122ae6ffc09ea6f --- /dev/null +++ b/COLLABORATION_AGREEMENT.md @@ -0,0 +1,103 @@ +# Collaboration agreement + +The CORSIKA project very much welcomes all collaboration and +contributions. The aim of the CORSIKA project is to create a +scientific software framework as a fundamental tool for research. The +collaboration agreement and the licensing model are based on the +guidelines layed out by HSF +[[1]](https://hepsoftwarefoundation.org/activities/licensing.html) or +CERN +[[2]](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=2ahUKEwiLqKG00dXdAhUOZFAKHdIwAh4QFjAAegQIARAC&url=https%3A%2F%2Findico.cern.ch%2Fcategory%2F4251%2Fattachments%2F101%2F505%2FOSL-2012-01-Open_Source_Licences_at_CERN-Short_version.pdf&usg=AOvVaw1n4S0PQCSeE6wbdfdhKDqF), +[[3]](http://legal.web.cern.ch/licensing/software), and follow the +examples of other big scientific software projects. + +The CORSIKA project consists of the contributions from the scientific +community and individuals in a best effort to deliver the best +possible computing performance and physics output. +The MCnet guidelines developed by [www.montecarlonet.org](www.montecarlonet.org) +are copied in [MCNET_GUIDELINES](MCNET_GUIDELINES) -- they provide a very good +additional scope that contributors should read and follow. + +All possible +liability and licensing question are only handled by the adopted +software license. + +## The software license of the CORSIKA project +The license adopted for the CORSIKA project is the explicit copyleft +license GPLv3, as copied in full in the file +[LICENSE](LICENSE). Each source file of the CORSIKA project contains a +short statement of the copyright and this license. Each binary or +source code release of CORSIKA must contain the file LICENSE. The +code, documentation and content in the folder [ThirdParty](ThirdParty) +is not integral part of the CORSIKA project and can be based on or +include other licenses, which must be compatible with GPLv3. Check the +content of this folder for details. It depends on the configuration of +the build system to what extend this code is used to build CORSIKA. + +## Who is the "copyright holder" +For legal reasons and the ability to maintain the CORSIKA project +effectively over a very long lifespan of several decades, all +contributors are required to transfer their copyright to the CORSIKA +Project. Of course you will be duly credited and your name will appear +on the contributors page and in the [AUTHORS](AUTHORS) file shipped +with every binary and source distribution. The copyright transfer is +necessary to be able to effectively defend the project in case of +litigation. The copyright holder may change, if decided by the CORSIKA +Project. The current copyright holder is the CORSIKA Project +corsika-project@lists.kit.edu, with the current chair person Ralf Ulrich (KIT) ralf.ulrich@kit.edu. + +## Definition of a "contributor" +Contributor is a person of whom at least one merge request was +accepted for the master branch of the CORSIKA project at +[https://gitlab.ikp.kit.edu/AirShowerPhysics/corsika](https://gitlab.ikp.kit.edu/AirShowerPhysics/corsika). +All contributors will be co-listed and credited as (software) authors +of the CORSIKA project, as well as listed indefinitely in the +[AUTHORS](AUTHORS) file. Contributors should add their name and +contact data to the [AUTHORS](AUTHORS) file, as part of one of their +merge requests. This file is always distributed together with all +source and binary releases. If you contribute to any non-master +branch, you can add your name to the [AUTHORS](AUTHORS) file of this +particular branch, but all official releases are normally performed +via the master branch. + +If you want to contribute, you need to read +[GUIDELINES](GUIDELINES.md) and comply with these rules, or help to +improve them. + + +## Definition and working mode of the CORSIKA Project panel +The CORSIKA Project panel makes all decisions for the CORSIKA +Project. It can also change the +[COLLABORATION\_AGREEMENT](COLLABORATION\_AGREEMENT.md), the +[GUIDELINES](GUIDELINES.md) or any other structure or document relevant for the CORSIKA Project. + +The CORSIKA Project *panel* consists (October 2018) of + + * Ralph Engel (KIT) + * Dieter Heck (KIT) + * Tanguy Pierog (KIT) + * Maximilian Reininghaus (KIT) + * Markus Roth (KIT) + * Ralf Ulrich (KIT) + * Michael Unger (KIT) + * Darko Veberic (KIT) + +and can be contacted via corsika-project@lists.kit.edu. The chair +person of the CORSIKA Project is Ralf Ulrich (KIT). Members of the +CORSIKA Project *panel* are *Maintainer* of the CORSIKA Project in +gitlab at +[https://gitlab.ikp.kit.edu/AirShowerPhysics/corsika](https://gitlab.ikp.kit.edu/AirShowerPhysics/corsika), +and have special responsibilities for this reason. + +## Changing to a different license, for parts, or the complete project + +The CORSIKA Project panel can change the license for parts or the entire project. + +## Planning and performing releases + +The CORSIKA Project panel decides on releases of the software, and about the content of it. + +## Changes to the Collaboration Agreement + +The CORSIKA Project panel decides on changes to the Collaboration +agreement. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000000000000000000000000000000000..50d23b305d872735ce7a47d237c630b27cd2c443 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,216 @@ +# Contributing + +The CORSIKA project is committed to fostering and preserving a +diverse, welcoming community; all participants are expected to +respect that. + +- [Getting Started](#getting-started) + - [Very first steps](#very-first-steps) + - [Opening issues](#opening-issues) + - [Participating in discussions](#participating-in-discussions) + - [Improving and reviewing docs](#improving-and-reviewing-docs) + - [Reviewing and testing changes](#reviewing-and-testing-changes) +- [Proposing and making changes](#proposing-and-making-changes) + - [Finding something to work on](#finding-something-to-work-on) + - [Before you start](#before-you-start-work) + - [Before you open your PR](#before-you-open-your-pr) + - [Review process](#review-process) +- [Getting more involved](#getting-more-involved) + +## Getting started + +Not sure where to start? If you haven't already, take a look at the +[docs](http://xi-editor.github.io/xi-editor/docs.html) to get a better +sense of the project. Read through some issues and some open PRs, to +get a sense for the habits of existing contributors. Drop by the #xi +channel on [irc.mozilla.org](https://mozilla.logbot.info/xi) to follow +ongoing discussions or ask questions. Clone the repos you're +interested in, and make sure you can build and run the tests. If you +can't, open an issue, and someone will try to help. Once you're up and +running, there are a a number of ways to participate: + +### Opening issues + +If you have a question or a feature request or think you've found a bug, +please open an issue. When opening an issue, include any details that +might be relevant: for a bug this might be the steps required to +reproduce; for a feature request it might be a detailed explanation of +the behaviour you are imagining, an outline of how it would be used, +and/or examples of how this feature is used in other editors. + +#### Before you open an issue + +Before opening an issue, **try to identify where the issue belongs**. +Is it a problem with the frontend or with core? The frontend is +responsible for drawing windows and UI, and handling events; the core +is responsible for most everything else. Issues with the frontend +should be opened in that frontend's repository, and issues with +core should be opened in the +[xi-editor](https://github.com/xi-editor/xi-editor/issues) repo. + +Finally, before opening an issue, **use github's search bar** to make +sure there isn't an existing (open or closed) issue for your particular +problem. + +### Participating in discussions + +An _explicit_ goal of xi-editor is to be an educational resource. +Everyone is encouraged to participate in discussion issues (issues with +the 'discussion' or 'planning' labels), and we expect people +participating in discussions to be respectful of the fact that we all +have different backgrounds and levels of experience. Similarly, if +something is confusing, feel free to ask for clarification! If you're +confused, other people probably are as well. + +### Improving and reviewing docs + +If the docs are unclear or incomplete, please open an issue or a PR to +improve them. This is an especially valuable form of feedback from new +contributors, who are seeing things for the first time, and will be best +positioned to identify areas that need improvement. + +### Reviewing and testing changes + +One of the best ways to get more familiar with the project is by reading +other people's pull requests. If there's something in a commit that you +don't understand, this is a great time to ask for clarification. Testing +changes is also very helpful, especially for bug fixes or feature +additions. Check out a change and try it out; does it work? Can you find +edge cases? Manual testing is very valuable. For more information on +reviews, see [code review process](#review-process). + + +## Proposing and making changes + +### Finding something to work on + +If you're looking for something to work on, a good first step is to browse +the [issues](https://github.com/xi-editor/xi-editor/issues). Specifically, +issues that are labeled +[help wanted](https://github.com/xi-editor/xi-editor/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) and/or +[easy](https://github.com/xi-editor/xi-editor/issues?q=is%3Aissue+is%3Aopen+label%3Aeasy) +are good places to start. If you can't find anything there, feel free to ask +on IRC, or play around with the editor and try to identify something that +_you_ think is missing. + +### Before you start work + +Before starting to work on an issue, consider the following: + +- _Is it a bugfix or small change?_ If you notice a small bug somewhere, + and you believe you have a fix, feel free to open a pull request directly. + +- _Is it a feature?_ If you have an idea for a new editor feature that is + along the lines of something that already exists (for instance, adding a + new command to reverse the letters in a selected region) _consider_ + opening a short issue beforehand, describing the feature you have in mind. + Other contributors might be able to identify possible issues or + refinements. This isn't _necessary_, but it might end up saving you work, + and it means you will get to close an issue when your PR gets merged, + which feels good. + +- _Is it a major feature, affecting for instance the behaviour or appearance + of a frontend, or the API or architecture of core?_ Before working on a + large change, please open a discussion/proposal issue. This should describe + the problem you're trying to solve, and the approach you're considering; + think of this as a 'lite' version of Rust's + [RFC](https://github.com/rust-lang/rfcs) process. + + +### Before you open your PR + +Before pressing the 'Create pull request' button, + +- _Run the tests_. It's easy to accidentally break something with even a small + change, so always run the tests locally before submitting (or updating) a PR. + You can run all checks locally with the `xi-editor/rust/run_all_checks`. script. + +- _Add a message for your reviewers_. When submitting a PR, take advantage + of the opportunity to include a message. Your goal here should be to help + your reviewers. Are there any parts of your change that you're uncertain + about? Are there any non-obvious explanations for some of your decisions? + If your change changes some behaviour, how might it be tested? + +- ***Be your own first reviewer***. On the page where you enter your message, + you have a final opportunity to see your PR _as it will be seen by your + reviewers_. This is a great opportunity to give it one last review, yourself. + Imagine that it is someone else's work, that you're reviewing: what comments + would you have? If you spot a typo or a problem, you can push an update in + place, without losing your PR message or other state. + +- _Add yourself to the AUTHORS file_. If this is your first substantive pull +request in this repo, feel free to add yourself to the AUTHORS file. + +### Review process + +Every non-trivial pull request goes through review. Everyone is welcome to +participate in review; review is an excellent time to ask questions about +code or design decisions that you don't understand. + +All pull requests must be approved by an appropriate reviewer before they +are merged. For bug fixes and smaller changes, this can be anyone who has +commit rights to the repo in question; larger changes (changes which add a +feature, or significantly change behaviour or API) should also be approved by +a maintainer. + +Before being merged, a change must pass +[CI](https://en.wikipedia.org/wiki/Continuous_integration). + +#### Responsibilites of the approving reviewer + +If you approve a change, it is expected that you: +- understand what the change is trying to do, and how it is doing it +- have manually built and tested the change, to verify it works as intended +- believe the change generally matches the idioms, formatting rules, +and overall coding style of the relevant repo +- are ready and able to help resolve any problems that may be introduced by +merging the change. + +If a PR is made by a contributor who has write access to the repo in question, +they are responsible for merging/rebasing the PR after it has been approved; +otherwise it will be merged by the reviewer. + +If a patch adds or modifies behaviour that is observable in the client, +the reviewer should build the patch and verify that it works as expected. + +### After submitting your change + +You've done all this, and submitted your patch. What now? + +_Read other PRs_. If you're waiting for a review, it's likely that other +pull requests are waiting for review as well. This can be a good time +to go and take a look at what other work is happening in the project; +and if another PR has review comments, it might provide a clue to the +type of feedback you might expect. + +_Patience_. As a general goal, we try to respond to all pull requests +within a few days, and to do preliminary review within a week, but we +don't always succeed. If you've opened a PR and haven't heard from +anyone, feel free to comment on it, or stop by the IRC channel, to ask +if anyone has had a chance to take a look. It's very possible that it's +been lost in the shuffle. + +## Getting more involved + +If you are participating in the xi-editor project, you may receive +additional privileges: + +_Organization membership_: If you are regularly making contributions +to a xi project, in any of the forms outlined above, we will be happy to +add you to the xi-editor organization, which will give you the ability +to do things like add labels to issues and view active projects. + +_Contributor_: If you are regularly making substantive contributions +to a specific xi project, we will be happy to add you as a contributor +to the repo in question. Contributors are encouraged to review and +approve changes, respond to issues, and generally help to maintain +the project in question. + +_Maintainer_: If you are making substantive contributions to multiple +repos over an extended period, you are regularly reviewing the work of +other contributors, and you are actively participating in planning and +discussion, you may, (at the discretion of @raphlinus) be invited to +take on the role of _maintainer_. Maintainers are responsible for +coordinating the general direction of the project, resolving +architectural questions, and doing the day to day work of moving the +project forward. diff --git a/Documentation/Examples/geometry_example.cc b/Documentation/Examples/geometry_example.cc index 6a05974fd6d5e0224d809072b99979e29578f7d2..dac31edc4ad173e6860a7cbabb901366cedb27d1 100644 --- a/Documentation/Examples/geometry_example.cc +++ b/Documentation/Examples/geometry_example.cc @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #include <corsika/geometry/CoordinateSystem.h> #include <corsika/geometry/Point.h> #include <corsika/geometry/Sphere.h> diff --git a/Documentation/Examples/helix_example.cc b/Documentation/Examples/helix_example.cc index 9d6cdb23c5de0e2f4dd879cc63179a0ba3dd6ab7..aea320270191ebcfb14e37a41fbdbbde2014c209 100644 --- a/Documentation/Examples/helix_example.cc +++ b/Documentation/Examples/helix_example.cc @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #include <corsika/geometry/CoordinateSystem.h> #include <corsika/geometry/Helix.h> #include <corsika/geometry/Point.h> diff --git a/Documentation/Examples/logger_example.cc b/Documentation/Examples/logger_example.cc index 94fcb588a2b4ebe225dd7750a17d5beb66abda38..1bd72012ec936e33d9caf791f240d1f7b24dde0b 100644 --- a/Documentation/Examples/logger_example.cc +++ b/Documentation/Examples/logger_example.cc @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #include <corsika/logging/Logger.h> #include <boost/format.hpp> #include <fstream> diff --git a/Documentation/Examples/stack_example.cc b/Documentation/Examples/stack_example.cc index 691cdb38440e916ee97f637705ea2bbfe3db89ba..f0a04f79be09dff2c58a74bc4822c443c12061f0 100644 --- a/Documentation/Examples/stack_example.cc +++ b/Documentation/Examples/stack_example.cc @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #include <corsika/particles/ParticleProperties.h> #include <corsika/stack/super_stupid/SuperStupidStack.h> #include <iomanip> diff --git a/Documentation/Examples/staticsequence_example.cc b/Documentation/Examples/staticsequence_example.cc index 92813f2e368d6db9c2016446ca069e8d890b5034..8049983f767a5ea28544f83cda9bffc84a35d95a 100644 --- a/Documentation/Examples/staticsequence_example.cc +++ b/Documentation/Examples/staticsequence_example.cc @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #include <array> #include <iomanip> #include <iostream> diff --git a/Environment/FlatAtmosphere/FlatAtmosphere.h b/Environment/FlatAtmosphere/FlatAtmosphere.h index 8b137891791fe96927ad78e64b0aad7bded08bdc..90582b3dfb00d2d85850b81455a2a4c0c061413b 100644 --- a/Environment/FlatAtmosphere/FlatAtmosphere.h +++ b/Environment/FlatAtmosphere/FlatAtmosphere.h @@ -1 +1,10 @@ +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ diff --git a/Framework/Cascade/CMakeLists.txt b/Framework/Cascade/CMakeLists.txt index 63fe2cb858b3709bccb3d12fda1b3d5160327dff..5dbb843bc79e6b181e47489f331490bb87c495a6 100644 --- a/Framework/Cascade/CMakeLists.txt +++ b/Framework/Cascade/CMakeLists.txt @@ -51,11 +51,13 @@ add_executable ( target_link_libraries ( testCascade +# CORSIKAutls CORSIKAcascade + ProcessStackInspector + CORSIKAprocesses CORSIKAparticles CORSIKAgeometry CORSIKAprocesssequence - SuperStupidStack CORSIKAunits CORSIKAthirdparty # for catch2 ) diff --git a/Framework/Cascade/Cascade.cc b/Framework/Cascade/Cascade.cc index 1bd6b5b2b1c2681edb48e77f51028ad54d10bf08..aeab1de22fa08617bbdda403958dca8152fdfdeb 100644 --- a/Framework/Cascade/Cascade.cc +++ b/Framework/Cascade/Cascade.cc @@ -1,20 +1,25 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #include <corsika/cascade/Cascade.h> using namespace corsika::cascade; -template <typename ProcessList, typename Particle, typename Trajectory, typename Stack> -Cascade<ProcessList, Particle, Trajectory, Stack>::Cascade() { - // kkk; - // kk; -} - -template <typename ProcessList, typename Particle, typename Trajectory, typename Stack> +template <typename ProcessList, typename Stack> //, typename Trajectory> void Cascade::Init() { fStack.Init(); fProcesseList.Init(); } -template <typename ProcessList, typename Particle, typename Trajectory, typename Stack> +template <typename ProcessList, typename Stack> //, typename Trajectory> void Cascade::Run() { if (!fStack.IsEmpty()) { if (!fStack.IsEmpty()) { @@ -27,10 +32,11 @@ void Cascade::Run() { } } -template <typename Sequence, typename Trajectory> +template <typename ProcessList, typename Stack> //, typename Trajectory> void Cascade::Step(Particle& particle) { double nextStep = fProcesseList.MinStepLength(particle); - Trajectory trajectory = fProcesseList.Transport(particle, nextStep); + corsika::geometry::LineTrajectory trajectory = + fProcesseList.Transport(particle, nextStep); sequence.DoContinuous(particle, trajectory); sequence.DoDiscrete(particle); } diff --git a/Framework/Cascade/Cascade.h b/Framework/Cascade/Cascade.h index 25935d3a639cd0f6fc8974174b55391b4dd08710..50396b025c816a94f95466920ad542bf90f38e4f 100644 --- a/Framework/Cascade/Cascade.h +++ b/Framework/Cascade/Cascade.h @@ -1,8 +1,19 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_Cascade_h_ #define _include_Cascade_h_ -#include <corsika/geometry/LineTrajectory.h> // to be removed -#include <corsika/geometry/Point.h> // to be removed +#include <corsika/geometry/LineTrajectory.h> // to be removed. for dummy trajectory only +#include <corsika/geometry/Point.h> // to be removed. for dummy trajectory only #include <corsika/process/ProcessReturn.h> #include <corsika/units/PhysicalUnits.h> @@ -10,11 +21,13 @@ using namespace corsika::units::si; namespace corsika::cascade { - template <typename Trajectory, typename ProcessList, typename Stack> + template <typename ProcessList, typename Stack> //, typename Trajectory> class Cascade { typedef typename Stack::ParticleType Particle; + Cascade() = delete; + public: Cascade(ProcessList& pl, Stack& stack) : fProcesseList(pl) @@ -28,34 +41,37 @@ namespace corsika::cascade { void Run() { while (!fStack.IsEmpty()) { while (!fStack.IsEmpty()) { - // Particle& p = *fStack.GetNextParticle(); - EnergyType Emin; - typename Stack::StackIterator pMin(fStack, 0); - bool first = true; - for (typename Stack::StackIterator ip = fStack.begin(); ip != fStack.end(); - ++ip) { + Particle& pNext = *fStack.GetNextParticle(); + /* + EnergyType Emin; + typename Stack::StackIterator pNext(fStack, 0); + bool first = true; + for (typename Stack::StackIterator ip = fStack.begin(); ip != fStack.end(); + ++ip) { if (first || ip.GetEnergy() < Emin) { - first = false; - pMin = ip; - Emin = pMin.GetEnergy(); + first = false; + pNext = ip; + Emin = pMin.GetEnergy(); } - } - - Step(pMin); + } + */ + Step(pNext); } // do cascade equations, which can put new particles on Stack, // thus, the double loop // DoCascadeEquations(); // } } - + void Step(Particle& particle) { - double nextStep = fProcesseList.MinStepLength(particle); + [[maybe_unused]] double nextStep = fProcesseList.MinStepLength(particle); + // corsika::utls::ignore(nextStep); corsika::geometry::CoordinateSystem root; - Trajectory trajectory( - corsika::geometry::Point(root, {0_m, 0_m, 0_m}), - corsika::geometry::Vector<corsika::units::si::SpeedType::dimension_type>( - root, 0 * 1_m / second, 0 * 1_m / second, 1 * 1_m / second)); + corsika::geometry::LineTrajectory + trajectory( // trajectory is not yet used. this is a dummy. + corsika::geometry::Point(root, {0_m, 0_m, 0_m}), + corsika::geometry::Vector<corsika::units::si::SpeedType::dimension_type>( + root, 0 * 1_m / second, 0 * 1_m / second, 1 * 1_m / second)); corsika::process::EProcessReturn status = fProcesseList.DoContinuous(particle, trajectory, fStack); if (status == corsika::process::EProcessReturn::eParticleAbsorbed) { @@ -64,10 +80,10 @@ namespace corsika::cascade { fProcesseList.DoDiscrete(particle, fStack); } } - + private: - Stack& fStack; ProcessList& fProcesseList; + Stack& fStack; }; } // namespace corsika::cascade diff --git a/Framework/Cascade/Step.cc b/Framework/Cascade/Step.cc index 60349c748f8438857a5dc4ffda338063a180634f..503bc80b1644ce66d60e9e80e9627c8d9c3daefa 100644 --- a/Framework/Cascade/Step.cc +++ b/Framework/Cascade/Step.cc @@ -1,4 +1,13 @@ +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ namespace cascade; diff --git a/Framework/Cascade/testCascade.cc b/Framework/Cascade/testCascade.cc index 9d30afcefa12ac8b9a6f5b2798045cd6b1a61ccc..f14a7a3151202947db66ab1cd5564e845e6754b8 100644 --- a/Framework/Cascade/testCascade.cc +++ b/Framework/Cascade/testCascade.cc @@ -1,13 +1,27 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #include <corsika/cascade/Cascade.h> #include <corsika/geometry/LineTrajectory.h> #include <corsika/process/ProcessSequence.h> #include <corsika/process/stack_inspector/StackInspector.h> -#include <corsika/stack/super_stupid/SuperStupidStack.h> + +#include <corsika/setup/SetupStack.h> +#include <corsika/setup/SetupTrajectory.h> #define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one // cpp file #include <catch2/catch.hpp> +using namespace corsika; using namespace corsika::process; using namespace corsika::units; @@ -26,7 +40,8 @@ public: } template <typename Particle, typename Trajectory, typename Stack> - EProcessReturn DoContinuous(Particle& p, Trajectory& t, Stack& s) const { + EProcessReturn DoContinuous(Particle&, Trajectory&, Stack&) const { + // corsika::utls::ignore(p); return EProcessReturn::eOk; } @@ -49,55 +64,14 @@ public: private: }; -class ProcessReport : public corsika::process::BaseProcess<ProcessReport> { - bool fReport = false; - -public: - ProcessReport(bool v) - : fReport(v) {} - - template <typename Particle> - double MinStepLength(Particle&) const { - return 0; - } - - template <typename Particle, typename Trajectory, typename Stack> - EProcessReturn DoContinuous(Particle& p, Trajectory& t, Stack& s) const { - static int countStep = 0; - if (!fReport) return EProcessReturn::eOk; - // std::cout << "generation " << countStep << std::endl; - int i = 0; - EnergyType Etot = 0_GeV; - for (auto& iterP : s) { - EnergyType E = iterP.GetEnergy(); - Etot += E; - /* std::cout << " particle data: " << i++ << ", id=" << iterP.GetPID() - << ", E=" << double(E / 1_GeV) << " GeV " - << " | " << std::endl; - */ - } - countStep++; - // cout << "#=" << countStep << " " << s.GetSize() << " " << Etot/1_GeV << endl; - cout << countStep << " " << s.GetSize() << " " << Etot / 1_GeV << " " << fCount - << endl; - return EProcessReturn::eOk; - } - - template <typename Particle, typename Stack> - void DoDiscrete(Particle& p, Stack& s) const {} - void Init() {} -}; - TEST_CASE("Cascade", "[Cascade]") { - ProcessReport p0(true); + stack_inspector::StackInspector<setup::Stack, setup::Trajectory> p0(true); ProcessSplit p1; const auto sequence = p0 + p1; - corsika::stack::super_stupid::SuperStupidStack stack; + setup::Stack stack; - corsika::cascade::Cascade<corsika::geometry::LineTrajectory, decltype(sequence), - decltype(stack)> - EAS(sequence, stack); + corsika::cascade::Cascade EAS(sequence, stack); stack.Clear(); auto particle = stack.NewParticle(); diff --git a/Framework/Geometry/BaseTrajectory.h b/Framework/Geometry/BaseTrajectory.h index e4eafb853117b47e4778e14b17c4ba54f46ad7b4..b39335c8c482bc18637fd28a95c90f2123fbaa40 100644 --- a/Framework/Geometry/BaseTrajectory.h +++ b/Framework/Geometry/BaseTrajectory.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_BASETRAJECTORY_H #define _include_BASETRAJECTORY_H diff --git a/Framework/Geometry/BaseVector.h b/Framework/Geometry/BaseVector.h index f2079e91cc953b34499c2146da68c4cf88dfed8d..2cd1c3e490be90485164a060cefc708dbd64806e 100644 --- a/Framework/Geometry/BaseVector.h +++ b/Framework/Geometry/BaseVector.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_BASEVECTOR_H_ #define _include_BASEVECTOR_H_ diff --git a/Framework/Geometry/CMakeLists.txt b/Framework/Geometry/CMakeLists.txt index a4fc43cb3364881d7f3e42939b0985b69df4afab..60992f4270249a7ad6d090086476849b9364e461 100644 --- a/Framework/Geometry/CMakeLists.txt +++ b/Framework/Geometry/CMakeLists.txt @@ -42,7 +42,7 @@ target_link_libraries ( target_include_directories ( CORSIKAgeometry - PRIVATE ${EIGEN3_INCLUDE_DIR} + PUBLIC ${EIGEN3_INCLUDE_DIR} INTERFACE ${EIGEN3_INCLUDE_DIR} $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include> $<INSTALL_INTERFACE:include/include> diff --git a/Framework/Geometry/CoordinateSystem.cc b/Framework/Geometry/CoordinateSystem.cc index b74808cdbaa115ad5b1e1b04dd7d9379b3f5d74c..9cf3a1a64125d4fe53236529bd821c6b2c5e57c5 100644 --- a/Framework/Geometry/CoordinateSystem.cc +++ b/Framework/Geometry/CoordinateSystem.cc @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #include <corsika/geometry/CoordinateSystem.h> using namespace corsika::geometry; diff --git a/Framework/Geometry/CoordinateSystem.h b/Framework/Geometry/CoordinateSystem.h index d30e9b4389ad772de241446bf1eb1c22b5e301e9..a6a0912904b6704cc7ad3fcbd4100ff64946976e 100644 --- a/Framework/Geometry/CoordinateSystem.h +++ b/Framework/Geometry/CoordinateSystem.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_COORDINATESYSTEM_H_ #define _include_COORDINATESYSTEM_H_ diff --git a/Framework/Geometry/Helix.h b/Framework/Geometry/Helix.h index bd62d1919b5500ab22f2bad1eb2968a93dc90c0f..018299bcf63fa83f6022ffbc56e733a618a5bd1f 100644 --- a/Framework/Geometry/Helix.h +++ b/Framework/Geometry/Helix.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_HELIX_H_ #define _include_HELIX_H_ diff --git a/Framework/Geometry/LineTrajectory.h b/Framework/Geometry/LineTrajectory.h index ee65b5e54e9ec3743b12b6aa8a14a6965e6d4eeb..f13f8d822947e2b90fa9a7ba7f69d23f43b0c1f8 100644 --- a/Framework/Geometry/LineTrajectory.h +++ b/Framework/Geometry/LineTrajectory.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_LINETRAJECTORY_H #define _include_LINETRAJECTORY_H diff --git a/Framework/Geometry/Point.h b/Framework/Geometry/Point.h index debbf91854abdb1852052d487981400d4966da8a..26de8510662aefc6961c536541483d28c136c3ce 100644 --- a/Framework/Geometry/Point.h +++ b/Framework/Geometry/Point.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_POINT_H_ #define _include_POINT_H_ diff --git a/Framework/Geometry/QuantityVector.h b/Framework/Geometry/QuantityVector.h index f4b6bbe0eded87cd0cd8c3a406190347c8f37b10..c128039df660cb00aca4908d1b24dc9568258c02 100644 --- a/Framework/Geometry/QuantityVector.h +++ b/Framework/Geometry/QuantityVector.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_QUANTITYVECTOR_H_ #define _include_QUANTITYVECTOR_H_ diff --git a/Framework/Geometry/Sphere.h b/Framework/Geometry/Sphere.h index 28b4e7dc63d5ded1ecd6d047df442af4557e4f20..436c8e4029472ed17e211b2a02c0c3e486ab33a2 100644 --- a/Framework/Geometry/Sphere.h +++ b/Framework/Geometry/Sphere.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_SPHERE_H_ #define _include_SPHERE_H_ diff --git a/Framework/Geometry/Trajectory.h b/Framework/Geometry/Trajectory.h index 0ce2b536659d1662e08aff8a4ea233ade3f430f1..237f37931e7ddc5ec6f23713c4fdcbc30123668a 100644 --- a/Framework/Geometry/Trajectory.h +++ b/Framework/Geometry/Trajectory.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_TRAJECTORY_H #define _include_TRAJECTORY_H diff --git a/Framework/Geometry/Vector.h b/Framework/Geometry/Vector.h index fcebc10f73a12ad37494a59d32614c88e9697a31..cb4e4900544705c10a37ff16a0fd4ba00b0f9b29 100644 --- a/Framework/Geometry/Vector.h +++ b/Framework/Geometry/Vector.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_VECTOR_H_ #define _include_VECTOR_H_ diff --git a/Framework/Geometry/testGeometry.cc b/Framework/Geometry/testGeometry.cc index 182f9c07d13e8351a8341be3490f1c64fca81707..31be0d360e81c9f53a6bda36c0fe4c685a61c4cb 100644 --- a/Framework/Geometry/testGeometry.cc +++ b/Framework/Geometry/testGeometry.cc @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one // cpp file #include <catch2/catch.hpp> @@ -95,8 +106,9 @@ TEST_CASE("transformations between CoordinateSystems") { QuantityVector<length_d> const zAxis{0_m, 0_m, 1_km}; QuantityVector<length_d> const yAxis{0_m, 7_nm, 0_m}; QuantityVector<length_d> const xAxis{2_m, 0_nm, 0_m}; - - QuantityVector<magnetic_flux_density_d> components{1. * tesla, 2. * tesla, 3. * tesla}; + + QuantityVector<magnetic_flux_density_d> components{1. * tesla, 2. * tesla, + 3. * tesla}; Vector<magnetic_flux_density_d> v1(rootCS, components); double const angle = 90. / 180. * M_PI; diff --git a/Framework/Logging/BufferedSink.h b/Framework/Logging/BufferedSink.h index 33cb1afa7b7ae0d65e0b8c173248294c008d8b26..2c0f7be9b721c7910724a25aca4d8488d54e2422 100644 --- a/Framework/Logging/BufferedSink.h +++ b/Framework/Logging/BufferedSink.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_BufferedSink_h_ #define _include_BufferedSink_h_ diff --git a/Framework/Logging/Logger.h b/Framework/Logging/Logger.h index fca23d70caa28a899af91f025852df0089c10b81..2639df8af6a573170c096d4f44b72e93bc593697 100644 --- a/Framework/Logging/Logger.h +++ b/Framework/Logging/Logger.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + /** @File Logger.h diff --git a/Framework/Logging/MessageOff.h b/Framework/Logging/MessageOff.h index d22d131eb5ddaf012a61341033ce8ee10e3e8e5d..4bdf10d5af622b5fdc1b35316fa258be1322573e 100644 --- a/Framework/Logging/MessageOff.h +++ b/Framework/Logging/MessageOff.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_MessageOff_h_ #define _include_MessageOff_h_ diff --git a/Framework/Logging/MessageOn.h b/Framework/Logging/MessageOn.h index a25928674a73ccbe1837190043a2688be4118ea1..c7756150f03f521ee7b54f0385270face22edb6e 100644 --- a/Framework/Logging/MessageOn.h +++ b/Framework/Logging/MessageOn.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_MessageOn_h_ #define _include_MessageOn_h_ diff --git a/Framework/Logging/NoSink.h b/Framework/Logging/NoSink.h index d0ba53649f2f4654e9b19fd75c1e84445eed84f6..6e2fe48ebf66b072031eab47c6a2370b38cd2a52 100644 --- a/Framework/Logging/NoSink.h +++ b/Framework/Logging/NoSink.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_NoSink_h_ #define _include_NoSink_h_ diff --git a/Framework/Logging/Sink.h b/Framework/Logging/Sink.h index f51b70294ebdf4ac63362448e5b851d7a52b62b3..74a42185e6be225da119f0812d653756ef30da4f 100644 --- a/Framework/Logging/Sink.h +++ b/Framework/Logging/Sink.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_Sink_h_ #define _include_Sink_h_ diff --git a/Framework/Logging/testLogging.cc b/Framework/Logging/testLogging.cc index d28c46de441f66801367ef39f1f103ac3997b057..12a77b3cab504672438e0e6f7d4fe2383d35b8d6 100644 --- a/Framework/Logging/testLogging.cc +++ b/Framework/Logging/testLogging.cc @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #include <corsika/logging/Logger.h> #define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one diff --git a/Framework/Particles/CMakeLists.txt b/Framework/Particles/CMakeLists.txt index 99d8e5a96b526ea7903ff954a9c54d233d8deab9..8ea8654fad658692dbbc1819dbc2ab957cb64de5 100644 --- a/Framework/Particles/CMakeLists.txt +++ b/Framework/Particles/CMakeLists.txt @@ -14,6 +14,11 @@ add_custom_command ( VERBATIM ) +set ( + PARTICLE_SOURCES + ParticleProperties.cc + ) + # all public header files of library, includes automatic generated file(s) set ( PARTICLE_HEADERS @@ -26,7 +31,7 @@ set ( corsika/particles ) -add_library (CORSIKAparticles INTERFACE) +add_library (CORSIKAparticles STATIC ${PARTICLE_SOURCES}) CORSIKA_COPY_HEADERS_TO_NAMESPACE (CORSIKAparticles ${PARTICLE_NAMESPACE} ${PARTICLE_HEADERS}) @@ -39,14 +44,27 @@ add_custom_command ( COMMAND ${CMAKE_COMMAND} -E create_symlink ${PROJECT_BINARY_DIR}/include/corsika/particles/GeneratedParticleProperties.inc ${CMAKE_CURRENT_SOURCE_DIR}/GeneratedParticleProperties.inc COMMENT "Generate link in source-dir: ${CMAKE_CURRENT_SOURCE_DIR}/GeneratedParticleProperties.inc" ) -add_custom_target (SourceDirLink DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/GeneratedParticleProperties.inc) +add_custom_target (SourceDirLink DEPENDS ${PROJECT_BINARY_DIR}/Framework/Particles/GeneratedParticleProperties.inc) add_dependencies (CORSIKAparticles SourceDirLink) # ..................................................... +target_link_libraries ( + CORSIKAparticles + PUBLIC + CORSIKAunits + ) + +set_target_properties ( + CORSIKAparticles + PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION 1 + PUBLIC_HEADER "${PARTICLE_HEADERS}" + ) target_include_directories ( CORSIKAparticles - INTERFACE + PUBLIC $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include> $<INSTALL_INTERFACE:include> ) diff --git a/Framework/Particles/ParticleProperties.cc b/Framework/Particles/ParticleProperties.cc new file mode 100644 index 0000000000000000000000000000000000000000..1100b55a2689c1fb30b9997c6dfe6df985ed45a8 --- /dev/null +++ b/Framework/Particles/ParticleProperties.cc @@ -0,0 +1,9 @@ +#include <corsika/particles/ParticleProperties.h> + +namespace corsika::particles::io { + + std::ostream& operator<<(std::ostream& stream, Code const p) { + return stream << GetName(p); + } + +} // namespace corsika::particles::io diff --git a/Framework/Particles/ParticleProperties.h b/Framework/Particles/ParticleProperties.h index e28648127830ab150556ec781ee057e4b6c39976..330048b3bf4fc0bfcd1ec6d128950f09a4552b15 100644 --- a/Framework/Particles/ParticleProperties.h +++ b/Framework/Particles/ParticleProperties.h @@ -1,11 +1,22 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + /** @file Particles.h Interface to particle properties */ -#ifndef _include_ParticleProperties_h_ -#define _include_ParticleProperties_h_ +#ifndef _include_corsika_particles_ParticleProperties_h_ +#define _include_corsika_particles_ParticleProperties_h_ #include <array> #include <cstdint> @@ -24,6 +35,7 @@ */ namespace corsika::particles { + enum class Code : int16_t; using PDGCodeType = int16_t; @@ -34,7 +46,7 @@ namespace corsika::particles { corsika::units::si::ElectricChargeType constexpr GetElectricCharge(Code const); corsika::units::si::MassType constexpr GetMass(Code const); PDGCodeType constexpr GetPDG(Code const); - std::string const& GetName(Code const); + constexpr std::string const& GetName(Code const); #include <corsika/particles/GeneratedParticleProperties.inc> @@ -60,15 +72,13 @@ namespace corsika::particles { return GetElectricChargeNumber(p) * (corsika::units::si::constants::e / 3.); } - std::string const& GetName(Code const p) { + constexpr std::string const& GetName(Code const p) { return names[static_cast<CodeIntType const>(p)]; } namespace io { - std::ostream& operator<<(std::ostream& stream, Code const p) { - return stream << GetName(p); - } + std::ostream& operator<<(std::ostream& stream, Code const p); } // namespace io diff --git a/Framework/Particles/testParticles.cc b/Framework/Particles/testParticles.cc index 098780caf1d5459170bb7f816ea569235707a252..443d167c43ea49eb5a74972a3a780f3b4d280565 100644 --- a/Framework/Particles/testParticles.cc +++ b/Framework/Particles/testParticles.cc @@ -1,4 +1,14 @@ +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #include <corsika/particles/ParticleProperties.h> #include <corsika/units/PhysicalUnits.h> diff --git a/Framework/ProcessSequence/ProcessReturn.h b/Framework/ProcessSequence/ProcessReturn.h index 9d43cdf07bcd7bdbc8fb604387b7c46d444e4460..82cc816c5ae9bd9d731f00c33f9bf0321a02d650 100644 --- a/Framework/ProcessSequence/ProcessReturn.h +++ b/Framework/ProcessSequence/ProcessReturn.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_ProcessReturn_h_ #define _include_ProcessReturn_h_ diff --git a/Framework/ProcessSequence/ProcessSequence.h b/Framework/ProcessSequence/ProcessSequence.h index bfb2c99320c4cf2e588502b1b3b8b2686e069d8a..4b2fc83c28ad0e1ec978c24814e5a4285a00aa40 100644 --- a/Framework/ProcessSequence/ProcessSequence.h +++ b/Framework/ProcessSequence/ProcessSequence.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_ProcessSequence_h_ #define _include_ProcessSequence_h_ diff --git a/Framework/ProcessSequence/testProcessSequence.cc b/Framework/ProcessSequence/testProcessSequence.cc index a83d23b3cb290ba715e726ce952f0ea85149095a..b144230eb5fa81a11caf0c98dd28d9ca8b043a05 100644 --- a/Framework/ProcessSequence/testProcessSequence.cc +++ b/Framework/ProcessSequence/testProcessSequence.cc @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one // cpp file #include <catch2/catch.hpp> diff --git a/Framework/Random/RNGManager.cc b/Framework/Random/RNGManager.cc index e28d9d57b5b02fbd698bbba5c3673573ae5cd8a4..3245e8bfd4b5557fcf0cda06f9a09cf15a4ca90e 100644 --- a/Framework/Random/RNGManager.cc +++ b/Framework/Random/RNGManager.cc @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #include <corsika/random/RNGManager.h> void corsika::random::RNGManager::RegisterRandomStream(std::string const& pStreamName) { diff --git a/Framework/Random/RNGManager.h b/Framework/Random/RNGManager.h index 9c38400e3a30aa2dedabcba43dfabb82a1c789c9..5e05b750c0d1a5cba02bfc0483cb72ee50bc8084 100644 --- a/Framework/Random/RNGManager.h +++ b/Framework/Random/RNGManager.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_RNGManager_h_ #define _include_RNGManager_h_ diff --git a/Framework/Random/testRandom.cc b/Framework/Random/testRandom.cc index 222a25549c6b3a8a01ba3f7298ec4024e2211c67..6e4cfa11d0034c85567218b73c486b1e32f497c2 100644 --- a/Framework/Random/testRandom.cc +++ b/Framework/Random/testRandom.cc @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one // cpp file #include <catch2/catch.hpp> diff --git a/Framework/StackInterface/CMakeList.txt b/Framework/StackInterface/CMakeList.txt deleted file mode 100644 index aea441bd22ca6fd91def7826534b5c5e3e98814d..0000000000000000000000000000000000000000 --- a/Framework/StackInterface/CMakeList.txt +++ /dev/null @@ -1,10 +0,0 @@ - -add_library (CORSIKAstack INTERFACE) - -target_include_directories (CORSIKAstack INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/Framework> - $<INSTALL_INTERFACE:include/Framework> - ) - -install (FILES Stack.h StackIterator.h - DESTINATION include/Stack) - diff --git a/Framework/StackInterface/CMakeLists.txt b/Framework/StackInterface/CMakeLists.txt index 11a30200e4e29191012850c33063b5a0ddeba385..42c52ceab9c30014de606890a37ae596538f4e1c 100644 --- a/Framework/StackInterface/CMakeLists.txt +++ b/Framework/StackInterface/CMakeLists.txt @@ -31,9 +31,7 @@ install ( include/${CORSIKAstackinterface_NAMESPACE} ) - -# code testing +#code testing add_executable (testStackInterface testStackInterface.cc) -target_link_libraries (testStackInterface CORSIKAstackinterface CORSIKAthirdparty) # for catch2 add_test(NAME testStackInterface COMMAND testStackInterface) - +target_link_libraries (testStackInterface CORSIKAstackinterface CORSIKAthirdparty) # for catch2 diff --git a/Framework/StackInterface/ParticleBase.h b/Framework/StackInterface/ParticleBase.h index b907129295a006a88092c6b5d0caa346b9706de0..1d1d51efaed25155e88976ac364f2605e7498a33 100644 --- a/Framework/StackInterface/ParticleBase.h +++ b/Framework/StackInterface/ParticleBase.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_particleBase_h_ #define _include_particleBase_h_ diff --git a/Framework/StackInterface/Stack.h b/Framework/StackInterface/Stack.h index d493ef5eff59912afd195f9e75f6c5f21744cd2f..b4660144df60754df6ff8e78e45d0920f5a58cf8 100644 --- a/Framework/StackInterface/Stack.h +++ b/Framework/StackInterface/Stack.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_Stack_h__ #define _include_Stack_h__ diff --git a/Framework/StackInterface/StackIterator.h b/Framework/StackInterface/StackIterator.h index bcbb8340d6aaa02b317dbeb123a1c99bcc650a31..9e8d07e68bedc5080a0a750b3e73972664bf712c 100644 --- a/Framework/StackInterface/StackIterator.h +++ b/Framework/StackInterface/StackIterator.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_StackIterator_h__ #define _include_StackIterator_h__ diff --git a/Framework/StackInterface/testStackInterface.cc b/Framework/StackInterface/testStackInterface.cc index e00ecc18333c18baee2b7372d473726e5460419c..078a09407c713287c36c9a48d20e5e842a32bc09 100644 --- a/Framework/StackInterface/testStackInterface.cc +++ b/Framework/StackInterface/testStackInterface.cc @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #include <corsika/stack/Stack.h> #include <iomanip> diff --git a/Framework/Units/testUnits.cc b/Framework/Units/testUnits.cc index 7fc0b00a6e3959d1cce05e31ed3239a7a82105df..3528cf67cd85cd07d3b38d9f9e23cd6c973b9057 100644 --- a/Framework/Units/testUnits.cc +++ b/Framework/Units/testUnits.cc @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one // cpp file #include <catch2/catch.hpp> @@ -16,7 +27,7 @@ TEST_CASE("PhysicalUnits", "[Units]") { } SECTION("Constructors") { - auto E1 = 10_GeV; + [[maybe_unused]] auto E1 = 10_GeV; REQUIRE(E1 == 10_GeV); LengthType l1 = 10_nm; @@ -25,11 +36,11 @@ TEST_CASE("PhysicalUnits", "[Units]") { LengthType arr0[5]; arr0[0] = 5_m; - LengthType arr1[2] = {{1_mm}, {2_cm}}; + [[maybe_unused]] LengthType arr1[2] = {{1_mm}, {2_cm}}; std::array<EnergyType, 4> arr2; // empty array - std::array<EnergyType, 4> arr3 = {1_GeV, 1_eV, 5_MeV}; + [[maybe_unused]] std::array<EnergyType, 4> arr3 = {1_GeV, 1_eV, 5_MeV}; } SECTION("Powers in literal units") { diff --git a/GUIDELINES.md b/GUIDELINES.md new file mode 100644 index 0000000000000000000000000000000000000000..8558b13263a63cdacd9c60b88e9aa55f63d49454 --- /dev/null +++ b/GUIDELINES.md @@ -0,0 +1,117 @@ +# Guidelines for code development, structure, formating etc. + +The CORSIKA Project very much welcomes contributions. Here we outlined +how you can find the right place to contribute, and how to do that. +Connect to http://gitlab.ikp.kit.edu and corsika-devel@lists.kit.edu +or corsika-project@lists.kit.edu to get in touch with the project. +The CORSIKA Project decides on the [GUIDELINES](GUIDELINES.md), and can +change them. + +# How to contribute + + - We organize all development via `Issues` that may be feature requests, + ideas, or bugs fix requests. + - New issues can be created, or existing issues + picked up. + - Issues are discussed in meetings or via corsika-devel@lists.kit.edu within the CORSIKA Project. + - Issues are assigned to milestones. + - The work on issues is performed in `branches` that can be best + created directly via the gitlab web interface. + - Proposed code to close one issue (located in a specific git + branch) is reviewed and eventually discussed, and finally merged + into the master branch to close the issue. + + +## Code formatting + +We rely on `clang-format` for code formatting. This has the tremendous +advantage that definitely all code follows the same formatting rules, +and nobody at any point needs to invest time and effort into code +formatting. We provide a script `do-clang-format.sh`, which can be +very useful. But we urge everybody to integrate `clang-format` already +on the level of your source code editor. See [the official +page](https://clang.llvm.org/docs/ClangFormat.html) for information +about `clang-format` and its editor integration. + +The definition of source code format is written down in the file +[.clang-format](.clang-format) and can be changed, if the CORSIKA +Project agrees on it. To see what is possible, check +e.g. [link1](https://clangformat.com/) or +[link2](https://zed0.co.uk/clang-format-configurator/). + +## Naming conventions + +While `clang-format` does the structural formatting, we still need to agree on naming conventions: + + - Classes and structs start with capital letters + - Class member variables start with "f" + - Any static variable has a "g" prefix. A static member variable starts with "fg" + - Class member functions start with capital letters + - Any class getter begins with "Get", and setter with "Set" + - enums should be "enum class", and start with a capital "E", enum entries start with "e" + + - We use namespaces to avoid clashes and to structure code + - *Everything* is part of the corsika namespace + - All classes and objects are encapsulated into suited sub-namespaces, + thus corsika::geometry, corsika::processes, corsika::units, etc. + - Namespace names do not use capital letters. + - Every header file is copied during build and install into + "include/corsika/[namespace]" which also means, each header file + can only provide definitions for a _single_ namespace. It is one + main purpose of namespaces to structure the location of header + files. + - Each header file uses an include protection that includes at + least the namespace name, and header file name, thus, `#ifndef + __include_geometry_Point_h__` or `#ifnedf __geometry_Point_h__`, + or similar are acceptable. + - Header files should always be included with `<..>`, thus, + `#include <corsika/geometry/Point.h>` since the build system + will always provide the correct include directives (and files + anyway cannot be found in file-system paths that typically do + not follow the namespace naming conventions outlined + here). + + - Header files are named after the main class (or object) they + define. This also means each header file name starts with a + capital letter. + + +## Coding rules + + - Code may not introduce any compiler errors, or warnings + - All unit tests must succeed at all times + - We use C++17 concepts wherever useful and helpful + - On any major error or malfunction we throw an exception. This is needed and required for complex physics and shower debugging. + - We never catch exceptions for error handling, there might be very few special exceptions from this. We need to discuss such cases. + - Everything that should not change should be `const` + - Everything that does not need to be visible to the outside of a class/struct should be `private` or `protected` + - We prefer the use of references, wherever useful + - There cannot be any pointer in the interface of any class or object + exposed to outside users, there might be pointers for very special cases + inside of classes. + - When you contribute new code, or extend existing code, at the same time provide unit-tests for all functionality. + - Code must be documented with `doxygen` commands + + +## Release versioning scheme + +Releases of CORSIKA are thought to be the baseline for larger scale testing, and full production. +The releases are numbered as x.y.z, starting with x=8 form the gitlab c++ version. X will only be incremented +for major design or physics changes. The y index is updated for new official releases that normally contain improved or enhanced physics +performance, and may also contain normal interface changes to accomodate improvements. The z index can be updated frequently for +bug fixes or new features. Changes in z will not contain interface changes, thus, code will remain fully compatible. +Special releases of CORSIKA can also have a tag name from git, e.g. as in the "milestone1" release. + + +# How to become scientific author of the CORSIKA Project + +The CORSIKA Project decides on who becomes scientific author. The +following conditions are clearly sufficient, but not all of them are +required all the time: + - responsibility for a particular functionality or part + - follows these [GUIDELINES](GUIDELINES.md) + - agrees to the [COLLABORATION_AGREEMENT](COLLABORATION_AGREEMENT.md) + - active in the CORSIKA Project, that means responsive to + discussions and problems in corsika-devel@list.kit.edu or on https//gitlab.ikp.kit.edu, of relevant *issues*, + or in (phone) meetings + - the members of the CORSIKA Project panel agree diff --git a/MCNET_GUIDELINES b/MCNET_GUIDELINES new file mode 100644 index 0000000000000000000000000000000000000000..60d53f92a3d9f5edab6725c863591b286d6b618c --- /dev/null +++ b/MCNET_GUIDELINES @@ -0,0 +1,112 @@ +These guidelines are copied from: http://www.montecarlonet.org/ +--------------------------------------------------------------- + + + MCNET GUIDELINES + + for Event Generator Authors and Users + + + PREAMBLE + +This generator has been developed as part of an academic research +project and is the result of many years of work by the authors. +Proper academic recognition is a requirement for its continued +development. + +The components of the program have been developed to work together +as a coherent physics framework. We believe that the creation of +separately maintained forks or piecewise distribution of individual +parts would diminish their scientific value. + +The authors are convinced that software development in a scientific +context requires full availability of all source code, to further +progress and to allow local modifications to meet the specific +requirements of the individual user. + +Therefore we have decided to release this program under the GNU +General Public License (GPL) version 2 (with the option to instead +follow the terms and conditions of any later version of GPL). This +ensures that the source code will be available to you and grants you +the freedom to use and modify the program. You can redistribute your +modified versions as long as you retain the GPL and respect existing +copyright notices (see the file 'COPYING' for details). + +By using the GPL, we entrust you with considerable freedom and expect +you to use it wisely, since the GPL does not address the issues in +the first two paragraphs. To remedy this shortcoming, we have +formulated the following guidelines relevant for the distribution +and usage of event generator software in an academic setting. + + + GUIDELINES + +1) The integrity of the program should be respected. + ------------------------------------------------- + +1.1) Suspected bugs and proposed fixes should be reported back to the + original authors to be considered for inclusion in the standard + distribution. No independently developed and maintained forks + should be created as long as the original authors actively work on + the program. + +1.2) The program should normally be redistributed in its entirety. + When there are special reasons, an agreement should be sought with + the original authors to redistribute only specific parts. This + should be arranged such that the redistributed parts remain + updated in step with the standard distribution. + +1.3) Any changes in the code must be clearly marked in the source + (reason, author, date) and documented. If any modified version is + redistributed it should be stated at the point of distribution + (download link) that it has been modified and why. + +1.4) If a significant part of the code is used by another program, + this should be clearly specified in that program's documentation and + stated at its point of distribution. + +1.5) Copyright information and references may not be removed. + Copyright-related program messages may not be altered and must be + printed even if only a part of the program is used. Adding further + messages specifying any modifications is encouraged. + + +2) The program and its physics should be properly cited when used for + academic publications + ------------------------------------------------------------------ + +2.1) The main software reference as designated by the program authors + should always be cited. + +2.2) In addition, the original literature on which the program is based + should be cited to the extent that it is of relevance for a study, + applying the same threshold criteria as for other literature. + +2.3) When several programs are combined, they should all be mentioned, + commensurate with their importance for the physics study at hand. + +2.4) To make published results reproducible, the exact versions of the + codes that were used and any relevant program and parameter + modifications should be spelled out. + + + POSTSCRIPT + +The copyright license of the software is the GPL v2 alone, therefore +the above guidelines are not legally binding. However, we reserve the +right to criticize offenders. The guidelines should always be combined +with common sense, for interpretation and for issues not covered. +Enquiries regarding the guidelines and related issues are encouraged +and should be directed to the authors of the program. + +Please note that the program, including all its code and documentation, +is intended for academic use and is delivered "as is" to be used at +your own risk, without any guarantees. + +---------------------------------------------------------------------- + +These guidelines were edited by Nils Lavesson and David Grellscheid +for the MCnet collaboration, which has approved and agreed to respect +them. MCnet is a Marie Curie Research Training Network funded under +Framework Programme 6 contract MRTN-CT-2006-035606. + diff --git a/Main/Environment.h b/Main/Environment.h index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..90582b3dfb00d2d85850b81455a2a4c0c061413b 100644 --- a/Main/Environment.h +++ b/Main/Environment.h @@ -0,0 +1,10 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ diff --git a/Main/Stack.h b/Main/Stack.h index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..90582b3dfb00d2d85850b81455a2a4c0c061413b 100644 --- a/Main/Stack.h +++ b/Main/Stack.h @@ -0,0 +1,10 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ diff --git a/Main/shower.cc b/Main/shower.cc index 7bc09673a29ed82e49f1939a52b3f5c86f31adad..10facda7435af5d9f6f1ab83223a25ad61c068b1 100644 --- a/Main/shower.cc +++ b/Main/shower.cc @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #include <utl/Stack.h> int main(int argc, char** argv) { return 0; } diff --git a/Processes/CMakeLists.txt b/Processes/CMakeLists.txt index 26d6814423d8948e08241babec5e1f646f0ba06a..c59cafa4654b415c9f4dcee8267858389a60b75a 100644 --- a/Processes/CMakeLists.txt +++ b/Processes/CMakeLists.txt @@ -1,3 +1,10 @@ + add_subdirectory (NullModel) #add_subdirectory (Sibyll) add_subdirectory (StackInspector) + +#add_custom_target(CORSIKAprocesses) +add_library (CORSIKAprocesses INTERFACE) +add_dependencies(CORSIKAprocesses ProcessNullModel) +add_dependencies(CORSIKAprocesses ProcessSibyll) +add_dependencies(CORSIKAprocesses ProcessStackInspector) diff --git a/Processes/NullModel/NullModel.cc b/Processes/NullModel/NullModel.cc index 4da71dc16066f65af4623db7a45338ac9c8fde0c..3629d522a3383abcb5954a84f2fa47d1a1d45354 100644 --- a/Processes/NullModel/NullModel.cc +++ b/Processes/NullModel/NullModel.cc @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #include <corsika/process/null_model/NullModel.h> using namespace corsika::process::null_model; diff --git a/Processes/NullModel/NullModel.h b/Processes/NullModel/NullModel.h index 98782765696e7d0a87d19611bba0d9fc1e9f4c7f..dc3bf504bca57e2cadcc264ec50e9903dcd9a2ad 100644 --- a/Processes/NullModel/NullModel.h +++ b/Processes/NullModel/NullModel.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _Physics_NullModel_NullModel_h_ #define _Physics_NullModel_NullModel_h_ diff --git a/Processes/NullModel/testNullModel.cc b/Processes/NullModel/testNullModel.cc index 311c732cec4b3cbdb8bcb4d4886b37df0e940696..c098b025b678427f1e244fc8052d0dd889f11d08 100644 --- a/Processes/NullModel/testNullModel.cc +++ b/Processes/NullModel/testNullModel.cc @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one // cpp file #include <catch2/catch.hpp> diff --git a/Processes/Sibyll/ParticleConversion.cc b/Processes/Sibyll/ParticleConversion.cc index 6aca2fcf0a07a1ee89eeb859fbb6b40b37e96ec3..9925b97b9e90dba68dc38f46fd5ddb32e71c68c7 100644 --- a/Processes/Sibyll/ParticleConversion.cc +++ b/Processes/Sibyll/ParticleConversion.cc @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #include <corsika/particles/ParticleProperties.h> #include <corsika/process/sibyll/ParticleConversion.h> diff --git a/Processes/Sibyll/ParticleConversion.h b/Processes/Sibyll/ParticleConversion.h index e4461a24acacf3f86516a39f8787750730ceca34..aa9db1f27c46ede634c8f01e56fbd26a43740ea8 100644 --- a/Processes/Sibyll/ParticleConversion.h +++ b/Processes/Sibyll/ParticleConversion.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_processes_sibyll_particles_h_ #define _include_processes_sibyll_particles_h_ diff --git a/Processes/Sibyll/testSibyll.cc b/Processes/Sibyll/testSibyll.cc index 581e5a10b0e66e2c111a3958f51b23548e9d5197..86fec3148bdc36e9fe082beeba2ee7736f7aad74 100644 --- a/Processes/Sibyll/testSibyll.cc +++ b/Processes/Sibyll/testSibyll.cc @@ -1,4 +1,14 @@ +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #include <corsika/particles/ParticleProperties.h> #include <corsika/process/sibyll/ParticleConversion.h> #include <corsika/units/PhysicalUnits.h> diff --git a/Processes/StackInspector/CMakeLists.txt b/Processes/StackInspector/CMakeLists.txt index 90b92bca58b8f9967591197bdbe0b64e01981f6f..b0b9d379e9b5b1c7536e1619e9c9e55f322b791c 100644 --- a/Processes/StackInspector/CMakeLists.txt +++ b/Processes/StackInspector/CMakeLists.txt @@ -29,6 +29,7 @@ set_target_properties ( target_link_libraries ( ProcessStackInspector CORSIKAunits + CORSIKAsetup ) target_include_directories ( @@ -52,7 +53,6 @@ add_executable (testStackInspector testStackInspector.cc) target_link_libraries ( testStackInspector - CORSIKAgeometry CORSIKAunits CORSIKAthirdparty # for catch2 ) diff --git a/Processes/StackInspector/StackInspector.cc b/Processes/StackInspector/StackInspector.cc index b52ab72b4b26e327a4f80bbbe0642ae1227064d5..3455294e4e6eb6db54f96d0170ad88144a711a99 100644 --- a/Processes/StackInspector/StackInspector.cc +++ b/Processes/StackInspector/StackInspector.cc @@ -1,13 +1,56 @@ #include <corsika/process/stack_inspector/StackInspector.h> +#include <corsika/units/PhysicalUnits.h> +#include <iostream> +using namespace std; + +using namespace corsika; +using namespace corsika::units::si; using namespace corsika::process::stack_inspector; -StackInspector::StackInspector() {} +template <typename Stack, typename Trajectory> +StackInspector<Stack, Trajectory>::StackInspector(const bool aReport) + : fReport(aReport) {} + +template <typename Stack, typename Trajectory> +StackInspector<Stack, Trajectory>::~StackInspector() {} + +template <typename Stack, typename Trajectory> +process::EProcessReturn StackInspector<Stack, Trajectory>::DoContinuous(Particle&, + Trajectory&, + Stack& s) const { + + // using namespace corsika::particles::io; + + static int countStep = 0; + if (!fReport) return EProcessReturn::eOk; + // std::cout << "generation " << countStep << std::endl; + [[maybe_unused]] int i = 0; + EnergyType Etot = 0_GeV; + for (auto& iterP : s) { + EnergyType E = iterP.GetEnergy(); + Etot += E; + // std::cout << " particle data: " << i++ << ", id=" << iterP << " | " << std::endl; + } + countStep++; + // cout << "#=" << countStep << " " << s.GetSize() << " " << Etot/1_GeV << endl; + cout << countStep << " " << s.GetSize() << " " << Etot / 1_GeV << " " << endl; + return EProcessReturn::eOk; +} + +template <typename Stack, typename Trajectory> +double StackInspector<Stack, Trajectory>::MinStepLength(Particle&) const { + return 0; +} -StackInspector::~StackInspector() {} +template <typename Stack, typename Trajectory> +void StackInspector<Stack, Trajectory>::DoDiscrete(Particle&, Stack&) const {} -void StackInspector::init() {} +template <typename Stack, typename Trajectory> +void StackInspector<Stack, Trajectory>::Init() {} -void StackInspector::run() {} +#include <corsika/setup/SetupStack.h> +#include <corsika/setup/SetupTrajectory.h> -double StackInspector::GetStepLength() { return 0; } +template class corsika::process::stack_inspector::StackInspector<setup::Stack, + setup::Trajectory>; diff --git a/Processes/StackInspector/StackInspector.h b/Processes/StackInspector/StackInspector.h index acf22aa7c4f67d455326b5e44abacf3f1ab1478d..3127177692bdf2cc3dd75694600962252af8f39d 100644 --- a/Processes/StackInspector/StackInspector.h +++ b/Processes/StackInspector/StackInspector.h @@ -1,19 +1,35 @@ #ifndef _Physics_StackInspector_StackInspector_h_ #define _Physics_StackInspector_StackInspector_h_ +#include <corsika/process/ProcessSequence.h> + namespace corsika::process { namespace stack_inspector { - class StackInspector { + template <typename Stack, typename Trajectory> + class StackInspector + : public corsika::process::BaseProcess<StackInspector<Stack, Trajectory>> { + + typedef typename Stack::ParticleType Particle; public: - StackInspector(); + StackInspector(const bool aReport); ~StackInspector(); - void init(); - void run(); - double GetStepLength(); + void Init(); + + // template <typename Particle, typename Trajectory, typename Stack> + EProcessReturn DoContinuous(Particle&, Trajectory&, Stack& s) const; + + // template <typename Particle> + double MinStepLength(Particle&) const; + + // template <typename Particle, typename Stack> + void DoDiscrete(Particle&, Stack&) const; + + private: + bool fReport; }; } // namespace stack_inspector diff --git a/SCIENTIFIC_AUTHORS b/SCIENTIFIC_AUTHORS new file mode 100644 index 0000000000000000000000000000000000000000..2e7676f3785ea1388b14abc71b9298e810c4cca3 --- /dev/null +++ b/SCIENTIFIC_AUTHORS @@ -0,0 +1,2 @@ +(empty...tbd) + diff --git a/Setup/CMakeLists.txt b/Setup/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..2f9a4ddf36a57d5f73d523fa5771ee17193a83bd --- /dev/null +++ b/Setup/CMakeLists.txt @@ -0,0 +1,35 @@ + +set ( + SETUP_HEADERS + SetupStack.h + SetupLogger.h + SetupEnvironment.h + SetupTrajectory.h + ) + +set ( + SETUP_NAMESPACE + corsika/setup + ) + +add_library (CORSIKAsetup INTERFACE) +CORSIKA_COPY_HEADERS_TO_NAMESPACE (CORSIKAsetup ${SETUP_NAMESPACE} ${SETUP_HEADERS}) + +target_link_libraries ( + CORSIKAsetup + INTERFACE + CORSIKAgeometry + SuperStupidStack + ) + +target_include_directories ( + CORSIKAsetup + INTERFACE + $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include> + $<INSTALL_INTERFACE:include/include> + ) + +install ( + FILES ${SETUP_HEADERS} + DESTINATION include/${SETUP_NAMESPACE} + ) diff --git a/Setup/SetupEnvironment.h b/Setup/SetupEnvironment.h new file mode 100644 index 0000000000000000000000000000000000000000..ef97fecbab9b393e445a7d1d95502e45a548a1aa --- /dev/null +++ b/Setup/SetupEnvironment.h @@ -0,0 +1,6 @@ +#ifndef _include_corsika_setup_environment_h_ +#define _include_corsika_setup_environment_h_ + +namespace corsika {} + +#endif diff --git a/Setup/SetupLogger.h b/Setup/SetupLogger.h new file mode 100644 index 0000000000000000000000000000000000000000..4383a15705cdf1d083508767965e8eb33edbee0d --- /dev/null +++ b/Setup/SetupLogger.h @@ -0,0 +1,6 @@ +#ifndef _include_corsika_setup_logger_h_ +#define _include_corsika_setup_logger_h_ + +namespace corsika {} + +#endif diff --git a/Setup/SetupStack.h b/Setup/SetupStack.h new file mode 100644 index 0000000000000000000000000000000000000000..ec57cf0836d6e547e5124b2564761a85323ec686 --- /dev/null +++ b/Setup/SetupStack.h @@ -0,0 +1,11 @@ +#ifndef _corsika_setup_setupstack_h_ +#define _corsika_setup_setupstack_h_ + +#include <corsika/stack/super_stupid/SuperStupidStack.h> + +namespace corsika::setup { + + typedef corsika::stack::super_stupid::SuperStupidStack Stack; +} + +#endif diff --git a/Setup/SetupTrajectory.h b/Setup/SetupTrajectory.h new file mode 100644 index 0000000000000000000000000000000000000000..dd903e79cc78c1bc149b11cbaf1139d49020c323 --- /dev/null +++ b/Setup/SetupTrajectory.h @@ -0,0 +1,11 @@ +#ifndef _corsika_setup_setuptrajectory_h_ +#define _corsika_setup_setuptrajectory_h_ + +#include <corsika/geometry/LineTrajectory.h> + +namespace corsika::setup { + + typedef corsika::geometry::LineTrajectory Trajectory; +} + +#endif diff --git a/Stack/DummyStack/DummyStack.h b/Stack/DummyStack/DummyStack.h index 8dd528a7e1f7a1fa9fe35f0ac6373f3a881727db..63b84bf30e4c03a80de512a78c1cb0677d95f7b9 100644 --- a/Stack/DummyStack/DummyStack.h +++ b/Stack/DummyStack/DummyStack.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_dummystack_h_ #define _include_dummystack_h_ diff --git a/Stack/DummyStack/SuperStupidStack.h b/Stack/DummyStack/SuperStupidStack.h index c1b9215d08c96d6c5f3ca5923718bd64df9ff12a..47647e2c397ba8c7aab7ecda35cb05a700516176 100644 --- a/Stack/DummyStack/SuperStupidStack.h +++ b/Stack/DummyStack/SuperStupidStack.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_superstupidstack_h_ #define _include_superstupidstack_h_ diff --git a/Stack/SuperStupidStack/SuperStupidStack.h b/Stack/SuperStupidStack/SuperStupidStack.h index f5674e2cf885c809c17c631e0e3a832afc566047..66eed2d784c437b59bc87973b1723b586e63f51d 100644 --- a/Stack/SuperStupidStack/SuperStupidStack.h +++ b/Stack/SuperStupidStack/SuperStupidStack.h @@ -1,3 +1,14 @@ + +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. + */ + #ifndef _include_superstupidstack_h_ #define _include_superstupidstack_h_ diff --git a/do-copyright.py b/do-copyright.py new file mode 100755 index 0000000000000000000000000000000000000000..dcbd9d0593f260e69bd1effc84560a8e1307dbfa --- /dev/null +++ b/do-copyright.py @@ -0,0 +1,79 @@ +#!/usr/bin/python + +import os.path + +text = """ +/** + * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu + * + * See file AUTHORS for a list of contributors. + * + * 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. +*/\n +""" + +excludeDirs = ["ThirdParty", "git"] +excludeFiles = ['PhysicalConstants.h'] + +extensions = [".cc", ".h", ".test"] + +def checkNote(filename): + + startNote = -1 + endNote = -1 + isCopyright = False + lines = [] + + with open(filename, "r") as file: + for line in file.readlines(): + lines.append(line) + file.close() + + + for iLine in range(len(lines)): + line = lines[iLine] + if "/**" in line and startNote == -1: + startNote = iLine + if "copyright" in line.lower() and startNote>=0 and endNote==-1: + isCopyright = True + if "*/" in line and startNote>=0 and endNote==-1: + endNote = iLine + iLine += 1 + + #if startNote>=0 and endNote>=0 and isCopyright: + #print filename + #for iLine in range(startNote, endNote+1): + # print lines[iLine] + + os.rename(filename, filename+".bak") + + with open(filename, "w") as file: + + file.write(text) + + firstLine = 0 + if startNote>=0 and endNote>=0 and isCopyright: + firstLine = endNote + 2 + + for iLine in range(firstLine, len(lines)): + file.write(lines[iLine]) + + file.close() + + +def next_file(x, dir_name, files): + for check in excludeDirs : + if check in dir_name: + return + for check in files : + filename, file_extension = os.path.splitext(check) + for check2 in excludeFiles : + if check2 in check: + return + if file_extension in extensions: + checkNote(dir_name + "/" + check) + + +os.path.walk("./", next_file, 0)