ROOT logo
#ifndef ALIRSNCUTPIDNSIGMA_H
#define ALIRSNCUTPIDNSIGMA_H

//
// Class for n-sigma PID cuts.
// ---
// Requires:
//
// 1) the used detector, chosen from an enumeration
// 2) the reference charged particle species, chosen from AliPID enumeration
// 3) a momentum range: outside it, the cut is never passed
//

#include <TMath.h>
#include <TClonesArray.h>

#include "AliPID.h"
#include "AliESDtrack.h"

#include "AliRsnCut.h"
#include "AliRsnPIDRange.h"

class AliVTrack;
class AliPIDResponse;

class AliRsnCutPIDNSigma : public AliRsnCut {
public:

   enum EDetector {
      kITS,
      kTPC,
      kTOF,
      kDetectors
   };
   AliRsnCutPIDNSigma();
   AliRsnCutPIDNSigma(const char *name, AliPID::EParticleType species, EDetector det);
   AliRsnCutPIDNSigma(const AliRsnCutPIDNSigma &copy);
   AliRsnCutPIDNSigma &operator=(const AliRsnCutPIDNSigma &copy);
   virtual ~AliRsnCutPIDNSigma() { }

   void             SetSpecies(AliPID::EParticleType type)        {fSpecies = type;}
   void             SetDetector(EDetector det)                    {fDetector = det;}
   void             SetRejectUnmatched(Bool_t yn = kTRUE)         {fRejectUnmatched = yn;}

   AliPIDResponse  *MyPID()                                       {return fMyPID;}
   void             InitMyPID(Bool_t isMC, Bool_t isESD);

   void             SinglePIDRange(Double_t nsigma);
   void             AddPIDRange(Double_t nsigma, Double_t pmin = 0.0, Double_t pmax = 1E20);

   Bool_t           MatchITS(const AliVTrack *vtrack) const;
   Bool_t           MatchTPC(const AliVTrack *vtrack) const;
   Bool_t           MatchTOF(const AliVTrack *vtrack) const;
   Bool_t           MatchDetector(const AliVTrack *vtrack) const;

   virtual Bool_t   IsSelected(TObject *object);
   virtual void     Print(const Option_t *option = "") const;

private:

   AliPID::EParticleType   fSpecies;         //  particle species
   EDetector               fDetector;        //  detector used for PID
   Bool_t                  fRejectUnmatched; //  tracks not matched to this detector do pass the cut?
   Double_t                fTrackNSigma;     //! tmp track number of sigmas w.r. to chosen detector
   Double_t                fTrackMom;        //! track reference momentum
   AliPIDResponse         *fMyPID;           //  PID response object to be configured manyally
   TClonesArray            fRanges;          //  collection of ranges

   ClassDef(AliRsnCutPIDNSigma, 1)
};

#endif
 AliRsnCutPIDNSigma.h:1
 AliRsnCutPIDNSigma.h:2
 AliRsnCutPIDNSigma.h:3
 AliRsnCutPIDNSigma.h:4
 AliRsnCutPIDNSigma.h:5
 AliRsnCutPIDNSigma.h:6
 AliRsnCutPIDNSigma.h:7
 AliRsnCutPIDNSigma.h:8
 AliRsnCutPIDNSigma.h:9
 AliRsnCutPIDNSigma.h:10
 AliRsnCutPIDNSigma.h:11
 AliRsnCutPIDNSigma.h:12
 AliRsnCutPIDNSigma.h:13
 AliRsnCutPIDNSigma.h:14
 AliRsnCutPIDNSigma.h:15
 AliRsnCutPIDNSigma.h:16
 AliRsnCutPIDNSigma.h:17
 AliRsnCutPIDNSigma.h:18
 AliRsnCutPIDNSigma.h:19
 AliRsnCutPIDNSigma.h:20
 AliRsnCutPIDNSigma.h:21
 AliRsnCutPIDNSigma.h:22
 AliRsnCutPIDNSigma.h:23
 AliRsnCutPIDNSigma.h:24
 AliRsnCutPIDNSigma.h:25
 AliRsnCutPIDNSigma.h:26
 AliRsnCutPIDNSigma.h:27
 AliRsnCutPIDNSigma.h:28
 AliRsnCutPIDNSigma.h:29
 AliRsnCutPIDNSigma.h:30
 AliRsnCutPIDNSigma.h:31
 AliRsnCutPIDNSigma.h:32
 AliRsnCutPIDNSigma.h:33
 AliRsnCutPIDNSigma.h:34
 AliRsnCutPIDNSigma.h:35
 AliRsnCutPIDNSigma.h:36
 AliRsnCutPIDNSigma.h:37
 AliRsnCutPIDNSigma.h:38
 AliRsnCutPIDNSigma.h:39
 AliRsnCutPIDNSigma.h:40
 AliRsnCutPIDNSigma.h:41
 AliRsnCutPIDNSigma.h:42
 AliRsnCutPIDNSigma.h:43
 AliRsnCutPIDNSigma.h:44
 AliRsnCutPIDNSigma.h:45
 AliRsnCutPIDNSigma.h:46
 AliRsnCutPIDNSigma.h:47
 AliRsnCutPIDNSigma.h:48
 AliRsnCutPIDNSigma.h:49
 AliRsnCutPIDNSigma.h:50
 AliRsnCutPIDNSigma.h:51
 AliRsnCutPIDNSigma.h:52
 AliRsnCutPIDNSigma.h:53
 AliRsnCutPIDNSigma.h:54
 AliRsnCutPIDNSigma.h:55
 AliRsnCutPIDNSigma.h:56
 AliRsnCutPIDNSigma.h:57
 AliRsnCutPIDNSigma.h:58
 AliRsnCutPIDNSigma.h:59
 AliRsnCutPIDNSigma.h:60
 AliRsnCutPIDNSigma.h:61
 AliRsnCutPIDNSigma.h:62
 AliRsnCutPIDNSigma.h:63
 AliRsnCutPIDNSigma.h:64
 AliRsnCutPIDNSigma.h:65
 AliRsnCutPIDNSigma.h:66
 AliRsnCutPIDNSigma.h:67
 AliRsnCutPIDNSigma.h:68
 AliRsnCutPIDNSigma.h:69
 AliRsnCutPIDNSigma.h:70
 AliRsnCutPIDNSigma.h:71
 AliRsnCutPIDNSigma.h:72