X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=CORRFW%2FAliCFTrackIsPrimaryCuts.h;h=4aa46739d9043e69f32e899bbd423faa402e8319;hb=0663d9e3200ec5e886505bd87909344adbe5bf30;hp=94e79b1cc66f824ba007fa42f6de3c646e0f109f;hpb=045e6d86de89a70ab06c2502f7f30e0fd0323d7a;p=u%2Fmrichter%2FAliRoot.git diff --git a/CORRFW/AliCFTrackIsPrimaryCuts.h b/CORRFW/AliCFTrackIsPrimaryCuts.h index 94e79b1cc66..4aa46739d90 100644 --- a/CORRFW/AliCFTrackIsPrimaryCuts.h +++ b/CORRFW/AliCFTrackIsPrimaryCuts.h @@ -22,10 +22,22 @@ // ESD and AOD data. // It mainly consists of a IsSelected function that returns a boolean. // This function checks whether the considered track passes a set of cuts: -// - distance to main vertex in units of sigma (resolution) +// - min. and max. distance to main vertex in transverse plane (xy) +// - min. and max. longitudinal distance to main vertex (z) +// - min. and max. distance to main vertex as ellpise in xy - z plane +// - all above cuts on absolute values or in units of sigma (resolution) +// - min. and max. distance to main vertex in units of sigma (resolution) +// - max. transverse (xy) and longitudinal (z) impact parameter resolution // - require that the dca calculation doesn't fail // - accept or not accept daughter tracks of kink decays // +// By default, the distance to 'vertex calculated from tracks' is used. +// Optionally the SPD (tracklet based) or TPC (TPC only tracks based) vertex +// can be used. +// Note: the distance to the TPC-vertex is already stored in the ESD, +// the distance to the SPD-vertex has to be re-calculated by propagating each +// track while executing this cut. +// // The cut values for these cuts are set with the corresponding set functions. // All cut classes provided by the correction framework are supposed to be // added in the Analysis Framwork's class AliAnalysisFilter and applied by @@ -40,11 +52,13 @@ #define ALICFTRACKISPRIMARYCUTS_H #include "AliCFCutBase.h" - +#include "AliAODTrack.h" #include -// class TH2 ; +#include "AliESDtrackCuts.h" class TBits; -class AliESDtrack ; +class AliESDtrack; +class AliAODTrack; +class AliVEvent; class AliCFTrackIsPrimaryCuts : public AliCFCutBase { @@ -56,26 +70,35 @@ class AliCFTrackIsPrimaryCuts : public AliCFCutBase ~AliCFTrackIsPrimaryCuts(); void Copy(TObject &c) const; - void GetBitMap(TObject* obj, TBits *bitmap); Bool_t IsSelected(TObject* obj); - void Init(); - Float_t GetSigmaToVertex(AliESDtrack* esdTrack) const; + Bool_t IsSelected(TList* /*list*/) {return kTRUE;} // cut value setter - void SetMaxNSigmaToVertex(Double_t sigma=3) {fNSigmaToVertexMax = sigma;} - void SetRequireSigmaToVertex(Bool_t b=kTRUE) {fRequireSigmaToVertex=b;} - void SetAcceptKinkDaughters(Bool_t b=kTRUE) {fAcceptKinkDaughters=b;} + void UseSPDvertex(Bool_t b=kFALSE); + void UseTPCvertex(Bool_t b=kFALSE); + void SetMinDCAToVertexXY(Float_t dist=0.) {fMinDCAToVertexXY = dist;} + void SetMinDCAToVertexZ(Float_t dist=0.) {fMinDCAToVertexZ = dist;} + void SetMaxDCAToVertexXY(Float_t dist=1e10) {fMaxDCAToVertexXY = dist;} + void SetMaxDCAToVertexZ(Float_t dist=1e10) {fMaxDCAToVertexZ = dist;} + void SetDCAToVertex2D(Bool_t b=kFALSE) {fDCAToVertex2D = b;} + void SetAbsDCAToVertex(Bool_t b=kTRUE) {fAbsDCAToVertex = b;} + void SetMinNSigmaToVertex(Double_t sigmaMin=0.) {fNSigmaToVertexMin = sigmaMin;} + void SetMaxNSigmaToVertex(Double_t sigmaMax=1.e+10) {fNSigmaToVertexMax = sigmaMax;} + void SetMaxSigmaDCAxy(Double_t sigmaMax=1.e+10) {fSigmaDCAxy = sigmaMax;} + void SetMaxSigmaDCAz(Double_t sigmaMax=1.e+10) {fSigmaDCAz = sigmaMax;} + void SetRequireSigmaToVertex(Bool_t b=kFALSE) {fRequireSigmaToVertex=b;} + void SetAcceptKinkDaughters(Bool_t b=kTRUE) {fAcceptKinkDaughters=b;} + void SetAODType(Char_t type=AliAODTrack::kUndef) {fAODType = type;} // QA histograms - void FillHistogramsBeforeCuts(TObject* obj) {return FillHistograms(obj,kFALSE);} - void FillHistogramsAfterCuts(TObject* obj) {return FillHistograms(obj,kTRUE);} void DrawHistograms(); void SaveHistograms(const Char_t* dir = 0); - void AddQAHistograms(TList *qaList) const; + void AddQAHistograms(TList *qaList); // QA histogram setter // please use indices from the enumeration below void SetHistogramBins(Int_t index, Int_t nbins, Double_t *bins); void SetHistogramBins(Int_t index, Int_t nbins, Double_t xmin, Double_t xmax); + virtual void SetRecEventInfo(const TObject* esd); // indeces/counters for single selections enum { @@ -86,23 +109,42 @@ class AliCFTrackIsPrimaryCuts : public AliCFCutBase kDcaZ, // controll histogram: dca along z axis kDcaXYnorm, // controll histogram: normalised dca in xy plane kDcaZnorm, // controll histogram: normalised dca along z axis - kNCuts=3, // number of single selections + kSigmaDcaXY, // controll histogram: impact parameter resolution in transverse plane + kSigmaDcaZ, // controll histogram: impact parameter resolution along z axis + kCutAODType, // cut on AliAODTrack::fType + kNCuts=9, // number of single selections kNStepQA=2, // number of QA steps (before/after the cuts) - kNHist=7 // number of QA histograms + kNHist=9 // number of QA histograms }; private: - TBits* SelectionBitMap(TObject* obj); + void SelectionBitMap(TObject* obj); + void GetDCA(AliESDtrack* esdTrack); + void GetDCA(AliAODTrack* aodTrack); void DefineHistograms(); // books histograms and TList void Initialise(); // sets everything to 0 void FillHistograms(TObject* obj, Bool_t b); // Fills histograms before and after cuts - Double_t fNSigmaToVertexMax; // max distance to main vertex in units of sigma - Bool_t fRequireSigmaToVertex; // require calculable distance to main vertex + AliVEvent* fEvt; // pointer to event, needed for SPD vertex and DCA in AODs + Bool_t fUseSPDvertex; // flag: calculate dca to SPD-vertex, off by default + Bool_t fUseTPCvertex; // flag: calculate dca to TPC-vertex, off by default + Double_t fMinDCAToVertexXY; // cut value: min distance to main vertex in transverse plane + Double_t fMinDCAToVertexZ; // cut value: min longitudinal distance to main vertex + Double_t fMaxDCAToVertexXY; // cut value: max distance to main vertex in transverse plane + Double_t fMaxDCAToVertexZ; // cut value: max longitudinal distance to main vertex + Bool_t fDCAToVertex2D; // flag: cut on ellipse in xy - z plane + Bool_t fAbsDCAToVertex; // flag: cut on absolute values or in units of sigma + Double_t fNSigmaToVertexMin; // cut value: min distance to main vertex in units of sigma + Double_t fNSigmaToVertexMax; // cut value: max distance to main vertex in units of sigma + Double_t fSigmaDCAxy; // cut value: impact parameter resolution in xy plane + Double_t fSigmaDCAz; // cut value: impact parameter resolution in z direction + Double_t fDCA[6]; // impact parameters + Bool_t fRequireSigmaToVertex; // require calculable distance to main vertex + Char_t fAODType; // type of AOD track (undef, primary, secondary, orphan) + // applicable at AOD level only ! TH2F* fhDcaXYvsDcaZ[2]; // Histogram: dca xy vs. z - TH2F* fhDcaXYvsDcaZnorm[2]; // Histogram: (dca xy / sigma xy) vs. (dca z / simga z) - Bool_t fAcceptKinkDaughters; // accepting kink daughters + Bool_t fAcceptKinkDaughters; // accepting kink daughters TH1F* fhCutStatistics; // Histogram: statistics of what cuts the tracks did not survive TH2F* fhCutCorrelation; // Histogram: 2d statistics plot @@ -111,13 +153,15 @@ class AliCFTrackIsPrimaryCuts : public AliCFCutBase TBits *fBitmap ; // stores single selection decisions // QA histogram setters - Int_t fhNBinsNSigma; // number of bins: dca in units of sigma - Int_t fhNBinsRequireSigma; // number of bins: require successful calcuation - Int_t fhNBinsAcceptKink; // number of bins: acceptkink daughters - Int_t fhNBinsDcaXY; // number of bins: dca in transverse plane - Int_t fhNBinsDcaZ; // number of bins: dca along beam axis - Int_t fhNBinsDcaXYnorm; // number of bins: normalised dca in transverse plane - Int_t fhNBinsDcaZnorm; // number of bins: normalised dca along beam axis + Int_t fhNBinsNSigma; // number of bins+1: dca in units of sigma + Int_t fhNBinsRequireSigma; // number of bins+1: require successful calcuation + Int_t fhNBinsAcceptKink; // number of bins+1: acceptkink daughters + Int_t fhNBinsDcaXY; // number of bins+1: dca in transverse plane + Int_t fhNBinsDcaZ; // number of bins+1: dca along beam axis + Int_t fhNBinsDcaXYnorm; // number of bins+1: normalised dca in transverse plane + Int_t fhNBinsDcaZnorm; // number of bins+1: normalised dca along beam axis + Int_t fhNBinsSigmaDcaXY; // number of bins+1: impact parameter resolution in transverse plane + Int_t fhNBinsSigmaDcaZ; // number of bins+1: impact parameter resolution along beam axis Double_t *fhBinLimNSigma; //[fhNBinsNSigma] bin limits: dca in units of sigma Double_t *fhBinLimRequireSigma;//[fhNBinsRequireSigma] bin limits: require successful calcuation @@ -126,8 +170,10 @@ class AliCFTrackIsPrimaryCuts : public AliCFCutBase Double_t *fhBinLimDcaZ; //[fhNBinsDcaZ] bin limits: dca along beam axis Double_t *fhBinLimDcaXYnorm; //[fhNBinsDcaXYnorm] bin limits: normalised dca in transverse plane Double_t *fhBinLimDcaZnorm;//[fhNBinsDcaZnorm] bin limits: normalised dca along beam axis + Double_t *fhBinLimSigmaDcaXY; //[fhNBinsSigmaDcaXY] bin limits: impact parameter in transverse plane + Double_t *fhBinLimSigmaDcaZ; //[fhNBinsSigmaDcaZ] bin limits: impact parameter along beam axis - ClassDef(AliCFTrackIsPrimaryCuts,2); + ClassDef(AliCFTrackIsPrimaryCuts,3); }; #endif