TABLE OF CONTENTS
- 1. /histMC_avg
- 1.1. histMC_avg/histMC_avg
- 1.1.1. histMC_avg/histogramMC_avg
- 1.1.2. histMC_avg/CreateHistMC_avg
- 1.1.3. histMC_avg/AddHistMC_avg
- 1.1.4. histMC_avg/CopyDesc_avg
- 1.1.5. histMC_avg/WriteHeader
- 1.1.6. histMC_avg/WriteHistMC_avg
- 1.1.7. histMC_avg/ReadHistMC_avg
- 1.1.8. histMC_avg/sumHistMC_avg
/histMC_avg [ Modules ]
NAME
module histMC_avg
PURPOSE
This module implements a type 'histogramMC_avg' for 1D Histograms with multiple channels. It is similar to the type 'histogramMC' but in addition stores event counts for each bin and channel. In the end it outputs the average of the stored quantity over all entries in a particular bin. This is useful e.g. for the flow analysis in the module 'HeavyIonAnalysis'.
histMC_avg/histogramMC_avg [ Types ]
[ Top ] [ histMC_avg ] [ Types ]
NAME
type histogramMC_avg
PURPOSE
Type definition to store all information for a multi-channel 1D Histogram with averaging capabilities.
SOURCE
type, public :: histogramMC_avg real :: xMin, xMax, xBin ! smallest/largest x-value & bin width real :: xExtreme(2) ! extremes of used x-values (min,max) character*(NameLength) :: Name, xDesc ! histogram name and description of x-value character*(NameLength), allocatable :: yDesc(:) ! description of y-channels real, allocatable :: yVal(:,:) ! histogramm values: (x), (y1,y2,y3,...) ! bin 0,-1 : underflow/overflow !!! integer, allocatable :: counts(:,:) ! counts: (x), (count1,count2,count3,...) ! bin 0,-1 : underflow/overflow counts !!! logical :: initialized = .false. ! flag to indicate whether the histogram has been initialized end type histogramMC_avg
histMC_avg/CreateHistMC_avg [ Subroutines ]
[ Top ] [ histMC_avg ] [ Subroutines ]
NAME
subroutine CreateHistMC_avg (H, HName, x1, x2, bin, nCh)
PURPOSE
This is the constructor of a multi-channel 1D-Histogram. Allocate memory for the entries and put additional variables to their default.
INPUTS
- type(histogramMC_avg):: H -- Histogramm to be created
- character*(*) :: HName -- Name of histogram
- real :: x1,x2,bin -- Minimal/maximal value for x-coordinate to be considered, bin-width
- integer :: nCh -- Number of channels
OUTPUT
H is changed.
histMC_avg/histMC_avg [ Subroutines ]
[ Top ] [ histMC_avg ] [ Subroutines ]
NAME
subroutine RemoveHistMC_avg(H)
PURPOSE
Free the allocated memory.
INPUTS
- type(histogramMC_avg) :: H -- Histogram to be used
OUTPUT
H is changed.
histMC_avg/AddHistMC_avg [ Subroutines ]
[ Top ] [ histMC_avg ] [ Subroutines ]
NAME
subroutine AddHistMC_avg (H, x, nCh, y)
PURPOSE
Add the weight y to the given histogram at the given x-value and channel number, and increment the count for that bin.
INPUTS
- type(histogramMC_avg) :: H -- Histogramm to be used
- real :: x -- x-value
- integer :: nCh -- number of Channel
- real :: y -- weight to be added
OUTPUT
H is changed.
histMC_avg/CopyDesc_avg [ Subroutines ]
[ Top ] [ histMC_avg ] [ Subroutines ]
NAME
subroutine CopyDesc_avg (H_dest, H_src)
PURPOSE
Copy the channel descriptions from one histogram to another.
INPUTS
- type(histogramMC_avg) :: H_dest -- destination Histogramm
- type(histogramMC_avg) :: H_src -- source Histogram
OUTPUT
H_dest is changed
histMC_avg/WriteHeader [ Subroutines ]
[ Top ] [ histMC_avg ] [ Subroutines ]
NAME
logical function WriteHeader (H, iFile, mul, FinalLineBreak)
PURPOSE
A header is written to the file:
- Underflow: sum of all calls with a x-value less than x-min
- Entries: sum of all entries listed in section "Data" below
- Overflow: sum of all calls with a x-value above x-max
- Extrema: the smallest/biggest x-values which had been added
- counted: the range of x-values, which is considered in "Entries"
- descriptions of x-value and all y-channels
Summing "Underflow"+"Entries"+"Overflow" gives the number of ALL calls, i.e. the integral from -infty upto +infty.
Output of "Underflow","Entries","Overflow" shows only the sum of all channels.
INPUTS
- type(histogramMC_avg) :: H -- Histogramm
- integer :: iFile -- file number to write to
- real, optional :: mul
- logical,optional :: FinalLineBreak -- .false.= No line break after the header
OUTPUT
histMC_avg/WriteHistMC_avg [ Subroutines ]
[ Top ] [ histMC_avg ] [ Subroutines ]
NAME
subroutine WriteHistMC_avg(H,file,mul)
PURPOSE
Write out the histogram. The entries are multiplied by 'mul'.
INPUTS
- type(histogramMC_avg) :: H -- Histogramm to be used
- character*(*) :: file -- name of file to open and close
- real :: mul -- factor to multiply [OPTIONAL]
OUTPUT
write to file
Several columns are written in the data section:
- 1) x-value (i.e. middle of bin)
- 2) total sum of all y-values
- 3...) all single y-values (followed by their counts)
In addition a header with additional info is written to the file (see "WriteHeader").
NOTES
The Histogram data is not affected.
histMC_avg/ReadHistMC_avg [ Functions ]
[ Top ] [ histMC_avg ] [ Functions ]
NAME
function ReadHistMC_avg (H, file, w) result (success)
PURPOSE
Read in a histogram from a file.
INPUTS
- type(histogramMC_avg) :: H -- Histogram to be used
- character*(*) :: file -- name of file to read
- real, optional, intent(in) :: w -- optional weigting factor
OUTPUT
- H is changed
- return value indicates success or failure
NOTES
Only data points are read (no under-/overflow etc).
histMC_avg/sumHistMC_avg [ Subroutines ]
[ Top ] [ histMC_avg ] [ Subroutines ]
NAME
subroutine sumHistMC_avg (A, B, w)
PURPOSE
Perform a summation of two histograms: A = A + B. If a weight 'w' is given, do a weighted summation: A = A + w*B
INPUTS
- type(histogramMC_avg) :: A, B -- Histograms to be used
- real, optional, intent(in) :: w -- optional weighting factor
OUTPUT
A is changed.