ROOT logo
#ifndef HPARTICLERUNNINGMEAN_H
#define HPARTICLERUNNINGMEAN_H

#include "TObject.h"
#include <cmath>
class HParticleRunningMeanI : public TObject {
protected:
    Int_t                fnMax; // (fixed)    maximum no of events used to calculate mean multiplicity
    Int_t             fminEvts; // (fixed)    minimum events for valid mean value
    Float_t     fscaleFacSigma; // (fixed)    scaling factor for cutoff of val distribution in units of the distribution width sigma
    Float_t            fmaxMin; // (fixed)    minimum value allowed for fmax
    Int_t                 fmin; // (fixed)    minimum allowed value
    Float_t        initialMean; // (fixed)    init values for first fminEvts events
    Float_t       initialSigma; // (fixed)    init values for first fminEvts events


    Float_t              fmean; // (floating) mean value
    Float_t             fsigma; // (floating) mean value
    Int_t                 fmax; // (floating) maximum allowed value
    Bool_t              fvalid; // value < max or fn (event counter) < fminEvts

    //event-wise determination of mean multiplicity of particleCandidates is calculated by averaging over nMultMax events
    Int_t            *fnPoints; // used to calculate a moving average
    Int_t               findex; // current index in mean array

    Int_t                 fSum; // (floating) sum of all acumulated means
    Int_t                fSum2; // (floating) sum of all acumulated means squared
    Int_t                   fn; // actual counter of entries until fnMax

    Int_t   setInitialMean(const Float_t initialMean, const Float_t initialSigma);
    Bool_t  isValid       (void);

public:
    HParticleRunningMeanI (void) { fnPoints = NULL;}
    ~HParticleRunningMeanI(void) { if(fnPoints != NULL) delete[] fnPoints;}
    Int_t   initParam     (const Int_t Max=2000, const Int_t minEvents=100, const Float_t scaleFacSigma=sqrt(12.0F),
			   const Float_t initMean=-999999, const Float_t initSigma=-999999, const Int_t min=1);
    void    reset         (Bool_t full=kTRUE);
    Float_t calcMean      (Int_t val);

    Float_t getMean          (void) { return fmean; }
    Float_t getSigma         (void) { return fsigma; }
    Bool_t  getValid         (void) { return fvalid;}
    Int_t   getMax           (void) { return fmax  ;}
    Int_t   getMin           (void) { return fmin  ;}
    Int_t   getMaxMin        (void) { return fmaxMin;}
    Int_t   getNMax          (void) { return fnMax;}
    Int_t   getNMin          (void) { return fminEvts;}
    Float_t getMeanScaleToMax(void) { return fscaleFacSigma;}

    ClassDef(HParticleRunningMeanI,0) //calculate moving average
};

#endif //HPARTICLERUNNINGMEAN_H
 hparticlerunningmean.h:1
 hparticlerunningmean.h:2
 hparticlerunningmean.h:3
 hparticlerunningmean.h:4
 hparticlerunningmean.h:5
 hparticlerunningmean.h:6
 hparticlerunningmean.h:7
 hparticlerunningmean.h:8
 hparticlerunningmean.h:9
 hparticlerunningmean.h:10
 hparticlerunningmean.h:11
 hparticlerunningmean.h:12
 hparticlerunningmean.h:13
 hparticlerunningmean.h:14
 hparticlerunningmean.h:15
 hparticlerunningmean.h:16
 hparticlerunningmean.h:17
 hparticlerunningmean.h:18
 hparticlerunningmean.h:19
 hparticlerunningmean.h:20
 hparticlerunningmean.h:21
 hparticlerunningmean.h:22
 hparticlerunningmean.h:23
 hparticlerunningmean.h:24
 hparticlerunningmean.h:25
 hparticlerunningmean.h:26
 hparticlerunningmean.h:27
 hparticlerunningmean.h:28
 hparticlerunningmean.h:29
 hparticlerunningmean.h:30
 hparticlerunningmean.h:31
 hparticlerunningmean.h:32
 hparticlerunningmean.h:33
 hparticlerunningmean.h:34
 hparticlerunningmean.h:35
 hparticlerunningmean.h:36
 hparticlerunningmean.h:37
 hparticlerunningmean.h:38
 hparticlerunningmean.h:39
 hparticlerunningmean.h:40
 hparticlerunningmean.h:41
 hparticlerunningmean.h:42
 hparticlerunningmean.h:43
 hparticlerunningmean.h:44
 hparticlerunningmean.h:45
 hparticlerunningmean.h:46
 hparticlerunningmean.h:47
 hparticlerunningmean.h:48
 hparticlerunningmean.h:49
 hparticlerunningmean.h:50
 hparticlerunningmean.h:51
 hparticlerunningmean.h:52
 hparticlerunningmean.h:53
 hparticlerunningmean.h:54