Added Merge method and implemented destructor
[u/mrichter/AliRoot.git] / PWG0 / esdTrackCuts / AliESDtrackCuts.h
index a0d5a01aa2fc6490886cdb29f06479b7c4c93317..1c758d625526deb150be328d42692e5827dd02ec 100644 (file)
 //
 //  TODO: 
 //  - add functionality to save and load cuts
 //
 //  TODO: 
 //  - add functionality to save and load cuts
-//  - fix the n sigma cut so it is really a n sigma cut
 //  - add different ways to make track to vertex cut
 //  - add histograms for kinematic cut variables?
 //  - upper and lower cuts for all (non-boolean) cuts
 //  - update print method
 //  - is there a smarter way to manage the cuts?
 //  - add different ways to make track to vertex cut
 //  - add histograms for kinematic cut variables?
 //  - upper and lower cuts for all (non-boolean) cuts
 //  - update print method
 //  - is there a smarter way to manage the cuts?
-//  - put comment to each variable
+//  - put comments to each variable
 //  - implement destructor !!!
 //
 //  - implement destructor !!!
 //
-//  NOTE: 
-//  - 
-//
 
 #ifndef ALIESDTRACKCUTS_H
 #define ALIESDTRACKCUTS_H
 
 
 #ifndef ALIESDTRACKCUTS_H
 #define ALIESDTRACKCUTS_H
 
+#include <TObject.h>
+#include <TH2.h>
 
 
-#include "TObject.h"
-
-#include "TH1.h"
-#include "TH2.h"
-
-#include "AliESDtrack.h"
-#include "AliESD.h"
-#include "AliLog.h"
+class AliESD;
+class AliESDtrack;
+class AliLog;
 
 class AliESDtrackCuts : public TObject 
 {
 
 class AliESDtrackCuts : public TObject 
 {
@@ -44,13 +37,12 @@ class AliESDtrackCuts : public TObject
 public:
   AliESDtrackCuts();
   virtual ~AliESDtrackCuts();
 public:
   AliESDtrackCuts();
   virtual ~AliESDtrackCuts();
-  AliESDtrackCuts(const AliESDtrackCuts& pd);  // Copy Constructor
 
   Bool_t AcceptTrack(AliESDtrack* esdTrack);
 
   Bool_t AcceptTrack(AliESDtrack* esdTrack);
-
   TObjArray* GetAcceptedTracks(AliESD* esd);
   TObjArray* GetAcceptedTracks(AliESD* esd);
+  Int_t CountAcceptedTracks(AliESD* esd);
 
 
-  AliESDtrackCuts &operator=(const AliESDtrackCuts &c);
+  virtual Long64_t Merge(TCollection* list);
   virtual void Copy(TObject &c) const;
 
   //######################################################
   virtual void Copy(TObject &c) const;
 
   //######################################################
@@ -78,10 +70,14 @@ public:
   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;}
 
   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");
   //######################################################
   void SetHistogramsOn(Bool_t b=kFALSE) {fHistogramsOn = b;}
   void DefineHistograms(Int_t color=1);
   void SaveHistograms(Char_t* dir="track_selection");
+
+  Float_t GetSigmaToVertex(AliESDtrack* esdTrack);
   
   virtual void Print(const Option_t* = "") const;
 
   
   virtual void Print(const Option_t* = "") const;
 
@@ -95,7 +91,7 @@ protected:
 
   //######################################################
   // esd track quality cuts
 
   //######################################################
   // esd track quality cuts
-  static const Char_t* fgkCutNames[kNCuts]; // names of cuts (for internal use)
+  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   fCutMinNClusterTPC;         // min number of tpc clusters
   Int_t   fCutMinNClusterITS;         // min number of its clusters  
@@ -130,30 +126,36 @@ protected:
   // diagnostics histograms
   Bool_t fHistogramsOn;               // histograms on/off
 
   // diagnostics histograms
   Bool_t fHistogramsOn;               // histograms on/off
 
-  TH1F* fhNClustersITS[2];            //[2]
-  TH1F* fhNClustersTPC[2];            //[2]
-  
-  TH1F* fhChi2PerClusterITS[2];       //[2]
-  TH1F* fhChi2PerClusterTPC[2];       //[2]
+  TH1F* fhNClustersITS[2];            //->
+  TH1F* fhNClustersTPC[2];            //->
+
+  TH1F* fhChi2PerClusterITS[2];       //->
+  TH1F* fhChi2PerClusterTPC[2];       //->
+
+  TH1F* fhC11[2];                     //->
+  TH1F* fhC22[2];                     //->
+  TH1F* fhC33[2];                     //->
+  TH1F* fhC44[2];                     //->
+  TH1F* fhC55[2];                     //->
+
+  TH1F* fhDXY[2];                     //->
+  TH1F* fhDZ[2];                      //->
+  TH2F* fhDXYvsDZ[2];                 //->
 
 
-  TH1F* fhC11[2];                     //[2]
-  TH1F* fhC22[2];                     //[2]
-  TH1F* fhC33[2];                     //[2]
-  TH1F* fhC44[2];                     //[2]
-  TH1F* fhC55[2];                     //[2]
+  TH1F* fhDXYNormalized[2];           //->
+  TH1F* fhDZNormalized[2];            //->
+  TH2F* fhDXYvsDZNormalized[2];       //->
 
 
-  TH1F* fhDXY[2];                     //[2]
-  TH1F* fhDZ[2];                      //[2]
-  TH2F* fhDXYvsDZ[2];                 //[2]
+  TH1F*  fhCutStatistics;             //-> statistics of what cuts the tracks did not survive
+  TH2F*  fhCutCorrelation;            //-> 2d statistics plot
 
 
-  TH1F* fhDXYNormalized[2];           //[2]
-  TH1F* fhDZNormalized[2];            //[2]
-  TH2F* fhDXYvsDZNormalized[2];       //[2]
+ private:
 
 
-  TH1F*  fhCutStatistics;             // statistics of what cuts the tracks did not survive
-  TH2F*  fhCutCorrelation;            // 2d statistics plot
+  AliESDtrackCuts(const AliESDtrackCuts& pd);  // Copy Constructor
+  AliESDtrackCuts &operator=(const AliESDtrackCuts &c);
+  
   
   
-  ClassDef(AliESDtrackCuts,0)
+  ClassDef(AliESDtrackCuts, 1)
 };
 
 
 };