LCOV - code coverage report
Current view: top level - ANALYSIS/ANALYSISalice - AliESDtrackCuts.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 38 90 42.2 %
Date: 2016-06-14 17:26:59 Functions: 39 94 41.5 %

          Line data    Source code
       1             : //
       2             : //  Class for handling of ESD track cuts.
       3             : //
       4             : //  The class manages a number of track quality cuts, a
       5             : //  track-to-vertex cut and a number of kinematic cuts. Two methods
       6             : //  can be used to figure out if an ESD track survives the cuts:
       7             : //  AcceptTrack which takes a single AliESDtrack as argument and
       8             : //  returns kTRUE/kFALSE or GetAcceptedTracks which takes an AliESDEvent
       9             : //  object and returns an TObjArray (of AliESDtracks) with the tracks
      10             : //  in the ESD that survived the cuts.
      11             : //
      12             : //
      13             : //  TODO:
      14             : //  - add functionality to save and load cuts
      15             : //  - add histograms for kinematic cut variables?
      16             : //  - upper and lower cuts for all (non-boolean) cuts
      17             : //  - update print method
      18             : //  - put comments to each variable
      19             : //
      20             : 
      21             : #ifndef ALIESDTRACKCUTS_H
      22             : #define ALIESDTRACKCUTS_H
      23             : 
      24             : #include <TString.h>
      25             : 
      26             : #include "AliAnalysisCuts.h"
      27             : 
      28             : class AliESDEvent;
      29             : class AliESDtrack;
      30             : class AliVTrack;
      31             : class AliVEvent;
      32             : class AliLog;
      33             : class TTree;
      34             : class TH1;
      35             : class TH1F;
      36             : class TH2F;
      37             : class TF1;
      38             : class TCollection;
      39             : class TFormula;
      40             : 
      41             : class AliESDtrackCuts : public AliAnalysisCuts
      42             : {
      43             : public:
      44             :   enum ITSClusterRequirement { kOff = 0, kNone, kAny, kFirst, kOnlyFirst, kSecond, kOnlySecond, kBoth };
      45             :   enum Detector { kSPD = 0, kSDD, kSSD };
      46             :   enum ITSULayers { kITSU012 = 0, kITSU34, kITSU56 };
      47             :   enum MultEstTrackCuts { kMultEstTrackCutGlobal = 0, kMultEstTrackCutITSSA, kMultEstTrackCutDCAwSPD, kMultEstTrackCutDCAwoSPD, kNMultEstTrackCuts /* this must always be the last */};
      48             :   enum MultEstTrackType { kTrackletsITSTPC = 0, kTrackletsITSSA, kTracklets };
      49             :   enum VertexType { kVertexTracks = 0x1, kVertexSPD = 0x2, kVertexTPC = 0x4 };
      50             :   
      51             :   AliESDtrackCuts(const Char_t* name = "AliESDtrackCuts", const Char_t* title = "");
      52             :   virtual ~AliESDtrackCuts();
      53             : 
      54             :   virtual Bool_t IsSelected(TObject* obj)
      55         628 :        {return AcceptTrack((AliESDtrack*)obj);}
      56           0 :   virtual Bool_t IsSelected(TList* /*list*/) {return kTRUE;}
      57             : 
      58             :   Bool_t AcceptTrack(const AliESDtrack* esdTrack);
      59             :   Bool_t AcceptVTrack(const AliVTrack* vTrack);
      60             :   TObjArray* GetAcceptedTracks(const AliESDEvent* esd, Bool_t bTPC = kFALSE);
      61             :   Int_t CountAcceptedTracks(const AliESDEvent* const esd);
      62             :   
      63             :   static Int_t GetReferenceMultiplicity(const AliESDEvent* esd, Bool_t tpcOnly);
      64             :   static Int_t GetReferenceMultiplicity(const AliESDEvent* esd, MultEstTrackType trackType = kTrackletsITSTPC, Float_t etaRange = 0.5, Float_t etaCent=0.);
      65             :   static AliESDtrackCuts* GetMultEstTrackCuts(MultEstTrackCuts cut);
      66             : 
      67             :   static AliESDtrack* GetTPCOnlyTrack(const AliESDEvent* esd, Int_t iTrack);
      68             :   static AliESDtrack* GetTPCOnlyTrackFromVEvent(const AliVEvent* vEvent, Int_t iTrack);
      69             :   
      70             :   // Standard cut definitions
      71             :   static AliESDtrackCuts* GetStandardTPCOnlyTrackCuts();
      72             :   static AliESDtrackCuts* GetStandardITSTPCTrackCuts2009(Bool_t selPrimaries=kTRUE);
      73             :   static AliESDtrackCuts* GetStandardITSTPCTrackCuts2010(Bool_t selPrimaries=kTRUE, Int_t clusterCut=0);
      74             :   static AliESDtrackCuts* GetStandardITSTPCTrackCuts2011(Bool_t selPrimaries=kTRUE, Int_t clusterCut=1);
      75             :   static AliESDtrackCuts* GetStandardITSTPCTrackCuts2015PbPb(Bool_t selPrimaries=kTRUE, Int_t clusterCut=1, Bool_t cutAcceptanceEdges = kTRUE, Bool_t removeDistortedRegions = kFALSE);
      76             :   static AliESDtrackCuts* GetStandardITSSATrackCuts2009(Bool_t selPrimaries=kTRUE, Bool_t useForPid=kTRUE);
      77             :   static AliESDtrackCuts* GetStandardITSSATrackCuts2010(Bool_t selPrimaries=kTRUE, Bool_t useForPid=kTRUE);
      78             :   static AliESDtrackCuts* GetStandardITSSATrackCutsPbPb2010(Bool_t selPrimaries=kTRUE, Bool_t useForPid=kTRUE);
      79             :   static AliESDtrackCuts* GetStandardITSPureSATrackCuts2009(Bool_t selPrimaries=kTRUE, Bool_t useForPid=kTRUE);
      80             :   static AliESDtrackCuts* GetStandardITSPureSATrackCuts2010(Bool_t selPrimaries=kTRUE, Bool_t useForPid=kTRUE);
      81             :   // Standard cuts for daughter tracks
      82             :   static AliESDtrackCuts* GetStandardV0DaughterCuts();
      83             : 
      84             :   // static function to determine if the track crosses a distorted region in the TPC
      85             :   static Bool_t IsTrackInDistortedTpcRegion(const AliESDtrack * esdTrack);
      86             : 
      87             :   virtual Long64_t Merge(TCollection* list);
      88             :   virtual void Copy(TObject &c) const;
      89             :   AliESDtrackCuts(const AliESDtrackCuts& pd);  // Copy Constructor
      90             :   AliESDtrackCuts &operator=(const AliESDtrackCuts &c);
      91             : 
      92             :   //######################################################
      93             :   // track quality cut setters  
      94          60 :   void SetMinNClustersTPC(Int_t min=-1)          {fCutMinNClusterTPC=min;}
      95             :   void SetMinNClustersTPCPtDep(TFormula *f1=0x0, Float_t ptmax=0.);
      96          44 :   void SetMinNClustersITS(Int_t min=-1)          {fCutMinNClusterITS=min;}
      97          44 :   void SetMinNCrossedRowsTPC(Float_t min=-1) { fCutMinNCrossedRowsTPC=min;}
      98          44 :   void SetMinRatioCrossedRowsOverFindableClustersTPC(Float_t min = -1) { fCutMinRatioCrossedRowsOverFindableClustersTPC=min;}
      99           0 :   void SetMinLengthActiveVolumeTPC(Float_t min = 120., Float_t width=2) {fCutMinLengthActiveVolumeTPC=min; fDeadZoneWidth=width;}
     100             :   void SetCutGeoNcrNcl(Float_t deadZoneWidth=2,Float_t cutGeoNcrNclLength=130, Float_t cutGeoNcrNclGeom1Pt=1.5, Float_t cutGeoNcrNclFractionNcr=0.9,  Float_t cutGeoNcrNclFractionNcl=0.70);
     101           0 :   void SetCutOutDistortedRegionsTPC(Bool_t cutOutDistortedRegionTPC = kTRUE) {fCutOutDistortedRegionTPC=cutOutDistortedRegionTPC;}
     102             : 
     103         140 :   void SetClusterRequirementITS(Detector det, ITSClusterRequirement req = kOff) { fCutClusterRequirementITS[det] = req; }
     104           0 :   void SetClusterRequirementITS(ITSULayers det, ITSClusterRequirement req = kOff) { fCutClusterRequirementITS[det] = req; }
     105          60 :   void SetMaxChi2PerClusterTPC(Float_t max=1e10) {fCutMaxChi2PerClusterTPC=max;}
     106          44 :   void SetMaxChi2PerClusterITS(Float_t max=1e10) {fCutMaxChi2PerClusterITS=max;}
     107          44 :   void SetMaxChi2TPCConstrainedGlobal(Float_t max=1e10) {fCutMaxChi2TPCConstrainedVsGlobal = max; }
     108          44 :   void SetMaxChi2TPCConstrainedGlobalVertexType(Int_t vertexType = kVertexTracks | kVertexSPD) { fCutMaxChi2TPCConstrainedVsGlobalVertexType = vertexType; }
     109          44 :   void SetMaxNOfMissingITSPoints(Int_t max=6)    {fCutMaxMissingITSPoints=max;}
     110          26 :   void SetRequireTPCRefit(Bool_t b=kFALSE)       {fCutRequireTPCRefit=b;}
     111          22 :   void SetRequireTPCStandAlone(Bool_t b=kFALSE)  {fCutRequireTPCStandAlone=b;}
     112          26 :   void SetRequireITSRefit(Bool_t b=kFALSE)       {fCutRequireITSRefit=b;}
     113          22 :   void SetRequireITSPid(Bool_t b=kFALSE)         {fCutRequireITSPid=b;}
     114          24 :   void SetRequireITSStandAlone(Bool_t b=kFALSE)    {fCutRequireITSStandAlone = b;} 
     115          22 :   void SetRequireITSPureStandAlone(Bool_t b=kFALSE){fCutRequireITSpureSA = b;}
     116             : 
     117             : 
     118          30 :   void SetAcceptKinkDaughters(Bool_t b=kTRUE)    {fCutAcceptKinkDaughters=b;}
     119          22 :   void SetAcceptSharedTPCClusters(Bool_t b=kTRUE){fCutAcceptSharedTPCClusters=b;}
     120          44 :   void SetMaxFractionSharedTPCClusters(Float_t max=1e10) {fCutMaxFractionSharedTPCClusters=max;}
     121             :   void SetMaxCovDiagonalElements(Float_t c1=1e10, Float_t c2=1e10, Float_t c3=1e10, Float_t c4=1e10, Float_t c5=1e10) 
     122          48 :     {fCutMaxC11=c1; fCutMaxC22=c2; fCutMaxC33=c3; fCutMaxC44=c4; fCutMaxC55=c5;}
     123          44 :   void SetMaxRel1PtUncertainty(Float_t max=1e10)      {fCutMaxRel1PtUncertainty=max;}
     124             : 
     125             : 
     126             :   // track to vertex cut setters
     127          44 :   void SetMaxNsigmaToVertex(Float_t sigma=1e10)       {fCutNsigmaToVertex = sigma; SetRequireSigmaToVertex(kTRUE);}
     128          24 :   void SetRequireSigmaToVertex(Bool_t b=kTRUE)        {fCutSigmaToVertexRequired = b;}
     129          56 :   void SetMaxDCAToVertexXY(Float_t dist=1e10)         {fCutMaxDCAToVertexXY = dist;}
     130          64 :   void SetMaxDCAToVertexZ(Float_t dist=1e10)          {fCutMaxDCAToVertexZ = dist;}
     131          44 :   void SetMinDCAToVertexXY(Float_t dist=0.)           {fCutMinDCAToVertexXY = dist;}
     132          44 :   void SetMinDCAToVertexZ(Float_t dist=0.)            {fCutMinDCAToVertexZ = dist;}
     133             :   void SetMaxDCAToVertexXYPtDep(const char *dist="");
     134             :   void SetMaxDCAToVertexZPtDep(const char *dist=""); 
     135             :   void SetMinDCAToVertexXYPtDep(const char *dist="");
     136             :   void SetMinDCAToVertexZPtDep(const char *dist=""); 
     137          28 :   void SetDCAToVertex2D(Bool_t b=kFALSE)              {fCutDCAToVertex2D = b;}
     138             : 
     139             : 
     140             :   // getters  
     141           0 :   Int_t   GetMinNClusterTPC()        const   { return fCutMinNClusterTPC;}
     142           0 :   Float_t GetMinNCrossedRowsTPC()    const   { return fCutMinNCrossedRowsTPC;}
     143           0 :   Float_t GetMinRatioCrossedRowsOverFindableClustersTPC()    const   { return fCutMinRatioCrossedRowsOverFindableClustersTPC;}
     144           0 :   Float_t GetMinLengthActiveVolumeTPC() const { return fCutMinLengthActiveVolumeTPC;}
     145           0 :   Int_t   GetMinNClustersITS()       const   { return fCutMinNClusterITS;}
     146           0 :   TFormula *GetMinNClustersTPCPtDep() const  { return f1CutMinNClustersTPCPtDep;}
     147           0 :   ITSClusterRequirement GetClusterRequirementITS(Detector det) const { return fCutClusterRequirementITS[det]; }
     148           0 :   ITSClusterRequirement GetClusterRequirementITS(ITSULayers det) const { return fCutClusterRequirementITS[det]; }
     149           0 :   Float_t GetMaxChi2PerClusterTPC()  const   { return fCutMaxChi2PerClusterTPC;}
     150           0 :   Float_t GetMaxChi2PerClusterITS()  const   { return fCutMaxChi2PerClusterITS;}
     151           0 :   Float_t GetMaxChi2TPCConstrainedGlobal() const { return fCutMaxChi2TPCConstrainedVsGlobal; }
     152           0 :   Int_t GetMaxChi2TPCConstrainedGlobalVertexType() const { return fCutMaxChi2TPCConstrainedVsGlobalVertexType; }
     153           0 :   Int_t   GetMaxNOfMissingITSPoints() const   { return  fCutMaxMissingITSPoints;}
     154           0 :   Bool_t  GetRequireTPCRefit()       const   { return fCutRequireTPCRefit;}
     155           0 :   Bool_t  GetRequireTPCStandAlone()  const   { return fCutRequireTPCStandAlone;}
     156           0 :   Bool_t  GetRequireITSRefit()       const   { return fCutRequireITSRefit;}
     157           0 :   Bool_t  GetRequireITSStandAlone()  const   { return fCutRequireITSStandAlone; }
     158           0 :   Bool_t  GetAcceptKinkDaughters()   const   { return fCutAcceptKinkDaughters;}
     159           0 :   Bool_t  GetAcceptSharedTPCClusters()        const   {return fCutAcceptSharedTPCClusters;}
     160           0 :   Float_t GetMaxFractionSharedTPCClusters()   const   {return fCutMaxFractionSharedTPCClusters;}
     161             :   void    GetMaxCovDiagonalElements(Float_t& c1, Float_t& c2, Float_t& c3, Float_t& c4, Float_t& c5) const
     162           0 :       {c1 = fCutMaxC11; c2 = fCutMaxC22; c3 = fCutMaxC33; c4 = fCutMaxC44; c5 = fCutMaxC55;}
     163           0 :   Float_t GetMaxRel1PtUncertainty()  const   { return fCutMaxRel1PtUncertainty;}
     164           0 :   Float_t GetMaxNsigmaToVertex()     const   { return fCutNsigmaToVertex;}
     165           0 :   Float_t GetMaxDCAToVertexXY()      const   { return fCutMaxDCAToVertexXY;}
     166           0 :   Float_t GetMaxDCAToVertexZ()       const   { return fCutMaxDCAToVertexZ;}
     167           0 :   Float_t GetMinDCAToVertexXY()      const   { return fCutMinDCAToVertexXY;}
     168           0 :   Float_t GetMinDCAToVertexZ()       const   { return fCutMinDCAToVertexZ;}
     169           0 :   const char* GetMaxDCAToVertexXYPtDep() const   { return fCutMaxDCAToVertexXYPtDep;}
     170           0 :   const char* GetMaxDCAToVertexZPtDep()  const   { return fCutMaxDCAToVertexZPtDep;}
     171           0 :   const char* GetMinDCAToVertexXYPtDep() const   { return fCutMinDCAToVertexXYPtDep;}
     172           0 :   const char* GetMinDCAToVertexZPtDep()  const   { return fCutMinDCAToVertexZPtDep;}
     173           0 :   Bool_t  GetDCAToVertex2D()         const   { return fCutDCAToVertex2D;}
     174           0 :   Bool_t  GetRequireSigmaToVertex( ) const   { return fCutSigmaToVertexRequired;}
     175             : 
     176           0 :   void GetPRange(Float_t& r1, Float_t& r2)  const {r1=fPMin;   r2=fPMax;}
     177           0 :   void GetPtRange(Float_t& r1, Float_t& r2) const {r1=fPtMin;  r2=fPtMax;}
     178           0 :   void GetPxRange(Float_t& r1, Float_t& r2) const {r1=fPxMin;  r2=fPxMax;}
     179           0 :   void GetPyRange(Float_t& r1, Float_t& r2) const {r1=fPyMin;  r2=fPyMax;}
     180           0 :   void GetPzRange(Float_t& r1, Float_t& r2) const {r1=fPzMin;  r2=fPzMax;}
     181           0 :   void GetEtaRange(Float_t& r1, Float_t& r2) const {r1=fEtaMin; r2=fEtaMax;}
     182           0 :   void GetRapRange(Float_t& r1, Float_t& r2) const {r1=fRapMin; r2=fRapMax;}
     183             : 
     184             :   // track kinmatic cut setters
     185          44 :   void SetPRange(Float_t r1=0, Float_t r2=1e10)       {fPMin=r1;   fPMax=r2;}
     186          48 :   void SetPtRange(Float_t r1=0, Float_t r2=1e10)      {fPtMin=r1;  fPtMax=r2;}
     187          44 :   void SetPxRange(Float_t r1=-1e10, Float_t r2=1e10)  {fPxMin=r1;  fPxMax=r2;}
     188          44 :   void SetPyRange(Float_t r1=-1e10, Float_t r2=1e10)  {fPyMin=r1;  fPyMax=r2;}
     189          44 :   void SetPzRange(Float_t r1=-1e10, Float_t r2=1e10)  {fPzMin=r1;  fPzMax=r2;}
     190         196 :   void SetEtaRange(Float_t r1=-1e10, Float_t r2=1e10) {fEtaMin=r1; fEtaMax=r2;}
     191          44 :   void SetRapRange(Float_t r1=-1e10, Float_t r2=1e10) {fRapMin=r1; fRapMax=r2;}
     192             : 
     193             :   //######################################################
     194          22 :   void SetHistogramsOn(Bool_t b=kFALSE) {fHistogramsOn = b;}
     195             :   void DefineHistograms(Int_t color=1);
     196             :   virtual Bool_t LoadHistograms(const Char_t* dir = 0);
     197             :   void SaveHistograms(const Char_t* dir = 0);
     198             :   void DrawHistograms();
     199             : 
     200             :   static Float_t GetSigmaToVertex(const AliESDtrack* const esdTrack);
     201             :   static Float_t GetSigmaToVertexVTrack(const AliVTrack* const vTrack);
     202             : 
     203             :   static void EnableNeededBranches(TTree* tree);
     204             : 
     205             :   // void SaveQualityCuts(Char_t* file)
     206             :   // void LoadQualityCuts(Char_t* file)
     207             : 
     208           0 :   TH1F* GetDZNormalized(Int_t i) const { return fhDZNormalized[i]; }
     209           0 :   TH1F* GetNClustersTPC(Int_t i) const { return fhNClustersTPC[i]; }
     210           0 :   TH1F* GetPtHist(Int_t i) const { return fhPt[i]; }
     211             :   
     212             :   // TOF cuts
     213           0 :   void SetFlagCutTOFdistance(Bool_t flagTOFcut) { fFlagCutTOFdistance = flagTOFcut;}
     214           0 :   Bool_t GetFlagCutTOFdistance() const { return fFlagCutTOFdistance;}
     215           0 :   void SetCutTOFdistance(Float_t cut) { fCutTOFdistance = cut;}
     216           0 :   Float_t GetCutTOFdistance() const { return fCutTOFdistance;}
     217           0 :   void SetRequireTOFout(Bool_t b = kFALSE) {fCutRequireTOFout = b;} 
     218             :   void SetRequireStandardTOFmatchCuts();
     219             : 
     220             : protected:
     221             :   void Init(); // sets everything to 0
     222             :   Bool_t CheckITSClusterRequirement(ITSClusterRequirement req, Bool_t clusterL1, Bool_t clusterL2);
     223             :   Bool_t CheckPtDepDCA(TString dist,Bool_t print=kFALSE) const;
     224             :   void SetPtDepDCACuts(Double_t pt);
     225             : 
     226             :   enum { kNCuts = 45 }; 
     227             : 
     228             :   //######################################################
     229             :   // esd track quality cuts
     230             :   static const Char_t* fgkCutNames[kNCuts]; //! names of cuts (for internal use)
     231             :   static AliESDtrackCuts* fgMultEstTrackCuts[kNMultEstTrackCuts]; //! track cuts used for the multiplicity estimate
     232             : 
     233             :   Int_t   fCutMinNClusterTPC;         // min number of tpc clusters
     234             :   Int_t   fCutMinNClusterITS;         // min number of its clusters
     235             :   Float_t   fCutMinNCrossedRowsTPC;     // min number of tpc crossed rows
     236             :   Float_t fCutMinRatioCrossedRowsOverFindableClustersTPC; // min ratio crossed rows / findable clusters
     237             :   TFormula *f1CutMinNClustersTPCPtDep; // pt dependent tpc clusters cut
     238             :   Float_t fCutMaxPtDepNClustersTPC;     // maximum pt for pt dependend TPC cluster cut. For pt=>ptmax NClusterMin = f1CutMinNClustersTPCPtDep->Eval(fCutMaxPtDepNClustersTPC).
     239             :   Float_t fCutMinLengthActiveVolumeTPC; // mininum length (in cm) over which the track is sampled in the active volume of the TPC (outside boundaries)
     240             :   Float_t fDeadZoneWidth;             // width of the TPC dead zone (missing pads + PRF +ExB)
     241             :   // TPC geometrical cut combined with cut on crossed rows and number of clusters    
     242             :   Float_t fCutGeoNcrNclLength;        // cut on the geometical length  condition Ngeom(cm)>cutGeoNcrNclLength default=130
     243             :   Float_t fCutGeoNcrNclGeom1Pt;       // 1/pt dependence slope  cutGeoNcrNclLength:=fCutGeoNcrNclLength-abs(1/pt)^fCutGeoNcrNclGeom1Pt
     244             :   Float_t fCutGeoNcrNclFractionNcr;   // relative fraction cut Ncr  condition Ncr>cutGeoNcrNclFractionNcr*fCutGeoNcrNclLength
     245             :   Float_t fCutGeoNcrNclFractionNcl;   // ralative fraction cut Ncr  condition Ncl>cutGeoNcrNclFractionNcl
     246             :   // TPC distorted regions
     247             :   Bool_t  fCutOutDistortedRegionTPC;  // flag if distorted regions in the TPC should be cut out
     248             : 
     249             : 
     250             :   ITSClusterRequirement fCutClusterRequirementITS[3];  // detailed ITS cluster requirements for (SPD, SDD, SSD)
     251             : 
     252             :   Float_t fCutMaxChi2PerClusterTPC;   // max tpc fit chi2 per tpc cluster
     253             :   Float_t fCutMaxChi2PerClusterITS;   // max its fit chi2 per its cluster
     254             :   Float_t fCutMaxChi2TPCConstrainedVsGlobal; // max chi2 TPC track constrained with vtx vs. global track
     255             :   Int_t fCutMaxChi2TPCConstrainedVsGlobalVertexType; // vertex type for max chi2 TPC track constrained with vtx vs. global track (can be configured to accept several vertex types)
     256             :   Int_t   fCutMaxMissingITSPoints;    // max n. of missing ITS points
     257             : 
     258             :   Float_t fCutMaxC11;                 // max cov. matrix diag. elements (res. y^2)
     259             :   Float_t fCutMaxC22;                 // max cov. matrix diag. elements (res. z^2)
     260             :   Float_t fCutMaxC33;                 // max cov. matrix diag. elements (res. sin(phi)^2)
     261             :   Float_t fCutMaxC44;                 // max cov. matrix diag. elements (res. tan(theta_dip)^2)
     262             :   Float_t fCutMaxC55;                 // max cov. matrix diag. elements (res. 1/pt^2)
     263             : 
     264             :   Float_t fCutMaxRel1PtUncertainty;   // max relative uncertainty of 1/pt
     265             : 
     266             :   Bool_t  fCutAcceptKinkDaughters;    // accepting kink daughters?
     267             :   Bool_t  fCutAcceptSharedTPCClusters;// accepting shared clusters in TPC?
     268             :   Float_t fCutMaxFractionSharedTPCClusters; //Maximum fraction of shared clusters in TPC
     269             :   Bool_t  fCutRequireTPCRefit;        // require TPC refit
     270             :   Bool_t  fCutRequireTPCStandAlone;   // require TPC standalone tracks
     271             :   Bool_t  fCutRequireITSRefit;        // require ITS refit
     272             :   Bool_t  fCutRequireITSPid;          // require ITS pid
     273             :   Bool_t  fCutRequireITSStandAlone;   // require ITS standalone tracks (remove pure SA)
     274             :   Bool_t  fCutRequireITSpureSA;       // require ITS pure standalone tracks (found using all ITS clusters)
     275             : 
     276             : 
     277             :   // track to vertex cut
     278             :   Float_t fCutNsigmaToVertex;         // max number of estimated sigma from track-to-vertex
     279             :   Bool_t  fCutSigmaToVertexRequired;  // cut track if sigma from track-to-vertex could not be calculated
     280             :   Float_t fCutMaxDCAToVertexXY;       // track-to-vertex cut in max absolute distance in xy-plane
     281             :   Float_t fCutMaxDCAToVertexZ;        // track-to-vertex cut in max absolute distance in z-plane
     282             :   Float_t fCutMinDCAToVertexXY;       // track-to-vertex cut on min absolute distance in xy-plane
     283             :   Float_t fCutMinDCAToVertexZ;        // track-to-vertex cut on min absolute distance in z-plane
     284             :   // 
     285             :   TString fCutMaxDCAToVertexXYPtDep;  // pt-dep track-to-vertex cut in max absolute distance in xy-plane
     286             :   TString fCutMaxDCAToVertexZPtDep;   // pt-dep track-to-vertex cut in max absolute distance in z-plane
     287             :   TString fCutMinDCAToVertexXYPtDep;  // pt-dep track-to-vertex cut on min absolute distance in xy-plane
     288             :   TString fCutMinDCAToVertexZPtDep;   // pt-dep track-to-vertex cut on min absolute distance in z-plane
     289             : 
     290             :   // only internal use, set via strings above
     291             :   TFormula *f1CutMaxDCAToVertexXYPtDep;  // pt-dep track-to-vertex cut in max absolute distance in xy-plane
     292             :   TFormula *f1CutMaxDCAToVertexZPtDep;   // pt-dep track-to-vertex cut in max absolute distance in z-plane
     293             :   TFormula *f1CutMinDCAToVertexXYPtDep;  // pt-dep track-to-vertex cut on min absolute distance in xy-plane
     294             :   TFormula *f1CutMinDCAToVertexZPtDep;   // pt-dep track-to-vertex cut on min absolute distance in z-plane
     295             : 
     296             :   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
     297             : 
     298             :   // esd kinematics cuts
     299             :   Float_t fPMin,   fPMax;             // definition of the range of the P
     300             :   Float_t fPtMin,  fPtMax;            // definition of the range of the Pt
     301             :   Float_t fPxMin,  fPxMax;            // definition of the range of the Px
     302             :   Float_t fPyMin,  fPyMax;            // definition of the range of the Py
     303             :   Float_t fPzMin,  fPzMax;            // definition of the range of the Pz
     304             :   Float_t fEtaMin, fEtaMax;           // definition of the range of the eta
     305             :   Float_t fRapMin, fRapMax;           // definition of the range of the y
     306             : 
     307             :   Bool_t  fCutRequireTOFout;        // require TOF out 
     308             :   Bool_t  fFlagCutTOFdistance;       // cut on TOFdistance? --> yes by default!
     309             :   Float_t fCutTOFdistance;           // value of the cut on TOFdistance
     310             :   static Char_t fgBeamTypeFlag;      // -1 --> no check done on the beam type yet
     311             :                                      // 0 --> beam type != "A-A"
     312             :                                      // 1  --> beam type == "A-A"
     313             :    
     314             :   //######################################################
     315             :   // diagnostics histograms
     316             :   Bool_t fHistogramsOn;               // histograms on/off
     317             : 
     318             :   TH1F* fhNClustersITS[2];            //->
     319             :   TH1F* fhNClustersTPC[2];            //->
     320             :   TH1F* fhNSharedClustersTPC[2];      //->
     321             :   TH1F* fhNCrossedRowsTPC[2];         //->
     322             :   TH1F* fhRatioCrossedRowsOverFindableClustersTPC[2]; // ->
     323             : 
     324             :   TH1F* fhChi2PerClusterITS[2];       //->
     325             :   TH1F* fhChi2PerClusterTPC[2];       //->
     326             :   TH1F* fhChi2TPCConstrainedVsGlobal[2];       //->
     327             :   TH1F* fhNClustersForITSPID[2];      //-> number of points in SDD+SSD (ITS PID selection)
     328             :   TH1F* fhNMissingITSPoints[2];       //-> number of missing ITS points
     329             : 
     330             :   TH1F* fhC11[2];                     //->
     331             :   TH1F* fhC22[2];                     //->
     332             :   TH1F* fhC33[2];                     //->
     333             :   TH1F* fhC44[2];                     //->
     334             :   TH1F* fhC55[2];                     //->
     335             : 
     336             :   TH1F* fhRel1PtUncertainty[2];       //-> rel. uncertainty of 1/pt
     337             : 
     338             :   TH1F* fhDXY[2];                     //->
     339             :   TH1F* fhDZ[2];                      //->
     340             :   TH1F* fhDXYDZ[2];                   //-> absolute distance sqrt(dxy**2 + dz**2) to vertex; if 2D cut is set, normalized to given values
     341             :   TH2F* fhDXYvsDZ[2];                 //->
     342             : 
     343             :   TH1F* fhDXYNormalized[2];           //->
     344             :   TH1F* fhDZNormalized[2];            //->
     345             :   TH2F* fhDXYvsDZNormalized[2];       //->
     346             :   TH1F* fhNSigmaToVertex[2];          //->
     347             : 
     348             :   TH1F* fhPt[2];                      //-> pt of esd tracks
     349             :   TH1F* fhEta[2];                     //-> eta of esd tracks
     350             : 
     351             :   TF1*  ffDTheoretical;               //-> theoretical distance to vertex normalized (2d gauss)
     352             : 
     353             :   TH1F*  fhCutStatistics;             //-> statistics of what cuts the tracks did not survive
     354             :   TH2F*  fhCutCorrelation;            //-> 2d statistics plot
     355             : 
     356             :   TH2F* fhTOFdistance[2];            //-> TOF signal distance dx vs dz
     357             : 
     358         218 :   ClassDef(AliESDtrackCuts, 23)
     359             : };
     360             : 
     361             : 
     362             : #endif

Generated by: LCOV version 1.11