]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TRD/TRDbase/AliTRDCalPad.h
Add threshold on cluster charge
[u/mrichter/AliRoot.git] / TRD / TRDbase / AliTRDCalPad.h
1 #ifndef ALITRDCALPAD_H
2 #define ALITRDCALPAD_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 ///////////////////////////////////////////////////////////////////////////////
9 //                                                                           //
10 //  TRD calibration class for parameters which are saved per pad             //
11 //                                                                           //
12 ///////////////////////////////////////////////////////////////////////////////
13
14 #include "TNamed.h"
15
16 class AliTRDCalROC;
17 class AliTRDCalDet;
18 class TH2F;
19 class TH1F;
20
21 class AliTRDCalPad : public TNamed 
22 {
23
24  public:
25  
26   enum { kNplan = 6, kNcham = 5, kNsect = 18, kNdet = 540 };
27
28   AliTRDCalPad();
29   AliTRDCalPad(const Text_t* name, const Text_t* title);
30   AliTRDCalPad(const AliTRDCalPad &c);   
31   virtual            ~AliTRDCalPad();
32   AliTRDCalPad        &operator=(const AliTRDCalPad &c);
33
34   virtual void        Copy(TObject &c) const;
35
36   static  Int_t       GetDet(Int_t p, Int_t c, Int_t s) { return p+c*kNplan+s*kNplan*kNcham; };
37
38   AliTRDCalROC       *GetCalROC(Int_t d) const          { return fROC[d]; };
39   AliTRDCalROC       *GetCalROC(Int_t p, Int_t c, Int_t s) const
40                                                         { return fROC[GetDet(p,c,s)]; };
41   
42   Bool_t              ScaleROCs(const AliTRDCalDet* values);
43
44   void                SetCalROC(Int_t det, AliTRDCalROC *calroc);
45
46   // Statistic
47   Double_t GetMeanRMS(Double_t &rms, const AliTRDCalDet *calDet = 0, Int_t type = 0);
48   Double_t GetMean(const AliTRDCalDet *calDet = 0, Int_t type = 0, AliTRDCalPad* const outlierPad = 0);
49   Double_t GetRMS(const AliTRDCalDet *calDet = 0, Int_t type = 0, AliTRDCalPad* const outlierPad = 0);
50   Double_t GetMedian(const AliTRDCalDet *calDet = 0, Int_t type = 0, AliTRDCalPad* const outlierPad = 0);
51   Double_t GetLTM(Double_t *sigma=0, Double_t fraction=0.9
52                 , const AliTRDCalDet *calDet = 0, Int_t type = 0, AliTRDCalPad* const outlierPad = 0);
53
54   // Plot functions
55   TH1F    *MakeHisto1D(const AliTRDCalDet *calDet = 0, Int_t typedet=0, Float_t min=4, Float_t max=-4,Int_t type=0);
56   TH2F    *MakeHisto2DSmPl(Int_t sm, Int_t pl, const AliTRDCalDet *calDet = 0, Int_t typedet=0, Float_t min=4, Float_t max=-4,Int_t type=0);
57   TH2F    *MakeHisto2DCh(Int_t ch, const AliTRDCalDet *calDet = 0, Int_t typedet=0, Float_t min=4, Float_t max=-4,Int_t type=0);
58
59   // Algebra functions
60   Bool_t Add(Float_t c1);
61   Bool_t Multiply(Float_t c1);
62   Bool_t Add(const AliTRDCalPad * pad, Double_t c1 = 1, const AliTRDCalDet * calDet1 = 0, const AliTRDCalDet *calDet2 = 0, Int_t type = 0);
63   Bool_t Multiply(const AliTRDCalPad * pad, const AliTRDCalDet * calDet1 = 0, const AliTRDCalDet *calDet2 = 0, Int_t type = 0);
64   Bool_t Divide(const AliTRDCalPad * pad, const AliTRDCalDet * calDet1 = 0, const AliTRDCalDet *calDet2 = 0, Int_t type = 0);
65
66  protected:
67
68   AliTRDCalROC *fROC[kNdet];  //  Array of ROC objects which contain the values per pad
69
70   ClassDef(AliTRDCalPad,1)    //  TRD calibration class for parameters which are saved per pad
71
72 };
73
74 #endif