1d4fa167c7aa0b4cb65f9df4612db2eb357d8dcf
[u/mrichter/AliRoot.git] / TPC / Calib / AliTPCcalibGainMult.h
1 #ifndef ALITPCCALIBGAINMULT_H
2 #define ALITPCCALIBGAINMULT_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 #include "AliTPCcalibBase.h"
8 #include "AliTPCCalPad.h"
9 #include "TH3F.h"
10 #include "TF1.h"
11 #include "THnSparse.h"
12 #include "TMatrixD.h"
13 #include "TVectorD.h"
14 class TH1F;
15 class TList;
16 class AliESDEvent;
17 class AliESDtrack;
18 class AliTPCseed;
19
20 #include "TTreeStream.h"
21
22
23 class AliTPCcalibGainMult:public AliTPCcalibBase {
24 public:
25   AliTPCcalibGainMult(); 
26   AliTPCcalibGainMult(const Text_t *name, const Text_t *title);
27   virtual ~AliTPCcalibGainMult();
28   void SetBBParam(TVectorD * param) {fBBParam=param;}
29   //  virtual void Terminate();  
30   //
31   virtual void           Process(AliESDEvent *event);
32   virtual void           ProcessV0s(AliESDEvent *event);
33   virtual void           ProcessCosmic(const AliESDEvent *event);
34   virtual void           ProcessKinks(const AliESDEvent *event);
35   virtual void           ProcessTOF(const AliESDEvent *event);  
36   virtual void           DumpHPT(const AliESDEvent *event);
37   virtual Long64_t       Merge(TCollection *li);
38   virtual void           Analyze();
39   void                   DumpTrack(AliESDtrack * track, AliESDfriendTrack *ftrack, AliTPCseed * seed, Int_t index);
40   //
41   TH1F   *          GetHistNTracks() const {return fHistNTracks;};
42   TH1F   *          GetHistClusterShape() const {return fHistClusterShape;};
43   TH3F   *          GetHistQA() const {return fHistQA;};
44   //
45   THnSparseF *      GetHistGainSector() const {return fHistGainSector;};
46   THnSparseF *      GetHistPadEqual() const {return fHistPadEqual;};
47   THnSparseF *      GetHistGainMult() const {return fHistGainMult;};  
48   THnSparseF * GetHistdEdxMap() const { return fHistdEdxMap;}      // 4D dedx histogram
49   THnSparseF * GetHistdEdxMax() const { return fHistdEdxMax;}      // 4D dedx histogram
50   THnSparseF * GetHistdEdxTot() const { return fHistdEdxTot;}      // 4D dedx histogram
51   TTree *      GetdEdxTree() const {return fdEdxTree;}         // tree for the later minimization
52
53   TGraphErrors* GetGainPerChamber(Int_t padRegion=1, Bool_t plotQA=kFALSE);
54   //
55   void SetMIPvalue(Float_t mip){fMIP = mip;};
56   void SetLowerTrunc(Float_t lowerTrunc){fLowerTrunc = lowerTrunc;};
57   void SetUpperTrunc(Float_t upperTrunc){fUpperTrunc = upperTrunc;};
58   void SetUseMax(Bool_t useMax){fUseMax = useMax;};
59   //
60   //
61   void     Process(AliESDtrack *track, Int_t runNo=-1){AliTPCcalibBase::Process(track,runNo);};
62   void     Process(AliTPCseed *track){return AliTPCcalibBase::Process(track);}
63   //
64   void     MakeLookup(THnSparse * hist, Char_t * outputFile);
65   //
66   void     UpdateGainMap();
67   void     UpdateClusterParam();
68
69   Double_t GetEntries() const {return fHistGainSector->GetEntries();}
70
71   static void SetMergeEntriesCut(Double_t c) {fgMergeEntriesCut=c;}
72
73 private:
74   static Double_t fgMergeEntriesCut;  //maximal number of entries for merging  -can be modified via setter
75
76   //
77   // parameter specifications
78   //
79   Float_t fMIP;                  // MIP position to be in fMIP
80   Float_t fLowerTrunc;           // lower truncation for dEdx
81   Float_t fUpperTrunc;           // upper truncation for dEdx
82   //
83   Bool_t fUseMax;                 // flag if Qmax or Qtot should be used
84   //
85   // histograms
86   //
87   TH1F  *fHistNTracks;            //  histogram showing number of ESD tracks per event
88   TH1F  *fHistClusterShape;       //  histogram to check the cluster shape
89   TH3F  *fHistQA;                 //  dE/dx histogram showing the final spectrum
90   //
91   THnSparseF * fHistGainSector;   //  histogram which shows MIP peak for each of the 3x36 sectors (pad region)
92   THnSparseF * fHistPadEqual;     //  histogram for the equalization of the gain in the different pad regions -> pass0
93   THnSparseF * fHistGainMult;     //  histogram which shows decrease of MIP signal as a function
94   TMatrixD *fPIDMatrix;           //! custom PID matrix
95   //
96   THnSparseF * fHistdEdxMap;      // 4D dedx histogram - per sector/phi
97   THnSparseF * fHistdEdxMax;      // 5D dedx histogram - per 1/dedx, tan(theta), tan(phi), mult, pad-type
98   THnSparseF * fHistdEdxTot;      // 5D dedx histogram - per 1/dedx, tan(theta), tan(phi), mult, pad-type
99   TTree *      fdEdxTree;         // tree for the later minimization
100   TVectorD    *fBBParam;          // BetheBloch parameterization used for the dedx expected calculation
101   //
102   AliTPCcalibGainMult(const AliTPCcalibGainMult&); 
103   AliTPCcalibGainMult& operator=(const AliTPCcalibGainMult&); 
104
105   ClassDef(AliTPCcalibGainMult, 2); 
106 };
107
108 #endif
109
110