]>
Commit | Line | Data |
---|---|---|
f72219cb | 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" | |
596c62a8 | 12 | #include "THn.h" |
6feb400f | 13 | #include "TMatrixD.h" |
14 | #include "TVectorD.h" | |
f72219cb | 15 | class TH1F; |
16 | class TList; | |
17 | class AliESDEvent; | |
18 | class AliESDtrack; | |
19 | class AliTPCseed; | |
20 | ||
21 | #include "TTreeStream.h" | |
22 | ||
23 | ||
24 | class AliTPCcalibGainMult:public AliTPCcalibBase { | |
25 | public: | |
26 | AliTPCcalibGainMult(); | |
27 | AliTPCcalibGainMult(const Text_t *name, const Text_t *title); | |
28 | virtual ~AliTPCcalibGainMult(); | |
6feb400f | 29 | void SetBBParam(TVectorD * param) {fBBParam=param;} |
30 | // virtual void Terminate(); | |
f72219cb | 31 | // |
32 | virtual void Process(AliESDEvent *event); | |
6feb400f | 33 | virtual void ProcessV0s(AliESDEvent *event); |
34 | virtual void ProcessCosmic(const AliESDEvent *event); | |
35 | virtual void ProcessKinks(const AliESDEvent *event); | |
36 | virtual void ProcessTOF(const AliESDEvent *event); | |
37 | virtual void DumpHPT(const AliESDEvent *event); | |
f72219cb | 38 | virtual Long64_t Merge(TCollection *li); |
39 | virtual void Analyze(); | |
6feb400f | 40 | void DumpTrack(AliESDtrack * track, AliESDfriendTrack *ftrack, AliTPCseed * seed, Int_t index); |
f72219cb | 41 | // |
42 | TH1F * GetHistNTracks() const {return fHistNTracks;}; | |
43 | TH1F * GetHistClusterShape() const {return fHistClusterShape;}; | |
44 | TH3F * GetHistQA() const {return fHistQA;}; | |
45 | // | |
46 | THnSparseF * GetHistGainSector() const {return fHistGainSector;}; | |
47 | THnSparseF * GetHistPadEqual() const {return fHistPadEqual;}; | |
6feb400f | 48 | THnSparseF * GetHistGainMult() const {return fHistGainMult;}; |
596c62a8 | 49 | THnF * GetHistTopology() const {return fHistTopology;}; |
50 | // | |
6feb400f | 51 | THnSparseF * GetHistdEdxMap() const { return fHistdEdxMap;} // 4D dedx histogram |
52 | THnSparseF * GetHistdEdxMax() const { return fHistdEdxMax;} // 4D dedx histogram | |
53 | THnSparseF * GetHistdEdxTot() const { return fHistdEdxTot;} // 4D dedx histogram | |
54 | TTree * GetdEdxTree() const {return fdEdxTree;} // tree for the later minimization | |
55 | ||
7e3e1a9c | 56 | TGraphErrors* GetGainPerChamber(Int_t padRegion=1, Bool_t plotQA=kFALSE); |
8fae6121 | 57 | TGraphErrors* GetGainPerChamberRobust(Int_t padRegion=1, Bool_t plotQA=kFALSE); |
f72219cb | 58 | // |
59 | void SetMIPvalue(Float_t mip){fMIP = mip;}; | |
60 | void SetLowerTrunc(Float_t lowerTrunc){fLowerTrunc = lowerTrunc;}; | |
61 | void SetUpperTrunc(Float_t upperTrunc){fUpperTrunc = upperTrunc;}; | |
62 | void SetUseMax(Bool_t useMax){fUseMax = useMax;}; | |
63 | // | |
f21b5f78 | 64 | void SetCutMinCrossRows(Int_t crossRows){fCutCrossRows = crossRows;}; |
65 | void SetCutMaxEta(Float_t maxEta){fCutEtaWindow = maxEta;}; | |
66 | void SetCutRequireITSrefit(Bool_t requireItsRefit = kFALSE){fCutRequireITSrefit = requireItsRefit;}; | |
67 | void SetCutMaxDcaXY(Float_t maxXY){fCutMaxDcaXY = maxXY;}; | |
68 | void SetCutMaxDcaZ(Float_t maxZ){fCutMaxDcaZ = maxZ;}; | |
69 | // | |
ed7b1997 | 70 | void SetMinMomentumMIP(Float_t minMom = 0.4){fMinMomentumMIP = minMom;}; |
71 | void SetMaxMomentumMIP(Float_t maxMom = 0.6){fMaxMomentumMIP = maxMom;}; | |
72 | void SetAlephParameters(Float_t * parameters){for(Int_t j=0;j<5;j++) fAlephParameters[j] = parameters[j];}; | |
73 | // | |
f72219cb | 74 | // |
f72219cb | 75 | void Process(AliESDtrack *track, Int_t runNo=-1){AliTPCcalibBase::Process(track,runNo);}; |
76 | void Process(AliTPCseed *track){return AliTPCcalibBase::Process(track);} | |
77 | // | |
19f63078 | 78 | void MakeLookup(THnSparse * hist, Char_t * outputFile); |
79 | // | |
f72219cb | 80 | void UpdateGainMap(); |
81 | void UpdateClusterParam(); | |
82 | ||
afa85729 | 83 | Double_t GetEntries() const {return fHistGainSector->GetEntries();} |
84 | ||
85 | static void SetMergeEntriesCut(Double_t c) {fgMergeEntriesCut=c;} | |
f72219cb | 86 | |
87 | private: | |
afa85729 | 88 | static Double_t fgMergeEntriesCut; //maximal number of entries for merging -can be modified via setter |
89 | ||
f72219cb | 90 | // |
91 | // parameter specifications | |
92 | // | |
93 | Float_t fMIP; // MIP position to be in fMIP | |
94 | Float_t fLowerTrunc; // lower truncation for dEdx | |
95 | Float_t fUpperTrunc; // upper truncation for dEdx | |
96 | // | |
97 | Bool_t fUseMax; // flag if Qmax or Qtot should be used | |
98 | // | |
f21b5f78 | 99 | // track cuts |
100 | // | |
101 | Int_t fCutCrossRows; // minimum number of crossed rows | |
102 | Float_t fCutEtaWindow; // maximum eta of tracks | |
103 | Bool_t fCutRequireITSrefit; // if ITSrefit should be required (dangerous in cpass0) | |
104 | Float_t fCutMaxDcaXY; // max dca_xy (only TPConly resolution is guaranteed!) | |
105 | Float_t fCutMaxDcaZ; // max dca_z (dangerous if vDrift is not calibrated) | |
106 | // | |
ed7b1997 | 107 | // definition of MIP window |
108 | // | |
109 | Float_t fMinMomentumMIP; // minimum momentum of MIP region, e.g. 400 MeV | |
110 | Float_t fMaxMomentumMIP; // maximum momentum of MIP region, e.g. 600 MeV | |
111 | Float_t fAlephParameters[5]; // parameters for equalization in MIP window, parameter set should be =1 at MIP | |
112 | // | |
f72219cb | 113 | // histograms |
114 | // | |
115 | TH1F *fHistNTracks; // histogram showing number of ESD tracks per event | |
116 | TH1F *fHistClusterShape; // histogram to check the cluster shape | |
117 | TH3F *fHistQA; // dE/dx histogram showing the final spectrum | |
118 | // | |
f21b5f78 | 119 | // |
f72219cb | 120 | THnSparseF * fHistGainSector; // histogram which shows MIP peak for each of the 3x36 sectors (pad region) |
121 | THnSparseF * fHistPadEqual; // histogram for the equalization of the gain in the different pad regions -> pass0 | |
122 | THnSparseF * fHistGainMult; // histogram which shows decrease of MIP signal as a function | |
596c62a8 | 123 | THnF * fHistTopology; // histogram for topological corrections of signal - dip angle theta and curvature (1/pT) |
6feb400f | 124 | TMatrixD *fPIDMatrix; //! custom PID matrix |
125 | // | |
126 | THnSparseF * fHistdEdxMap; // 4D dedx histogram - per sector/phi | |
127 | THnSparseF * fHistdEdxMax; // 5D dedx histogram - per 1/dedx, tan(theta), tan(phi), mult, pad-type | |
128 | THnSparseF * fHistdEdxTot; // 5D dedx histogram - per 1/dedx, tan(theta), tan(phi), mult, pad-type | |
129 | TTree * fdEdxTree; // tree for the later minimization | |
130 | TVectorD *fBBParam; // BetheBloch parameterization used for the dedx expected calculation | |
f72219cb | 131 | // |
132 | AliTPCcalibGainMult(const AliTPCcalibGainMult&); | |
133 | AliTPCcalibGainMult& operator=(const AliTPCcalibGainMult&); | |
134 | ||
eece0b11 | 135 | ClassDef(AliTPCcalibGainMult, 4); |
f72219cb | 136 | }; |
137 | ||
138 | #endif | |
139 | ||
140 |