]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TRD/qaRec/AliTRDcheckPID.h
update post processing of momentum histograms (TPC, layer and species
[u/mrichter/AliRoot.git] / TRD / qaRec / AliTRDcheckPID.h
CommitLineData
6da3eee3 1#ifndef ALITRDCHECKPID_H
2#define ALITRDCHECKPID_H
1a6d7c9a 3
4//////////////////////////////////////////////////////
5//
6// Task to check PID performance of the TRD
7//
8// Author : Alex Wilk <wilka@uni-muenster.de>
0d83b3a5 9// Alex Bercuci <A.Bercuci@gsi.de>
10// Markus Fasel <M.Fasel@gsi.de>
1a6d7c9a 11//
12///////////////////////////////////////////////////////
13
0d83b3a5 14#ifndef ROOT_TAxis
15#include "TAxis.h"
16#endif
17
3d86166d 18#ifndef ALITRDRECOTASK_H
19#include "AliTRDrecoTask.h"
20#endif
1a6d7c9a 21
1a6d7c9a 22class AliTRDReconstructor;
74b2e03d 23class AliTRDpidUtil;
6da3eee3 24class AliTRDcheckPID : public AliTRDrecoTask
1a6d7c9a 25{
c46a7947 26 // Plots registered for this task
c7cf2032 27 enum{
c46a7947 28 kEfficiency = 0 // pi Efficiency plot
29 ,kdEdx = 1 // dE/dx spectra
30 ,kdEdxSlice = 2 // dE/dx spectra
31 ,kPH = 3 // pulse height spectra
32 ,kNClus = 4 // number of clusters per track
33 ,kMomentum = 5 // momentum distribution
34 ,kMomentumBin = 6 // momentum distribution
35 ,kThresh = 7 // threshold in efficiency
d7519fe6 36 ,kNTracklets = 8 // Number of tracklets per track
b94feda9 37 ,kNPlots = 9 // Number of plots for this tasks
c7cf2032 38 };
1a6d7c9a 39public:
6da3eee3 40 AliTRDcheckPID();
41 virtual ~AliTRDcheckPID();
1a6d7c9a 42
74b2e03d 43 virtual void CreateOutputObjects();
e15179be 44 virtual Bool_t GetRefFigure(Int_t ifig);
74b2e03d 45 virtual Bool_t PostProcess();
46 virtual void Terminate(Option_t *);
47
48 TH1 *PlotLQ(const AliTRDtrackV1 *track = 0x0);
49 TH1 *PlotNN(const AliTRDtrackV1 *track = 0x0);
c46a7947 50 TH1 *PlotESD(const AliTRDtrackV1 *track = 0x0);
74b2e03d 51 TH1 *PlotdEdx(const AliTRDtrackV1 *track = 0x0);
52 TH1 *PlotdEdxSlice(const AliTRDtrackV1 *track = 0x0);
53 TH1 *PlotPH(const AliTRDtrackV1 *track = 0x0);
54 TH1 *PlotNClus(const AliTRDtrackV1 *track = 0x0);
d7519fe6 55 TH1 *PlotNTracklets(const AliTRDtrackV1 *track = 0x0);
74b2e03d 56 TH1 *PlotMom(const AliTRDtrackV1 *track = 0x0);
57 TH1 *PlotMomBin(const AliTRDtrackV1 *track = 0x0);
1a6d7c9a 58
18035ab0 59 void SetRequireMinNTracklets(Int_t mintracklets) { fMinNTracklets = mintracklets; }
60 void SetRequireMaxNTracklets(Int_t maxtracklets) { fMaxNTracklets = maxtracklets; }
61
b8174058 62 TObjArray *GetGraphs() { return fGraph; };
d7519fe6 63 //TObjArray *GetHistos() { return fContainer; };
74b2e03d 64 virtual TObjArray *Histos();
1bd44ae8 65 void EvaluatePionEfficiency(TObjArray *histoContainer, TObjArray *results, Float_t electron_efficiency);
0d83b3a5 66 inline void SetMomentumBinning(Int_t nBins, Double_t *bins);
67 inline Int_t FindBin(Int_t species, Double_t momentum);
68 inline Bool_t IsInRange(Double_t momentum);
c4c5bbfb 69
1a6d7c9a 70private:
6da3eee3 71 AliTRDcheckPID(const AliTRDcheckPID&); // not implemented
72 AliTRDcheckPID& operator=(const AliTRDcheckPID&); // not implemented
1a6d7c9a 73
74b2e03d 74 Int_t CalcPDG(AliTRDtrackV1* track = 0x0);
75 Bool_t CheckTrackQuality(const AliTRDtrackV1* track = 0x0);
76
1a6d7c9a 77 AliTRDReconstructor *fReconstructor; //! reconstructor needed for recalculation the PID
74b2e03d 78 AliTRDpidUtil *fUtil; //! utility class for PID calculations
c46a7947 79 TObjArray *fGraph; //! array of graphs filled in PostProcess
80 TObjArray *fEfficiency; //! array of histograms with efficiency
0d83b3a5 81 TAxis *fMomentumAxis; //! helper mementum binning
18035ab0 82 Int_t fMinNTracklets; // minimum number of required Tracklets (for systematic studies)
83 Int_t fMaxNTracklets; // maximum number of required Tracklets (for systematic studies)
6da3eee3 84 ClassDef(AliTRDcheckPID, 1); // TRD PID checker
1a6d7c9a 85};
86
0d83b3a5 87//________________________________________________________________________
6da3eee3 88inline void AliTRDcheckPID::SetMomentumBinning(Int_t nBins, Double_t *bins){
0d83b3a5 89 //
90 // Set the Momentum Bins
91 //
92 if(fMomentumAxis) delete fMomentumAxis;
93 fMomentumAxis = new TAxis(nBins, bins);
94}
95
96//________________________________________________________________________
6da3eee3 97inline Int_t AliTRDcheckPID::FindBin(Int_t species, Double_t momentum){
0d83b3a5 98 //
99 // Find the Bin in the 2D Histogram
100 //
52bb079b 101 return species * fMomentumAxis->GetNbins() + (fMomentumAxis->FindBin(momentum) -1);
0d83b3a5 102}
103
104//________________________________________________________________________
6da3eee3 105inline Bool_t AliTRDcheckPID::IsInRange(Double_t momentum){
0d83b3a5 106 //
107 // Check Whether momentum is in the defined Range
108 //
109 return (momentum >= fMomentumAxis->GetXmin() && momentum <= fMomentumAxis->GetXmax());
110}
111
1a6d7c9a 112#endif