Possibility to retrieve the member array of alignment objects via the method GetAlign...
[u/mrichter/AliRoot.git] / CORRFW / AliCFTrackIsPrimaryCuts.h
CommitLineData
563113d0 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16// The class AliCFTrackIsPrimaryCut is designed to select reconstructed tracks
17// with a small impact parameter and tracks which are (not) daughters of kink
18// decays and to provide corresponding QA histograms.
19// This class inherits from the Analysis' Framework abstract base class
20// AliAnalysisCuts and is a part of the Correction Framework.
21// This class acts on single, reconstructed tracks, it is applicable on
22// ESD and AOD data.
23// It mainly consists of a IsSelected function that returns a boolean.
24// This function checks whether the considered track passes a set of cuts:
25// - distance to main vertex in units of sigma (resolution)
26// - require that the dca calculation doesn't fail
27// - accept or not accept daughter tracks of kink decays
28//
29// The cut values for these cuts are set with the corresponding set functions.
30// All cut classes provided by the correction framework are supposed to be
31// added in the Analysis Framwork's class AliAnalysisFilter and applied by
32// the filter via a loop.
33//
34// author: I. Kraus (Ingrid.Kraus@cern.ch)
35// idea taken form
36// AliESDtrackCuts writte by Jan Fiete Grosse-Oetringhaus and
37// AliRsnDaughterCut class written by A. Pulvirenti.
38
39#ifndef ALICFTRACKISPRIMARYCUTS_H
40#define ALICFTRACKISPRIMARYCUTS_H
41
42#include "AliCFCutBase.h"
8edd0c2c 43#include "AliAODTrack.h"
045e6d86 44#include <TH2.h>
563113d0 45class TBits;
563113d0 46class AliESDtrack ;
47
48class AliCFTrackIsPrimaryCuts : public AliCFCutBase
49{
50 public :
51 AliCFTrackIsPrimaryCuts() ;
52 AliCFTrackIsPrimaryCuts(Char_t* name, Char_t* title) ;
53 AliCFTrackIsPrimaryCuts(const AliCFTrackIsPrimaryCuts& c) ;
54 AliCFTrackIsPrimaryCuts& operator=(const AliCFTrackIsPrimaryCuts& c) ;
55 ~AliCFTrackIsPrimaryCuts();
56 void Copy(TObject &c) const;
57
563113d0 58 Bool_t IsSelected(TObject* obj);
264ebaac 59 Bool_t IsSelected(TList* /*list*/) {return kTRUE;}
8edd0c2c 60 void GetSigmaToVertex(AliESDtrack* esdTrack); // calculates nSigma to PV for an AliESDtrack
563113d0 61
62 // cut value setter
cced7196 63 void SetMaxNSigmaToVertex(Double_t sigma=1.e+03) {fNSigmaToVertexMax = sigma;}
64 void SetRequireSigmaToVertex(Bool_t b=kFALSE) {fRequireSigmaToVertex=b;}
563113d0 65 void SetAcceptKinkDaughters(Bool_t b=kTRUE) {fAcceptKinkDaughters=b;}
8edd0c2c 66 void SetAODType(Char_t type=AliAODTrack::kUndef) {fAODType = type;}
563113d0 67
68 // QA histograms
563113d0 69 void DrawHistograms();
70 void SaveHistograms(const Char_t* dir = 0);
107a3100 71 void AddQAHistograms(TList *qaList);
563113d0 72 // QA histogram setter
73 // please use indices from the enumeration below
74 void SetHistogramBins(Int_t index, Int_t nbins, Double_t *bins);
75 void SetHistogramBins(Int_t index, Int_t nbins, Double_t xmin, Double_t xmax);
76
77 // indeces/counters for single selections
78 enum {
79 kCutNSigmaToVertex=0, // tracks's distance to main vertex in units of sigma
80 kCutRequireSigmaToVertex, // calculation is successful
81 kCutAcceptKinkDaughters, // do (not) accept secondaries
82 kDcaXY, // controll histogram: dca in xy plane
83 kDcaZ, // controll histogram: dca along z axis
84 kDcaXYnorm, // controll histogram: normalised dca in xy plane
85 kDcaZnorm, // controll histogram: normalised dca along z axis
8edd0c2c 86 kCutAODType, // cut on AliAODTrack::fType
87 kNCuts=4, // number of single selections
563113d0 88 kNStepQA=2, // number of QA steps (before/after the cuts)
89 kNHist=7 // number of QA histograms
90 };
91
92 private:
107a3100 93 void SelectionBitMap(TObject* obj);
563113d0 94 void DefineHistograms(); // books histograms and TList
95 void Initialise(); // sets everything to 0
96 void FillHistograms(TObject* obj, Bool_t b);
97 // Fills histograms before and after cuts
107a3100 98 Double_t fNSigmaToVertex; // track distance to main vertex in units of sigma
99 Double_t fNSigmaToVertexMax; // cut value: max distance to main vertex in units of sigma
8edd0c2c 100 Bool_t fRequireSigmaToVertex; // require calculable distance to main vertex
101 Char_t fAODType; // type of AOD track (undef, primary, secondary, orphan)
102 // applicable at AOD level only !
563113d0 103
104 TH2F* fhDcaXYvsDcaZ[2]; // Histogram: dca xy vs. z
105 TH2F* fhDcaXYvsDcaZnorm[2]; // Histogram: (dca xy / sigma xy) vs. (dca z / simga z)
106 Bool_t fAcceptKinkDaughters; // accepting kink daughters
107
045e6d86 108 TH1F* fhCutStatistics; // Histogram: statistics of what cuts the tracks did not survive
109 TH2F* fhCutCorrelation; // Histogram: 2d statistics plot
563113d0 110
111 TH1F* fhQA[kNHist][kNStepQA]; // QA Histograms
045e6d86 112 TBits *fBitmap ; // stores single selection decisions
563113d0 113
114 // QA histogram setters
db6722a5 115 Int_t fhNBinsNSigma; // number of bins+1: dca in units of sigma
116 Int_t fhNBinsRequireSigma; // number of bins+1: require successful calcuation
117 Int_t fhNBinsAcceptKink; // number of bins+1: acceptkink daughters
118 Int_t fhNBinsDcaXY; // number of bins+1: dca in transverse plane
119 Int_t fhNBinsDcaZ; // number of bins+1: dca along beam axis
120 Int_t fhNBinsDcaXYnorm; // number of bins+1: normalised dca in transverse plane
121 Int_t fhNBinsDcaZnorm; // number of bins+1: normalised dca along beam axis
045e6d86 122
123 Double_t *fhBinLimNSigma; //[fhNBinsNSigma] bin limits: dca in units of sigma
124 Double_t *fhBinLimRequireSigma;//[fhNBinsRequireSigma] bin limits: require successful calcuation
125 Double_t *fhBinLimAcceptKink;//[fhNBinsAcceptKink] bin limits: acceptkink daughters
126 Double_t *fhBinLimDcaXY;//[fhNBinsDcaXY] bin limits: dca in transverse plane
127 Double_t *fhBinLimDcaZ; //[fhNBinsDcaZ] bin limits: dca along beam axis
128 Double_t *fhBinLimDcaXYnorm; //[fhNBinsDcaXYnorm] bin limits: normalised dca in transverse plane
129 Double_t *fhBinLimDcaZnorm;//[fhNBinsDcaZnorm] bin limits: normalised dca along beam axis
130
8edd0c2c 131 ClassDef(AliCFTrackIsPrimaryCuts,3);
563113d0 132};
133
134#endif