#ifndef ALIESDTRACKCUTS_H
#define ALIESDTRACKCUTS_H
-#include <TNamed.h>
#include <TF1.h>
#include <TH2.h>
+#include "AliAnalysisCuts.h"
class AliESD;
+class AliESDEvent;
class AliESDtrack;
class AliLog;
class TTree;
-class AliESDtrackCuts : public TNamed
+class AliESDtrackCuts : public AliAnalysisCuts
{
-
public:
- AliESDtrackCuts();
- AliESDtrackCuts(Char_t* name, Char_t* title="");
+ AliESDtrackCuts(const Char_t* name = "AliESDtrackCuts", const Char_t* title = "");
virtual ~AliESDtrackCuts();
-
+ Bool_t IsSelected(TObject* obj)
+ {return AcceptTrack((AliESDtrack*)obj);}
Bool_t AcceptTrack(AliESDtrack* esdTrack);
TObjArray* GetAcceptedTracks(AliESD* esd);
Int_t CountAcceptedTracks(AliESD* esd);
+ TObjArray* GetAcceptedTracks(AliESDEvent* esd);
+ Int_t CountAcceptedTracks(AliESDEvent* esd);
virtual Long64_t Merge(TCollection* list);
virtual void Copy(TObject &c) const;
void SetMinNsigmaToVertex(Float_t sigma=1e99) {fCutNsigmaToVertex = sigma;}
void SetRequireSigmaToVertex(Bool_t b=kTRUE ) {fCutSigmaToVertexRequired = b;}
- // track kinmatic cut setters
+ // getters
+ Float_t GetMinNsigmaToVertex() { return fCutNsigmaToVertex;}
+ Bool_t GetRequireSigmaToVertex( ) { return fCutSigmaToVertexRequired;}
+
+ // track kinmatic cut setters
void SetPRange(Float_t r1=0, Float_t r2=1e99) {fPMin=r1; fPMax=r2;}
void SetPtRange(Float_t r1=0, Float_t r2=1e99) {fPtMin=r1; fPtMax=r2;}
void SetPxRange(Float_t r1=-1e99, Float_t r2=1e99) {fPxMin=r1; fPxMax=r2;}
void SetEtaRange(Float_t r1=-1e99, Float_t r2=1e99) {fEtaMin=r1; fEtaMax=r2;}
void SetRapRange(Float_t r1=-1e99, Float_t r2=1e99) {fRapMin=r1; fRapMax=r2;}
- Float_t GetMinNsigmaToVertex() { return fCutNsigmaToVertex; }
-
//######################################################
void SetHistogramsOn(Bool_t b=kFALSE) {fHistogramsOn = b;}
void DefineHistograms(Int_t color=1);
- void SaveHistograms(Char_t* dir="track_selection");
+ virtual Bool_t LoadHistograms(const Char_t* dir = 0);
+ void SaveHistograms(const Char_t* dir = 0);
+ void DrawHistograms();
Float_t GetSigmaToVertex(AliESDtrack* esdTrack);
- virtual void Print(const Option_t* = "") const;
-
static void EnableNeededBranches(TTree* tree);
// void SaveQualityCuts(Char_t* file)
// void LoadQualityCuts(Char_t* file)
+ TH1* GetDZNormalized(Int_t i) const { return fhDZNormalized[i]; }
+
protected:
void Init(); // sets everything to 0
static const Char_t* fgkCutNames[kNCuts]; //! names of cuts (for internal use)
Int_t fCutMinNClusterTPC; // min number of tpc clusters
- Int_t fCutMinNClusterITS; // min number of its clusters
+ Int_t fCutMinNClusterITS; // min number of its clusters
Float_t fCutMaxChi2PerClusterTPC; // max tpc fit chi2 per tpc cluster
Float_t fCutMaxChi2PerClusterITS; // max its fit chi2 per its cluster
Bool_t fCutAcceptKinkDaughters; // accepting kink daughters?
Bool_t fCutRequireTPCRefit; // require TPC refit
Bool_t fCutRequireITSRefit; // require ITS refit
-
+
// track to vertex cut
Float_t fCutNsigmaToVertex; // max number of estimated sigma from track-to-vertex
Bool_t fCutSigmaToVertexRequired; // cut track if sigma from track-to-vertex could not be calculated
TH1F* fhDXYNormalized[2]; //->
TH1F* fhDZNormalized[2]; //->
TH2F* fhDXYvsDZNormalized[2]; //->
- TH1F* fhNSigmaToVertex[2]; //->
+ TH1F* fhNSigmaToVertex[2]; //->
TF1* ffDTheoretical; //-> theoretical distance to vertex normalized (2d gauss)