]> git.uio.no Git - u/mrichter/AliRoot.git/blob - CORRFW/AliCFEventRecCuts.h
Hidden symbols removed (Marian)
[u/mrichter/AliRoot.git] / CORRFW / AliCFEventRecCuts.h
1 #ifndef ALICFEVENTRECCUTS_H
2 #define ALICFEVENTRECCUTS_H
3 /**************************************************************************
4  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  *                                                                        *
6  * Author: The ALICE Off-line Project.                                    *
7  * Contributors are mentioned in the code where appropriate.              *
8  *                                                                        *
9  * Permission to use, copy, modify and distribute this software and its   *
10  * documentation strictly for non-commercial purposes is hereby granted   *
11  * without fee, provided that the above copyright notice appears in all   *
12  * copies and that both the copyright notice and this permission notice   *
13  * appear in the supporting documentation. The authors make no claims     *
14  * about the suitability of this software for any purpose. It is          *
15  * provided "as is" without express or implied warranty.                  *
16  **************************************************************************/
17 // Cut on the Event at reconstructed level: for the moment 
18 // just the requirements on the number of charged tracks and on 
19 // the vertex position and resolution are implemented
20 // The argument of IsSelected member function (passed object) is cast into 
21 // an AliESDEvent. In the future may be modified to use AliVEvent interface
22 // and include more cut variables.
23 // The class derives from AliCFCutBase
24 // Author:S.Arcelli Silvia.Arcelli@cern.ch
25
26
27 #include "AliCFCutBase.h"
28 class TH1F;
29 class TBits;
30 //_____________________________________________________________________________
31 class AliCFEventRecCuts: public AliCFCutBase 
32 {
33  public :
34   AliCFEventRecCuts() ;
35   AliCFEventRecCuts(Char_t* name, Char_t* title) ;
36   AliCFEventRecCuts(const AliCFEventRecCuts& c) ;
37   AliCFEventRecCuts& operator=(const AliCFEventRecCuts& c) ;
38   ~AliCFEventRecCuts();
39   void GetBitMap(TObject *obj, TBits*bitmap);
40   Bool_t IsSelected(TObject* obj);
41   Bool_t IsSelected(TList* /*list*/) {return kTRUE;}
42   void Init();
43   void AddQAHistograms(TList *list) const;
44
45   void SetNTracksCut(Int_t xMin=-1, Int_t xMax=1000000) {fNTracksMin=xMin; fNTracksMax=xMax;} // cut values setter
46
47   void SetRequireVtxCuts(Bool_t vtx=kFALSE) {fRequireVtxCuts=vtx;} // cut values setter
48   void SetVertexXCut(Double_t xMin=-1.e99, Double_t xMax=1.e99) { fVtxXMin=xMin; fVtxXMax=xMax;} // cut values setter
49   void SetVertexYCut(Double_t yMin=-1.e99, Double_t yMax=1.e99) { fVtxYMin=yMin; fVtxYMax=yMax;} // cut values setter
50   void SetVertexZCut(Double_t zMin=-1.e99, Double_t zMax=1.e99) { fVtxZMin=zMin; fVtxZMax=zMax;} // cut values setter
51
52   void SetVertexXResCut(Double_t xMax=1.e99) {fVtxXResMax=xMax;} // cut values setter
53   void SetVertexYResCut(Double_t yMax=1.e99){fVtxYResMax=yMax;} // cut values setter
54   void SetVertexZResCut(Double_t zMax=1.e99){fVtxZResMax=zMax;} // cut values setter
55
56   Int_t    GetNTracksMin() const {return fNTracksMin;} // cut values getter
57   Int_t    GetNTracksMax() const {return fNTracksMax;} // cut values getter
58   Bool_t   GetRequireVtxCuts() const {return fRequireVtxCuts;} // cut value getter
59   Double_t GetVertexXMax() const {return fVtxXMax;} // cut values getter
60   Double_t GetVertexYMax() const {return fVtxYMax;} // cut values getter
61   Double_t GetVertexZMax() const {return fVtxZMax;} // cut values getter
62   Double_t GetVertexXMin() const {return fVtxXMin;} // cut values getter
63   Double_t GetVertexYMin() const {return fVtxYMin;} // cut values getter
64   Double_t GetVertexZMin() const {return fVtxZMin;} // cut values getter
65   Double_t GetVertexXResMax() const {return fVtxXResMax;} // cut values getter
66   Double_t GetVertexYResMax() const {return fVtxYResMax;} // cut values getter
67   Double_t GetVertexZResMax() const {return fVtxZResMax;} // cut values getter
68
69   // QA histograms
70   void FillHistogramsBeforeCuts(TObject* obj) {return FillHistograms(obj,kFALSE);}
71   void FillHistogramsAfterCuts(TObject* obj)  {return FillHistograms(obj,kTRUE);}
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   enum{kNTracks=0,
77          kVtxPosX,
78          kVtxPosY,
79          kVtxPosZ,
80          kVtxResX,
81          kVtxResY,
82          kVtxResZ,
83          kNCuts=7,
84          kNStepQA=2
85          };
86   
87  private:
88   TBits *SelectionBitMap(TObject* obj);
89   void DefineHistograms();              // books histograms 
90   void Initialise();                    // sets everything to 0
91   void FillHistograms(TObject* obj, Bool_t b);
92   Int_t fNTracksMin; //minimum number of esd tracks
93   Int_t fNTracksMax; //maximum number of esd tracks
94   Bool_t fRequireVtxCuts ; //The type of trigger to be checked
95   Double_t fVtxXMax ; //X vertex position, maximum value
96   Double_t fVtxYMax ; //Y vertex position, maximum value 
97   Double_t fVtxZMax ; //Z vertex position, maximum value
98   Double_t fVtxXMin ; //X vertex position, minimum value
99   Double_t fVtxYMin ; //Y vertex position, minimum value
100   Double_t fVtxZMin ; //Z vertex position, minimum value
101   Double_t fVtxXResMax ;//Maximum value of sigma_vtx in X
102   Double_t fVtxYResMax ;//Maximum value of sigma_vtx in X
103   Double_t fVtxZResMax ;//Maximum value of sigma_vtx in X
104
105
106   TBits *fBitMap ; //cut mask
107
108
109   TH1F* fhQA[kNCuts][kNStepQA];         // QA Histograms
110   //QA Histogram parameters
111   Int_t fhNBinsNTracks;//size of array of bin limits, N Tracks ESD
112   Double_t *fhBinLimNTracks;//[fhNBinsNTracks] bin limits, N Tracks ESD
113   Int_t fhNBinsVtxPosX;//size of array of bin limits, Vtx Pos X
114   Double_t *fhBinLimVtxPosX;//[fhNBinsVtxPosX] bin limits, Vtx Pos X
115   Int_t fhNBinsVtxPosY;//size of array of bin limits, Vtx Pos Y
116   Double_t *fhBinLimVtxPosY;//[fhNBinsVtxPosY] bin limits, Vtx Pos Y
117   Int_t fhNBinsVtxPosZ;//size of array of bin limits, Vtx Pos Z
118   Double_t *fhBinLimVtxPosZ;//[fhNBinsVtxPosZ] bin limits, Vtx Pos Z
119   Int_t fhNBinsVtxResX;//size of array of bin limits, Vtx Res X
120   Double_t *fhBinLimVtxResX;//[fhNBinsVtxResX] bin limits, Vtx Res X
121   Int_t fhNBinsVtxResY;//size of array of bin limits, Vtx Res Y
122   Double_t *fhBinLimVtxResY;//[fhNBinsVtxResY] bin limits, Vtx Res Y
123   Int_t fhNBinsVtxResZ;//size of array of bin limits, Vtx Res Z
124   Double_t *fhBinLimVtxResZ;//[fhNBinsVtxResZ] bin limits, Vtx Res Z
125
126   ClassDef(AliCFEventRecCuts,2);
127 };
128
129 #endif