From ef918a12356ee0f75e6aebfd5778d996830333aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hern=C3=A1n=20Asorey?= <asoreyh@gmail.com> Date: Thu, 5 Oct 2023 18:20:24 +0200 Subject: [PATCH] The LAGO ANNA v1 package was restructured following standards. Major changes included: * New header at each file. * New license description file. * Header files are now in the include/ directory. * App source files are now in the src/ directory. * Makefile was adapted for the new tree structure. * Versioning was eliminated from each file to avoid future issues. * The README was completely rewriten following the schema used for LAGO ARTI and LAGO ACQUA. * App integrated help was improved --- LICENSE | 29 +++- Makefile | 85 +++++----- README.md | 260 ++++++++++++++++++++++++++--- docs/images/lago-logo.png | Bin 0 -> 24031 bytes dump.cc | 74 -------- example.cc | 72 -------- lago_data.h => include/lago_data.h | 38 ++--- include/lago_defs.h | 31 ++++ lago_file.h => include/lago_file.h | 39 ++--- include/sol.h | 41 +++++ lago-anna.sh | 39 ++--- lago_defs.h | 46 ----- sol.h | 55 ------ src/dump.cc | 59 +++++++ src/example.cc | 57 +++++++ raw.cc => src/raw.cc | 68 +++----- sol.cc => src/sol.cc | 56 +++---- 17 files changed, 570 insertions(+), 479 deletions(-) create mode 100644 docs/images/lago-logo.png delete mode 100644 dump.cc delete mode 100644 example.cc rename lago_data.h => include/lago_data.h (69%) create mode 100644 include/lago_defs.h rename lago_file.h => include/lago_file.h (65%) create mode 100644 include/sol.h delete mode 100644 lago_defs.h delete mode 100644 sol.h create mode 100644 src/dump.cc create mode 100644 src/example.cc rename raw.cc => src/raw.cc (92%) rename sol.cc => src/sol.cc (89%) diff --git a/LICENSE b/LICENSE index 85e3fcc..57f4239 100644 --- a/LICENSE +++ b/LICENSE @@ -1,12 +1,29 @@ -Copyright (c) 2012, The LAGO Project +BSD 3-Clause License + +Copyright (c) 2012, The LAGO Collaboration All rights reserved. -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/Makefile b/Makefile index 232d58a..018f425 100644 --- a/Makefile +++ b/Makefile @@ -1,59 +1,54 @@ -# Makefile -- -# Copyright (C) 2012-TODAY The LAGO Project, http://lagoproject.org, lago-pi@lagoproject.org -# Original authors: Hernán Asorey -# e-mail: asoreyh@cab.cnea.gov.ar (asoreyh@gmail.com) -# Laboratorio de Detección de PartÃculas y Radiación (LabDPR) -# Centro Atómico Bariloche - San Carlos de Bariloche, Argentina -# -# LICENSE BSD-3-Clause -# Copyright (c) 2012, The LAGO Project -# All rights reserved. +################################################################################ +# File: Makefile +# Description: Builds the ANNA toolsuite, a scientific tool for analyzing +# LAGO astrophysical data. Provides targets for building applications +# (dump, example, raw, sol, ...) and cleaning build artifacts. +# Author: Hernán Asorey +# Email: asoreyh@gmail.com +# Date: 2012-2023 # -# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -# -# 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -# -*- coding: utf8 -*- -# try to preserve encoding -CC = g++ +# Copyright: [2012] [The LAGO Collaboration] +# License: BSD-3-Clause +# See the LICENSE file in the project root for full license information. +################################################################################ -TESTS = check-lago -TARGETS = raw sol example dump -CFLAGS = -Wall +# Compiler and compile options +CXX = g++ +CXXFLAGS = -Wall -Iinclude -all: $(TESTS) $(TARGETS) +# Source and build directories +SRC_DIR = src +BUILD_DIR = build -raw: raw.cc lago_file.h lago_data.h - $(CC) -o $@ $< $(CFLAGS) +# Tests +TESTS = check-env -grb: grb.cc lago_file.h lago_data.h - $(CC) -o $@ $< $(CFLAGS) +# Applications +APPS = dump example raw sol -sol: sol.cc lago_file.h lago_data.h - $(CC) -o $@ $< $(CFLAGS) +# Default target +all: $(TESTS) $(APPS) -example: example.cc lago_file.h lago_data.h - $(CC) -o $@ $< $(CFLAGS) +# Compile each application +$(APPS): %: $(BUILD_DIR)/%.o + $(CXX) $(CXXFLAGS) -o $@ $^ -dump: dump.cc lago_file.h lago_data.h - $(CC) -o $@ $< $(CFLAGS) - -.PHONY: clean +# Rule for compiling object files +$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cc + @mkdir -p $(BUILD_DIR) + $(CXX) $(CXXFLAGS) -c -o $@ $< +# Clean up clean: - rm -f $(TARGETS) + rm -rf $(BUILD_DIR) $(APPS) + +.PHONY: all clean -check-lago: +check-env: ifndef LAGO_ANNA -$(info LAGO_ANNA is not set.) -$(info I will define it to $PWD, and modify the .bashrc) +$(warning LAGO_ANNA is not set. I will define it to $(PWD), and modify the .bashrc) $(shell $(PWD)/lago-anna.sh) LAGO_ANNA=$(PWD) -endif +else +$(info Environment variable LAGO_ANNA is set to $(LAGO_ANNA)) +endif \ No newline at end of file diff --git a/README.md b/README.md index b7e32f5..19ce5e8 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,237 @@ -#  The LAGO ANNA suite - -| CODENAME | ANNA | -|-------------------|:------| -| COPYRIGHT | (C) 2012-Today, The LAGO Project, [lagoproject.net](http://lagoproject.net)| -| LICENSE | BSD-3-Clause | -| REPOSITORY | https://github.com/lagoproject | -| CONTACT | [lago@lagoproject.org](mailto:lago@lagoproject.org)| -| DESCRIPTION | The LAGO project operates its WCD by using different types of electronics, but using a unified data structure. Here you will find the latest stable (prod) version of the data analysis suite of the LAGO Project | -| CONTRIBUTORS | If you want to contribute to this project please [send us an email](mailto:lago@lagoproject.org)| - - -| CODE GUIDELINES | | -|-------------------|:------| -| FILE ENCODING | UTF8 (please use <kbd>iconv -f YOUR_ENCODING -t UTF-8 file_to_convert > converted_file </kbd> before to push) | -| LANGUAGE | English (preferred) | -| INDENT STYLE | [Stroustrup](http://en.wikipedia.org/wiki/Indent_style#Variant:_Stroustrup) using 1 tab for 4 columns wide. check [here for vim setup](http://tedlogan.com/techblog3.html) | -| | If you prefer, please use: <kbd>astyle -t4 -A4 -y file_to_convert</kbd> before to push -| VERSIONING | Sequence-based identifiers, v<version>r<release>. First public release: **v1r0** -| INSTALL | After installing dependences (see INSTALL), just *make* -| USAGE | Please visit our [wikipage](http://wiki.lagoproject.org) (internal use only)| - -The [Latin American Giant Observatory (LAGO)](http://lagoproject.org) is an extended Astroparticle Observatory at global scale. It is mainly oriented to basic research on three branches of Astroparticle physics: the Extreme Universe, Space Weather phenomena, and Atmospheric Radiation at ground level. +<!-- [](https://zenodo.org/badge/latestdoi/28657065) --> +<div id="top"></div> +<br /> +<div align="center"> + <a href="https://github.com/lagoproject/anna"> + <img src="docs/images/lago-logo.png" alt="Logo" width="140"> + </a> + <h3 align="center">The ANNA Framework</h3> + <p align="center"> + A framework designed to analyze the data measured by the single Water Cherenkov Detectors (WCD) of the <a href="https://lagoproject.net/">LAGO</a> detection network. It follows the LAGO hierarchycal structured for the measured data. + <br /> + <!-- <a href="https://github.com/lagoproject/anna"><strong>Explore the docs (soon) »</strong></a> + <br /> --> + <br /> + <a href="https://github.com/lagoproject/anna/issues">Request Feature</a> + · + <a href="https://github.com/lagoproject/anna/issues">Report Bug</a> + · + <a href="#Contact">Contact us</a> +</p> +</div> + +<!-- TABLE OF CONTENTS --> +<details> + <summary>Table of Contents</summary> +<br /> + <ol> + <li><a href="#about-anna">About ANNA</a></li> + <li><a href="#getting-started">Getting Started</a></li> + <li><a href="#usage">Usage</a></li> + <li><a href="#proposed-features">Proposed Features</a></li> + <li><a href="#contributing">Contributing</a></li> + <li><a href="#license">License</a></li> + <li><a href="#contact">Contact</a></li> + </ol> +</details> + +<!-- ABOUT THE PROJECT --> +## About ANNA +<!-- +<style> +html, body {height: 100%;} +img { +height: auto; +width: auto; +} +img.rel { + width: 33%; +} +</style> +--> + +<!-- <img class="rel" src="./docs/images/flux-chacaltaya.png" alt="The seconday particle flux at Chacaltaya" width="200"><img class="rel" src="./docs/images/geomagnetic.png" alt="Charged particles trajectories" width="200"><img class="rel" src="./docs/images/wcd-muon.png" alt="A muon traversing the WCD " width="200"> +--> + +ANNA is a complete framework designed to analyse the data the signals produced by the secondary particles emerging from the interaction of singles, multiple and even the complete flux of primary cosmic rays with the atmosphere. These signals are measured for any particle detector located at a LAGO site. + +ANNA is structured using different applications files and some headers where the main data classes are defined. + +During its normal operation and the different maintenance modes of the <a href="https://lagoproject.net/">LAGO detection network</a>, LAGO produces datasets containing different types of data. All the LAGO datasets follow standardized schemes based on linked data as described in our <a href="https://lagoproject.github.io/DMP/">DMP</a>. + +<div id="measured"></div> + +### Measured data (Ln) + +The measured data LAGO dataset corresponds to any type of data that was measured in a LAGO site, including measurements of any type of radiation, atmospheric conditions, geomagnetic, solar irradiation, telemetry, and any other type of measurement produced by the LAGO detector and its peripherals. The LAGO measured data includes also any data product derived by any means of the previously described data. All the LAGO measured datasets are hierarchically tagged with the ***L<sub>n</sub>*** label, being ***n*** a sequential number, starting by *0*, that indicates the level of data processing: L<sub>0</sub> corresponds to the raw data, L<sub>1</sub> is the first level of analysed data, etc. + +### ANNA main reference and citation + +When using ANNA, please cite using the DOI included at the begininig of this file. + +H. Asorey for the LAGO Collaboration, _"The LAGO ANNA Data Analysis framework"_, [doi:_SOON_](https://doi.org/). + +<p align="right">(<a href="#top">back to top</a>)</p> + +## LAGO ANNA versions + +Currently, two electronic boards are consistenly used across the LAGO detection network. Two different versions were developed for [LAGO ACQUA](https://github.com/lagoproject/acqua), the LAGO data acquisition package. LAGO ANNA follows the same schema: + +* LAGO ANNA v1.x.x: Compatible with LAGO ACQUA v1, for the electronic board based on the NEXYS-II FPGA. Current version is the last developed version, [LAGO ACQUA v1.5.0](https://github.com/lagoproject/acqua/releases/tag/acqua-v1.5.0). In general, LAGO ANNA v1 are compatible with data acquired using LAGO ACQUA v1. +* LAGO ANNA v2.x.x: Compatible with LAGO ACQUA v2, designed for the electronic board based on the StemLab 125/14 RedPitaya electronic board. This is currently under actively development. +* LAGO ANNA v3.x.x: This will be developed for the new LAGO EDGE detection schema. + +Major versions for both the LAGO ACQUA and the LAGO ANNA frameworks are developed in different branchs and identified with the corresponding tags. Master branch always points to the latest stable development. + + +<!-- GETTING STARTED --> +## Getting Started + +To get a local copy of the ANNA framework up and running follow these simple example steps. + +### Prerequisites + +#### System requirements + +ANNA runs in any Linux based system, including those supported at iOS, raspberry-pis' and RedPitayas' linux-based OS. For Windows user, we strongly recommend to install some of your preferred linux distribution using virtualbox. + +The command for installing required packages depends on the OS architecture. + +In Fedora, Scientific Linux and CentOS, use + +`sudo yum install <package>`. + +In Ubuntu/Debian, including RPi and RPy SBC, use + +`sudo apt install <package>`. + +In both cases, you can also use the graphic package manager included in your preferred distro. + +ANNA requires the installation of a few and largerly common standard packages: + +* bash +* gcc +* make +* screen +* rsync +* git + +As a one-liner for Ubuntu/Debian: + +```bash +sudo apt install build-essential screen rsync git +``` +(git is optional). + +#### Dependencies + +ANNA does not have any dependencies. + +### Installation + +1. If you are using git, just clone this repository: + ```bash + cd /path/to/ANNA/installation + git clone https://github.com/lagoproject/anna.git + ``` + Otherwise, you can also directly download ANNA without using git (in this case, you should reinstall ANNA for every upgrade): + ```bash + cd /path/to/ANNA/installation + wget -c https://github.com/lagoproject/anna/archive/refs/heads/master.zip + unzip master.zip + rm master.zip + ``` +2. ANNA compiling is very simple: + ```bash + cd /path/to/ANNA/anna + make + ``` + 1. During the first installation of ANNA (or if you need to install ANNA in a different directory), `make` will define the `$LAGO_ANNA` environment variable, that points to the ANNA current directory installation. Then, ANNA installer will add the definition of this variable to the user's local `.bashrc` and to the local `$PATH` environment variable: + + ```bash + # + ## Changes added by the ANNA suite on <installation date> + # + export ANNA="/path/to/ANNA/installation/ANNA" + export LAGO_ANNA_VERSION="<LAGO ANNA current version>" + export PATH="${ANNA}:$PATH" + ``` + +If you follow the above described steps and everything works well, you should find some new executable files at the root `${LAGO_ANNA}` directory. + + +<p align="right">(<a href="#top">back to top</a>)</p> + +### ANNA updates, releases, branchs and tags + +ANNA is continously used, revised and updated within the [LAGO Collaboration](https://lagoproject.net). + +Unless you are a developer, we recommend to use only the latest ANNA release contained in the `master` branch of this repository. Stable versions are tagged and can be found in the [corresponding section of this repository](https://github.com/lagoproject/anna/tags). + +Clone and install ANNA from `dev` or `dev-*` branches is strongly discouraged, as these branches are used for testing, bug correction and for the development of new features. + +If you are using `git`, you can update ANNA just by doing: + +```bash +cd /path/to/ANNA/anna +git pull +make +``` + +Otherwise, you could just reinstall ANNA by following the [installation guide](#installation). + +<p align="right">(<a href="#top">back to top</a>)</p> + +## Usage + +The ANNA framework follows the basic hierarchical structure of the <a href="#measured">LAGO Measured data</a>. It includes two basic applications, [`dump`](src/dump.cc) and [`example`](src/example.cc) intended as basic examples of the usage of the LAGO ANNA classes. + +All the ANNA applications have their own integrated help, accesible through the `-?` modifier. + +### General help and documentation + +The documentation is currently under preparation and will be released soon. A brief description of the action of each code and the available options and modifiers can be seen by calling them with the `-?` modifier. + +<!-- _For more examples, please refer to the [ANNA Documentation](docs)._ --> + +<p align="right">(<a href="#top">back to top</a>)</p> + +## Proposed features + +See the [open issues](https://github.com/lagoproject/anna/issues) for a full list of proposed features (and known issues). + +<p align="right">(<a href="#top">back to top</a>)</p> + +<!-- CONTRIBUTING --> +## Contributing + +Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**. + +If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". +Don't forget to give the project a star! Thanks again! + +1. Fork the Project +2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) +3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) +4. Push to the Branch (`git push origin feature/AmazingFeature`) +5. Open a Pull Request + +<p align="right">(<a href="#top">back to top</a>)</p> + +<!-- LICENSE --> +## License + +ANNA is distributed under the [BSD-3 License](https://opensource.org/licenses/BSD-3-Clause). See the [LICENCE](LICENSE) for more information. + +<p align="right">(<a href="#top">back to top</a>)</p> + +<!-- CONTACT --> +## Contact + +The ANNA framework is developed by the LAGO Collaboration. If you need to contact us, please complete our [contact form](https://lagoproject.net/contact.html). + +ANNA principal contact: [Dr Hernán Asorey (@asoreyh)](https://github.com/asoreyh) + +Project Link: [https://github.com/lagoproject/anna](https://github.com/lagoproject/anna) + +<p align="right">(<a href="#top">back to top</a>)</p> \ No newline at end of file diff --git a/docs/images/lago-logo.png b/docs/images/lago-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8cd6151d6410c660b4515e6e28c23248a5da35b9 GIT binary patch literal 24031 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 WoCVab45>{30000<MNUMnLSTaIKEp!* literal 0 HcmV?d00001 diff --git a/dump.cc b/dump.cc deleted file mode 100644 index 965167e..0000000 --- a/dump.cc +++ /dev/null @@ -1,74 +0,0 @@ -/* dump.cc -- LAGO dump of pulses, mainly intended to debug and develop classes - * - * Copyright (C) 2016-TODAY The LAGO Project, http://lagoproject.org, lago-pi@lagoproject.org - * - * Original authors: Hernán Asorey - * e-mail: asoreyh@cab.cnea.gov.ar (asoreyh@gmail.com) - * Laboratorio Detección de PartÃculas y Radiación (LabDPR) - * Centro Atómico Bariloche - San Carlos de Bariloche, Argentina - */ - -/* LICENSE BSD-3-Clause BSD-3-Clause -Copyright (c) 2012, The LAGO Project -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* -*- coding: utf8 -*- - * try to preserve encoding */ -/************************************************************************/ -#define _FILE_OFFSET_BITS 64 - -#include "lago_defs.h" -#include "lago_data.h" -#include "lago_file.h" - -using namespace std; - -#define MAXPULSEPERSEC 1000000 - -// This is just an example to use LAGO libraries - -int main (int argc, char **argv) { - if (argc < 2) { - cerr << "Error: data file is needed. Please check." << endl; - cerr << endl; - cerr << "Usage: " << argv[0] << " <file>" << endl; - return 1; - } - LagoFile Input; - int NbPulses=0; - LagoGeneric Data; - LagoEvent *Pulse; - Pulse=(LagoEvent*)malloc(MAXPULSEPERSEC*sizeof(LagoEvent)); - for (int i=0;i<MAXPULSEPERSEC;i++) - Pulse[i].Init(); - Input.Open(argv[1]); - Input.SetForce(1); - - // - // File reading and processing - // - double rt=0., ft=0., tt=0.; - cerr << "Reading file" << endl; - while(NbPulses!=-1) { - NbPulses=Input.ReadOneSecond(&Data,Pulse,MAXPULSEPERSEC); - for (int i=0; i<NbPulses; i++) { - rt = Pulse[i].GetRiseTime(2); - ft = Pulse[i].GetFallTime(2); - tt = Pulse[i].GetFullTime(2); - if (rt>0 && ft>0) - cout << rt << " " << ft << " " << tt << endl; - } - } - return 0; -} diff --git a/example.cc b/example.cc deleted file mode 100644 index f8b872d..0000000 --- a/example.cc +++ /dev/null @@ -1,72 +0,0 @@ -/* example.cc -- LAGO example on how to include classes - * - * Copyright (C) 2012-TODAY The LAGO Project, http://lagoproject.org, lago-pi@lagoproject.org - * - * Original authors: Hernán Asorey, Xavier Bertou - * e-mail: asoreyh@cab.cnea.gov.ar (asoreyh@gmail.com) - * Laboratorio Detección de PartÃculas y Radiación (LabDPR) - * Centro Atómico Bariloche - San Carlos de Bariloche, Argentina - */ - -/* LICENSE BSD-3-Clause BSD-3-Clause -Copyright (c) 2012, The LAGO Project -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* -*- coding: utf8 -*- - * try to preserve encoding */ -/************************************************************************/ -#define _FILE_OFFSET_BITS 64 - -#include "lago_defs.h" -#include "lago_data.h" -#include "lago_file.h" - -using namespace std; - -#define MAXPULSEPERSEC 1000000 - -// This is just an example to use LAGO libraries - -int main (int argc, char **argv) { - if (argc < 2) { - cerr << "Error: data file is needed. Please check." << endl; - cerr << endl; - cerr << "Usage: " << argv[0] << " <file>" << endl; - return 1; - } - LagoFile Input; - int NbPulses=0; - LagoGeneric Data; - LagoEvent *Pulse; - Pulse=(LagoEvent*)malloc(MAXPULSEPERSEC*sizeof(LagoEvent)); - for (int i=0;i<MAXPULSEPERSEC;i++) - Pulse[i].Init(); - Input.Open(argv[1]); - - // - // File reading and processing - // - cerr << "Reading file" << endl; - while(NbPulses!=-1) { - NbPulses=Input.ReadOneSecond(&Data,Pulse,MAXPULSEPERSEC); - cout << Data.second << " " << Data.pressure << " " << Data.temperature << " " << NbPulses << endl; - /* - * So, Data have one second of pulses, here we should our analysis - * say, looking for excesses for grb analysis, something like this: - * if (NbPulses>0) - * TreatSecond(&Data,Pulse,NbPulses); - */ - } - return 0; -} diff --git a/lago_data.h b/include/lago_data.h similarity index 69% rename from lago_data.h rename to include/lago_data.h index 8d3e806..fcb569f 100644 --- a/lago_data.h +++ b/include/lago_data.h @@ -1,30 +1,16 @@ -/* lago_data.h -- Data analysis library for LAGO Data - * - * Copyright (C) 2012-TODAY The LAGO Project, http://lagoproject.org, lago-pi@lagoproject.org - * - * Original authors: Hernán Asorey, Xavier Bertou - * e-mail: asoreyh@cab.cnea.gov.ar (asoreyh@gmail.com) - * Laboratorio de Detección de PartÃculas y Radiación (LabDPR) - * Centro Atómico Bariloche - San Carlos de Bariloche, Argentina */ - -/* LICENSE BSD-3-Clause -Copyright (c) 2012, The LAGO Project -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/* +################################################################################ +# File: lago_data.h +# Description: Classes, methods and attributes for handling LAGO data defs. +# Author: Hernán Asorey +# Email: asoreyh@gmail.com +# Date: 2012 +# +# Copyright: [2012] [The LAGO Collaboration] +# License: BSD-3-Clause +# See the LICENSE file in the project root for full license information. +################################################################################ */ - -/* -*- coding: utf8 -*- - * try to preserve encoding */ -/****************************************************************************/ #ifndef LAGO_DATA_H #define LAGO_DATA_H diff --git a/include/lago_defs.h b/include/lago_defs.h new file mode 100644 index 0000000..fb69d7c --- /dev/null +++ b/include/lago_defs.h @@ -0,0 +1,31 @@ +/* +################################################################################ +# File: lago_data.h +# Description: Global definitions for the LAGO ANNA framework +# Author: Hernán Asorey +# Email: asoreyh@gmail.com +# Date: 2012 +# +# Copyright: [2012] [The LAGO Collaboration] +# License: BSD-3-Clause +# See the LICENSE file in the project root for full license information. +################################################################################ +*/ +#ifndef LAGO_DEFS_H +#define LAGO_DEFS_H + +#define PROJECT "The LAGO ANNA Suite" +#define CODENAME "ANNA" +// DATAVERSION AND CODEVERSION SHOULD BE THE SAME NUMBER +#define CODEVERSION "v5" +#define DATAVERSION 5 + +#define CHANNELS 3 +#define TRACELEN 12 +#define BASELINE 50 +#define BIN 25. +#define ADCMAX 1024 +#define CHRGMAX 4096 +#define TRIGGERBIN 3 + +#endif \ No newline at end of file diff --git a/lago_file.h b/include/lago_file.h similarity index 65% rename from lago_file.h rename to include/lago_file.h index 1855636..bf5764f 100644 --- a/lago_file.h +++ b/include/lago_file.h @@ -1,31 +1,16 @@ -/* lago_file.h: handle different lago data structure files - * - * Copyright (C) 2012-TODAY The LAGO Project, http://lagoproject.org, lago-pi@lagoproject.org - * - * Original authors: Hernán Asorey, Xavier Bertou - * e-mail: asoreyh@cab.cnea.gov.ar (asoreyh@gmail.com) - * Laboratorio de Detección de PartÃculas y Radiación (LabDPR) - * Centro Atómico Bariloche - San Carlos de Bariloche, Argentina */ - -/* LICENSE BSD-3-Clause -Copyright (c) 2012, The LAGO Project -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/* +################################################################################ +# File: lago_file.h +# Description: handles different lago data structure files +# Author: Hernán Asorey +# Email: asoreyh@gmail.com +# Date: 2012 +# +# Copyright: [2012] [The LAGO Collaboration] +# License: BSD-3-Clause +# See the LICENSE file in the project root for full license information. +################################################################################ */ - -/* -*- coding: utf8 -*- - * try to preserve encoding */ -/************************************************************************/ - #ifndef LAGO_FILE_H #define LAGO_FILE_H diff --git a/include/sol.h b/include/sol.h new file mode 100644 index 0000000..2bed770 --- /dev/null +++ b/include/sol.h @@ -0,0 +1,41 @@ +/* +################################################################################ +# File: sol.h +# Description: header file for the 'sol' LAGO ANNA application +# Author: Hernán Asorey +# Email: asoreyh@gmail.com +# Date: 2012 +# +# Copyright: [2012] [The LAGO Collaboration] +# License: BSD-3-Clause +# See the LICENSE file in the project root for full license information. +################################################################################ +*/ +#define _FILE_OFFSET_BITS 64 +#include "lago_defs.h" +#include <string.h> +#include <stdio.h> +#include <stdlib.h> +#include <iostream> +#include <fstream> +#include <math.h> + +using namespace std; + +//global variables +int irange=0, ipos=0, iband=0, ipeak=0, icompress=0, iflux = 0, iauto=1, iverbose=0; +int check = 0; +const int max_charge=4096; +int avg_time = 10; +double fluxtime=1.; +double diameter = 0., height = 0.; +int channel=0, start=0, width=0, qs=0, end_hst=max_charge, qe=max_charge; +char type='0'; //charge +int Open(char *nfi); +inline double sign(double x); +inline double log10(double x); +double itpl_pos(double *pos_avg, double *chr_der, int i); +double itpl_chr(double *pos_avg, double *chr_der, int i, double x); +double fitHisto(int xi, int xf, double* h, double* r); +void Usage(char *prog); +FILE *fi, *out, *cal, *muo, *pof, *lof; diff --git a/lago-anna.sh b/lago-anna.sh index 8cd7ecf..13fd489 100755 --- a/lago-anna.sh +++ b/lago-anna.sh @@ -1,35 +1,24 @@ #!/bin/bash -# lago-anna.sh -# define LAGO_ANNA and modify .bashrc -# Copyright (C) 2012-TODAY The LAGO Project, http://lagoproject.org, lago-pi@lagoproject.org -# Original authors: Hernán Asorey -# e-mail: asoreyh@cab.cnea.gov.ar (asoreyh@gmail.com) -# Laboratorio de Detección de PartÃculas y Radiación (LabDPR) -# Centro Atómico Bariloche - San Carlos de Bariloche, Argentina -# -# LICENSE BSD-3-Clause -# Copyright (c) 2012, The LAGO Project -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -# -# 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +################################################################################ +# File: lago-anna.sh +# Description: Defines the environmental variables and modify the $USER .bashrc +# Author: Hernán Asorey +# Email: asoreyh@gmail.com +# Date: 2012-2023 # - -# -*- coding: utf8 -*- -# try to preserve encoding +# Copyright: [2012] [The LAGO Collaboration] +# License: BSD-3-Clause +# See the LICENSE file in the project root for full license information. +################################################################################ +VERSION="1.5" export LAGO_ANNA=${PWD} +export LAGO_ANNA_VERSION=${VERSION} date=$(date -u) echo "# ## Changes added by the LAGO ANNA suite on $date # export LAGO_ANNA=\"${LAGO_ANNA}\" +export LAGO_ANNA_VERSION=\"${VERSION}\" export PATH=\"\${LAGO_ANNA}:\$PATH\" " >> ${HOME}/.bashrc -source ${HOME}/.bashrc +source ${HOME}/.bashrc \ No newline at end of file diff --git a/lago_defs.h b/lago_defs.h deleted file mode 100644 index 60d7f42..0000000 --- a/lago_defs.h +++ /dev/null @@ -1,46 +0,0 @@ -/* lago_defs.h -- LAGO definitions for this suite - * - * Copyright (C) 2012-TODAY The LAGO Project, http://lagoproject.org, lago-pi@lagoproject.org - * - * Original authors: Hernán Asorey - * e-mail: asoreyh@cab.cnea.gov.ar (asoreyh@gmail.com) - * Laboratorio de Detección de PartÃculas y Radiación (LabDPR) - * Centro Atómico Bariloche - San Carlos de Bariloche, Argentina */ - -/* LICENSE BSD-3-Clause -Copyright (c) 2012, The LAGO Project -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* -*- coding: utf8 -*- - * try to preserve encoding */ -/************************************************************************/ - -#ifndef LAGO_DEFS_H -#define LAGO_DEFS_H - -#define PROJECT "The LAGO ANNA Suite" -#define CODENAME "ANNA" -// DATAVERSION AND CODEVERSION SHOULD BE THE SAME NUMBER -#define CODEVERSION "v5" -#define DATAVERSION 5 - -#define CHANNELS 3 -#define TRACELEN 12 -#define BASELINE 50 -#define BIN 25. -#define ADCMAX 1024 -#define CHRGMAX 4096 -#define TRIGGERBIN 3 - -#endif diff --git a/sol.h b/sol.h deleted file mode 100644 index 3f89e53..0000000 --- a/sol.h +++ /dev/null @@ -1,55 +0,0 @@ -/* sol.h -- code oriented to perform Space Weather related analysis from 1-minute histograms - * - * Copyright (C) 2012-TODAY The LAGO Project, http://lagoproject.org, lago-pi@lagoproject.org - * - * Original authors: Hernán Asorey - * e-mail: asoreyh@cab.cnea.gov.ar (asoreyh@gmail.com) - * Laboratorio de Detección de PartÃculas y Radiación (LabDPR) - * Centro Atómico Bariloche - San Carlos de Bariloche, Argentina */ - -/* LICENSE BSD-3-Clause -Copyright (c) 2012, The LAGO Project -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* -*- coding: utf8 -*- - * try to preserve encoding */ -/************************************************************************/ -#define _FILE_OFFSET_BITS 64 -#include "lago_defs.h" -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <iostream> -#include <fstream> -#include <math.h> - -using namespace std; - -//global variables -int irange=0, ipos=0, iband=0, ipeak=0, icompress=0, iflux = 0, iauto=1, iverbose=0; -int check = 0; -const int max_charge=4096; -int avg_time = 10; -double fluxtime=1.; -double diameter = 0., height = 0.; -int channel=0, start=0, width=0, qs=0, end_hst=max_charge, qe=max_charge; -char type='0'; //charge -int Open(char *nfi); -inline double sign(double x); -inline double log10(double x); -double itpl_pos(double *pos_avg, double *chr_der, int i); -double itpl_chr(double *pos_avg, double *chr_der, int i, double x); -double fitHisto(int xi, int xf, double* h, double* r); -void Usage(char *prog); -FILE *fi, *out, *cal, *muo, *pof, *lof; diff --git a/src/dump.cc b/src/dump.cc new file mode 100644 index 0000000..1766105 --- /dev/null +++ b/src/dump.cc @@ -0,0 +1,59 @@ +/* +################################################################################ +# File: dump.cc +# Description: LAGO dump of pulses, mainly intended to debug and develop classes +# Author: Hernán Asorey +# Email: asoreyh@gmail.com +# Date: 2012 +# +# Copyright: [2012] [The LAGO Collaboration] +# License: BSD-3-Clause +# See the LICENSE file in the project root for full license information. +################################################################################ +*/ +#define _FILE_OFFSET_BITS 64 + +#include "lago_defs.h" +#include "lago_data.h" +#include "lago_file.h" + +using namespace std; + +#define MAXPULSEPERSEC 1000000 + +// This is just an example to use LAGO libraries + +int main (int argc, char **argv) { + if (argc < 2) { + cerr << "Error: data file is needed. Please check." << endl; + cerr << endl; + cerr << "Usage: " << argv[0] << " <file>" << endl; + return 1; + } + LagoFile Input; + int NbPulses=0; + LagoGeneric Data; + LagoEvent *Pulse; + Pulse=(LagoEvent*)malloc(MAXPULSEPERSEC*sizeof(LagoEvent)); + for (int i=0;i<MAXPULSEPERSEC;i++) + Pulse[i].Init(); + Input.Open(argv[1]); + Input.SetForce(1); + + // + // File reading and processing + // + double rt=0., ft=0., tt=0.; + cerr << "Reading file" << endl; + while(NbPulses!=-1) { + NbPulses=Input.ReadOneSecond(&Data,Pulse,MAXPULSEPERSEC); + for (int i=0; i<NbPulses; i++) { + rt = Pulse[i].GetRiseTime(2); + ft = Pulse[i].GetFallTime(2); + tt = Pulse[i].GetFullTime(2); + if (rt>0 && ft>0) + cout << rt << " " << ft << " " << tt << endl; + } + } + return 0; +} \ No newline at end of file diff --git a/src/example.cc b/src/example.cc new file mode 100644 index 0000000..d0ba4e9 --- /dev/null +++ b/src/example.cc @@ -0,0 +1,57 @@ +/* +################################################################################ +# File: example.cc +# Description: LAGO example on how to include and use LAGO ANNA main classes +# Author: Hernán Asorey +# Email: asoreyh@gmail.com +# Date: 2012 +# +# Copyright: [2012] [The LAGO Collaboration] +# License: BSD-3-Clause +# See the LICENSE file in the project root for full license information. +################################################################################ +*/ +#define _FILE_OFFSET_BITS 64 + +#include "lago_defs.h" +#include "lago_data.h" +#include "lago_file.h" + +using namespace std; + +#define MAXPULSEPERSEC 1000000 + +// This is just an example to use LAGO libraries + +int main (int argc, char **argv) { + if (argc < 2) { + cerr << "Error: data file is needed. Please check." << endl; + cerr << endl; + cerr << "Usage: " << argv[0] << " <file>" << endl; + return 1; + } + LagoFile Input; + int NbPulses=0; + LagoGeneric Data; + LagoEvent *Pulse; + Pulse=(LagoEvent*)malloc(MAXPULSEPERSEC*sizeof(LagoEvent)); + for (int i=0;i<MAXPULSEPERSEC;i++) + Pulse[i].Init(); + Input.Open(argv[1]); + + // + // File reading and processing + // + cerr << "Reading file" << endl; + while(NbPulses!=-1) { + NbPulses=Input.ReadOneSecond(&Data,Pulse,MAXPULSEPERSEC); + cout << Data.second << " " << Data.pressure << " " << Data.temperature << " " << NbPulses << endl; + /* + * So, Data have one second of pulses, here we should our analysis + * say, looking for excesses for grb analysis, something like this: + * if (NbPulses>0) + * TreatSecond(&Data,Pulse,NbPulses); + */ + } + return 0; +} \ No newline at end of file diff --git a/raw.cc b/src/raw.cc similarity index 92% rename from raw.cc rename to src/raw.cc index 88d8c61..f43cb20 100644 --- a/raw.cc +++ b/src/raw.cc @@ -1,32 +1,17 @@ /* - * raw.cc -- analyze "raw" (L0) data and produce the preprocessed "preliminary" (L1) data set. - * - * Copyright (C) 2012-TODAY The LAGO Project, http://lagoproject.org, lago-pi@lagoproject.org - * - * Original authors: Hernán Asorey, Xavier Bertou - * e-mail: asoreyh@cab.cnea.gov.ar (asoreyh@gmail.com) - * Laboratorio de Detección de PartÃculas y Radiación (LabDPR) - * Centro Atómico Bariloche - San Carlos de Bariloche, Argentina - */ - -/* LICENSE BSD-3-Clause -Copyright (c) 2012, The LAGO Project -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +################################################################################ +# File: raw.cc +# Description: Clean and analyze the L0 (raw) data measured at the LAGO WCD +# detectors and produce the preprocessed L1 (preliminary) data set. +# Author: Hernán Asorey +# Email: asoreyh@gmail.com +# Date: 2012 +# +# Copyright: [2012] [The LAGO Collaboration] +# License: BSD-3-Clause +# See the LICENSE file in the project root for full license information. +################################################################################ */ - -/* -*- coding: utf8 -*- - * try to preserve encoding */ -/************************************************************************/ #define _FILE_OFFSET_BITS 64 #include <string.h> @@ -424,13 +409,8 @@ void Usage(char *prog) { cout << "\t" << PROJECT << " " << CODEVERSION << endl; cout << endl; - cout << "\t(c) 2012-Today, The LAGO Project, http://lagoproject.org" << endl; - cout << "\t(c) 2012, LabDPR, http://labdpr.cab.cnea.gov.ar" << endl; - cout << endl; - cout << "\tThe LAGO Project, lago@lagoproject.org" << endl; - cout << endl; - cout << "\tDPR Lab. 2012" << endl; - cout << "\tX. Bertou and H. Asorey, asoreyh@cab.cnea.gov.ar" << endl; + cout << "\t(c) 2012, The LAGO Project, http://lagoproject.net" << endl; + cout << "\tH. Asorey, asoreyh@gmail.com" << endl; cout << endl; cout << "\tRaw data analysis suite for the LAGO Project (L0 -> L1)" << endl; cout << "Usage: " << prog << " [modifiers] <options> <values> <raw_file>[.dat[.bz2]]" << endl; @@ -818,7 +798,7 @@ int main (int argc, char *argv[]) if (ical) { cal << "# # # p 1 cal " << PROJECT << " " << CODEVERSION << endl; - cal << "# # L1 level file (processed raw data, use at your own risk or contact lago@lagoproject.org)" << endl; + cal << "# # L1 level file (processed raw data, use at your own risk or contact lago@lagoproject.net)" << endl; cal << "# # This is a file containing the charge and peak calibration histograms" << endl; cal << "# # Format is ch1 ch2 ch3 pk1 pk2 pk3" << endl; if (imuo && imup) @@ -838,7 +818,7 @@ int main (int argc, char *argv[]) if (itim) { tim << "# # # p 1 tim " << PROJECT << " " << CODEVERSION << endl; - tim << "# # L1 level file (processed raw data, use at your own risk or contact lago@lagoproject.org)" << endl; + tim << "# # L1 level file (processed raw data, use at your own risk or contact lago@lagoproject.net)" << endl; tim << "# # This is a file containing the time difference histogram" << endl; tim << "# # Format is #time_difference(ns) #count for each channel" << endl; if (tim_map) @@ -853,13 +833,13 @@ int main (int argc, char *argv[]) if (iraw) { raw << "# # # p 1 raw " << PROJECT << " " << CODEVERSION << endl; - raw << "# # L1 level file (processed raw data, use at your own risk or contact lago@lagoproject.org)" << endl; + raw << "# # L1 level file (processed raw data, use at your own risk or contact lago@lagoproject.net)" << endl; raw << "# # This is a RAW file containing the first 10 seconds of data" << endl; } if (isol) { fprintf(sol, "# # # p 1 sol %s %s\n", PROJECT, CODEVERSION); - fprintf(sol, "# # L1 level file (processed raw data, use at your own risk or contact lago@lagoproject.org)\n"); + fprintf(sol, "# # L1 level file (processed raw data, use at your own risk or contact lago@lagoproject.net)\n"); fprintf(sol, "# # This is a Solar data file.\n"); fprintf(sol, "# # These are integrated charge and peak histograms, with monitoring information\n"); fprintf(sol, "# # Integrated time is %d seconds.\n", iSolTime); @@ -877,7 +857,7 @@ int main (int argc, char *argv[]) if (iall) { fprintf(all, "# # # p 1 all %s %s\n", PROJECT, CODEVERSION); - fprintf(all, "# # L1 level file (processed raw data, use at your own risk or contact lago@lagoproject.org)\n"); + fprintf(all, "# # L1 level file (processed raw data, use at your own risk or contact lago@lagoproject.net)\n"); fprintf(all, "# # This is a file containing all processed data\n"); fprintf(all, "# # Format is # second frequency temperature pressure\n"); fprintf(all, "# # time_to_prev_pulse counts_to_prev_pulse channels_triggered_mask ch_ch1 pk_ch1 ch_ch2 pk_ch2 ch_ch3 pk_ch3 risetime_ch1 falltime_ch1 risetime_ch2 falltime_ch2 risetime_ch3 falltime_ch3 (channel <i> is printed only if it triggered)\n"); @@ -892,14 +872,14 @@ int main (int argc, char *argv[]) if (imon) { fprintf(mon, "# # # p 1 all %s %s\n", PROJECT, CODEVERSION); - fprintf(mon, "# # L1 level file (processed raw data, use at your own risk or contact lago@lagoproject.org)\n"); + fprintf(mon, "# # L1 level file (processed raw data, use at your own risk or contact lago@lagoproject.net)\n"); fprintf(mon, "# # This is a monitoring file.\n"); fprintf(mon, "# # Format is second frequency temperature pressure average_baseline_chN dev_baseline_chN\n"); } if (iscl) { fprintf(scl, "# # # p 1 scl %s %s\n", PROJECT, CODEVERSION); - fprintf(scl, "# # L1 level file (processed raw data, use at your own risk or contact lago@lagoproject.org)\n"); + fprintf(scl, "# # L1 level file (processed raw data, use at your own risk or contact lago@lagoproject.net)\n"); fprintf(scl, "# # This is the old-lago-like scaler file.\n"); fprintf(scl, "# # Format is:\n"); fprintf(scl, "# # # s second frequency temperature pressure Total_Rate Rate_per_channel:_(%d)_columns\n",CHANNELS); @@ -925,7 +905,7 @@ int main (int argc, char *argv[]) } if (irte) { fprintf(rte, "# # # p 1 rte %s %s\n", PROJECT, CODEVERSION); - fprintf(rte, "# # L1 level file (processed raw data, use at your own risk or contact lago@lagoproject.org)\n"); + fprintf(rte, "# # L1 level file (processed raw data, use at your own risk or contact lago@lagoproject.net)\n"); fprintf(rte, "# # This is the rate (pulse per second) file.\n"); fprintf(rte, "# # Format is:\n"); fprintf(rte, "# # second temperature pressure Total_Rate Rate_per_channel:_(%d)_columns\n",CHANNELS); @@ -938,7 +918,7 @@ int main (int argc, char *argv[]) } if (iflx) { fprintf(flx, "# # # p 1 flx %s %s\n", PROJECT, CODEVERSION); - fprintf(flx, "# # L1 level file (processed raw data, use at your own risk or contact lago@lagoproject.org)\n"); + fprintf(flx, "# # L1 level file (processed raw data, use at your own risk or contact lago@lagoproject.net)\n"); fprintf(flx, "# # This is the flux file.\n"); fprintf(flx, "# # Format is:\n"); fprintf(flx, "# # second_at_half_interval avg_temp avg_press avg_rate avg_rate_per_channel sigma_temp sigma_press sigma_rate sigma_rate_per_channel\n"); @@ -1078,4 +1058,4 @@ int main (int argc, char *argv[]) fprintf(stderr, "\n"); } } -} +} \ No newline at end of file diff --git a/sol.cc b/src/sol.cc similarity index 89% rename from sol.cc rename to src/sol.cc index 5b03f17..54c3a28 100644 --- a/sol.cc +++ b/src/sol.cc @@ -1,30 +1,18 @@ -/* sol.cc -- code oriented to perform Space Weather related analysis from 1-minute histograms - * - * Copyright (C) 2012-TODAY The LAGO Project, http://lagoproject.org, lago-pi@lagoproject.org - * - * Original authors: Hernán Asorey - * e-mail: asoreyh@cab.cnea.gov.ar (asoreyh@gmail.com) - * Laboratorio de Detección de PartÃculas y Radiación (LabDPR) - * Centro Atómico Bariloche - San Carlos de Bariloche, Argentina */ - -/* LICENSE BSD-3-Clause -Copyright (c) 2012, The LAGO Project -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/* +################################################################################ +# File: sol.cc +# Description: Analyze L1 data for producing and analyzing 1-minute charge +# (as part of the L2 (quality) data files), intented for be part of +# the high quality data release in the LAGO space weather program. +# Author: Hernán Asorey +# Email: asoreyh@gmail.com +# Date: 2012 +# +# Copyright: [2012] [The LAGO Collaboration] +# License: BSD-3-Clause +# See the LICENSE file in the project root for full license information. +################################################################################ */ - -/* -*- coding: utf8 -*- - * try to preserve encoding */ -/************************************************************************/ #include "sol.h" /* Functions */ @@ -103,13 +91,9 @@ void Usage(char *prog) { cout << "\t" << PROJECT << " " << CODEVERSION << endl; cout << endl; - cout << "\t(c) 2012-Today, The LAGO Project, http://lagoproject.org" << endl; - cout << "\t(c) 2012, LabDPR, http://labdpr.cab.cnea.gov.ar" << endl; - cout << endl; - cout << "\tThe LAGO Project, lago@lagoproject.org" << endl; + cout << "\t(c) 2012, The LAGO Project, http://lagoproject.net" << endl; cout << endl; - cout << "\tHalley (UIS) and ULA 2014" << endl; - cout << "\tY. Perez and H. Asorey, asoreyh@cab.cnea.gov.ar" << endl; + cout << "\tH. Asorey, asoreyh@gmail.com" << endl; cout << endl; cout << "\tSpace Weather dedicated analysis (L1 -> L2SW)" << endl; cout << "\tAnalyze .sol output files to identify solar modulation phenomena." << endl; @@ -282,7 +266,7 @@ int main (int argc, char *argv[]) exit(1); } fprintf(lof, "# # # L2 log %s %s\n", PROJECT, CODEVERSION); - fprintf(lof, "# # L2 level file (lago@lagoproject.org): fit log for the sol automatic procedure\n"); + fprintf(lof, "# # L2 level file (lago@lagoproject.net): fit log for the sol automatic procedure\n"); fprintf(lof, "## STATUS ## Analyzing %s\n", ifile); /* preparing for work */ @@ -344,7 +328,7 @@ int main (int argc, char *argv[]) // headers fprintf(out, "# # # L2 flx %s %s\n", PROJECT, CODEVERSION); - fprintf(out, "# # L2 level file (lago@lagoproject.org): flux of signals as function of time\n"); + fprintf(out, "# # L2 level file (lago@lagoproject.net): flux of signals as function of time\n"); fprintf(out, "# # Analysis is done by integrating the whole channel %d charge histogram in\n", channel); if (iband) { fprintf(out, "# # %d bands of %d ADCq starting from %d ADCq and up to %d ADCq\n", nbands, width, start+1, end_hst+1); @@ -364,7 +348,7 @@ int main (int argc, char *argv[]) } if (iauto) { fprintf(muo, "# # # L2 flx %s %s\n", PROJECT, CODEVERSION); - fprintf(muo, "# # L2 level file (lago@lagoproject.org): flux of signals as function of time\n"); + fprintf(muo, "# # L2 level file (lago@lagoproject.net): flux of signals as function of time\n"); fprintf(muo, "# # Analysis is done by automaticaly detection of calibration histogram features\n"); fprintf(muo, "# # on channel %d, and integrating the flux in four different bands of deposited energy.\n", channel); fprintf(muo, "# # Detector diameter=%.1f mm. Detector height=%.1f mm\n", diameter, height); @@ -570,7 +554,7 @@ int main (int argc, char *argv[]) exit(1); } fprintf(pof, "# # # L2 pos %s %s\n", PROJECT, CODEVERSION); - fprintf(pof, "# # L2 level file (lago@lagoproject.org): file to check goodness of fit for automatic detection\n"); + fprintf(pof, "# # L2 level file (lago@lagoproject.net): file to check goodness of fit for automatic detection\n"); fprintf(pof, "# # 4 columns format is:\n"); fprintf(pof, "# # Feature_Index Seed_for_fit Feature analyzed_file\n"); } -- GitLab