Commit 068b6064d362cea60783082a12901c309c8ede7f

Authored by knodlseder
1 parent df3c84ab

weekend saving

doc/Doxyfile 0 → 100644
  1 +# Doxyfile 1.4.1
  2 +
  3 +# This file describes the settings to be used by the documentation system
  4 +# doxygen (www.doxygen.org) for a project
  5 +#
  6 +# All text after a hash (#) is considered a comment and will be ignored
  7 +# The format is:
  8 +# TAG = value [value, ...]
  9 +# For lists items can also be appended using:
  10 +# TAG += value [value, ...]
  11 +# Values that contain spaces should be placed between quotes (" ")
  12 +
  13 +#---------------------------------------------------------------------------
  14 +# Project related configuration options
  15 +#---------------------------------------------------------------------------
  16 +
  17 +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
  18 +# by quotes) that should identify the project.
  19 +
  20 +PROJECT_NAME = GammaLib
  21 +
  22 +# The PROJECT_NUMBER tag can be used to enter a project or revision number.
  23 +# This could be handy for archiving the generated documentation or
  24 +# if some version control system is used.
  25 +
  26 +PROJECT_NUMBER = 0.1pre
  27 +
  28 +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
  29 +# base path where the generated documentation will be put.
  30 +# If a relative path is entered, it will be relative to the location
  31 +# where doxygen was started. If left blank the current directory will be used.
  32 +
  33 +OUTPUT_DIRECTORY =
  34 +
  35 +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
  36 +# 4096 sub-directories (in 2 levels) under the output directory of each output
  37 +# format and will distribute the generated files over these directories.
  38 +# Enabling this option can be useful when feeding doxygen a huge amount of
  39 +# source files, where putting all generated files in the same directory would
  40 +# otherwise cause performance problems for the file system.
  41 +
  42 +CREATE_SUBDIRS = YES
  43 +
  44 +# The OUTPUT_LANGUAGE tag is used to specify the language in which all
  45 +# documentation generated by doxygen is written. Doxygen will use this
  46 +# information to generate all constant output in the proper language.
  47 +# The default language is English, other supported languages are:
  48 +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish,
  49 +# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese,
  50 +# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian,
  51 +# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish,
  52 +# Swedish, and Ukrainian.
  53 +
  54 +OUTPUT_LANGUAGE = English
  55 +
  56 +# This tag can be used to specify the encoding used in the generated output.
  57 +# The encoding is not always determined by the language that is chosen,
  58 +# but also whether or not the output is meant for Windows or non-Windows users.
  59 +# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
  60 +# forces the Windows encoding (this is the default for the Windows binary),
  61 +# whereas setting the tag to NO uses a Unix-style encoding (the default for
  62 +# all platforms other than Windows).
  63 +
  64 +USE_WINDOWS_ENCODING = NO
  65 +
  66 +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
  67 +# include brief member descriptions after the members that are listed in
  68 +# the file and class documentation (similar to JavaDoc).
  69 +# Set to NO to disable this.
  70 +
  71 +BRIEF_MEMBER_DESC = YES
  72 +
  73 +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
  74 +# the brief description of a member or function before the detailed description.
  75 +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
  76 +# brief descriptions will be completely suppressed.
  77 +
  78 +REPEAT_BRIEF = YES
  79 +
  80 +# This tag implements a quasi-intelligent brief description abbreviator
  81 +# that is used to form the text in various listings. Each string
  82 +# in this list, if found as the leading text of the brief description, will be
  83 +# stripped from the text and the result after processing the whole list, is
  84 +# used as the annotated text. Otherwise, the brief description is used as-is.
  85 +# If left blank, the following values are used ("$name" is automatically
  86 +# replaced with the name of the entity): "The $name class" "The $name widget"
  87 +# "The $name file" "is" "provides" "specifies" "contains"
  88 +# "represents" "a" "an" "the"
  89 +
  90 +ABBREVIATE_BRIEF =
  91 +
  92 +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
  93 +# Doxygen will generate a detailed section even if there is only a brief
  94 +# description.
  95 +
  96 +ALWAYS_DETAILED_SEC = NO
  97 +
  98 +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
  99 +# inherited members of a class in the documentation of that class as if those
  100 +# members were ordinary class members. Constructors, destructors and assignment
  101 +# operators of the base classes will not be shown.
  102 +
  103 +INLINE_INHERITED_MEMB = NO
  104 +
  105 +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
  106 +# path before files name in the file list and in the header files. If set
  107 +# to NO the shortest path that makes the file name unique will be used.
  108 +
  109 +FULL_PATH_NAMES = NO
  110 +
  111 +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
  112 +# can be used to strip a user-defined part of the path. Stripping is
  113 +# only done if one of the specified strings matches the left-hand part of
  114 +# the path. The tag can be used to show relative paths in the file list.
  115 +# If left blank the directory from which doxygen is run is used as the
  116 +# path to strip.
  117 +
  118 +STRIP_FROM_PATH =
  119 +
  120 +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
  121 +# the path mentioned in the documentation of a class, which tells
  122 +# the reader which header file to include in order to use a class.
  123 +# If left blank only the name of the header file containing the class
  124 +# definition is used. Otherwise one should specify the include paths that
  125 +# are normally passed to the compiler using the -I flag.
  126 +
  127 +STRIP_FROM_INC_PATH =
  128 +
  129 +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
  130 +# (but less readable) file names. This can be useful is your file systems
  131 +# doesn't support long names like on DOS, Mac, or CD-ROM.
  132 +
  133 +SHORT_NAMES = NO
  134 +
  135 +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
  136 +# will interpret the first line (until the first dot) of a JavaDoc-style
  137 +# comment as the brief description. If set to NO, the JavaDoc
  138 +# comments will behave just like the Qt-style comments (thus requiring an
  139 +# explicit @brief command for a brief description.
  140 +
  141 +JAVADOC_AUTOBRIEF = NO
  142 +
  143 +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
  144 +# treat a multi-line C++ special comment block (i.e. a block of //! or ///
  145 +# comments) as a brief description. This used to be the default behaviour.
  146 +# The new default is to treat a multi-line C++ comment block as a detailed
  147 +# description. Set this tag to YES if you prefer the old behaviour instead.
  148 +
  149 +MULTILINE_CPP_IS_BRIEF = NO
  150 +
  151 +# If the DETAILS_AT_TOP tag is set to YES then Doxygen
  152 +# will output the detailed description near the top, like JavaDoc.
  153 +# If set to NO, the detailed description appears after the member
  154 +# documentation.
  155 +
  156 +DETAILS_AT_TOP = NO
  157 +
  158 +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
  159 +# member inherits the documentation from any documented member that it
  160 +# re-implements.
  161 +
  162 +INHERIT_DOCS = NO
  163 +
  164 +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
  165 +# tag is set to YES, then doxygen will reuse the documentation of the first
  166 +# member in the group (if any) for the other members of the group. By default
  167 +# all members of a group must be documented explicitly.
  168 +
  169 +DISTRIBUTE_GROUP_DOC = NO
  170 +
  171 +# The TAB_SIZE tag can be used to set the number of spaces in a tab.
  172 +# Doxygen uses this value to replace tabs by spaces in code fragments.
  173 +
  174 +TAB_SIZE = 8
  175 +
  176 +# This tag can be used to specify a number of aliases that acts
  177 +# as commands in the documentation. An alias has the form "name=value".
  178 +# For example adding "sideeffect=\par Side Effects:\n" will allow you to
  179 +# put the command \sideeffect (or @sideeffect) in the documentation, which
  180 +# will result in a user-defined paragraph with heading "Side Effects:".
  181 +# You can put \n's in the value part of an alias to insert newlines.
  182 +
  183 +ALIASES =
  184 +
  185 +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
  186 +# sources only. Doxygen will then generate output that is more tailored for C.
  187 +# For instance, some of the names that are used will be different. The list
  188 +# of all members will be omitted, etc.
  189 +
  190 +OPTIMIZE_OUTPUT_FOR_C = NO
  191 +
  192 +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources
  193 +# only. Doxygen will then generate output that is more tailored for Java.
  194 +# For instance, namespaces will be presented as packages, qualified scopes
  195 +# will look different, etc.
  196 +
  197 +OPTIMIZE_OUTPUT_JAVA = NO
  198 +
  199 +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
  200 +# the same type (for instance a group of public functions) to be put as a
  201 +# subgroup of that type (e.g. under the Public Functions section). Set it to
  202 +# NO to prevent subgrouping. Alternatively, this can be done per class using
  203 +# the \nosubgrouping command.
  204 +
  205 +SUBGROUPING = YES
  206 +
  207 +#---------------------------------------------------------------------------
  208 +# Build related configuration options
  209 +#---------------------------------------------------------------------------
  210 +
  211 +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
  212 +# documentation are documented, even if no documentation was available.
  213 +# Private class members and static file members will be hidden unless
  214 +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
  215 +
  216 +EXTRACT_ALL = YES
  217 +
  218 +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
  219 +# will be included in the documentation.
  220 +
  221 +EXTRACT_PRIVATE = YES
  222 +
  223 +# If the EXTRACT_STATIC tag is set to YES all static members of a file
  224 +# will be included in the documentation.
  225 +
  226 +EXTRACT_STATIC = YES
  227 +
  228 +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
  229 +# defined locally in source files will be included in the documentation.
  230 +# If set to NO only classes defined in header files are included.
  231 +EXTRACT_LOCAL_CLASSES = YES
  232 +
  233 +# This flag is only useful for Objective-C code. When set to YES local
  234 +# methods, which are defined in the implementation section but not in
  235 +# the interface are included in the documentation.
  236 +# If set to NO (the default) only methods in the interface are included.
  237 +
  238 +EXTRACT_LOCAL_METHODS = NO
  239 +
  240 +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
  241 +# undocumented members of documented classes, files or namespaces.
  242 +# If set to NO (the default) these members will be included in the
  243 +# various overviews, but no documentation section is generated.
  244 +# This option has no effect if EXTRACT_ALL is enabled.
  245 +
  246 +HIDE_UNDOC_MEMBERS = NO
  247 +
  248 +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
  249 +# undocumented classes that are normally visible in the class hierarchy.
  250 +# If set to NO (the default) these classes will be included in the various
  251 +# overviews. This option has no effect if EXTRACT_ALL is enabled.
  252 +
  253 +HIDE_UNDOC_CLASSES = NO
  254 +
  255 +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
  256 +# friend (class|struct|union) declarations.
  257 +# If set to NO (the default) these declarations will be included in the
  258 +# documentation.
  259 +
  260 +HIDE_FRIEND_COMPOUNDS = NO
  261 +
  262 +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
  263 +# documentation blocks found inside the body of a function.
  264 +# If set to NO (the default) these blocks will be appended to the
  265 +# function's detailed documentation block.
  266 +
  267 +HIDE_IN_BODY_DOCS = NO
  268 +
  269 +# The INTERNAL_DOCS tag determines if documentation
  270 +# that is typed after a \internal command is included. If the tag is set
  271 +# to NO (the default) then the documentation will be excluded.
  272 +# Set it to YES to include the internal documentation.
  273 +
  274 +INTERNAL_DOCS = NO
  275 +
  276 +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
  277 +# file names in lower-case letters. If set to YES upper-case letters are also
  278 +# allowed. This is useful if you have classes or files whose names only differ
  279 +# in case and if your file system supports case sensitive file names. Windows
  280 +# and Mac users are advised to set this option to NO.
  281 +
  282 +CASE_SENSE_NAMES = YES
  283 +
  284 +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
  285 +# will show members with their full class and namespace scopes in the
  286 +# documentation. If set to YES the scope will be hidden.
  287 +
  288 +HIDE_SCOPE_NAMES = NO
  289 +
  290 +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
  291 +# will put a list of the files that are included by a file in the documentation
  292 +# of that file.
  293 +
  294 +SHOW_INCLUDE_FILES = YES
  295 +
  296 +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
  297 +# is inserted in the documentation for inline members.
  298 +
  299 +INLINE_INFO = YES
  300 +
  301 +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
  302 +# will sort the (detailed) documentation of file and class members
  303 +# alphabetically by member name. If set to NO the members will appear in
  304 +# declaration order.
  305 +
  306 +SORT_MEMBER_DOCS = YES
  307 +
  308 +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
  309 +# brief documentation of file, namespace and class members alphabetically
  310 +# by member name. If set to NO (the default) the members will appear in
  311 +# declaration order.
  312 +
  313 +SORT_BRIEF_DOCS = NO
  314 +
  315 +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
  316 +# sorted by fully-qualified names, including namespaces. If set to
  317 +# NO (the default), the class list will be sorted only by class name,
  318 +# not including the namespace part.
  319 +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
  320 +# Note: This option applies only to the class list, not to the
  321 +# alphabetical list.
  322 +SORT_BY_SCOPE_NAME = NO
  323 +
  324 +# The GENERATE_TODOLIST tag can be used to enable (YES) or
  325 +# disable (NO) the todo list. This list is created by putting \todo
  326 +# commands in the documentation.
  327 +
  328 +GENERATE_TODOLIST = YES
  329 +
  330 +# The GENERATE_TESTLIST tag can be used to enable (YES) or
  331 +# disable (NO) the test list. This list is created by putting \test
  332 +# commands in the documentation.
  333 +
  334 +GENERATE_TESTLIST = YES
  335 +
  336 +# The GENERATE_BUGLIST tag can be used to enable (YES) or
  337 +# disable (NO) the bug list. This list is created by putting \bug
  338 +# commands in the documentation.
  339 +
  340 +GENERATE_BUGLIST = YES
  341 +
  342 +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
  343 +# disable (NO) the deprecated list. This list is created by putting
  344 +# \deprecated commands in the documentation.
  345 +
  346 +GENERATE_DEPRECATEDLIST= YES
  347 +
  348 +# The ENABLED_SECTIONS tag can be used to enable conditional
  349 +# documentation sections, marked by \if sectionname ... \endif.
  350 +
  351 +ENABLED_SECTIONS =
  352 +
  353 +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
  354 +# the initial value of a variable or define consists of for it to appear in
  355 +# the documentation. If the initializer consists of more lines than specified
  356 +# here it will be hidden. Use a value of 0 to hide initializers completely.
  357 +# The appearance of the initializer of individual variables and defines in the
  358 +# documentation can be controlled using \showinitializer or \hideinitializer
  359 +# command in the documentation regardless of this setting.
  360 +
  361 +MAX_INITIALIZER_LINES = 30
  362 +
  363 +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
  364 +# at the bottom of the documentation of classes and structs. If set to YES the
  365 +# list will mention the files that were used to generate the documentation.
  366 +
  367 +SHOW_USED_FILES = YES
  368 +
  369 +# If the sources in your project are distributed over multiple directories
  370 +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
  371 +# in the documentation.
  372 +
  373 +SHOW_DIRECTORIES = YES
  374 +
  375 +# The FILE_VERSION_FILTER tag can be used to specify a program or script that
  376 +# doxygen should invoke to get the current version for each file (typically from the
  377 +# version control system). Doxygen will invoke the program by executing (via
  378 +# popen()) the command <command> <input-file>, where <command> is the value of
  379 +# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
  380 +# provided by doxygen. Whatever the progam writes to standard output
  381 +# is used as the file version. See the manual for examples.
  382 +
  383 +FILE_VERSION_FILTER =
  384 +
  385 +#---------------------------------------------------------------------------
  386 +# configuration options related to warning and progress messages
  387 +#---------------------------------------------------------------------------
  388 +
  389 +# The QUIET tag can be used to turn on/off the messages that are generated
  390 +# by doxygen. Possible values are YES and NO. If left blank NO is used.
  391 +
  392 +QUIET = NO
  393 +
  394 +# The WARNINGS tag can be used to turn on/off the warning messages that are
  395 +# generated by doxygen. Possible values are YES and NO. If left blank
  396 +# NO is used.
  397 +
  398 +WARNINGS = YES
  399 +
  400 +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
  401 +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
  402 +# automatically be disabled.
  403 +
  404 +WARN_IF_UNDOCUMENTED = YES
  405 +
  406 +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
  407 +# potential errors in the documentation, such as not documenting some
  408 +# parameters in a documented function, or documenting parameters that
  409 +# don't exist or using markup commands wrongly.
  410 +
  411 +WARN_IF_DOC_ERROR = YES
  412 +
  413 +# This WARN_NO_PARAMDOC option can be abled to get warnings for
  414 +# functions that are documented, but have no documentation for their parameters
  415 +# or return value. If set to NO (the default) doxygen will only warn about
  416 +# wrong or incomplete parameter documentation, but not about the absence of
  417 +# documentation.
  418 +
  419 +WARN_NO_PARAMDOC = NO
  420 +
  421 +# The WARN_FORMAT tag determines the format of the warning messages that
  422 +# doxygen can produce. The string should contain the $file, $line, and $text
  423 +# tags, which will be replaced by the file and line number from which the
  424 +# warning originated and the warning text. Optionally the format may contain
  425 +# $version, which will be replaced by the version of the file (if it could
  426 +# be obtained via FILE_VERSION_FILTER)
  427 +
  428 +WARN_FORMAT = "$file:$line: $text"
  429 +
  430 +# The WARN_LOGFILE tag can be used to specify a file to which warning
  431 +# and error messages should be written. If left blank the output is written
  432 +# to stderr.
  433 +
  434 +WARN_LOGFILE =
  435 +
  436 +#---------------------------------------------------------------------------
  437 +# configuration options related to the input files
  438 +#---------------------------------------------------------------------------
  439 +
  440 +# The INPUT tag can be used to specify the files and/or directories that contain
  441 +# documented source files. You may enter file names like "myfile.cpp" or
  442 +# directories like "/usr/src/myproject". Separate the files or directories
  443 +# with spaces.
  444 +
  445 +INPUT = "../include" "../src" "../pyext"
  446 +
  447 +# If the value of the INPUT tag contains directories, you can use the
  448 +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
  449 +# and *.h) to filter out the source-files in the directories. If left
  450 +# blank the following patterns are tested:
  451 +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
  452 +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
  453 +
  454 +FILE_PATTERNS = *.cpp *.cxx *.hpp *.i
  455 +
  456 +# The RECURSIVE tag can be used to turn specify whether or not subdirectories
  457 +# should be searched for input files as well. Possible values are YES and NO.
  458 +# If left blank NO is used.
  459 +
  460 +RECURSIVE = YES
  461 +
  462 +# The EXCLUDE tag can be used to specify files and/or directories that should
  463 +# excluded from the INPUT source files. This way you can easily exclude a
  464 +# subdirectory from a directory tree whose root is specified with the INPUT tag.
  465 +
  466 +EXCLUDE =
  467 +
  468 +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
  469 +# directories that are symbolic links (a Unix filesystem feature) are excluded
  470 +# from the input.
  471 +
  472 +EXCLUDE_SYMLINKS = NO
  473 +
  474 +# If the value of the INPUT tag contains directories, you can use the
  475 +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
  476 +# certain files from those directories.
  477 +
  478 +EXCLUDE_PATTERNS =
  479 +
  480 +# The EXAMPLE_PATH tag can be used to specify one or more files or
  481 +# directories that contain example code fragments that are included (see
  482 +# the \include command).
  483 +
  484 +EXAMPLE_PATH =
  485 +
  486 +# If the value of the EXAMPLE_PATH tag contains directories, you can use the
  487 +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
  488 +# and *.h) to filter out the source-files in the directories. If left
  489 +# blank all files are included.
  490 +
  491 +EXAMPLE_PATTERNS =
  492 +
  493 +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
  494 +# searched for input files to be used with the \include or \dontinclude
  495 +# commands irrespective of the value of the RECURSIVE tag.
  496 +# Possible values are YES and NO. If left blank NO is used.
  497 +
  498 +EXAMPLE_RECURSIVE = NO
  499 +
  500 +# The IMAGE_PATH tag can be used to specify one or more files or
  501 +# directories that contain image that are included in the documentation (see
  502 +# the \image command).
  503 +
  504 +IMAGE_PATH =
  505 +
  506 +# The INPUT_FILTER tag can be used to specify a program that doxygen should
  507 +# invoke to filter for each input file. Doxygen will invoke the filter program
  508 +# by executing (via popen()) the command <filter> <input-file>, where <filter>
  509 +# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
  510 +# input file. Doxygen will then use the output that the filter program writes
  511 +# to standard output. If FILTER_PATTERNS is specified, this tag will be
  512 +# ignored.
  513 +
  514 +INPUT_FILTER =
  515 +
  516 +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
  517 +# basis. Doxygen will compare the file name with each pattern and apply the
  518 +# filter if there is a match. The filters are a list of the form:
  519 +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
  520 +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
  521 +# is applied to all files.
  522 +
  523 +FILTER_PATTERNS =
  524 +
  525 +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
  526 +# INPUT_FILTER) will be used to filter the input files when producing source
  527 +# files to browse (i.e. when SOURCE_BROWSER is set to YES).
  528 +
  529 +FILTER_SOURCE_FILES = NO
  530 +
  531 +#---------------------------------------------------------------------------
  532 +# configuration options related to source browsing
  533 +#---------------------------------------------------------------------------
  534 +
  535 +# If the SOURCE_BROWSER tag is set to YES then a list of source files will
  536 +# be generated. Documented entities will be cross-referenced with these sources.
  537 +# Note: To get rid of all source code in the generated output, make sure also
  538 +# VERBATIM_HEADERS is set to NO.
  539 +
  540 +SOURCE_BROWSER = NO
  541 +
  542 +# Setting the INLINE_SOURCES tag to YES will include the body
  543 +# of functions and classes directly in the documentation.
  544 +
  545 +INLINE_SOURCES = NO
  546 +
  547 +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
  548 +# doxygen to hide any special comment blocks from generated source code
  549 +# fragments. Normal C and C++ comments will always remain visible.
  550 +
  551 +STRIP_CODE_COMMENTS = YES
  552 +
  553 +# If the REFERENCED_BY_RELATION tag is set to YES (the default)
  554 +# then for each documented function all documented
  555 +# functions referencing it will be listed.
  556 +
  557 +REFERENCED_BY_RELATION = YES
  558 +
  559 +# If the REFERENCES_RELATION tag is set to YES (the default)
  560 +# then for each documented function all documented entities
  561 +# called/used by that function will be listed.
  562 +
  563 +REFERENCES_RELATION = YES
  564 +
  565 +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
  566 +# will generate a verbatim copy of the header file for each class for
  567 +# which an include is specified. Set to NO to disable this.
  568 +
  569 +VERBATIM_HEADERS = YES
  570 +
  571 +#---------------------------------------------------------------------------
  572 +# configuration options related to the alphabetical class index
  573 +#---------------------------------------------------------------------------
  574 +
  575 +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
  576 +# of all compounds will be generated. Enable this if the project
  577 +# contains a lot of classes, structs, unions or interfaces.
  578 +
  579 +ALPHABETICAL_INDEX = YES
  580 +
  581 +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
  582 +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
  583 +# in which this list will be split (can be a number in the range [1..20])
  584 +
  585 +COLS_IN_ALPHA_INDEX = 5
  586 +
  587 +# In case all classes in a project start with a common prefix, all
  588 +# classes will be put under the same header in the alphabetical index.
  589 +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
  590 +# should be ignored while generating the index headers.
  591 +
  592 +IGNORE_PREFIX =
  593 +
  594 +#---------------------------------------------------------------------------
  595 +# configuration options related to the HTML output
  596 +#---------------------------------------------------------------------------
  597 +
  598 +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
  599 +# generate HTML output.
  600 +
  601 +GENERATE_HTML = YES
  602 +
  603 +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
  604 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be
  605 +# put in front of it. If left blank `html' will be used as the default path.
  606 +
  607 +HTML_OUTPUT = html
  608 +
  609 +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
  610 +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
  611 +# doxygen will generate files with .html extension.
  612 +
  613 +HTML_FILE_EXTENSION = .html
  614 +
  615 +# The HTML_HEADER tag can be used to specify a personal HTML header for
  616 +# each generated HTML page. If it is left blank doxygen will generate a
  617 +# standard header.
  618 +
  619 +HTML_HEADER =
  620 +
  621 +# The HTML_FOOTER tag can be used to specify a personal HTML footer for
  622 +# each generated HTML page. If it is left blank doxygen will generate a
  623 +# standard footer.
  624 +
  625 +HTML_FOOTER =
  626 +
  627 +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
  628 +# style sheet that is used by each HTML page. It can be used to
  629 +# fine-tune the look of the HTML output. If the tag is left blank doxygen
  630 +# will generate a default style sheet. Note that doxygen will try to copy
  631 +# the style sheet file to the HTML output directory, so don't put your own
  632 +# stylesheet in the HTML output directory as well, or it will be erased!
  633 +
  634 +HTML_STYLESHEET =
  635 +
  636 +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
  637 +# files or namespaces will be aligned in HTML using tables. If set to
  638 +# NO a bullet list will be used.
  639 +
  640 +HTML_ALIGN_MEMBERS = YES
  641 +
  642 +# If the GENERATE_HTMLHELP tag is set to YES, additional index files
  643 +# will be generated that can be used as input for tools like the
  644 +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
  645 +# of the generated HTML documentation.
  646 +
  647 +GENERATE_HTMLHELP = NO
  648 +
  649 +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
  650 +# be used to specify the file name of the resulting .chm file. You
  651 +# can add a path in front of the file if the result should not be
  652 +# written to the html output directory.
  653 +
  654 +CHM_FILE =
  655 +
  656 +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
  657 +# be used to specify the location (absolute path including file name) of
  658 +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
  659 +# the HTML help compiler on the generated index.hhp.
  660 +
  661 +HHC_LOCATION =
  662 +
  663 +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
  664 +# controls if a separate .chi index file is generated (YES) or that
  665 +# it should be included in the master .chm file (NO).
  666 +
  667 +GENERATE_CHI = NO
  668 +
  669 +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
  670 +# controls whether a binary table of contents is generated (YES) or a
  671 +# normal table of contents (NO) in the .chm file.
  672 +
  673 +BINARY_TOC = NO
  674 +
  675 +# The TOC_EXPAND flag can be set to YES to add extra items for group members
  676 +# to the contents of the HTML help documentation and to the tree view.
  677 +
  678 +TOC_EXPAND = NO
  679 +
  680 +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
  681 +# top of each HTML page. The value NO (the default) enables the index and
  682 +# the value YES disables it.
  683 +
  684 +DISABLE_INDEX = NO
  685 +
  686 +# This tag can be used to set the number of enum values (range [1..20])
  687 +# that doxygen will group on one line in the generated HTML documentation.
  688 +
  689 +ENUM_VALUES_PER_LINE = 4
  690 +
  691 +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
  692 +# generated containing a tree-like index structure (just like the one that
  693 +# is generated for HTML Help). For this to work a browser that supports
  694 +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
  695 +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
  696 +# probably better off using the HTML help feature.
  697 +
  698 +GENERATE_TREEVIEW = YES
  699 +
  700 +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
  701 +# used to set the initial width (in pixels) of the frame in which the tree
  702 +# is shown.
  703 +
  704 +TREEVIEW_WIDTH = 250
  705 +
  706 +#---------------------------------------------------------------------------
  707 +# configuration options related to the LaTeX output
  708 +#---------------------------------------------------------------------------
  709 +
  710 +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
  711 +# generate Latex output.
  712 +
  713 +GENERATE_LATEX = YES
  714 +
  715 +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
  716 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be
  717 +# put in front of it. If left blank `latex' will be used as the default path.
  718 +
  719 +LATEX_OUTPUT = latex
  720 +
  721 +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
  722 +# invoked. If left blank `latex' will be used as the default command name.
  723 +
  724 +LATEX_CMD_NAME = latex
  725 +
  726 +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
  727 +# generate index for LaTeX. If left blank `makeindex' will be used as the
  728 +# default command name.
  729 +
  730 +MAKEINDEX_CMD_NAME = makeindex
  731 +
  732 +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
  733 +# LaTeX documents. This may be useful for small projects and may help to
  734 +# save some trees in general.
  735 +
  736 +COMPACT_LATEX = NO
  737 +
  738 +# The PAPER_TYPE tag can be used to set the paper type that is used
  739 +# by the printer. Possible values are: a4, a4wide, letter, legal and
  740 +# executive. If left blank a4wide will be used.
  741 +
  742 +PAPER_TYPE = a4wide
  743 +
  744 +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
  745 +# packages that should be included in the LaTeX output.
  746 +
  747 +EXTRA_PACKAGES =
  748 +
  749 +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
  750 +# the generated latex document. The header should contain everything until
  751 +# the first chapter. If it is left blank doxygen will generate a
  752 +# standard header. Notice: only use this tag if you know what you are doing!
  753 +
  754 +LATEX_HEADER =
  755 +
  756 +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
  757 +# is prepared for conversion to pdf (using ps2pdf). The pdf file will
  758 +# contain links (just like the HTML output) instead of page references
  759 +# This makes the output suitable for online browsing using a pdf viewer.
  760 +
  761 +PDF_HYPERLINKS = YES
  762 +
  763 +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
  764 +# plain latex in the generated Makefile. Set this option to YES to get a
  765 +# higher quality PDF documentation.
  766 +
  767 +USE_PDFLATEX = NO
  768 +
  769 +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
  770 +# command to the generated LaTeX files. This will instruct LaTeX to keep
  771 +# running if errors occur, instead of asking the user for help.
  772 +# This option is also used when generating formulas in HTML.
  773 +
  774 +LATEX_BATCHMODE = NO
  775 +
  776 +# If LATEX_HIDE_INDICES is set to YES then doxygen will not
  777 +# include the index chapters (such as File Index, Compound Index, etc.)
  778 +# in the output.
  779 +
  780 +LATEX_HIDE_INDICES = NO
  781 +
  782 +#---------------------------------------------------------------------------
  783 +# configuration options related to the RTF output
  784 +#---------------------------------------------------------------------------
  785 +
  786 +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
  787 +# The RTF output is optimized for Word 97 and may not look very pretty with
  788 +# other RTF readers or editors.
  789 +
  790 +GENERATE_RTF = NO
  791 +
  792 +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
  793 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be
  794 +# put in front of it. If left blank `rtf' will be used as the default path.
  795 +
  796 +RTF_OUTPUT = rtf
  797 +
  798 +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
  799 +# RTF documents. This may be useful for small projects and may help to
  800 +# save some trees in general.
  801 +
  802 +COMPACT_RTF = NO
  803 +
  804 +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
  805 +# will contain hyperlink fields. The RTF file will
  806 +# contain links (just like the HTML output) instead of page references.
  807 +# This makes the output suitable for online browsing using WORD or other
  808 +# programs which support those fields.
  809 +# Note: wordpad (write) and others do not support links.
  810 +
  811 +RTF_HYPERLINKS = NO
  812 +
  813 +# Load stylesheet definitions from file. Syntax is similar to doxygen's
  814 +# config file, i.e. a series of assignments. You only have to provide
  815 +# replacements, missing definitions are set to their default value.
  816 +
  817 +RTF_STYLESHEET_FILE =
  818 +
  819 +# Set optional variables used in the generation of an rtf document.
  820 +# Syntax is similar to doxygen's config file.
  821 +
  822 +RTF_EXTENSIONS_FILE =
  823 +
  824 +#---------------------------------------------------------------------------
  825 +# configuration options related to the man page output
  826 +#---------------------------------------------------------------------------
  827 +
  828 +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
  829 +# generate man pages
  830 +
  831 +GENERATE_MAN = NO
  832 +
  833 +# The MAN_OUTPUT tag is used to specify where the man pages will be put.
  834 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be
  835 +# put in front of it. If left blank `man' will be used as the default path.
  836 +
  837 +MAN_OUTPUT = man
  838 +
  839 +# The MAN_EXTENSION tag determines the extension that is added to
  840 +# the generated man pages (default is the subroutine's section .3)
  841 +
  842 +MAN_EXTENSION = .3
  843 +
  844 +# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
  845 +# then it will generate one additional man file for each entity
  846 +# documented in the real man page(s). These additional files
  847 +# only source the real man page, but without them the man command
  848 +# would be unable to find the correct page. The default is NO.
  849 +
  850 +MAN_LINKS = NO
  851 +
  852 +#---------------------------------------------------------------------------
  853 +# configuration options related to the XML output
  854 +#---------------------------------------------------------------------------
  855 +
  856 +# If the GENERATE_XML tag is set to YES Doxygen will
  857 +# generate an XML file that captures the structure of
  858 +# the code including all documentation.
  859 +
  860 +GENERATE_XML = NO
  861 +
  862 +# The XML_OUTPUT tag is used to specify where the XML pages will be put.
  863 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be
  864 +# put in front of it. If left blank `xml' will be used as the default path.
  865 +
  866 +XML_OUTPUT = xml
  867 +
  868 +# The XML_SCHEMA tag can be used to specify an XML schema,
  869 +# which can be used by a validating XML parser to check the
  870 +# syntax of the XML files.
  871 +
  872 +XML_SCHEMA =
  873 +
  874 +# The XML_DTD tag can be used to specify an XML DTD,
  875 +# which can be used by a validating XML parser to check the
  876 +# syntax of the XML files.
  877 +
  878 +XML_DTD =
  879 +
  880 +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
  881 +# dump the program listings (including syntax highlighting
  882 +# and cross-referencing information) to the XML output. Note that
  883 +# enabling this will significantly increase the size of the XML output.
  884 +
  885 +XML_PROGRAMLISTING = YES
  886 +
  887 +#---------------------------------------------------------------------------
  888 +# configuration options for the AutoGen Definitions output
  889 +#---------------------------------------------------------------------------
  890 +
  891 +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
  892 +# generate an AutoGen Definitions (see autogen.sf.net) file
  893 +# that captures the structure of the code including all
  894 +# documentation. Note that this feature is still experimental
  895 +# and incomplete at the moment.
  896 +
  897 +GENERATE_AUTOGEN_DEF = NO
  898 +
  899 +#---------------------------------------------------------------------------
  900 +# configuration options related to the Perl module output
  901 +#---------------------------------------------------------------------------
  902 +
  903 +# If the GENERATE_PERLMOD tag is set to YES Doxygen will
  904 +# generate a Perl module file that captures the structure of
  905 +# the code including all documentation. Note that this
  906 +# feature is still experimental and incomplete at the
  907 +# moment.
  908 +
  909 +GENERATE_PERLMOD = NO
  910 +
  911 +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
  912 +# the necessary Makefile rules, Perl scripts and LaTeX code to be able
  913 +# to generate PDF and DVI output from the Perl module output.
  914 +
  915 +PERLMOD_LATEX = NO
  916 +
  917 +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
  918 +# nicely formatted so it can be parsed by a human reader. This is useful
  919 +# if you want to understand what is going on. On the other hand, if this
  920 +# tag is set to NO the size of the Perl module output will be much smaller
  921 +# and Perl will parse it just the same.
  922 +
  923 +PERLMOD_PRETTY = YES
  924 +
  925 +# The names of the make variables in the generated doxyrules.make file
  926 +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
  927 +# This is useful so different doxyrules.make files included by the same
  928 +# Makefile don't overwrite each other's variables.
  929 +
  930 +PERLMOD_MAKEVAR_PREFIX =
  931 +
  932 +#---------------------------------------------------------------------------
  933 +# Configuration options related to the preprocessor
  934 +#---------------------------------------------------------------------------
  935 +
  936 +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
  937 +# evaluate all C-preprocessor directives found in the sources and include
  938 +# files.
  939 +
  940 +ENABLE_PREPROCESSING = YES
  941 +
  942 +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
  943 +# names in the source code. If set to NO (the default) only conditional
  944 +# compilation will be performed. Macro expansion can be done in a controlled
  945 +# way by setting EXPAND_ONLY_PREDEF to YES.
  946 +
  947 +MACRO_EXPANSION = NO
  948 +
  949 +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
  950 +# then the macro expansion is limited to the macros specified with the
  951 +# PREDEFINED and EXPAND_AS_PREDEFINED tags.
  952 +
  953 +EXPAND_ONLY_PREDEF = NO
  954 +
  955 +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
  956 +# in the INCLUDE_PATH (see below) will be search if a #include is found.
  957 +
  958 +SEARCH_INCLUDES = YES
  959 +
  960 +# The INCLUDE_PATH tag can be used to specify one or more directories that
  961 +# contain include files that are not input files but should be processed by
  962 +# the preprocessor.
  963 +
  964 +INCLUDE_PATH =
  965 +
  966 +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
  967 +# patterns (like *.h and *.hpp) to filter out the header-files in the
  968 +# directories. If left blank, the patterns specified with FILE_PATTERNS will
  969 +# be used.
  970 +
  971 +INCLUDE_FILE_PATTERNS =
  972 +
  973 +# The PREDEFINED tag can be used to specify one or more macro names that
  974 +# are defined before the preprocessor is started (similar to the -D option of
  975 +# gcc). The argument of the tag is a list of macros of the form: name
  976 +# or name=definition (no spaces). If the definition and the = are
  977 +# omitted =1 is assumed. To prevent a macro definition from being
  978 +# undefined via #undef or recursively expanded use the := operator
  979 +# instead of the = operator.
  980 +
  981 +PREDEFINED =
  982 +
  983 +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
  984 +# this tag can be used to specify a list of macro names that should be expanded.
  985 +# The macro definition that is found in the sources will be used.
  986 +# Use the PREDEFINED tag if you want to use a different macro definition.
  987 +
  988 +EXPAND_AS_DEFINED =
  989 +
  990 +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
  991 +# doxygen's preprocessor will remove all function-like macros that are alone
  992 +# on a line, have an all uppercase name, and do not end with a semicolon. Such
  993 +# function macros are typically used for boiler-plate code, and will confuse
  994 +# the parser if not removed.
  995 +
  996 +SKIP_FUNCTION_MACROS = YES
  997 +
  998 +#---------------------------------------------------------------------------
  999 +# Configuration::additions related to external references
  1000 +#---------------------------------------------------------------------------
  1001 +
  1002 +# The TAGFILES option can be used to specify one or more tagfiles.
  1003 +# Optionally an initial location of the external documentation
  1004 +# can be added for each tagfile. The format of a tag file without
  1005 +# this location is as follows:
  1006 +# TAGFILES = file1 file2 ...
  1007 +# Adding location for the tag files is done as follows:
  1008 +# TAGFILES = file1=loc1 "file2 = loc2" ...
  1009 +# where "loc1" and "loc2" can be relative or absolute paths or
  1010 +# URLs. If a location is present for each tag, the installdox tool
  1011 +# does not have to be run to correct the links.
  1012 +# Note that each tag file must have a unique name
  1013 +# (where the name does NOT include the path)
  1014 +# If a tag file is not located in the directory in which doxygen
  1015 +# is run, you must also specify the path to the tagfile here.
  1016 +
  1017 +TAGFILES =
  1018 +
  1019 +# When a file name is specified after GENERATE_TAGFILE, doxygen will create
  1020 +# a tag file that is based on the input files it reads.
  1021 +
  1022 +GENERATE_TAGFILE =
  1023 +
  1024 +# If the ALLEXTERNALS tag is set to YES all external classes will be listed
  1025 +# in the class index. If set to NO only the inherited external classes
  1026 +# will be listed.
  1027 +
  1028 +ALLEXTERNALS = NO
  1029 +
  1030 +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
  1031 +# in the modules index. If set to NO, only the current project's groups will
  1032 +# be listed.
  1033 +
  1034 +EXTERNAL_GROUPS = YES
  1035 +
  1036 +# The PERL_PATH should be the absolute path and name of the perl script
  1037 +# interpreter (i.e. the result of `which perl').
  1038 +
  1039 +PERL_PATH = /usr/bin/perl
  1040 +
  1041 +#---------------------------------------------------------------------------
  1042 +# Configuration options related to the dot tool
  1043 +#---------------------------------------------------------------------------
  1044 +
  1045 +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
  1046 +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
  1047 +# or super classes. Setting the tag to NO turns the diagrams off. Note that
  1048 +# this option is superseded by the HAVE_DOT option below. This is only a
  1049 +# fallback. It is recommended to install and use dot, since it yields more
  1050 +# powerful graphs.
  1051 +
  1052 +CLASS_DIAGRAMS = YES
  1053 +
  1054 +# If set to YES, the inheritance and collaboration graphs will hide
  1055 +# inheritance and usage relations if the target is undocumented
  1056 +# or is not a class.
  1057 +
  1058 +HIDE_UNDOC_RELATIONS = NO
  1059 +
  1060 +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
  1061 +# available from the path. This tool is part of Graphviz, a graph visualization
  1062 +# toolkit from AT&T and Lucent Bell Labs. The other options in this section
  1063 +# have no effect if this option is set to NO (the default)
  1064 +
  1065 +HAVE_DOT = NO
  1066 +
  1067 +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
  1068 +# will generate a graph for each documented class showing the direct and
  1069 +# indirect inheritance relations. Setting this tag to YES will force the
  1070 +# the CLASS_DIAGRAMS tag to NO.
  1071 +
  1072 +CLASS_GRAPH = YES
  1073 +
  1074 +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
  1075 +# will generate a graph for each documented class showing the direct and
  1076 +# indirect implementation dependencies (inheritance, containment, and
  1077 +# class references variables) of the class with other documented classes.
  1078 +
  1079 +COLLABORATION_GRAPH = YES
  1080 +
  1081 +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
  1082 +# will generate a graph for groups, showing the direct groups dependencies
  1083 +
  1084 +GROUP_GRAPHS = YES
  1085 +
  1086 +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
  1087 +# collaboration diagrams in a style similar to the OMG's Unified Modeling
  1088 +# Language.
  1089 +
  1090 +UML_LOOK = NO
  1091 +
  1092 +# If set to YES, the inheritance and collaboration graphs will show the
  1093 +# relations between templates and their instances.
  1094 +
  1095 +TEMPLATE_RELATIONS = NO
  1096 +
  1097 +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
  1098 +# tags are set to YES then doxygen will generate a graph for each documented
  1099 +# file showing the direct and indirect include dependencies of the file with
  1100 +# other documented files.
  1101 +
  1102 +INCLUDE_GRAPH = YES
  1103 +
  1104 +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
  1105 +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
  1106 +# documented header file showing the documented files that directly or
  1107 +# indirectly include this file.
  1108 +
  1109 +INCLUDED_BY_GRAPH = YES
  1110 +
  1111 +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
  1112 +# generate a call dependency graph for every global function or class method.
  1113 +# Note that enabling this option will significantly increase the time of a run.
  1114 +# So in most cases it will be better to enable call graphs for selected
  1115 +# functions only using the \callgraph command.
  1116 +
  1117 +CALL_GRAPH = NO
  1118 +
  1119 +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
  1120 +# will graphical hierarchy of all classes instead of a textual one.
  1121 +
  1122 +GRAPHICAL_HIERARCHY = YES
  1123 +
  1124 +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
  1125 +# then doxygen will show the dependencies a directory has on other directories
  1126 +# in a graphical way. The dependency relations are determined by the #include
  1127 +# relations between the files in the directories.
  1128 +
  1129 +DIRECTORY_GRAPH = YES
  1130 +
  1131 +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
  1132 +# generated by dot. Possible values are png, jpg, or gif
  1133 +# If left blank png will be used.
  1134 +
  1135 +DOT_IMAGE_FORMAT = png
  1136 +
  1137 +# The tag DOT_PATH can be used to specify the path where the dot tool can be
  1138 +# found. If left blank, it is assumed the dot tool can be found in the path.
  1139 +
  1140 +DOT_PATH =
  1141 +
  1142 +# The DOTFILE_DIRS tag can be used to specify one or more directories that
  1143 +# contain dot files that are included in the documentation (see the
  1144 +# \dotfile command).
  1145 +
  1146 +DOTFILE_DIRS =
  1147 +
  1148 +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
  1149 +# (in pixels) of the graphs generated by dot. If a graph becomes larger than
  1150 +# this value, doxygen will try to truncate the graph, so that it fits within
  1151 +# the specified constraint. Beware that most browsers cannot cope with very
  1152 +# large images.
  1153 +
  1154 +MAX_DOT_GRAPH_WIDTH = 1024
  1155 +
  1156 +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
  1157 +# (in pixels) of the graphs generated by dot. If a graph becomes larger than
  1158 +# this value, doxygen will try to truncate the graph, so that it fits within
  1159 +# the specified constraint. Beware that most browsers cannot cope with very
  1160 +# large images.
  1161 +
  1162 +MAX_DOT_GRAPH_HEIGHT = 1024
  1163 +
  1164 +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
  1165 +# graphs generated by dot. A depth value of 3 means that only nodes reachable
  1166 +# from the root by following a path via at most 3 edges will be shown. Nodes
  1167 +# that lay further from the root node will be omitted. Note that setting this
  1168 +# option to 1 or 2 may greatly reduce the computation time needed for large
  1169 +# code bases. Also note that a graph may be further truncated if the graph's
  1170 +# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH
  1171 +# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default),
  1172 +# the graph is not depth-constrained.
  1173 +
  1174 +MAX_DOT_GRAPH_DEPTH = 0
  1175 +
  1176 +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
  1177 +# background. This is disabled by default, which results in a white background.
  1178 +# Warning: Depending on the platform used, enabling this option may lead to
  1179 +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
  1180 +# read).
  1181 +
  1182 +DOT_TRANSPARENT = NO
  1183 +
  1184 +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
  1185 +# files in one run (i.e. multiple -o and -T options on the command line). This
  1186 +# makes dot run faster, but since only newer versions of dot (>1.8.10)
  1187 +# support this, this feature is disabled by default.
  1188 +
  1189 +DOT_MULTI_TARGETS = NO
  1190 +
  1191 +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
  1192 +# generate a legend page explaining the meaning of the various boxes and
  1193 +# arrows in the dot generated graphs.
  1194 +
  1195 +GENERATE_LEGEND = YES
  1196 +
  1197 +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
  1198 +# remove the intermediate dot files that are used to generate
  1199 +# the various graphs.
  1200 +
  1201 +DOT_CLEANUP = YES
  1202 +
  1203 +#---------------------------------------------------------------------------
  1204 +# Configuration::additions related to the search engine
  1205 +#---------------------------------------------------------------------------
  1206 +
  1207 +# The SEARCHENGINE tag specifies whether or not a search engine should be
  1208 +# used. If set to NO the values of all tags below this one will be ignored.
  1209 +
  1210 +SEARCHENGINE = NO
... ...
include/GFitsAsciiTable.hpp
... ... @@ -42,7 +42,7 @@ public:
42 42 GFitsAsciiTable* clone(void) const;
43 43 GFitsTableCol* column(const std::string colname);
44 44 GFitsTableCol* column(const int colnum);
45   -
  45 +
46 46 private:
47 47 // Private methods
48 48 void init_members(void);
... ...
include/GFitsData.hpp
... ... @@ -38,7 +38,7 @@ public:
38 38 virtual void open(__fitsfile* fptr) = 0;
39 39 virtual void close(void) = 0;
40 40 virtual GFitsData* clone(void) const = 0;
41   -
  41 +
42 42 protected:
43 43 // Protected methods
44 44 void init_members(void);
... ...
include/GLATResponse.hpp 0 → 100644
  1 +/***************************************************************************
  2 + * GLATResponse.hpp - GLAST LAT Response class *
  3 + * ----------------------------------------------------------------------- *
  4 + * copyright : (C) 2008 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 GLATResponse.hpp
  15 + * @brief GLATResponse class definition.
  16 + * @author J. Knodlseder
  17 + */
  18 +
  19 +#ifndef GLATRESPONSE_HPP
  20 +#define GLATRESPONSE_HPP
  21 +
  22 +/* __ Includes ___________________________________________________________ */
  23 +#include "GVector.hpp"
  24 +#include "GSkyDir.hpp"
  25 +#include "GResponse.hpp"
  26 +#include "GFitsHDU.hpp"
  27 +
  28 +/* __ Namespaces _________________________________________________________ */
  29 +
  30 +
  31 +/***************************************************************************
  32 + * GLATResponse class definition *
  33 + ***************************************************************************/
  34 +/**
  35 + * @class GLATResponse
  36 + *
  37 + * @brief Interface for the GLAST LAT instrument response function classes.
  38 + *
  39 + * @author J. Knodlseder
  40 + */
  41 +class GLATResponse : public GResponse {
  42 +
  43 +public:
  44 + // Constructors and destructors
  45 + GLATResponse();
  46 + GLATResponse(const GLATResponse& rsp);
  47 + ~GLATResponse();
  48 +
  49 + // Operators
  50 + GLATResponse& operator= (const GLATResponse & rsp);
  51 +
  52 + // Methods
  53 + double irf(const GSkyDir& obsDir, const double& obsEng,
  54 + const GSkyDir& srcDir, const double& srcEng,
  55 + const GSkyDir& instPntDir, const double& instPosAng,
  56 + const double& time);
  57 + double psf(const GSkyDir& obsDir, const double& obsEng,
  58 + const GSkyDir& srcDir, const double& srcEng,
  59 + const GSkyDir& instPntDir, const double& instPosAng,
  60 + const double& time);
  61 + double aeff(const GSkyDir& obsDir, const double& obsEng,
  62 + const GSkyDir& srcDir, const double& srcEng,
  63 + const GSkyDir& instPntDir, const double& instPosAng,
  64 + const double& time);
  65 + double edisp(const GSkyDir& obsDir, const double& obsEng,
  66 + const GSkyDir& srcDir, const double& srcEng,
  67 + const GSkyDir& instPntDir, const double& instPosAng,
  68 + const double& time);
  69 +
  70 + void set_caldb(std::string caldb);
  71 + void load(std::string rspname);
  72 + void save(std::string rspname) const;
  73 + GLATResponse* clone(void) const;
  74 +
  75 +private:
  76 + // Private methods
  77 + void init_members(void);
  78 + void copy_members(const GLATResponse& rsp);
  79 + void free_members(void);
  80 + void init_aeff(void);
  81 + void init_psf(void);
  82 + void init_edisp(void);
  83 + GVector get_fits_column(const GFitsHDU* hdu, const std::string& colname);
  84 +
  85 + // Private data area
  86 +
  87 +};
  88 +
  89 +
  90 +/***************************************************************************
  91 + * Inline methods *
  92 + ***************************************************************************/
  93 +inline
  94 +GLATResponse* GLATResponse::clone(void) const
  95 +{
  96 + return new GLATResponse(*this);
  97 +}
  98 +
  99 +#endif /* GLATRESPONSE_HPP */
... ...
include/GResponse.hpp
... ... @@ -10,46 +10,141 @@
10 10 * (at your option) any later version. *
11 11 * *
12 12 ***************************************************************************/
  13 +/**
  14 + * @file GResponse.hpp
  15 + * @brief GResponse class definition.
  16 + * @author J. Knodlseder
  17 + */
13 18  
14 19 #ifndef GRESPONSE_HPP
15 20 #define GRESPONSE_HPP
16 21  
17 22 /* __ Includes ___________________________________________________________ */
18   -//#include "GVector.hpp"
  23 +#include "GSkyDir.hpp"
19 24  
20 25 /* __ Namespaces _________________________________________________________ */
21   -using namespace std;
22 26  
23 27  
24 28 /***************************************************************************
25 29 * GResponse class definition *
26 30 ***************************************************************************/
  31 +/**
  32 + * @class GResponse
  33 + *
  34 + * @brief Abstract interface for the instrument response function classes.
  35 + *
  36 + * @author J. Knodlseder
  37 + */
27 38 class GResponse {
28 39  
29   -// Public methods
30 40 public:
31   - // Constructors and destructors
32   - //GResponse();
33   - //GResponse(const GResponse& r);
34   - //virtual ~GResponse();
  41 + /// Constructor
  42 + GResponse();
35 43  
36   - // Operators
  44 + /// Copy constructor
  45 + GResponse(const GResponse& rsp);
37 46  
38   - // Methods
  47 + /// Destructor
  48 + virtual ~GResponse();
  49 +
  50 + /// Assignment operator
  51 + virtual GResponse& operator= (const GResponse& rsp);
  52 +
  53 + /// Pure virtual method to define the interface for the member function
  54 + /// returning the instrument response function value
  55 + /// @param obsDir Observed photon direction
  56 + /// @param obsEng Observed energy of photon
  57 + /// @param srcDir True photon direction
  58 + /// @param srcEng True energy of photon
  59 + /// @param instPntDir Instrument pointing direction (e.g. z-axis)
  60 + /// @param instPosAng Instrument position angle
  61 + /// @param time Photon arrival time
  62 + virtual double irf(const GSkyDir& obsDir, const double& obsEng,
  63 + const GSkyDir& srcDir, const double& srcEng,
  64 + const GSkyDir& instPntDir, const double& instPosAng,
  65 + const double& time) = 0;
  66 +
  67 + /// Pure virtual method to define the interface for the member function
  68 + /// returning the point spread function value
  69 + /// @param obsDir Observed photon direction
  70 + /// @param obsEng Observed energy of photon
  71 + /// @param srcDir True photon direction
  72 + /// @param srcEng True energy of photon
  73 + /// @param instPntDir Instrument pointing direction (e.g. z-axis)
  74 + /// @param instPosAng Instrument position angle
  75 + /// @param time Photon arrival time
  76 + virtual double psf(const GSkyDir& obsDir, const double& obsEng,
  77 + const GSkyDir& srcDir, const double& srcEng,
  78 + const GSkyDir& instPntDir, const double& instPosAng,
  79 + const double& time) = 0;
  80 +
  81 + /// Pure virtual method to define the interface for the member function
  82 + /// returning the effective area value
  83 + /// @param obsDir Observed photon direction
  84 + /// @param obsEng Observed energy of photon
  85 + /// @param srcDir True photon direction
  86 + /// @param srcEng True energy of photon
  87 + /// @param instPntDir Instrument pointing direction (e.g. z-axis)
  88 + /// @param instPosAng Instrument position angle
  89 + /// @param time Photon arrival time
  90 + virtual double aeff(const GSkyDir& obsDir, const double& obsEng,
  91 + const GSkyDir& srcDir, const double& srcEng,
  92 + const GSkyDir& instPntDir, const double& instPosAng,
  93 + const double& time) = 0;
  94 +
  95 + /// Pure virtual method to define the interface for the member function
  96 + /// returning the energy dispersion value
  97 + /// @param obsDir Observed photon direction
  98 + /// @param obsEng Observed energy of photon
  99 + /// @param srcDir True photon direction
  100 + /// @param srcEng True energy of photon
  101 + /// @param instPntDir Instrument pointing direction (e.g. z-axis)
  102 + /// @param instPosAng Instrument position angle
  103 + /// @param time Photon arrival time
  104 + virtual double edisp(const GSkyDir& obsDir, const double& obsEng,
  105 + const GSkyDir& srcDir, const double& srcEng,
  106 + const GSkyDir& instPntDir, const double& instPosAng,
  107 + const double& time) = 0;
  108 +
  109 + /// Pure virtual method to define the calibration database
  110 + /// @param caldb Calibration database to be used
  111 + virtual void set_caldb(std::string caldb) = 0;
  112 +
  113 + /// Pure virtual method to load the instrument response from the calibration
  114 + /// database
  115 + /// @param rspname Name of the instrument response
39 116 virtual void load(std::string rspname) = 0;
40   - virtual void save(std::string rspname) = 0;
41   - virtual void set_caldb(std::string dbname) = 0;
42   -
43   -// Methods and data that are available to derived classes
  117 +
  118 + /// Pure virtual method to save the instrument response into the calibration
  119 + /// database
  120 + /// @param rspname Name of the instrument response
  121 + virtual void save(std::string rspname) const = 0;
  122 +
  123 + /// Pure virtual method to clone the response instance
  124 + virtual GResponse* clone(void) const = 0;
  125 +
44 126 protected:
45   - // Protected methods
  127 + /// Name of or path to the calibration database
  128 + std::string m_caldb;
  129 +
  130 + /// Name of the instrument response
  131 + std::string m_rspname;
  132 +
  133 + /// Protected method that initialises protected members of the class
  134 + void init_members(void);
  135 +
  136 + /// Protected method that copies protected members of the class
  137 + void copy_members(const GResponse& rsp);
46 138  
47   - // Protected data area
48   - std::string m_caldb; // Calibration database name
49   - std::string m_rspname; // Response name
  139 + /// Protected method that frees memory allocated by instances of the class
  140 + void free_members(void);
50 141  
51   -// Methods that are available to the base class only
52 142 private:
53 143 };
54 144  
  145 +
  146 +/***************************************************************************
  147 + * Inline methods *
  148 + ***************************************************************************/
  149 +
55 150 #endif /* GRESPONSE_HPP */
... ...
include/GSkyDir.hpp 0 → 100644
  1 +/***************************************************************************
  2 + * GSkyDir.hpp - Class that implements a sky direction *
  3 + * ----------------------------------------------------------------------- *
  4 + * copyright : (C) 2008 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 GSkyDir.hpp
  15 + * @brief GSkyDir class definition.
  16 + * @author J. Knodlseder
  17 + */
  18 +
  19 +#ifndef GSKYDIR_HPP
  20 +#define GSKYDIR_HPP
  21 +
  22 +/* __ Includes ___________________________________________________________ */
  23 +
  24 +/* __ Namespaces _________________________________________________________ */
  25 +
  26 +
  27 +/***************************************************************************
  28 + * GSkyDir class definition *
  29 + ***************************************************************************/
  30 +/**
  31 + * @class GSkyDir
  32 + *
  33 + * @brief Interface for the sky direction classes.
  34 + *
  35 + * @author J. Knodlseder
  36 + */
  37 +class GSkyDir {
  38 +
  39 +public:
  40 + /// Constructor
  41 + GSkyDir();
  42 +
  43 + /// Copy constructor
  44 + GSkyDir(const GSkyDir& dir);
  45 +
  46 + /// Destructor
  47 + virtual ~GSkyDir();
  48 +
  49 + /// Assignment operator
  50 + GSkyDir& operator= (const GSkyDir& dir);
  51 +
  52 +protected:
  53 + /// Longitude
  54 + double m_lon;
  55 +
  56 + /// Latitude
  57 + double m_lat;
  58 +
  59 + /// Protected method that initialises protected members of the class
  60 + void init_members(void);
  61 +
  62 + /// Protected method that copies protected members of the class
  63 + void copy_members(const GSkyDir& dir);
  64 +
  65 + /// Protected method that frees memory allocated by instances of the class
  66 + void free_members(void);
  67 +
  68 +private:
  69 +
  70 +};
  71 +
  72 +
  73 +/***************************************************************************
  74 + * Inline methods *
  75 + ***************************************************************************/
  76 +
  77 +#endif /* GSKYDIR_HPP */
... ...
include/GammaLib.hpp
... ... @@ -24,6 +24,7 @@
24 24 #include "GObservation.hpp"
25 25  
26 26 #include "GResponse.hpp"
  27 +#include "GLATResponse.hpp"
27 28  
28 29 #include "GData.hpp"
29 30  
... ...
include/Makefile.am
1 1 # Define package included headers (to be installed)
2 2 pkginclude_HEADERS = GammaLib.hpp \
3 3 GException.hpp \
  4 + GSkyDir.hpp \
4 5 GData.hpp \
5 6 GResponse.hpp \
  7 + GLATResponse.hpp \
6 8 GObservation.hpp \
7 9 GFitsHeaderCard.hpp \
8 10 GFitsHeader.hpp \
... ...
include/Makefile.in
... ... @@ -179,8 +179,10 @@ target_alias = @target_alias@
179 179 # Define package included headers (to be installed)
180 180 pkginclude_HEADERS = GammaLib.hpp \
181 181 GException.hpp \
  182 + GSkyDir.hpp \
182 183 GData.hpp \
183 184 GResponse.hpp \
  185 + GLATResponse.hpp \
184 186 GObservation.hpp \
185 187 GFitsHeaderCard.hpp \
186 188 GFitsHeader.hpp \
... ...
src/GSkyDir.cpp 0 → 100644
  1 +/***************************************************************************
  2 + * GSkyDir.cpp - Class that implements a sky direction *
  3 + * ----------------------------------------------------------------------- *
  4 + * copyright : (C) 2008 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 +
  15 +/* __ Includes ___________________________________________________________ */
  16 +#include "GException.hpp"
  17 +#include "GSkyDir.hpp"
  18 +
  19 +/* __ Namespaces _________________________________________________________ */
  20 +
  21 +/* __ Method name definitions ____________________________________________ */
  22 +
  23 +/* __ Macros _____________________________________________________________ */
  24 +
  25 +/* __ Coding definitions _________________________________________________ */
  26 +
  27 +/* __ Debug definitions __________________________________________________ */
  28 +
  29 +
  30 +
  31 +/*==========================================================================
  32 + = =
  33 + = GSkyDir constructors/destructors =
  34 + = =
  35 + ==========================================================================*/
  36 +
  37 +/***************************************************************************
  38 + * Constructor *
  39 + * ----------------------------------------------------------------------- *
  40 + ***************************************************************************/
  41 +GSkyDir::GSkyDir()
  42 +{
  43 + // Initialise class members for clean destruction
  44 + init_members();
  45 +
  46 + // Return
  47 + return;
  48 +}
  49 +
  50 +
  51 +/***************************************************************************
  52 + * Copy constructor *
  53 + * ----------------------------------------------------------------------- *
  54 + ***************************************************************************/
  55 +GSkyDir::GSkyDir(const GSkyDir& dir)
  56 +{
  57 + // Initialise class members for clean destruction
  58 + init_members();
  59 +
  60 + // Copy members
  61 + copy_members(dir);
  62 +
  63 + // Return
  64 + return;
  65 +}
  66 +
  67 +
  68 +/***************************************************************************
  69 + * Destructor *
  70 + * ----------------------------------------------------------------------- *
  71 + ***************************************************************************/
  72 +GSkyDir::~GSkyDir()
  73 +{
  74 + // Free members
  75 + free_members();
  76 +
  77 + // Return
  78 + return;
  79 +}
  80 +
  81 +
  82 +/*==========================================================================
  83 + = =
  84 + = GSkyDir operators =
  85 + = =
  86 + ==========================================================================*/
  87 +
  88 +/***************************************************************************
  89 + * Assignment operator *
  90 + * ----------------------------------------------------------------------- *
  91 + ***************************************************************************/
  92 +GSkyDir& GSkyDir::operator= (const GSkyDir& dir)
  93 +{
  94 + // Execute only if object is not identical
  95 + if (this != &dir) {
  96 +
  97 + // Free members
  98 + free_members();
  99 +
  100 + // Initialise private members for clean destruction
  101 + init_members();
  102 +
  103 + // Copy members
  104 + copy_members(dir);
  105 +
  106 + } // endif: object was not identical
  107 +
  108 + // Return this object
  109 + return *this;
  110 +}
  111 +
  112 +
  113 +/*==========================================================================
  114 + = =
  115 + = GSkyDir public methods =
  116 + = =
  117 + ==========================================================================*/
  118 +
  119 +
  120 +/*==========================================================================
  121 + = =
  122 + = GSkyDir private methods =
  123 + = =
  124 + ==========================================================================*/
  125 +
  126 +/***************************************************************************
  127 + * Initialise class members *
  128 + * ----------------------------------------------------------------------- *
  129 + ***************************************************************************/
  130 +void GSkyDir::init_members(void)
  131 +{
  132 + // Initialise members
  133 +
  134 + // Return
  135 + return;
  136 +}
  137 +
  138 +
  139 +/***************************************************************************
  140 + * Copy class members *
  141 + * ----------------------------------------------------------------------- *
  142 + ***************************************************************************/
  143 +void GSkyDir::copy_members(const GSkyDir& dir)
  144 +{
  145 + // Copy attributes
  146 +
  147 + // Copy other membres
  148 +
  149 + // Return
  150 + return;
  151 +}
  152 +
  153 +
  154 +/***************************************************************************
  155 + * Delete class members *
  156 + * ----------------------------------------------------------------------- *
  157 + ***************************************************************************/
  158 +void GSkyDir::free_members(void)
  159 +{
  160 + // Free memory
  161 +
  162 + // Signal free pointers
  163 +
  164 + // Return
  165 + return;
  166 +}
  167 +
  168 +
  169 +/*==========================================================================
  170 + = =
  171 + = GSkyDir friends =
  172 + = =
  173 + ==========================================================================*/
  174 +
  175 +
  176 +/*==========================================================================
  177 + = =
  178 + = Other functions used by GSkyDir =
  179 + = =
  180 + ==========================================================================*/
... ...
src/Makefile.am
... ... @@ -10,8 +10,10 @@ INCLUDES = -I$(top_srcdir)/include \
10 10  
11 11 files = GException.cpp \
12 12 GTools.cpp \
  13 + GSkyDir.cpp \
13 14 data/GData.cpp \
14 15 rsp/GResponse.cpp \
  16 + rsp/GLATResponse.cpp \
15 17 obs/GObservation.cpp \
16 18 fits/GFitsHeaderCard.cpp \
17 19 fits/GFitsHeader.cpp \
... ...
src/Makefile.in
... ... @@ -59,14 +59,14 @@ am__installdirs = &quot;$(DESTDIR)$(libdir)&quot;
59 59 libLTLIBRARIES_INSTALL = $(INSTALL)
60 60 LTLIBRARIES = $(lib_LTLIBRARIES)
61 61 libgamma_la_LIBADD =
62   -am__objects_1 = GException.lo GTools.lo GData.lo GResponse.lo \
63   - GObservation.lo GFitsHeaderCard.lo GFitsHeader.lo GFitsData.lo \
64   - GFitsImage.lo GFitsAsciiTable.lo GFitsBinTable.lo \
65   - GFitsTableCol.lo GFitsTableStrCol.lo GFitsTableShtCol.lo \
66   - GFitsTableLngCol.lo GFitsTableFltCol.lo GFitsTableDblCol.lo \
67   - GFitsHDU.lo GFits.lo GFitPar.lo GVector.lo GMatrixBase.lo \
68   - GMatrix.lo GSymMatrix.lo GSparseMatrix.lo GSparseSymbolic.lo \
69   - GSparseNumeric.lo
  62 +am__objects_1 = GException.lo GTools.lo GSkyDir.lo GData.lo \
  63 + GResponse.lo GLATResponse.lo GObservation.lo \
  64 + GFitsHeaderCard.lo GFitsHeader.lo GFitsData.lo GFitsImage.lo \
  65 + GFitsAsciiTable.lo GFitsBinTable.lo GFitsTableCol.lo \
  66 + GFitsTableStrCol.lo GFitsTableShtCol.lo GFitsTableLngCol.lo \
  67 + GFitsTableFltCol.lo GFitsTableDblCol.lo GFitsHDU.lo GFits.lo \
  68 + GFitPar.lo GVector.lo GMatrixBase.lo GMatrix.lo GSymMatrix.lo \
  69 + GSparseMatrix.lo GSparseSymbolic.lo GSparseNumeric.lo
70 70 am_libgamma_la_OBJECTS = $(am__objects_1)
71 71 libgamma_la_OBJECTS = $(am_libgamma_la_OBJECTS)
72 72 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
... ... @@ -204,8 +204,10 @@ INCLUDES = -I$(top_srcdir)/include \
204 204  
205 205 files = GException.cpp \
206 206 GTools.cpp \
  207 + GSkyDir.cpp \
207 208 data/GData.cpp \
208 209 rsp/GResponse.cpp \
  210 + rsp/GLATResponse.cpp \
209 211 obs/GObservation.cpp \
210 212 fits/GFitsHeaderCard.cpp \
211 213 fits/GFitsHeader.cpp \
... ... @@ -319,6 +321,9 @@ GData.lo: data/GData.cpp
319 321 GResponse.lo: rsp/GResponse.cpp
320 322 $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GResponse.lo `test -f 'rsp/GResponse.cpp' || echo '$(srcdir)/'`rsp/GResponse.cpp
321 323  
  324 +GLATResponse.lo: rsp/GLATResponse.cpp
  325 + $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GLATResponse.lo `test -f 'rsp/GLATResponse.cpp' || echo '$(srcdir)/'`rsp/GLATResponse.cpp
  326 +
322 327 GObservation.lo: obs/GObservation.cpp
323 328 $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GObservation.lo `test -f 'obs/GObservation.cpp' || echo '$(srcdir)/'`obs/GObservation.cpp
324 329  
... ...
src/fits/GFitsHDU.cpp
... ... @@ -83,6 +83,7 @@ GFitsHDU::~GFitsHDU()
83 83 return;
84 84 }
85 85  
  86 +
86 87 /*==========================================================================
87 88 = =
88 89 = GFitsHDU operators =
... ...
src/fits/GFitsTableFltCol.cpp
... ... @@ -356,7 +356,9 @@ void GFitsTableFltCol::load(void)
356 356 // Allocate memory
357 357 if (m_data != NULL) delete [] m_data;
358 358 m_data = new float[m_size];
359   -
  359 +cout << endl;
  360 +cout << "m_size: " << m_size << endl;
  361 +cout << "m_colnum: " << m_colnum << endl;
360 362 // Load column data
361 363 int status = 0;
362 364 status = __ffgcv(m_fitsfile, __TFLOAT, m_colnum, 1, 1, m_size,
... ...
src/rsp/GLATResponse.cpp 0 → 100644
  1 +/***************************************************************************
  2 + * GLATResponse.cpp - GLAST LAT Response class *
  3 + * ----------------------------------------------------------------------- *
  4 + * copyright : (C) 2008 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 +
  15 +/* __ Includes ___________________________________________________________ */
  16 +//#include <vector>
  17 +#include <iostream> // cout, cerr
  18 +#include "GException.hpp"
  19 +#include "GVector.hpp"
  20 +#include "GLATResponse.hpp"
  21 +#include "GFits.hpp"
  22 +#include "GFitsTableFltCol.hpp"
  23 +
  24 +/* __ Namespaces _________________________________________________________ */
  25 +
  26 +/* __ Method name definitions ____________________________________________ */
  27 +
  28 +/* __ Macros _____________________________________________________________ */
  29 +
  30 +/* __ Coding definitions _________________________________________________ */
  31 +
  32 +/* __ Debug definitions __________________________________________________ */
  33 +
  34 +
  35 +
  36 +/*==========================================================================
  37 + = =
  38 + = GLATResponse constructors/destructors =
  39 + = =
  40 + ==========================================================================*/
  41 +
  42 +/***************************************************************************
  43 + * Constructor *
  44 + * ----------------------------------------------------------------------- *
  45 + ***************************************************************************/
  46 +GLATResponse::GLATResponse() : GResponse()
  47 +{
  48 + // Initialise class members for clean destruction
  49 + init_members();
  50 +
  51 + // Return
  52 + return;
  53 +}
  54 +
  55 +
  56 +/***************************************************************************
  57 + * Copy constructor *
  58 + * ----------------------------------------------------------------------- *
  59 + ***************************************************************************/
  60 +GLATResponse::GLATResponse(const GLATResponse& rsp) : GResponse(rsp)
  61 +{
  62 + // Initialise class members for clean destruction
  63 + init_members();
  64 +
  65 + // Copy members
  66 + copy_members(rsp);
  67 +
  68 + // Return
  69 + return;
  70 +}
  71 +
  72 +
  73 +/***************************************************************************
  74 + * Destructor *
  75 + * ----------------------------------------------------------------------- *
  76 + ***************************************************************************/
  77 +GLATResponse::~GLATResponse()
  78 +{
  79 + // Free members
  80 + free_members();
  81 +
  82 + // Return
  83 + return;
  84 +}
  85 +
  86 +
  87 +/*==========================================================================
  88 + = =
  89 + = GLATResponse operators =
  90 + = =
  91 + ==========================================================================*/
  92 +
  93 +/***************************************************************************
  94 + * Assignment operator *
  95 + * ----------------------------------------------------------------------- *
  96 + ***************************************************************************/
  97 +GLATResponse& GLATResponse::operator= (const GLATResponse& rsp)
  98 +{
  99 + // Execute only if object is not identical
  100 + if (this != &rsp) {
  101 +
  102 + // Copy base class members
  103 + this->GResponse::operator=(rsp);
  104 +
  105 + // Free members
  106 + free_members();
  107 +
  108 + // Initialise private members for clean destruction
  109 + init_members();
  110 +
  111 + // Copy members
  112 + copy_members(rsp);
  113 +
  114 + } // endif: object was not identical
  115 +
  116 + // Return this object
  117 + return *this;
  118 +}
  119 +
  120 +
  121 +/*==========================================================================
  122 + = =
  123 + = GLATResponse public methods =
  124 + = =
  125 + ==========================================================================*/
  126 +
  127 +/***************************************************************************
  128 + * Return value of instrument response function *
  129 + * ----------------------------------------------------------------------- *
  130 + ***************************************************************************/
  131 +double GLATResponse::irf(const GSkyDir& obsDir, const double& obsEng,
  132 + const GSkyDir& srcDir, const double& srcEng,
  133 + const GSkyDir& instPntDir, const double& instPosAng,
  134 + const double& time)
  135 +{
  136 + // Return IRF value
  137 + return 0.0;
  138 +}
  139 +
  140 +
  141 +/***************************************************************************
  142 + * Return effective area *
  143 + * ----------------------------------------------------------------------- *
  144 + ***************************************************************************/
  145 +double GLATResponse::aeff(const GSkyDir& obsDir, const double& obsEng,
  146 + const GSkyDir& srcDir, const double& srcEng,
  147 + const GSkyDir& instPntDir, const double& instPosAng,
  148 + const double& time)
  149 +{
  150 + // Return Aeff value
  151 + return 0.0;
  152 +}
  153 +
  154 +
  155 +/***************************************************************************
  156 + * Return value of point spread function *
  157 + * ----------------------------------------------------------------------- *
  158 + ***************************************************************************/
  159 +double GLATResponse::psf(const GSkyDir& obsDir, const double& obsEng,
  160 + const GSkyDir& srcDir, const double& srcEng,
  161 + const GSkyDir& instPntDir, const double& instPosAng,
  162 + const double& time)
  163 +{
  164 + // Return PSF value
  165 + return 0.0;
  166 +}
  167 +
  168 +
  169 +/***************************************************************************
  170 + * Return value of energy dispersion *
  171 + * ----------------------------------------------------------------------- *
  172 + ***************************************************************************/
  173 +double GLATResponse::edisp(const GSkyDir& obsDir, const double& obsEng,
  174 + const GSkyDir& srcDir, const double& srcEng,
  175 + const GSkyDir& instPntDir, const double& instPosAng,
  176 + const double& time)
  177 +{
  178 + // Return Edisp value
  179 + return 0.0;
  180 +}
  181 +
  182 +
  183 +/***************************************************************************
  184 + * Set calibration database *
  185 + * ----------------------------------------------------------------------- *
  186 + ***************************************************************************/
  187 +/**
  188 + * @brief Set the path to the calibration database.
  189 + */
  190 +void GLATResponse::set_caldb(std::string caldb)
  191 +{
  192 + // Simply copy path
  193 + // NOTE: Some check should be done on whether the path exists !!!
  194 + m_caldb = caldb;
  195 +
  196 + // Return
  197 + return;
  198 +}
  199 +
  200 +
  201 +/***************************************************************************
  202 + * Load response *
  203 + * ----------------------------------------------------------------------- *
  204 + ***************************************************************************/
  205 +/**
  206 + * @brief Load a specified LAT response function.
  207 + */
  208 +void GLATResponse::load(std::string rspname)
  209 +{
  210 + // Store response name
  211 + m_rspname = rspname;
  212 +
  213 + // Initialise effective area
  214 + init_aeff();
  215 +
  216 + // Initialise PSF
  217 + init_psf();
  218 +
  219 + // Initialise energy dispersion
  220 + init_edisp();
  221 +}
  222 +
  223 +
  224 +/***************************************************************************
  225 + * Save response *
  226 + * ----------------------------------------------------------------------- *
  227 + ***************************************************************************/
  228 +/**
  229 + * @brief Save me my friend ...
  230 + */
  231 +void GLATResponse::save(std::string rspname) const
  232 +{
  233 +}
  234 +
  235 +
  236 +/*==========================================================================
  237 + = =
  238 + = GLATResponse private methods =
  239 + = =
  240 + ==========================================================================*/
  241 +
  242 +/***************************************************************************
  243 + * Initialise effective area *
  244 + * ----------------------------------------------------------------------- *
  245 + ***************************************************************************/
  246 +void GLATResponse::init_aeff(void)
  247 +{
  248 + // Build filename
  249 + std::string filename = "aeff_" + m_rspname + ".fits";
  250 +
  251 + // Open FITS file
  252 + GFits file;
  253 + file.open(m_caldb + "/" + filename);
  254 +
  255 + // Get pointer towards effective area HDU
  256 + GFitsHDU* hdu = file.hdu("EFFECTIVE AREA");
  257 + if (hdu == NULL) {
  258 + cout << endl << "TEST ERROR: Unable to find HDU <EFFECTIVE AREA>." << endl;
  259 + throw;
  260 + }
  261 +
  262 + // Get pointers to data columns
  263 + GFitsTableFltCol* energ_lo = (GFitsTableFltCol*)hdu->column("ENERG_LO");
  264 + GFitsTableFltCol* energ_hi = (GFitsTableFltCol*)hdu->column("ENERG_HI");
  265 + GFitsTableFltCol* ctheta_lo = (GFitsTableFltCol*)hdu->column("CTHETA_LO");
  266 + GFitsTableFltCol* ctheta_hi = (GFitsTableFltCol*)hdu->column("CTHETA_HI");
  267 + GFitsTableFltCol* effarea = (GFitsTableFltCol*)hdu->column("EFFAREA");
  268 + if (energ_lo == NULL || energ_hi == NULL ||
  269 + ctheta_lo == NULL || ctheta_hi == NULL || effarea == NULL) {
  270 + cout << endl << "TEST ERROR: Unable to get <EFFECTIVE AREA> columns." << endl;
  271 + throw;
  272 + }
  273 +
  274 + // ...
  275 +
  276 + // Return
  277 + return;
  278 +}
  279 +
  280 +
  281 +/***************************************************************************
  282 + * Initialise PSF *
  283 + * ----------------------------------------------------------------------- *
  284 + ***************************************************************************/
  285 +void GLATResponse::init_psf(void)
  286 +{
  287 + // Build filename
  288 + std::string filename = "psf_" + m_rspname + ".fits";
  289 +
  290 + // Open FITS file
  291 + GFits file;
  292 + file.open(m_caldb + "/" + filename);
  293 +
  294 + // Get pointer towards PSF HDU
  295 + GFitsHDU* hdu = file.hdu("RPSF");
  296 + if (hdu == NULL) {
  297 + cout << endl << "TEST ERROR: Unable to find HDU <RPSF>." << endl;
  298 + throw;
  299 + }
  300 +
  301 + // Get data
  302 + GVector energ_lo = get_fits_column(hdu, "ENERG_LO");
  303 +/*
  304 + GVector energ_hi = get_fits_column(hdu, "ENERG_HI");
  305 + GVector ctheta_lo = get_fits_column(hdu, "CTHETA_LO");
  306 + GVector ctheta_hi = get_fits_column(hdu, "CTHETA_HI");
  307 + GVector ncore = get_fits_column(hdu, "NCORE");
  308 + GVector sigma = get_fits_column(hdu, "SIGMA");
  309 + GVector gcore = get_fits_column(hdu, "GCORE");
  310 + GVector gtail = get_fits_column(hdu, "GTAIL");
  311 +*/
  312 + // ...
  313 +
  314 + // Return
  315 + return;
  316 +}
  317 +
  318 +
  319 +/***************************************************************************
  320 + * Initialise energy dispersion *
  321 + * ----------------------------------------------------------------------- *
  322 + ***************************************************************************/
  323 +void GLATResponse::init_edisp(void)
  324 +{
  325 + // Build filename
  326 + std::string filename = "edisp_" + m_rspname + ".fits";
  327 +
  328 + // Open FITS file
  329 + GFits file;
  330 + file.open(m_caldb + "/" + filename);
  331 +
  332 + // Get pointer towards energy dispersion HDU
  333 + GFitsHDU* hdu = file.hdu("ENERGY DISPERSION");
  334 + if (hdu == NULL) {
  335 + cout << endl << "TEST ERROR: Unable to find HDU <ENERGY DISPERSION>." << endl;
  336 + throw;
  337 + }
  338 +
  339 + // Get pointers to data columns
  340 + GFitsTableFltCol* energ_lo = (GFitsTableFltCol*)hdu->column("ENERG_LO");
  341 + GFitsTableFltCol* energ_hi = (GFitsTableFltCol*)hdu->column("ENERG_HI");
  342 + GFitsTableFltCol* ctheta_lo = (GFitsTableFltCol*)hdu->column("CTHETA_LO");
  343 + GFitsTableFltCol* ctheta_hi = (GFitsTableFltCol*)hdu->column("CTHETA_HI");
  344 + GFitsTableFltCol* dnorm = (GFitsTableFltCol*)hdu->column("DNORM");
  345 + GFitsTableFltCol* ltail = (GFitsTableFltCol*)hdu->column("LTAIL");
  346 + GFitsTableFltCol* rwidth = (GFitsTableFltCol*)hdu->column("RWIDTH");
  347 + GFitsTableFltCol* nr2 = (GFitsTableFltCol*)hdu->column("NR2");
  348 + GFitsTableFltCol* lt2 = (GFitsTableFltCol*)hdu->column("LT2");
  349 + GFitsTableFltCol* rt2 = (GFitsTableFltCol*)hdu->column("RT2");
  350 + if (energ_lo == NULL || energ_hi == NULL ||
  351 + ctheta_lo == NULL || ctheta_hi == NULL ||
  352 + dnorm == NULL || ltail == NULL || rwidth == NULL ||
  353 + nr2 == NULL || lt2 == NULL || rt2 == NULL) {
  354 + cout << endl << "TEST ERROR: Unable to get <ENERGY DISPERSION> columns." << endl;
  355 + throw;
  356 + }
  357 +
  358 + // ...
  359 +
  360 + // Return
  361 + return;
  362 +}
  363 +
  364 +
  365 +/***************************************************************************
  366 + * Initialise class members *
  367 + * ----------------------------------------------------------------------- *
  368 + ***************************************************************************/
  369 +void GLATResponse::init_members(void)
  370 +{
  371 + // Initialise members
  372 + //m_aeff_name.clear();
  373 + //m_psf_name.clear();
  374 + //m_edisp_name.clear();
  375 +
  376 + // By default use HANDOFF response database.
  377 + char* handoff = getenv("HANDOFF_IRF_DIR");
  378 + if (handoff != NULL)
  379 + m_caldb.assign(handoff);
  380 +
  381 +
  382 + // Return
  383 + return;
  384 +}
  385 +
  386 +
  387 +/***************************************************************************
  388 + * Copy class members *
  389 + * ----------------------------------------------------------------------- *
  390 + ***************************************************************************/
  391 +void GLATResponse::copy_members(const GLATResponse& rsp)
  392 +{
  393 + // Copy attributes
  394 + //m_aeff_name = rsp.m_aeff_name;
  395 + //m_psf_name = rsp.m_psf_name;
  396 + //m_edisp_name = rsp.m_edisp_name;
  397 +
  398 + // Copy other membres
  399 +
  400 + // Return
  401 + return;
  402 +}
  403 +
  404 +
  405 +/***************************************************************************
  406 + * Delete class members *
  407 + * ----------------------------------------------------------------------- *
  408 + ***************************************************************************/
  409 +void GLATResponse::free_members(void)
  410 +{
  411 + // Free memory
  412 +
  413 + // Signal free pointers
  414 +
  415 + // Return
  416 + return;
  417 +}
  418 +
  419 +
  420 +/***************************************************************************
  421 + * Load floating point data from column into vector *
  422 + * ----------------------------------------------------------------------- *
  423 + ***************************************************************************/
  424 +GVector GLATResponse::get_fits_column(const GFitsHDU* hdu, const std::string& colname)
  425 +{
  426 + // Get pointer on column
  427 + GFitsTableFltCol* ptr = (GFitsTableFltCol*)hdu->column(colname);
  428 + if (ptr == NULL)
  429 + throw;
  430 +
  431 + // Load data into vector
  432 + int num = ptr->repeat();
  433 + GVector data(num);
  434 + for (int i = 0; i < num; ++i)
  435 + data(i) = ptr->real(0,i);
  436 + cout << data << endl;
  437 +
  438 + // Return vector
  439 + return data;
  440 +}
  441 +
  442 +
  443 +/*==========================================================================
  444 + = =
  445 + = GLATResponse friends =
  446 + = =
  447 + ==========================================================================*/
  448 +
  449 +
  450 +/*==========================================================================
  451 + = =
  452 + = Other functions used by GLATResponse =
  453 + = =
  454 + ==========================================================================*/
... ...
src/rsp/GResponse.cpp
... ... @@ -15,9 +15,9 @@
15 15 /* __ Includes ___________________________________________________________ */
16 16 #include "GException.hpp"
17 17 #include "GResponse.hpp"
  18 +#include <iostream> // cout, cerr
18 19  
19 20 /* __ Namespaces _________________________________________________________ */
20   -using namespace std;
21 21  
22 22 /* __ Method name definitions ____________________________________________ */
23 23  
... ... @@ -35,6 +35,50 @@ using namespace std;
35 35 = =
36 36 ==========================================================================*/
37 37  
  38 +/***************************************************************************
  39 + * Constructor *
  40 + * ----------------------------------------------------------------------- *
  41 + ***************************************************************************/
  42 +GResponse::GResponse()
  43 +{
  44 + // Initialise class members for clean destruction
  45 + init_members();
  46 +
  47 + // Return
  48 + return;
  49 +}
  50 +
  51 +
  52 +/***************************************************************************
  53 + * Copy constructor *
  54 + * ----------------------------------------------------------------------- *
  55 + ***************************************************************************/
  56 +GResponse::GResponse(const GResponse& rsp)
  57 +{
  58 + // Initialise class members for clean destruction
  59 + init_members();
  60 +
  61 + // Copy members
  62 + copy_members(rsp);
  63 +
  64 + // Return
  65 + return;
  66 +}
  67 +
  68 +
  69 +/***************************************************************************
  70 + * Destructor *
  71 + * ----------------------------------------------------------------------- *
  72 + ***************************************************************************/
  73 +GResponse::~GResponse()
  74 +{
  75 + // Free members
  76 + free_members();
  77 +
  78 + // Return
  79 + return;
  80 +}
  81 +
38 82  
39 83 /*==========================================================================
40 84 = =
... ... @@ -42,20 +86,90 @@ using namespace std;
42 86 = =
43 87 ==========================================================================*/
44 88  
  89 +/***************************************************************************
  90 + * Assignment operator *
  91 + * ----------------------------------------------------------------------- *
  92 + ***************************************************************************/
  93 +GResponse& GResponse::operator= (const GResponse& rsp)
  94 +{
  95 + // Execute only if object is not identical
  96 + if (this != &rsp) {
  97 +
  98 + // Free members
  99 + free_members();
  100 +
  101 + // Initialise private members for clean destruction
  102 + init_members();
  103 +
  104 + // Copy members
  105 + copy_members(rsp);
  106 +
  107 + } // endif: object was not identical
  108 +
  109 + // Return this object
  110 + return *this;
  111 +}
  112 +
45 113  
46 114 /*==========================================================================
47 115 = =
48   - = GResponse methods =
  116 + = GResponse public methods =
49 117 = =
50 118 ==========================================================================*/
51 119  
52 120  
53 121 /*==========================================================================
54 122 = =
55   - = GResponse private functions =
  123 + = GResponse private methods =
56 124 = =
57 125 ==========================================================================*/
58 126  
  127 +/***************************************************************************
  128 + * Initialise class members *
  129 + * ----------------------------------------------------------------------- *
  130 + ***************************************************************************/
  131 +void GResponse::init_members(void)
  132 +{
  133 + // Initialise members
  134 + m_caldb.clear();
  135 + m_rspname.clear();
  136 +
  137 + // Return
  138 + return;
  139 +}
  140 +
  141 +
  142 +/***************************************************************************
  143 + * Copy class members *
  144 + * ----------------------------------------------------------------------- *
  145 + ***************************************************************************/
  146 +void GResponse::copy_members(const GResponse& rsp)
  147 +{
  148 + // Copy attributes
  149 + m_caldb = rsp.m_caldb;
  150 + m_rspname = rsp.m_rspname;
  151 +
  152 + // Copy other membres
  153 +
  154 + // Return
  155 + return;
  156 +}
  157 +
  158 +
  159 +/***************************************************************************
  160 + * Delete class members *
  161 + * ----------------------------------------------------------------------- *
  162 + ***************************************************************************/
  163 +void GResponse::free_members(void)
  164 +{
  165 + // Free memory
  166 +
  167 + // Signal free pointers
  168 +
  169 + // Return
  170 + return;
  171 +}
  172 +
59 173  
60 174 /*==========================================================================
61 175 = =
... ...
test/test_GFits.cpp
... ... @@ -205,6 +205,19 @@ void test_columns(void)
205 205 std::cout << e.what() << std::endl;
206 206 throw;
207 207 }
  208 + try {
  209 + GFitsTableFltCol flt = *((GFitsTableFltCol*)fits.hdu("BinTable2")->column("TFLOAT3"));
  210 + if (!fequal(flt.real(0,0),0.0)) {
  211 + cout << endl << "TEST ERROR: Bad TFLOAT (3) values read ("
  212 + << flt.real(0,0) << " != 0.0)." << endl;
  213 + throw;
  214 + }
  215 + }
  216 + catch (exception &e) {
  217 + std::cout << std::endl << "TEST ERROR: Unable to handle single TFLOAT column." << std::endl;
  218 + std::cout << e.what() << std::endl;
  219 + throw;
  220 + }
208 221 std::cout << ". ok." << std::endl;
209 222  
210 223 //
... ...
test/test_GFits.fits
No preview for this file type
test/test_GResponse.cpp
... ... @@ -13,6 +13,7 @@
13 13  
14 14 /* __ Includes ___________________________________________________________ */
15 15 #include "test_GResponse.hpp"
  16 +#include <iostream> // cout, cerr
16 17  
17 18 /* __ Namespaces _________________________________________________________ */
18 19  
... ... @@ -20,20 +21,25 @@
20 21  
21 22  
22 23 /***************************************************************************
23   - * Test: Open *
  24 + * Test: LAT Response *
24 25 ***************************************************************************/
25   -void test_open(void)
  26 +void test_lat_response(void)
26 27 {
27   - std::cout << "Test GResponse: Open PSF FITS file: ";
  28 + cout << "Test GLATResponse: Open PSF FITS file: ";
28 29 try {
  30 + // Get HANDOFF Response
  31 + GLATResponse rsp;
  32 + rsp.set_caldb("irf/lat");
  33 + rsp.load("Pass5_v0_front");
  34 +/*
29 35 // Open FITS file
30 36 GFits fits;
31   - fits.open("irf/lat/aeff_Pass5_v0_front.fits");
  37 + fits.open("irf/lat/aeff_.fits");
32 38  
33 39 // Get pointer towards effective area HDU
34 40 GFitsHDU* aeff = fits.hdu("EFFECTIVE AREA");
35 41 if (aeff == NULL) {
36   - std::cout << std::endl << "TEST ERROR: Unable to find HDU <EFFECTIVE AREA>." << std::endl;
  42 + cout << endl << "TEST ERROR: Unable to find HDU <EFFECTIVE AREA>." << endl;
37 43 throw;
38 44 }
39 45  
... ... @@ -43,14 +49,14 @@ void test_open(void)
43 49 GFitsTableFltCol ctheta_lo = *((GFitsTableFltCol*)aeff->column("CTHETA_LO"));
44 50 GFitsTableFltCol ctheta_hi = *((GFitsTableFltCol*)aeff->column("CTHETA_HI"));
45 51 GFitsTableFltCol effarea = *((GFitsTableFltCol*)aeff->column("EFFAREA"));
46   -
  52 +*/
47 53 }
48 54 catch (exception &e) {
49   - std::cout << std::endl << "TEST ERROR: Unable to open FITS file." << std::endl;
50   - std::cout << e.what() << std::endl;
  55 + cout << endl << "TEST ERROR: Unable to open FITS file." << endl;
  56 + cout << e.what() << endl;
51 57 throw;
52 58 }
53   - std::cout << ". ok." << std::endl;
  59 + cout << ". ok." << endl;
54 60 }
55 61  
56 62  
... ... @@ -60,13 +66,13 @@ void test_open(void)
60 66 int main(void)
61 67 {
62 68 // Dump header
63   - std::cout << std::endl;
64   - std::cout << "***************************" << std::endl;
65   - std::cout << "* GResponse class testing *" << std::endl;
66   - std::cout << "**************************" << std::endl;
  69 + cout << std::endl;
  70 + cout << "***************************" << endl;
  71 + cout << "* GResponse class testing *" << endl;
  72 + cout << "**************************" << endl;
67 73  
68 74 // Execute the tests
69   - test_open();
  75 + test_lat_response();
70 76  
71 77 // Return
72 78 return 0;
... ...