Merge release-4-6 into master
[alexxy/gromacs.git] / src / gromacs / selection.h
1 /*
2  *
3  *                This source code is part of
4  *
5  *                 G   R   O   M   A   C   S
6  *
7  *          GROningen MAchine for Chemical Simulations
8  *
9  * Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
10  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
11  * Copyright (c) 2001-2009, The GROMACS development team,
12  * check out http://www.gromacs.org for more information.
13
14  * This program is free software; you can redistribute it and/or
15  * modify it under the terms of the GNU General Public License
16  * as published by the Free Software Foundation; either version 2
17  * of the License, or (at your option) any later version.
18  *
19  * If you want to redistribute modifications, please consider that
20  * scientific software is very special. Version control is crucial -
21  * bugs must be traceable. We will be happy to consider code for
22  * inclusion in the official distribution, but derived work must not
23  * be called official GROMACS. Details are found in the README & COPYING
24  * files - if they are missing, get the official version at www.gromacs.org.
25  *
26  * To help us fund GROMACS development, we humbly ask that you cite
27  * the papers on the package - you can find them in the top README file.
28  *
29  * For more info, check our website at http://www.gromacs.org
30  */
31 /*! \defgroup module_selection Parsing and Evaluation of Analysis Selections
32  * \ingroup group_analysismodules
33  * \brief
34  * Provides functionality for initializing and evaluating selections.
35  *
36  * The core of the selection engine is accessed through
37  * gmx::SelectionCollection, which manages a set of selections.
38  * Documentation for that class explains the general selection mechanisms.
39  *
40  * For each selection that is parsed using a gmx::SelectionCollection, a
41  * gmx::Selection handle is returned and can be used to access information
42  * about that selection.  gmx::SelectionPosition is a helper class used to
43  * access information about individual positions in a selection.  These classes
44  * refer to internal state within the gmx::SelectionCollection, and their
45  * contents update automatically when the gmx::SelectionCollection is compiled
46  * or evaluated.
47  *
48  * This module also provides gmx::SelectionOption and gmx::SelectionOptionInfo
49  * classes for declaring options that evaluate to selections (see \ref
50  * module_options for general explanation of the options mechanism).  These
51  * classes provide the main interface to obtain gmx::Selection objects in
52  * trajectory analysis using gmx::TrajectoryAnalysisModule.
53  *
54  * \if libapi
55  * The selection module contains some lower-level functionality that is
56  * currently internal to it (centerofmass.h, indexutil.h, poscalc.h,
57  * position.h), but could possibly be useful also outside the module.
58  * It should be considered whether they should be moved somewhere else.
59  * \endif
60  *
61  * \if internal
62  * Implementation details of different parts of the module are discussed on
63  * separate pages:
64  *   - \ref page_module_selection_custom
65  *   - \ref page_module_selection_parser
66  *   - \ref page_module_selection_compiler
67  *   - \ref page_module_selection_insolidangle
68  * \endif
69  *
70  * \author Teemu Murtola <teemu.murtola@cbr.su.se>
71  */
72 /*! \file
73  * \brief
74  * Public API convenience header for selection handling.
75  *
76  * \author Teemu Murtola <teemu.murtola@cbr.su.se>
77  * \inpublicapi
78  * \ingroup module_selection
79  */
80 #ifndef GMX_SELECTION_H
81 #define GMX_SELECTION_H
82
83 #include "selection/selection.h"
84 #include "selection/selectioncollection.h"
85 #include "selection/selectionoption.h"
86 #include "selection/selectionoptioninfo.h"
87
88 #endif