fCutMaxDCAToVertexZPtDep(""),
fCutMinDCAToVertexXYPtDep(""),
fCutMinDCAToVertexZPtDep(""),
+ f1CutMaxDCAToVertexXYPtDep(0x0),
+ f1CutMaxDCAToVertexZPtDep(0x0),
+ f1CutMinDCAToVertexXYPtDep(0x0),
+ f1CutMinDCAToVertexZPtDep(0x0),
fCutDCAToVertex2D(0),
fPMin(0),
fPMax(0),
fCutMaxDCAToVertexZPtDep(""),
fCutMinDCAToVertexXYPtDep(""),
fCutMinDCAToVertexZPtDep(""),
+ f1CutMaxDCAToVertexXYPtDep(0x0),
+ f1CutMaxDCAToVertexZPtDep(0x0),
+ f1CutMinDCAToVertexXYPtDep(0x0),
+ f1CutMinDCAToVertexZPtDep(0x0),
fCutDCAToVertex2D(0),
fPMin(0),
fPMax(0),
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;
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;
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;
// 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 {
//
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());
+}
class TH2F;
class TF1;
class TCollection;
+class TFormula;
class AliESDtrackCuts : public AliAnalysisCuts
{
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;}
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
TH1F* fhCutStatistics; //-> statistics of what cuts the tracks did not survive
TH2F* fhCutCorrelation; //-> 2d statistics plot
- ClassDef(AliESDtrackCuts, 10)
+ ClassDef(AliESDtrackCuts, 11)
};