1 #ifndef ALITPCCALIBGAINMULT_H
2 #define ALITPCCALIBGAINMULT_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 #include "AliTPCcalibBase.h"
8 #include "AliTPCCalPad.h"
11 #include "THnSparse.h"
21 #include "TTreeStream.h"
24 class AliTPCcalibGainMult:public AliTPCcalibBase {
26 AliTPCcalibGainMult();
27 AliTPCcalibGainMult(const Text_t *name, const Text_t *title);
28 virtual ~AliTPCcalibGainMult();
29 void SetBBParam(TVectorD * param) {fBBParam=param;}
30 // virtual void Terminate();
32 virtual void Process(AliESDEvent *event);
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);
38 virtual Long64_t Merge(TCollection *li);
39 virtual void Analyze();
40 void DumpTrack(AliESDtrack * track, AliESDfriendTrack *ftrack, AliTPCseed * seed, Int_t index);
42 TH1F * GetHistNTracks() const {return fHistNTracks;};
43 TH1F * GetHistClusterShape() const {return fHistClusterShape;};
44 TH3F * GetHistQA() const {return fHistQA;};
46 THnSparseF * GetHistGainSector() const {return fHistGainSector;};
47 THnSparseF * GetHistPadEqual() const {return fHistPadEqual;};
48 THnSparseF * GetHistGainMult() const {return fHistGainMult;};
49 THnF * GetHistTopology() const {return fHistTopology;};
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
56 TGraphErrors* GetGainPerChamber(Int_t padRegion=1, Bool_t plotQA=kFALSE);
57 TGraphErrors* GetGainPerChamberRobust(Int_t padRegion=1, Bool_t plotQA=kFALSE);
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;};
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;};
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];};
75 void Process(AliESDtrack *track, Int_t runNo=-1){AliTPCcalibBase::Process(track,runNo);};
76 void Process(AliTPCseed *track){return AliTPCcalibBase::Process(track);}
78 void MakeLookup(THnSparse * hist, Char_t * outputFile);
81 void UpdateClusterParam();
83 Double_t GetEntries() const {return fHistGainSector->GetEntries();}
85 static void SetMergeEntriesCut(Double_t c) {fgMergeEntriesCut=c;}
88 static Double_t fgMergeEntriesCut; //maximal number of entries for merging -can be modified via setter
91 // parameter specifications
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
97 Bool_t fUseMax; // flag if Qmax or Qtot should be used
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)
107 // definition of MIP window
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
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
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
123 THnF * fHistTopology; // histogram for topological corrections of signal - dip angle theta and curvature (1/pT)
124 TMatrixD *fPIDMatrix; //! custom PID matrix
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
132 AliTPCcalibGainMult(const AliTPCcalibGainMult&);
133 AliTPCcalibGainMult& operator=(const AliTPCcalibGainMult&);
135 ClassDef(AliTPCcalibGainMult, 4);