ROOT logo
#ifndef HMDCCLFNSTACK_H
#define HMDCCLFNSTACK_H

#include "TObject.h"

class HMdcClFnStack : public TObject {
  protected:
    Int_t *stack;         // stack array
    Int_t *stackEnd;      // address of end stack
    Int_t *stackPos;      // address of stack position
    Int_t  stackSize;     // stackSize;
    Int_t  indexInArr;    // index in HMdcClFnStacksArr == clusterAmplitude - 1
  public:
    HMdcClFnStack(Int_t size = 20);
    ~HMdcClFnStack();
    void  setSize(Int_t size);
    void  init(void)          {stackPos = stack;}
    void  push(Int_t n)       {checkSize(); *stackPos = n; stackPos++;}
    Int_t pop(void)           {return stackPos>stack ? *(--stackPos) : -1;}
    void  checkSize(void)     {if(stackPos>=stackEnd) increaseStack();}
    void  setIndex(Int_t ind) {indexInArr = ind;}
  protected:
    void  create(void);
    void  increaseStack(void);
    
  ClassDef(HMdcClFnStack,0)
};

class HMdcClFnStacksArr : public TObject {
  protected:
    HMdcClFnStack stacksArr[24]; //
    UChar_t       amplitude;
  public:
    HMdcClFnStacksArr(Int_t size = 1000);
    ~HMdcClFnStacksArr() {}
    void  init(UChar_t maxAmp=24);
    void  push(Int_t n,UChar_t amp)   {amp--; stacksArr[amp].push(n);
                                       if(amp>amplitude) amplitude=amp;}
    UChar_t pop(Int_t& binNum);
    HMdcClFnStack* getOneStack(void) {return stacksArr;}
  protected:
    
  ClassDef(HMdcClFnStacksArr,0)
};  

#endif  /*!HMDCCLFNSTACK_H*/
 hmdcclfnstack.h:1
 hmdcclfnstack.h:2
 hmdcclfnstack.h:3
 hmdcclfnstack.h:4
 hmdcclfnstack.h:5
 hmdcclfnstack.h:6
 hmdcclfnstack.h:7
 hmdcclfnstack.h:8
 hmdcclfnstack.h:9
 hmdcclfnstack.h:10
 hmdcclfnstack.h:11
 hmdcclfnstack.h:12
 hmdcclfnstack.h:13
 hmdcclfnstack.h:14
 hmdcclfnstack.h:15
 hmdcclfnstack.h:16
 hmdcclfnstack.h:17
 hmdcclfnstack.h:18
 hmdcclfnstack.h:19
 hmdcclfnstack.h:20
 hmdcclfnstack.h:21
 hmdcclfnstack.h:22
 hmdcclfnstack.h:23
 hmdcclfnstack.h:24
 hmdcclfnstack.h:25
 hmdcclfnstack.h:26
 hmdcclfnstack.h:27
 hmdcclfnstack.h:28
 hmdcclfnstack.h:29
 hmdcclfnstack.h:30
 hmdcclfnstack.h:31
 hmdcclfnstack.h:32
 hmdcclfnstack.h:33
 hmdcclfnstack.h:34
 hmdcclfnstack.h:35
 hmdcclfnstack.h:36
 hmdcclfnstack.h:37
 hmdcclfnstack.h:38
 hmdcclfnstack.h:39
 hmdcclfnstack.h:40
 hmdcclfnstack.h:41
 hmdcclfnstack.h:42
 hmdcclfnstack.h:43
 hmdcclfnstack.h:44
 hmdcclfnstack.h:45
 hmdcclfnstack.h:46