ce936595969205355fc0723fea7cf0a863ce2f03
[u/mrichter/AliRoot.git] / MUON / AliMUONSt1ResponseParameter.h
1 #ifndef ALI_MUON_ST1_RESPONSE_PARAMETER_H
2 #define ALI_MUON_ST1_RESPONSE_PARAMETER_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8 // Revision of includes 07/05/2004
9
10 /// \ingroup sim
11 /// \class AliMUONSt1ResponseParameter
12 /// \brief Describes a set of filters to be applied to a digital value
13 ///
14 /// Describes a set of filters to be applied to a digital value
15 /// in order to simulate electronics characteristics 
16 /// (pedestal, noise, sticky bits, etc....)
17 /// Threshold levels for the MANU zero supression algorithm are included.
18 ///
19 /// Authors: David Guez, Ivana Hrivnacova, Marion MacCormick; IPN Orsay
20
21 #include <TNamed.h>
22
23 class TString;
24
25 class AliMUONSt1ResponseParameter : public TNamed 
26 {
27   public:
28    typedef enum {kNone,kValue,kGauss,kFile} TMode;
29    typedef struct {Double_t mean; Double_t sigma;} TGaussParam;
30
31   public:
32     AliMUONSt1ResponseParameter();
33     AliMUONSt1ResponseParameter(const TString& name,const TString& title);
34     virtual ~AliMUONSt1ResponseParameter();
35     
36     void SetState(Bool_t state) ;
37     void SetPedestal(Double_t val);
38     void SetPedestal(Double_t mean,Double_t sigma);
39     void SetPedestal(const TString& fileName);
40     void UnSetPedestal();
41     void SetNoise(Double_t val);
42     void SetNoise(Double_t mean,Double_t sigma);
43     void SetNoise(const TString& fileName);
44     void SetNofSigma(Int_t nofSigma);
45     void SetStickyBitOn (Int_t bit,Int_t val=1);
46     void SetStickyBitOff(Int_t bit,Int_t val=1);
47     Int_t ApplyPedestal(Int_t base,Int_t GC) const;
48     Int_t ApplyStickyBits(Int_t base) const;
49     Bool_t HasPedestal() const {return fPedestalMode != kNone;}
50     Bool_t GetState() const {return fState;}
51         
52  private:
53     static const Int_t fgkNofChannels=64;  // number of channels
54     typedef union {
55       //Double_t values[fgkNofChannels];
56       Double_t values[64];
57       Double_t value;
58       TGaussParam gauss;
59     } TParam;
60
61     Double_t Choose(TMode mode,TParam param,Int_t GC) const;
62     TMode  fPedestalMode;  // mode for pedestal values
63     TParam fPedestalParam; // pedestal access parameters
64     TMode  fNoiseMode;     // mode for noise values
65     TParam fNoiseParam;    // noise access parameters 
66     Int_t  fNofSigma;      // No of sigma for threshold (zero supression)
67     Bool_t fState;         // is the element on/off
68     Int_t  fStickyOn;      // which bits are always on (mask) .
69     Int_t  fStickyOff;     // which bits are always off (mask).
70
71   ClassDef(AliMUONSt1ResponseParameter,1) // electronics parmeters for Response
72 };
73 #endif //ALI_MUON_ST1_RESPONSE_PARAMETER_H