From: jgrosseo Date: Tue, 9 Dec 2008 14:48:53 +0000 (+0000) Subject: adding cut for 2D cut on absolute DCA (elliptic cut) X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=commitdiff_plain;h=86f0e1950e9a3c744add31eb59d79c2a92a79508 adding cut for 2D cut on absolute DCA (elliptic cut) --- diff --git a/ANALYSIS/AliESDtrackCuts.cxx b/ANALYSIS/AliESDtrackCuts.cxx index 394676ea48a..76fa89f6a0f 100644 --- a/ANALYSIS/AliESDtrackCuts.cxx +++ b/ANALYSIS/AliESDtrackCuts.cxx @@ -35,8 +35,8 @@ const Char_t* AliESDtrackCuts::fgkCutNames[kNCuts] = { "require ITS refit", "n clusters TPC", "n clusters ITS", - "#Chi^{2}/clusters TPC", - "#Chi^{2}/clusters ITS", + "#Chi^{2}/cluster TPC", + "#Chi^{2}/cluster ITS", "cov 11", "cov 22", "cov 33", @@ -50,9 +50,9 @@ const Char_t* AliESDtrackCuts::fgkCutNames[kNCuts] = { "p_{x}", "p_{y}", "p_{z}", - "y", "eta", - "trk-to-vtx dca absolute", + "y", + "trk-to-vtx dca 2D absolute", "trk-to-vtx dca xy absolute", "trk-to-vtx dca z absolute", "SPD cluster requirement", @@ -76,9 +76,9 @@ AliESDtrackCuts::AliESDtrackCuts(const Char_t* name, const Char_t* title) : AliA fCutRequireITSRefit(0), fCutNsigmaToVertex(0), fCutSigmaToVertexRequired(0), - fCutDCAToVertex(0), fCutDCAToVertexXY(0), fCutDCAToVertexZ(0), + fCutDCAToVertex2D(0), fPMin(0), fPMax(0), fPtMin(0), @@ -115,9 +115,9 @@ AliESDtrackCuts::AliESDtrackCuts(const Char_t* name, const Char_t* title) : AliA SetRequireITSRefit(); SetAcceptKingDaughters(); SetMaxNsigmaToVertex(); - SetMaxDCAToVertex(); SetMaxDCAToVertexXY(); SetMaxDCAToVertexZ(); + SetDCAToVertex2D(); SetPRange(); SetPtRange(); SetPxRange(); @@ -148,9 +148,9 @@ AliESDtrackCuts::AliESDtrackCuts(const AliESDtrackCuts &c) : AliAnalysisCuts(c), fCutRequireITSRefit(0), fCutNsigmaToVertex(0), fCutSigmaToVertexRequired(0), - fCutDCAToVertex(0), fCutDCAToVertexXY(0), fCutDCAToVertexZ(0), + fCutDCAToVertex2D(0), fPMin(0), fPMax(0), fPtMin(0), @@ -263,10 +263,10 @@ void AliESDtrackCuts::Init() fCutNsigmaToVertex = 0; fCutSigmaToVertexRequired = 0; - fCutDCAToVertex = 0; fCutDCAToVertexXY = 0; fCutDCAToVertexZ = 0; - + fCutDCAToVertex2D = 0; + fPMin = 0; fPMax = 0; fPtMin = 0; @@ -360,9 +360,9 @@ void AliESDtrackCuts::Copy(TObject &c) const target.fCutNsigmaToVertex = fCutNsigmaToVertex; target.fCutSigmaToVertexRequired = fCutSigmaToVertexRequired; - target.fCutDCAToVertex = fCutDCAToVertex; target.fCutDCAToVertexXY = fCutDCAToVertexXY; target.fCutDCAToVertexZ = fCutDCAToVertexZ; + target.fCutDCAToVertex2D = fCutDCAToVertex2D; target.fPMin = fPMin; target.fPMax = fPMax; @@ -597,7 +597,15 @@ AliESDtrackCuts::AcceptTrack(AliESDtrack* esdTrack) { Float_t dcaToVertexXY = b[0]; Float_t dcaToVertexZ = b[1]; - Float_t dcaToVertex = TMath::Sqrt(dcaToVertexXY*dcaToVertexXY + dcaToVertexZ*dcaToVertexZ); + Float_t dcaToVertex = -1; + + if (fCutDCAToVertex2D) + { + dcaToVertex = TMath::Sqrt(dcaToVertexXY*dcaToVertexXY/fCutDCAToVertexXY/fCutDCAToVertexXY + dcaToVertexZ*dcaToVertexZ/fCutDCAToVertexZ/fCutDCAToVertexZ); + } + else + dcaToVertex = TMath::Sqrt(dcaToVertexXY*dcaToVertexXY + dcaToVertexZ*dcaToVertexZ); + // getting the kinematic variables of the track // (assuming the mass is known) @@ -669,11 +677,11 @@ AliESDtrackCuts::AcceptTrack(AliESDtrack* esdTrack) { cuts[19] = kTRUE; if((y < fRapMin) || (y > fRapMax)) cuts[20] = kTRUE; - if (dcaToVertex > fCutDCAToVertex) + if (fCutDCAToVertex2D && dcaToVertex > 1) cuts[21] = kTRUE; - if (TMath::Abs(dcaToVertexXY) > fCutDCAToVertexXY) + if (!fCutDCAToVertex2D && TMath::Abs(dcaToVertexXY) > fCutDCAToVertexXY) cuts[22] = kTRUE; - if (TMath::Abs(dcaToVertexZ) > fCutDCAToVertexZ) + if (!fCutDCAToVertex2D && TMath::Abs(dcaToVertexZ) > fCutDCAToVertexZ) cuts[23] = kTRUE; for (Int_t i = 0; i < 3; i++) @@ -934,7 +942,7 @@ Int_t AliESDtrackCuts::CountAcceptedTracks(AliESDEvent* esd) fhNSigmaToVertex[i] = new TH1F("nSigmaToVertex","",500,0,10); - fhPt[i] = new TH1F("pt" ,"p_{T} distribution;p_{T} (GeV/c)",500,0.0,100.0); + fhPt[i] = new TH1F("pt" ,"p_{T} distribution;p_{T} (GeV/c)", 800, 0.0, 10.0); fhEta[i] = new TH1F("eta" ,"#eta distribution;#eta",40,-2.0,2.0); fhNClustersITS[i]->SetTitle("n ITS clusters"); @@ -948,16 +956,16 @@ Int_t AliESDtrackCuts::CountAcceptedTracks(AliESDEvent* esd) fhC44[i]->SetTitle("cov 44 : #sigma_{tan(#theta_{dip})}^{2}"); fhC55[i]->SetTitle("cov 55 : #sigma_{1/p_{T}}^{2} [(c/GeV)^2]"); - fhDXY[i]->SetTitle("transverse impact parameter"); - fhDZ[i]->SetTitle("longitudinal impact parameter"); - fhDXYDZ[i]->SetTitle("absolute impact parameter;sqrt(dXY**2 + dZ**2) in cm"); - fhDXYvsDZ[i]->SetXTitle("longitudinal impact parameter"); - fhDXYvsDZ[i]->SetYTitle("transverse impact parameter"); + fhDXY[i]->SetXTitle("transverse impact parameter (cm)"); + fhDZ[i]->SetXTitle("longitudinal impact parameter (cm)"); + fhDXYDZ[i]->SetTitle("absolute impact parameter;sqrt(dXY**2 + dZ**2) (cm)"); + fhDXYvsDZ[i]->SetXTitle("longitudinal impact parameter (cm)"); + fhDXYvsDZ[i]->SetYTitle("transverse impact parameter (cm)"); - fhDXYNormalized[i]->SetTitle("normalized trans impact par"); - fhDZNormalized[i]->SetTitle("normalized long impact par"); - fhDXYvsDZNormalized[i]->SetTitle("normalized long impact par"); - fhDXYvsDZNormalized[i]->SetYTitle("normalized trans impact par"); + fhDXYNormalized[i]->SetTitle("normalized trans impact par (n#sigma)"); + fhDZNormalized[i]->SetTitle("normalized long impact par (n#sigma)"); + fhDXYvsDZNormalized[i]->SetTitle("normalized long impact par (n#sigma)"); + fhDXYvsDZNormalized[i]->SetYTitle("normalized trans impact par (n#sigma)"); fhNSigmaToVertex[i]->SetTitle("n #sigma to vertex"); fhNClustersITS[i]->SetLineColor(color); fhNClustersITS[i]->SetLineWidth(2); @@ -1260,11 +1268,20 @@ void AliESDtrackCuts::SetDCAToVertex(Float_t dist) { // deprecated, will be removed in next release - Printf("WARNING: AliESDtrackCuts::SetDCAToVertex is DEPRECATED and will be removed in the next release. Please use SetMaxDCAToVertex instead. Renaming was done to improve code readability."); - SetMaxDCAToVertex(dist); } +void AliESDtrackCuts::SetMaxDCAToVertex(Float_t dist) +{ + // deprecated, will be removed in next release + + Printf("WARNING: AliESDtrackCuts::SetMaxDCAToVertex is DEPRECATED and will be removed in the next release. Please use SetDCAToVertexXY(dist) and SetDCAToVertexZ(dist) and SetDCAToVertex2D(kTRUE)"); + + SetDCAToVertexXY(dist); + SetDCAToVertexZ(dist); + SetDCAToVertex2D(kTRUE); +} + void AliESDtrackCuts::SetDCAToVertexXY(Float_t dist) { // deprecated, will be removed in next release diff --git a/ANALYSIS/AliESDtrackCuts.h b/ANALYSIS/AliESDtrackCuts.h index 5eceb9253ac..d2a860fcaba 100644 --- a/ANALYSIS/AliESDtrackCuts.h +++ b/ANALYSIS/AliESDtrackCuts.h @@ -70,11 +70,12 @@ public: // track to vertex cut setters void SetMaxNsigmaToVertex(Float_t sigma=1e10) {fCutNsigmaToVertex = sigma; SetRequireSigmaToVertex(kTRUE);} void SetRequireSigmaToVertex(Bool_t b=kTRUE ) {fCutSigmaToVertexRequired = b;} - void SetMaxDCAToVertex(Float_t dist=1e10) {fCutDCAToVertex = dist;} void SetMaxDCAToVertexXY(Float_t dist=1e10) {fCutDCAToVertexXY = dist;} void SetMaxDCAToVertexZ(Float_t dist=1e10) {fCutDCAToVertexZ = dist;} + void SetDCAToVertex2D(Bool_t b=kFALSE) {fCutDCAToVertex2D = b;} // deprecated, will be removed in next release + void SetMaxDCAToVertex(Float_t dist=1e10); void SetMinNsigmaToVertex(Float_t sigma=1e10); void SetDCAToVertex(Float_t dist=1e10); void SetDCAToVertexXY(Float_t dist=1e10); @@ -94,9 +95,9 @@ public: void GetMaxCovDiagonalElements(Float_t& c1, Float_t& c2, Float_t& c3, Float_t& c4, Float_t& c5) {c1 = fCutMaxC11; c2 = fCutMaxC22; c3 = fCutMaxC33; c4 = fCutMaxC44; c5 = fCutMaxC55;} Float_t GetMaxNsigmaToVertex() const { return fCutNsigmaToVertex;} - Float_t GetMaxDCAToVertex() const { return fCutDCAToVertex;} Float_t GetMaxDCAToVertexXY() const { return fCutDCAToVertexXY;} Float_t GetMaxDCAToVertexZ() const { return fCutDCAToVertexZ;} + Bool_t GetDCAToVertex2D() const { return fCutDCAToVertex2D;} Bool_t GetRequireSigmaToVertex( ) const { return fCutSigmaToVertexRequired;} void GetPRange(Float_t& r1, Float_t& r2) {r1=fPMin; r2=fPMax;} @@ -163,9 +164,9 @@ protected: // 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 - Float_t fCutDCAToVertex; // track-to-vertex cut in absolute distance Float_t fCutDCAToVertexXY; // track-to-vertex cut in absolute distance in xy-plane Float_t fCutDCAToVertexZ; // track-to-vertex cut in absolute distance in z-plane + Bool_t fCutDCAToVertex2D; // if true a 2D DCA cut using fCutDCAToVertexXY and fCutDCAToVertexZ is made. Tracks are accepted if sqrt((DCAXY / fCutDCAToVertexXY)^2 + (DCAZ / fCutDCAToVertexZ)^2) < 1 // esd kinematics cuts Float_t fPMin, fPMax; // definition of the range of the P @@ -194,7 +195,7 @@ protected: TH1F* fhDXY[2]; //-> TH1F* fhDZ[2]; //-> - TH1F* fhDXYDZ[2]; //-> absolute distance sqrt(dxy**2 + dz**2) to vertex + TH1F* fhDXYDZ[2]; //-> absolute distance sqrt(dxy**2 + dz**2) to vertex; if 2D cut is set, normalized to given values TH2F* fhDXYvsDZ[2]; //-> TH1F* fhDXYNormalized[2]; //-> @@ -210,7 +211,7 @@ protected: TH1F* fhCutStatistics; //-> statistics of what cuts the tracks did not survive TH2F* fhCutCorrelation; //-> 2d statistics plot - ClassDef(AliESDtrackCuts, 3) + ClassDef(AliESDtrackCuts, 4) };