initial commit for version 1.6.x patch release
[OpenFOAM-1.6.x.git] / src / OpenFOAM / containers / Lists / Histogram / Histogram.H
blob8010da7a63806bdd82ce228d2f5650f5cd89e4a4
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software; you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by the
13     Free Software Foundation; either version 2 of the License, or (at your
14     option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM; if not, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 Class
26     Foam::Histogram
28 Description
29     Calculates the counts per bin of a list.
31 SourceFiles
32     Histogram.C
34 \*---------------------------------------------------------------------------*/
36 #ifndef Histogram_H
37 #define Histogram_H
39 #include "labelList.H"
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 namespace Foam
47 /*---------------------------------------------------------------------------*\
48                           Class Histogram Declaration
49 \*---------------------------------------------------------------------------*/
51 template<class List>
52 class Histogram
54     // Private data
56         //- Counts per bin
57         labelList counts_;
59         //- Number of <= lowest bin
60         label nLow_;
62         //- Number of > highest bin
63         label nHigh_;
66     // Private Member Functions
68         void count(const List& bins, const List& l);
70         //- Disallow default bitwise copy construct
71         Histogram(const Histogram&);
73         //- Disallow default bitwise assignment
74         void operator=(const Histogram&);
77 public:
79     // Constructors
81         //- Construct given bin values and input list
82         Histogram(const List& bins, const List& l);
84         //- Construct given min, max, number of bins and input list
85         Histogram
86         (
87             const typename List::const_reference min,
88             const typename List::const_reference max,
89             const label nBins,
90             const List& l
91         );
94         // Access
96             //- Return the counts per bin
97             inline const labelList& counts() const
98             {
99                 return counts_;
100             }
102             //- Return the number of elements <= bins[0]
103             //  (so inclusive lowest bin value)
104             inline label nLow() const
105             {
106                 return nLow_;
107             }
109             //- Return the number of elements > bins[bins.size()-1]
110             //  (so exclusive highest bin value)
111             inline label nHigh() const
112             {
113                 return nHigh_;
114             }
118 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
120 } // End namespace Foam
122 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
124 //#   include "HistogramI.H"
126 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
128 #ifdef NoRepository
129 #   include "Histogram.C"
130 #endif
132 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
134 #endif
136 // ************************************************************************* //