Commit cb1f36d63e87932a766efc4c42c66f0579290eaa
1 parent
0e711992
initial version
Showing
8 changed files
with
473 additions
and
0 deletions
pyext/ctlike.i
0 โ 100644
| 1 | +/*************************************************************************** | ||
| 2 | + * ctlike - CTA maximum likelihood tool * | ||
| 3 | + * ----------------------------------------------------------------------- * | ||
| 4 | + * copyright (C) 2010 by Jurgen Knodlseder * | ||
| 5 | + * ----------------------------------------------------------------------- * | ||
| 6 | + * * | ||
| 7 | + * This program is free software; you can redistribute it and/or modify * | ||
| 8 | + * it under the terms of the GNU General Public License as published by * | ||
| 9 | + * the Free Software Foundation; either version 2 of the License, or * | ||
| 10 | + * (at your option) any later version. * | ||
| 11 | + * * | ||
| 12 | + ***************************************************************************/ | ||
| 13 | +/** | ||
| 14 | + * @file ctlike.i | ||
| 15 | + * @brief CTA maximum likelihood tool SWIG definition | ||
| 16 | + * @author J. Knodlseder | ||
| 17 | + */ | ||
| 18 | +%{ | ||
| 19 | +/* Put headers and other declarations here that are needed for compilation */ | ||
| 20 | +#include "ctlike.hpp" | ||
| 21 | +%} | ||
| 22 | +%include gammalib.i | ||
| 23 | + | ||
| 24 | + | ||
| 25 | +/***********************************************************************//** | ||
| 26 | + * @class ctlike | ||
| 27 | + * | ||
| 28 | + * @brief CTA maximum likelihood tool SWIG interface defintion. | ||
| 29 | + ***************************************************************************/ | ||
| 30 | +class ctlike : public GApplication { | ||
| 31 | +public: | ||
| 32 | + // Constructors and destructors | ||
| 33 | + ctlike(void) : GApplication(CTLIKE_NAME, CTLIKE_VERSION) { return; } | ||
| 34 | + | ||
| 35 | + // Methods | ||
| 36 | + int run(void); | ||
| 37 | +}; | ||
| 38 | + | ||
| 39 | + | ||
| 40 | +/***********************************************************************//** | ||
| 41 | + * @brief CTA maximum likelihood tool SWIG extension | ||
| 42 | + ***************************************************************************/ | ||
| 43 | +%extend ctlike { | ||
| 44 | + ctlike copy() { | ||
| 45 | + return (*self); | ||
| 46 | + } | ||
| 47 | +} |
src/ctbin/main.cpp
0 โ 100644
| 1 | +/*************************************************************************** | ||
| 2 | + * ctbin - CTA data binning main code * | ||
| 3 | + * ----------------------------------------------------------------------- * | ||
| 4 | + * copyright (C) 2010 by Jurgen Knodlseder * | ||
| 5 | + * ----------------------------------------------------------------------- * | ||
| 6 | + * * | ||
| 7 | + * This program is free software; you can redistribute it and/or modify * | ||
| 8 | + * it under the terms of the GNU General Public License as published by * | ||
| 9 | + * the Free Software Foundation; either version 2 of the License, or * | ||
| 10 | + * (at your option) any later version. * | ||
| 11 | + * * | ||
| 12 | + ***************************************************************************/ | ||
| 13 | +/** | ||
| 14 | + * @file main.cpp | ||
| 15 | + * @brief CTA data binning tool main code | ||
| 16 | + * @author J. Knodlseder | ||
| 17 | + */ | ||
| 18 | + | ||
| 19 | +/* __ Includes ___________________________________________________________ */ | ||
| 20 | +#ifdef HAVE_CONFIG_H | ||
| 21 | +#include <config.h> | ||
| 22 | +#endif | ||
| 23 | +#include <stdio.h> | ||
| 24 | +#include "ctbin.hpp" | ||
| 25 | + | ||
| 26 | + | ||
| 27 | +/***********************************************************************//** | ||
| 28 | + * @brief Main entry point of application | ||
| 29 | + * | ||
| 30 | + * @param[in] argc Number of command line arguments. | ||
| 31 | + * @param[in] argv Command line arguments. | ||
| 32 | + * | ||
| 33 | + * This is the main entry point of the gtbin application. It allocates a | ||
| 34 | + * ctbin object and runs the application. | ||
| 35 | + ***************************************************************************/ | ||
| 36 | +int main (int argc, char *argv[]) | ||
| 37 | +{ | ||
| 38 | + // Create instance of application | ||
| 39 | + ctbin application(argc, argv); | ||
| 40 | + | ||
| 41 | + // Run application | ||
| 42 | + int rc = application.run(); | ||
| 43 | + | ||
| 44 | + // Return | ||
| 45 | + return rc; | ||
| 46 | +} |
src/ctlike/Makefile.am
0 โ 100644
| 1 | +## Process this file with automake to produce Makefile.in | ||
| 2 | + | ||
| 3 | +# we use srcdir/src for "private" includes | ||
| 4 | +# we use srcdir/include for the static global include files | ||
| 5 | +# we use builddir/src for the generated include files to get found | ||
| 6 | + | ||
| 7 | +# Include directories | ||
| 8 | +INCLUDES = -I$(top_srcdir)/include \ | ||
| 9 | + -I$(top_builddir)/src \ | ||
| 10 | + -I$(top_srcdir)/src | ||
| 11 | + | ||
| 12 | +# Program name | ||
| 13 | +bin_PROGRAMS = ctlike | ||
| 14 | + | ||
| 15 | +# Sources | ||
| 16 | +sources = ctlike.cpp | ||
| 17 | + | ||
| 18 | +# Program definition | ||
| 19 | +ctlike_SOURCES = main.cpp $(sources) | ||
| 20 | +ctlike_LDFLAGS = @LDFLAGS@ | ||
| 21 | +ctlike_CPPFLAGS = @CPPFLAGS@ | ||
| 22 | + | ||
| 23 | +# Parameter files | ||
| 24 | +pfilesdir = $(prefix)/syspfiles | ||
| 25 | +pfiles_DATA = ctlike.par | ||
| 26 | + | ||
| 27 | +# Libtool library (only needed for python bindings) | ||
| 28 | +noinst_LTLIBRARIES = libctlike.la | ||
| 29 | +libctlike_la_SOURCES = $(sources) |
src/ctlike/ctlike.cpp
0 โ 100644
| 1 | +/*************************************************************************** | ||
| 2 | + * ctlike - CTA maximum likelihood tool * | ||
| 3 | + * ----------------------------------------------------------------------- * | ||
| 4 | + * copyright (C) 2010 by Jurgen Knodlseder * | ||
| 5 | + * ----------------------------------------------------------------------- * | ||
| 6 | + * * | ||
| 7 | + * This program is free software; you can redistribute it and/or modify * | ||
| 8 | + * it under the terms of the GNU General Public License as published by * | ||
| 9 | + * the Free Software Foundation; either version 2 of the License, or * | ||
| 10 | + * (at your option) any later version. * | ||
| 11 | + * * | ||
| 12 | + ***************************************************************************/ | ||
| 13 | +/** | ||
| 14 | + * @file ctlike.cpp | ||
| 15 | + * @brief CTA maximum likelihood tool implementation | ||
| 16 | + * @author J. Knodlseder | ||
| 17 | + */ | ||
| 18 | + | ||
| 19 | +/* __ Includes ___________________________________________________________ */ | ||
| 20 | +#ifdef HAVE_CONFIG_H | ||
| 21 | +#include <config.h> | ||
| 22 | +#endif | ||
| 23 | +#include <stdio.h> | ||
| 24 | +#include "ctlike.hpp" | ||
| 25 | +#include "GTools.hpp" | ||
| 26 | + | ||
| 27 | + | ||
| 28 | +/***********************************************************************//** | ||
| 29 | + * @brief Setup Crab point source powerlaw model. | ||
| 30 | + ***************************************************************************/ | ||
| 31 | +GModels crab_plaw(void) | ||
| 32 | +{ | ||
| 33 | + // Setup GModels for optimizing | ||
| 34 | + GModelSpatialPtsrc point_source; | ||
| 35 | + GModelSpectralPlaw power_law; | ||
| 36 | + GModel crab; | ||
| 37 | + GModels models; | ||
| 38 | + try { | ||
| 39 | + GSkyDir dir; | ||
| 40 | + //dir.radec_deg(83.6331, +22.0145); | ||
| 41 | + dir.radec_deg(117.0, -33.0); // Adapt to source position in file | ||
| 42 | + point_source = GModelSpatialPtsrc(dir); | ||
| 43 | + power_law = GModelSpectralPlaw(1.0e-7, -2.1); | ||
| 44 | + power_law.par(0)->min(1.0e-12); | ||
| 45 | + crab = GModel(point_source, power_law); | ||
| 46 | + crab.name("Crab"); | ||
| 47 | + models.append(crab); | ||
| 48 | + } | ||
| 49 | + catch (std::exception &e) { | ||
| 50 | + std::cout << std::endl | ||
| 51 | + << "TEST ERROR: Unable setup GModels for optimizing." | ||
| 52 | + << std::endl; | ||
| 53 | + std::cout << e.what() << std::endl; | ||
| 54 | + throw; | ||
| 55 | + } | ||
| 56 | + | ||
| 57 | + // Return model | ||
| 58 | + return models; | ||
| 59 | +} | ||
| 60 | + | ||
| 61 | + | ||
| 62 | +/***********************************************************************//** | ||
| 63 | + * @brief Run maximum likelihood analysis | ||
| 64 | + ***************************************************************************/ | ||
| 65 | +int ctlike::run(void) | ||
| 66 | +{ | ||
| 67 | + // Initialise return code | ||
| 68 | + int rc = 0; | ||
| 69 | + | ||
| 70 | + // Branch on method | ||
| 71 | + std::string method = par("method")->value(); | ||
| 72 | + if (toupper(method) == "UNBINNED") | ||
| 73 | + rc = unbinned(); | ||
| 74 | + else | ||
| 75 | + rc = binned(); | ||
| 76 | + | ||
| 77 | + // Return | ||
| 78 | + return rc; | ||
| 79 | +} | ||
| 80 | + | ||
| 81 | + | ||
| 82 | +/***********************************************************************//** | ||
| 83 | + * @brief Perform unbinned maximum likelihood analysis | ||
| 84 | + ***************************************************************************/ | ||
| 85 | +int ctlike::unbinned(void) | ||
| 86 | +{ | ||
| 87 | + // Initialise return code | ||
| 88 | + int rc = 0; | ||
| 89 | + | ||
| 90 | + // Get parameters | ||
| 91 | + std::string evfile = par("evfile")->value(); | ||
| 92 | + std::string caldb = par("caldb")->value(); | ||
| 93 | + std::string irf = par("irf")->value(); | ||
| 94 | + | ||
| 95 | + // Declare observations | ||
| 96 | + GObservations obs; | ||
| 97 | + GCTAObservation run; | ||
| 98 | + | ||
| 99 | + // Setup ROI covered by data | ||
| 100 | + GCTAInstDir instDir; | ||
| 101 | + GCTARoi roi; | ||
| 102 | + instDir.radec_deg(117.02, -33.35); // Adapt to file | ||
| 103 | + roi.centre(instDir); | ||
| 104 | + roi.radius(2.5); | ||
| 105 | + | ||
| 106 | + // Setup energy range covered by data | ||
| 107 | + GEnergy emin; | ||
| 108 | + GEnergy emax; | ||
| 109 | + emin.TeV(0.02); | ||
| 110 | + emax.TeV(100.0); | ||
| 111 | + | ||
| 112 | + // Setup time range covered by data | ||
| 113 | + GTime tstart; | ||
| 114 | + GTime tstop; | ||
| 115 | + tstart.met(0.0); | ||
| 116 | + tstop.met(10000.0); | ||
| 117 | + | ||
| 118 | + // Load data and response and set ROI, energy range and time range | ||
| 119 | + // for analysis | ||
| 120 | + run.load_unbinned(evfile); | ||
| 121 | + run.response(irf,caldb); | ||
| 122 | + run.roi(roi); | ||
| 123 | + run.gti()->add(tstart, tstop); | ||
| 124 | + run.ebounds()->append(emin, emax); | ||
| 125 | + obs.append(run); | ||
| 126 | + | ||
| 127 | + // Setup GModels for optimizing | ||
| 128 | + GModels models = crab_plaw(); | ||
| 129 | + obs.models(models); | ||
| 130 | + | ||
| 131 | + // Perform LM optimization | ||
| 132 | + GOptimizerLM opt; | ||
| 133 | + opt.max_iter(1000); | ||
| 134 | + obs.optimize(opt); | ||
| 135 | + std::cout << obs << std::endl; | ||
| 136 | + | ||
| 137 | + // Return | ||
| 138 | + return rc; | ||
| 139 | +} | ||
| 140 | + | ||
| 141 | + | ||
| 142 | +/***********************************************************************//** | ||
| 143 | + * @brief Perform binned maximum likelihood analysis | ||
| 144 | + ***************************************************************************/ | ||
| 145 | +int ctlike::binned(void) | ||
| 146 | +{ | ||
| 147 | + // Initialise return code | ||
| 148 | + int rc = 0; | ||
| 149 | + | ||
| 150 | + // Get parameters | ||
| 151 | + std::string cntmap = par("cntmap")->value(); | ||
| 152 | + std::string caldb = par("caldb")->value(); | ||
| 153 | + std::string irf = par("irf")->value(); | ||
| 154 | + | ||
| 155 | + // Declare observations | ||
| 156 | + GObservations obs; | ||
| 157 | + GCTAObservation run; | ||
| 158 | + | ||
| 159 | + // Load binned CTA observation | ||
| 160 | + run.load_binned(cntmap); | ||
| 161 | + run.response(irf,caldb); | ||
| 162 | + obs.append(run); | ||
| 163 | + | ||
| 164 | + // Setup GModels for optimizing | ||
| 165 | + GModels models = crab_plaw(); | ||
| 166 | + obs.models(models); | ||
| 167 | + | ||
| 168 | + // Perform LM optimization | ||
| 169 | + GOptimizerLM opt; | ||
| 170 | + opt.max_iter(1000); | ||
| 171 | + obs.optimize(opt); | ||
| 172 | + std::cout << obs << std::endl; | ||
| 173 | + | ||
| 174 | + // Return | ||
| 175 | + return rc; | ||
| 176 | +} |
src/ctlike/ctlike.hpp
0 โ 100644
| 1 | +/*************************************************************************** | ||
| 2 | + * ctlike - CTA maximum likelihood tool * | ||
| 3 | + * ----------------------------------------------------------------------- * | ||
| 4 | + * copyright (C) 2010 by Jurgen Knodlseder * | ||
| 5 | + * ----------------------------------------------------------------------- * | ||
| 6 | + * * | ||
| 7 | + * This program is free software; you can redistribute it and/or modify * | ||
| 8 | + * it under the terms of the GNU General Public License as published by * | ||
| 9 | + * the Free Software Foundation; either version 2 of the License, or * | ||
| 10 | + * (at your option) any later version. * | ||
| 11 | + * * | ||
| 12 | + ***************************************************************************/ | ||
| 13 | +/** | ||
| 14 | + * @file ctlike.hpp | ||
| 15 | + * @brief CTA maximum likelihood tool definition | ||
| 16 | + * @author J. Knodlseder | ||
| 17 | + */ | ||
| 18 | + | ||
| 19 | +#ifndef CTLIKE_HPP | ||
| 20 | +#define CTLIKE_HPP | ||
| 21 | + | ||
| 22 | +/* __ Includes ___________________________________________________________ */ | ||
| 23 | +#include "GammaLib.hpp" | ||
| 24 | +#include "GCTALib.hpp" | ||
| 25 | + | ||
| 26 | +/* __Definitions _________________________________________________________ */ | ||
| 27 | +#define CTLIKE_NAME "ctlike" | ||
| 28 | +#define CTLIKE_VERSION "v1r0p0" | ||
| 29 | + | ||
| 30 | + | ||
| 31 | +/***********************************************************************//** | ||
| 32 | + * @class ctlike | ||
| 33 | + * | ||
| 34 | + * @brief CTA maximum likelihood tool interface defintion. | ||
| 35 | + ***************************************************************************/ | ||
| 36 | +class ctlike : public GApplication { | ||
| 37 | +public: | ||
| 38 | + // Constructors and destructors | ||
| 39 | + ctlike(void) : | ||
| 40 | + GApplication(CTLIKE_NAME, CTLIKE_VERSION) { return; } | ||
| 41 | + ctlike(int argc, char *argv[]) : | ||
| 42 | + GApplication(CTLIKE_NAME, CTLIKE_VERSION, argc, argv) { return; } | ||
| 43 | + | ||
| 44 | + // Methods | ||
| 45 | + int run(void); | ||
| 46 | + int unbinned(void); | ||
| 47 | + int binned(void); | ||
| 48 | +}; | ||
| 49 | + | ||
| 50 | +#endif /* CTLIKE_HPP */ |
src/ctlike/ctlike.par
0 โ 100644
| 1 | +############################################################################# | ||
| 2 | +# # | ||
| 3 | +# Centre d'Etude Spatiale des Rayonnements # | ||
| 4 | +# # | ||
| 5 | +# CTA Science Analysis Tools # | ||
| 6 | +# # | ||
| 7 | +# ------------------------------------------------------------------------- # | ||
| 8 | +# # | ||
| 9 | +# File: ctlike.par # | ||
| 10 | +# Version: v1r0p0 # | ||
| 11 | +# # | ||
| 12 | +# Author: Jurgen Knodlseder # | ||
| 13 | +# knodlseder@cesr.fr # | ||
| 14 | +# CESR # | ||
| 15 | +# # | ||
| 16 | +# Purpose: Parameter file for the ctlike application # | ||
| 17 | +# # | ||
| 18 | +############################################################################# | ||
| 19 | +# | ||
| 20 | +# Unbinned analysis | ||
| 21 | +#================== | ||
| 22 | +evfile, f, a, "../gammalib/inst/cta/test/data/run_00006028_eventlist_reco.fits.gz",,,"Event data file name" | ||
| 23 | +# | ||
| 24 | +# Binned analysis | ||
| 25 | +#================== | ||
| 26 | +cntmap, f, a, "../gammalib/inst/cta/test/data/run_00006028_cntmap.fits.gz",,, "Counts map" | ||
| 27 | +# | ||
| 28 | +# General parameters | ||
| 29 | +#=================== | ||
| 30 | +method, s, a, "UNBINNED",,, "Maximum likelihood method" | ||
| 31 | +caldb, s, a, "../gammalib/inst/cta/test/irf",,, "Calibration database" | ||
| 32 | +irf, s, a, "kb_E_50h_v3",,, "Instrument response function" | ||
| 33 | +# | ||
| 34 | +# Standard parameters | ||
| 35 | +#==================== | ||
| 36 | +chatter, i, h, 1,0,4, "Chattiness of output" | ||
| 37 | +clobber, b, h, yes,,, "Overwrite existing output files with new output files?" | ||
| 38 | +debug, b, h, no,,, "Debugging mode activated" | ||
| 39 | +mode, s, h, "ql",,, "Mode of automatic parameters" |
src/ctlike/main.cpp
0 โ 100644
| 1 | +/*************************************************************************** | ||
| 2 | + * ctlike - CTA maximum likelihood tool main code * | ||
| 3 | + * ----------------------------------------------------------------------- * | ||
| 4 | + * copyright (C) 2010 by Jurgen Knodlseder * | ||
| 5 | + * ----------------------------------------------------------------------- * | ||
| 6 | + * * | ||
| 7 | + * This program is free software; you can redistribute it and/or modify * | ||
| 8 | + * it under the terms of the GNU General Public License as published by * | ||
| 9 | + * the Free Software Foundation; either version 2 of the License, or * | ||
| 10 | + * (at your option) any later version. * | ||
| 11 | + * * | ||
| 12 | + ***************************************************************************/ | ||
| 13 | +/** | ||
| 14 | + * @file main.cpp | ||
| 15 | + * @brief CTA maximum likelihood tool main code | ||
| 16 | + * @author J. Knodlseder | ||
| 17 | + */ | ||
| 18 | + | ||
| 19 | +/* __ Includes ___________________________________________________________ */ | ||
| 20 | +#ifdef HAVE_CONFIG_H | ||
| 21 | +#include <config.h> | ||
| 22 | +#endif | ||
| 23 | +#include <stdio.h> | ||
| 24 | +#include "ctlike.hpp" | ||
| 25 | + | ||
| 26 | + | ||
| 27 | +/***********************************************************************//** | ||
| 28 | + * @brief Main entry point | ||
| 29 | + * | ||
| 30 | + * @param[in] argc Number of arguments | ||
| 31 | + * @param[in] argv Arguments | ||
| 32 | + ***************************************************************************/ | ||
| 33 | +int main (int argc, char *argv[]) | ||
| 34 | +{ | ||
| 35 | + // Create instance of application | ||
| 36 | + ctlike application(argc, argv); | ||
| 37 | + | ||
| 38 | + // Run application | ||
| 39 | + int rc = application.run(); | ||
| 40 | + | ||
| 41 | + // Return | ||
| 42 | + return rc; | ||
| 43 | +} |
src/ctselect/main.cpp
0 โ 100644
| 1 | +/*************************************************************************** | ||
| 2 | + * ctselect - CTA data selection tool main code * | ||
| 3 | + * ----------------------------------------------------------------------- * | ||
| 4 | + * copyright (C) 2010 by Jurgen Knodlseder * | ||
| 5 | + * ----------------------------------------------------------------------- * | ||
| 6 | + * * | ||
| 7 | + * This program is free software; you can redistribute it and/or modify * | ||
| 8 | + * it under the terms of the GNU General Public License as published by * | ||
| 9 | + * the Free Software Foundation; either version 2 of the License, or * | ||
| 10 | + * (at your option) any later version. * | ||
| 11 | + * * | ||
| 12 | + ***************************************************************************/ | ||
| 13 | +/** | ||
| 14 | + * @file ctselect.cpp | ||
| 15 | + * @brief CTA data selection tool main code | ||
| 16 | + * @author J. Knodlseder | ||
| 17 | + */ | ||
| 18 | + | ||
| 19 | +/* __ Includes ___________________________________________________________ */ | ||
| 20 | +#ifdef HAVE_CONFIG_H | ||
| 21 | +#include <config.h> | ||
| 22 | +#endif | ||
| 23 | +#include <stdio.h> | ||
| 24 | +#include "ctselect.hpp" | ||
| 25 | + | ||
| 26 | + | ||
| 27 | +/***********************************************************************//** | ||
| 28 | + * @brief Main entry point | ||
| 29 | + * | ||
| 30 | + * @param[in] argc Number of arguments | ||
| 31 | + * @param[in] argv Arguments | ||
| 32 | + ***************************************************************************/ | ||
| 33 | +int main (int argc, char *argv[]) | ||
| 34 | +{ | ||
| 35 | + // Create instance of application | ||
| 36 | + ctselect application(argc, argv); | ||
| 37 | + | ||
| 38 | + // Run application | ||
| 39 | + int rc = application.run(); | ||
| 40 | + | ||
| 41 | + // Return | ||
| 42 | + return rc; | ||
| 43 | +} |