]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Introducing class members for storing the p_T dependent DCA cuts, these are only...
authorkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 14 Jul 2010 14:02:16 +0000 (14:02 +0000)
committerkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 14 Jul 2010 14:02:16 +0000 (14:02 +0000)
ANALYSIS/AliESDtrackCuts.cxx
ANALYSIS/AliESDtrackCuts.h

index 4d52534e6502c26feb1eefb6ab8d6782c5dc3836..340c1dfae60983a5bdb8a85310970977ef5d576e 100644 (file)
@@ -98,6 +98,10 @@ AliESDtrackCuts::AliESDtrackCuts(const Char_t* name, const Char_t* title) : AliA
   fCutMaxDCAToVertexZPtDep(""),
   fCutMinDCAToVertexXYPtDep(""),
   fCutMinDCAToVertexZPtDep(""),
+  f1CutMaxDCAToVertexXYPtDep(0x0),
+  f1CutMaxDCAToVertexZPtDep(0x0),
+  f1CutMinDCAToVertexXYPtDep(0x0),
+  f1CutMinDCAToVertexZPtDep(0x0),
   fCutDCAToVertex2D(0),
   fPMin(0),
   fPMax(0),
@@ -187,6 +191,10 @@ AliESDtrackCuts::AliESDtrackCuts(const AliESDtrackCuts &c) : AliAnalysisCuts(c),
   fCutMaxDCAToVertexZPtDep(""),
   fCutMinDCAToVertexXYPtDep(""),
   fCutMinDCAToVertexZPtDep(""),
+  f1CutMaxDCAToVertexXYPtDep(0x0),
+  f1CutMaxDCAToVertexZPtDep(0x0),
+  f1CutMinDCAToVertexXYPtDep(0x0),
+  f1CutMinDCAToVertexZPtDep(0x0),
   fCutDCAToVertex2D(0),
   fPMin(0),
   fPMax(0),
@@ -267,6 +275,16 @@ AliESDtrackCuts::~AliESDtrackCuts()
       delete fhEta[i];
   }
 
+  if(f1CutMaxDCAToVertexXYPtDep)delete f1CutMaxDCAToVertexXYPtDep;
+  f1CutMaxDCAToVertexXYPtDep = 0;
+  if( f1CutMaxDCAToVertexZPtDep) delete  f1CutMaxDCAToVertexZPtDep;
+  f1CutMaxDCAToVertexZPtDep = 0;
+  if( f1CutMinDCAToVertexXYPtDep)delete  f1CutMinDCAToVertexXYPtDep;
+  f1CutMinDCAToVertexXYPtDep = 0;
+  if(f1CutMinDCAToVertexZPtDep)delete  f1CutMinDCAToVertexZPtDep; 
+  f1CutMinDCAToVertexZPtDep = 0;
+
+
   if (ffDTheoretical)
     delete ffDTheoretical;
 
@@ -320,6 +338,17 @@ void AliESDtrackCuts::Init()
   fCutMinDCAToVertexXYPtDep = "";
   fCutMinDCAToVertexZPtDep = "";
 
+  if(f1CutMaxDCAToVertexXYPtDep)delete f1CutMaxDCAToVertexXYPtDep;
+  f1CutMaxDCAToVertexXYPtDep = 0;
+  if( f1CutMaxDCAToVertexXYPtDep) delete  f1CutMaxDCAToVertexXYPtDep;
+  f1CutMaxDCAToVertexXYPtDep = 0;
+  if( f1CutMaxDCAToVertexZPtDep) delete  f1CutMaxDCAToVertexZPtDep;
+  f1CutMaxDCAToVertexZPtDep = 0;
+  if( f1CutMinDCAToVertexXYPtDep)delete  f1CutMinDCAToVertexXYPtDep;
+  f1CutMinDCAToVertexXYPtDep = 0;
+  if(f1CutMinDCAToVertexZPtDep)delete f1CutMinDCAToVertexZPtDep;
+  f1CutMinDCAToVertexZPtDep = 0;
+
   
   fPMin = 0;
   fPMax = 0;
@@ -428,10 +457,18 @@ void AliESDtrackCuts::Copy(TObject &c) const
   target.fCutDCAToVertex2D = fCutDCAToVertex2D;
   target.fCutMinDCAToVertexXY = fCutMinDCAToVertexXY;
   target.fCutMinDCAToVertexZ = fCutMinDCAToVertexZ;
+
   target.fCutMaxDCAToVertexXYPtDep = fCutMaxDCAToVertexXYPtDep;
+  target.SetMaxDCAToVertexXYPtDep(fCutMaxDCAToVertexXYPtDep.Data());
+
   target.fCutMaxDCAToVertexZPtDep = fCutMaxDCAToVertexZPtDep;
+  target.SetMaxDCAToVertexZPtDep(fCutMaxDCAToVertexZPtDep.Data());
+
   target.fCutMinDCAToVertexXYPtDep = fCutMinDCAToVertexXYPtDep;
+  target.SetMinDCAToVertexXYPtDep(fCutMinDCAToVertexXYPtDep.Data());
+
   target.fCutMinDCAToVertexZPtDep = fCutMinDCAToVertexZPtDep;
+  target.SetMinDCAToVertexZPtDep(fCutMinDCAToVertexZPtDep.Data());
 
   target.fPMin = fPMin;
   target.fPMax = fPMax;
@@ -1457,37 +1494,28 @@ void AliESDtrackCuts::SetPtDepDCACuts(Double_t pt) {
   // set the pt-dependent DCA cuts
   //
 
-  if(CheckPtDepDCA(fCutMaxDCAToVertexXYPtDep)) {
-    TString formula=fCutMaxDCAToVertexXYPtDep;
-    formula.ReplaceAll("pt","x");
-    TFormula dcacut("dcacut",formula.Data());
-    fCutMaxDCAToVertexXY=dcacut.Eval(pt);
+  if(f1CutMaxDCAToVertexXYPtDep) {
+     fCutMaxDCAToVertexXY=f1CutMaxDCAToVertexXYPtDep->Eval(pt);
   }
 
-  if(CheckPtDepDCA(fCutMaxDCAToVertexZPtDep)) {
-    TString formula=fCutMaxDCAToVertexZPtDep;
-    formula.ReplaceAll("pt","x");
-    TFormula dcacut("dcacut",formula.Data());
-    fCutMaxDCAToVertexZ=dcacut.Eval(pt);
+  if(f1CutMaxDCAToVertexZPtDep) {
+    fCutMaxDCAToVertexZ=f1CutMaxDCAToVertexZPtDep->Eval(pt);
   }
 
-  if(CheckPtDepDCA(fCutMinDCAToVertexXYPtDep)) {
-    TString formula=fCutMinDCAToVertexXYPtDep;
-    formula.ReplaceAll("pt","x");
-    TFormula dcacut("dcacut",formula.Data());
-    fCutMinDCAToVertexXY=dcacut.Eval(pt);
+  if(f1CutMinDCAToVertexXYPtDep) {
+    fCutMinDCAToVertexXY=f1CutMinDCAToVertexXYPtDep->Eval(pt);
   }
 
-  if(CheckPtDepDCA(fCutMinDCAToVertexZPtDep)) {
-    TString formula=fCutMinDCAToVertexZPtDep;
-    formula.ReplaceAll("pt","x");
-    TFormula dcacut("dcacut",formula.Data());
-    fCutMinDCAToVertexZ=dcacut.Eval(pt);
+  if(f1CutMinDCAToVertexZPtDep) {
+    fCutMinDCAToVertexZ=f1CutMinDCAToVertexZPtDep->Eval(pt);
   }
 
 
   return;
 }
+
+
+
 //--------------------------------------------------------------------------
 Bool_t AliESDtrackCuts::CheckPtDepDCA(TString dist,Bool_t print) const {
   //
@@ -1502,3 +1530,44 @@ Bool_t AliESDtrackCuts::CheckPtDepDCA(TString dist,Bool_t print) const {
   return retval;
 }
 
+ void AliESDtrackCuts::SetMaxDCAToVertexXYPtDep(const char *dist){
+   if(!CheckPtDepDCA(dist,kTRUE)) return;
+   if(f1CutMaxDCAToVertexXYPtDep)delete f1CutMaxDCAToVertexXYPtDep;
+   fCutMaxDCAToVertexXYPtDep = dist;
+   TString tmp(dist);
+   tmp.ReplaceAll("pt","x");
+   f1CutMaxDCAToVertexXYPtDep = new TFormula("f1CutMaxDCAToVertexXYPtDep",tmp.Data());
+}
+
+ void AliESDtrackCuts::SetMaxDCAToVertexZPtDep(const char *dist){
+   if(!CheckPtDepDCA(dist,kTRUE)) return;
+   if(f1CutMaxDCAToVertexZPtDep)delete f1CutMaxDCAToVertexZPtDep;
+   fCutMaxDCAToVertexZPtDep = dist;
+   TString tmp(dist);
+   tmp.ReplaceAll("pt","x");
+   f1CutMaxDCAToVertexZPtDep = new TFormula("f1CutMaxDCAToVertexZPtDep",tmp.Data());
+
+   
+}
+
+
+ void AliESDtrackCuts::SetMinDCAToVertexXYPtDep(const char *dist){
+   if(!CheckPtDepDCA(dist,kTRUE)) return;
+   if(f1CutMinDCAToVertexXYPtDep)delete f1CutMinDCAToVertexXYPtDep;
+   fCutMinDCAToVertexXYPtDep = dist;
+   TString tmp(dist);
+   tmp.ReplaceAll("pt","x");
+   f1CutMinDCAToVertexXYPtDep = new TFormula("f1CutMinDCAToVertexXYPtDep",tmp.Data());
+
+}
+
+
+ void AliESDtrackCuts::SetMinDCAToVertexZPtDep(const char *dist){
+   if(!CheckPtDepDCA(dist,kTRUE)) return;
+   if(f1CutMinDCAToVertexZPtDep)delete f1CutMinDCAToVertexZPtDep;
+   fCutMinDCAToVertexZPtDep = dist;
+   TString tmp(dist);
+   tmp.ReplaceAll("pt","x");
+   f1CutMinDCAToVertexZPtDep = new TFormula("f1CutMinDCAToVertexZPtDep",tmp.Data());
+}
index fce0de63043b8d156cc540a17c2715cacf4b105a..9779d554c0547eaf1adf3033089f419ebe68b638 100644 (file)
@@ -34,6 +34,7 @@ class TH1F;
 class TH2F;
 class TF1;
 class TCollection;
+class TFormula;
 
 class AliESDtrackCuts : public AliAnalysisCuts
 {
@@ -91,10 +92,10 @@ public:
   void SetMaxDCAToVertexZ(Float_t dist=1e10)          {fCutMaxDCAToVertexZ = dist;}
   void SetMinDCAToVertexXY(Float_t dist=0.)           {fCutMinDCAToVertexXY = dist;}
   void SetMinDCAToVertexZ(Float_t dist=0.)            {fCutMinDCAToVertexZ = dist;}
-  void SetMaxDCAToVertexXYPtDep(const char *dist="")         {CheckPtDepDCA(dist,kTRUE); fCutMaxDCAToVertexXYPtDep = dist;}
-  void SetMaxDCAToVertexZPtDep(const char *dist="")          {CheckPtDepDCA(dist,kTRUE); fCutMaxDCAToVertexZPtDep = dist;}
-  void SetMinDCAToVertexXYPtDep(const char *dist="")           {CheckPtDepDCA(dist,kTRUE); fCutMinDCAToVertexXYPtDep = dist;}
-  void SetMinDCAToVertexZPtDep(const char *dist="")            {CheckPtDepDCA(dist,kTRUE); fCutMinDCAToVertexZPtDep= dist;}
+  void SetMaxDCAToVertexXYPtDep(const char *dist="");
+  void SetMaxDCAToVertexZPtDep(const char *dist="")
+  void SetMinDCAToVertexXYPtDep(const char *dist="");
+  void SetMinDCAToVertexZPtDep(const char *dist="")
   void SetDCAToVertex2D(Bool_t b=kFALSE)              {fCutDCAToVertex2D = b;}
 
 
@@ -204,10 +205,18 @@ protected:
   Float_t fCutMaxDCAToVertexZ;        // track-to-vertex cut in max absolute distance in z-plane
   Float_t fCutMinDCAToVertexXY;       // track-to-vertex cut on min absolute distance in xy-plane
   Float_t fCutMinDCAToVertexZ;        // track-to-vertex cut on min absolute distance in z-plane
+  // 
   TString fCutMaxDCAToVertexXYPtDep;  // pt-dep track-to-vertex cut in max absolute distance in xy-plane
   TString fCutMaxDCAToVertexZPtDep;   // pt-dep track-to-vertex cut in max absolute distance in z-plane
   TString fCutMinDCAToVertexXYPtDep;  // pt-dep track-to-vertex cut on min absolute distance in xy-plane
   TString fCutMinDCAToVertexZPtDep;   // pt-dep track-to-vertex cut on min absolute distance in z-plane
+
+  // only internal use, set via strings above
+  TFormula *f1CutMaxDCAToVertexXYPtDep;  // pt-dep track-to-vertex cut in max absolute distance in xy-plane
+  TFormula *f1CutMaxDCAToVertexZPtDep;   // pt-dep track-to-vertex cut in max absolute distance in z-plane
+  TFormula *f1CutMinDCAToVertexXYPtDep;  // pt-dep track-to-vertex cut on min absolute distance in xy-plane
+  TFormula *f1CutMinDCAToVertexZPtDep;   // pt-dep track-to-vertex cut on min absolute distance in z-plane
+
   Bool_t  fCutDCAToVertex2D;          // if true a 2D DCA cut is made. Tracks are accepted if sqrt((DCAXY / fCutMaxDCAToVertexXY)^2 + (DCAZ / fCutMaxDCAToVertexZ)^2) < 1 AND sqrt((DCAXY / fCutMinDCAToVertexXY)^2 + (DCAZ / fCutMinDCAToVertexZ)^2) > 1
 
   // esd kinematics cuts
@@ -255,7 +264,7 @@ protected:
   TH1F*  fhCutStatistics;             //-> statistics of what cuts the tracks did not survive
   TH2F*  fhCutCorrelation;            //-> 2d statistics plot
 
-  ClassDef(AliESDtrackCuts, 10)
+  ClassDef(AliESDtrackCuts, 11)
 };