ROOT logo
#ifndef ALIDNDPTACCEPTANCECUTS_H
#define ALIDNDPTACCEPTANCECUTS_H

//------------------------------------------------------------------------------
// Class to keep selection cuts for MC tracks. 
// 
// Author: J.Otwinowski 03/11/2008 
// last change: 2011-04-04 by M.Knichel
//------------------------------------------------------------------------------

class TParticle;
class AliESDtrack;
class AliExternalTrackParam;

#include "AliAnalysisCuts.h"

class AlidNdPtAcceptanceCuts : public AliAnalysisCuts
{
public:
  AlidNdPtAcceptanceCuts(const Char_t* name ="AlidNdPtAcceptanceCuts", const Char_t *title ="");
  virtual ~AlidNdPtAcceptanceCuts(); 
 
  // setters 
  void SetEtaRange(const Float_t min=-1e99, const Float_t max=1e99)  { fMinEta=min; fMaxEta=max; }
  void SetPhiRange(const Float_t min=-1e99, const Float_t max=1e99)  { fMinPhi=min; fMaxPhi=max;}
  void SetPtRange(const Float_t min=-1e99, const Float_t max=1e99)   { fMinPt=min;  fMaxPt=max;}
  void SetExcludeEtaPhiRange(const Float_t etaMin, const Float_t etaMax, const Float_t phiMin, const Float_t phiMax)
  	{ fExcludeMinEta = etaMin; fExcludeMaxEta = etaMax; fExcludeMinPhi = phiMin; fExcludeMaxPhi = phiMax; fCheckRange=kTRUE; }
  void SetExcludeEtaPhiRange2(const Float_t etaMin, const Float_t etaMax, const Float_t phiMin, const Float_t phiMax)
  	{ fExcludeMinEta2 = etaMin; fExcludeMaxEta2 = etaMax; fExcludeMinPhi2 = phiMin; fExcludeMaxPhi2 = phiMax; fCheckRange=kTRUE; }  	

  void SetMaxDCAr(const Float_t max=1e99) { fMaxDCAr=max;}
  void SetMaxDCAz(const Float_t max=1e99) { fMaxDCAz=max;}

  // getters 
  Float_t GetMinEta() const {return fMinEta;}
  Float_t GetMaxEta() const {return fMaxEta;}
  Float_t GetMinPhi() const {return fMinPhi;}
  Float_t GetMaxPhi() const {return fMaxPhi;}
  Float_t GetMinPt() const {return fMinPt;}
  Float_t GetMaxPt() const {return fMaxPt;}
  
  Bool_t  GetCheckRange() const { return fCheckRange; }
  Float_t GetExcludeMinEta() const { return fExcludeMinEta; }
  Float_t GetExcludeMaxEta() const { return fExcludeMaxEta; }
  Float_t GetExcludeMinPhi() const { return fExcludeMinPhi; }
  Float_t GetExcludeMaxPhi() const { return fExcludeMaxPhi; }  

  Float_t GetMaxDCAr() const {return fMaxDCAr;}
  Float_t GetMaxDCAz() const {return fMaxDCAz;}

  // cuts init function
  void Init();

  // check MC tracks
  virtual Bool_t IsSelected(TObject *) {return kTRUE;}
  virtual Bool_t IsSelected(TList *) {return kTRUE;}

  //
  Bool_t AcceptTrack(AliESDtrack *track);
  Bool_t AcceptTrackLocalTPC(AliESDtrack *track);
  Bool_t AcceptTrack(AliExternalTrackParam *track);
  Bool_t AcceptTrack(TParticle *particle);
  
  // Merge output objects (needed by PROOF) 
  virtual Long64_t Merge(TCollection* list);

private:
  Float_t fMinEta; // min pseudorapidity 
  Float_t fMaxEta; // max pseudorapidity
  Float_t fMinPhi; // min azimuthal angle (rad)
  Float_t fMaxPhi; // max azimuthal angle (rad)
  Float_t fMinPt;  // min pt
  Float_t fMaxPt;  // max pt
  
  Float_t fExcludeMinEta;
  Float_t fExcludeMaxEta;
  Float_t fExcludeMinPhi;
  Float_t fExcludeMaxPhi;
  Float_t fExcludeMinEta2;
  Float_t fExcludeMaxEta2;
  Float_t fExcludeMinPhi2;
  Float_t fExcludeMaxPhi2;  
  Bool_t  fCheckRange;

  // max DCAr and DCAz with respect
  // to nominal vertex position
  Float_t fMaxDCAr; // min DCAr
  Float_t fMaxDCAz; // max DCAz
 
  AlidNdPtAcceptanceCuts(const AlidNdPtAcceptanceCuts&); // not implemented
  AlidNdPtAcceptanceCuts& operator=(const AlidNdPtAcceptanceCuts&); // not implemented

  ClassDef(AlidNdPtAcceptanceCuts, 3)
};

#endif // 
 AlidNdPtAcceptanceCuts.h:1
 AlidNdPtAcceptanceCuts.h:2
 AlidNdPtAcceptanceCuts.h:3
 AlidNdPtAcceptanceCuts.h:4
 AlidNdPtAcceptanceCuts.h:5
 AlidNdPtAcceptanceCuts.h:6
 AlidNdPtAcceptanceCuts.h:7
 AlidNdPtAcceptanceCuts.h:8
 AlidNdPtAcceptanceCuts.h:9
 AlidNdPtAcceptanceCuts.h:10
 AlidNdPtAcceptanceCuts.h:11
 AlidNdPtAcceptanceCuts.h:12
 AlidNdPtAcceptanceCuts.h:13
 AlidNdPtAcceptanceCuts.h:14
 AlidNdPtAcceptanceCuts.h:15
 AlidNdPtAcceptanceCuts.h:16
 AlidNdPtAcceptanceCuts.h:17
 AlidNdPtAcceptanceCuts.h:18
 AlidNdPtAcceptanceCuts.h:19
 AlidNdPtAcceptanceCuts.h:20
 AlidNdPtAcceptanceCuts.h:21
 AlidNdPtAcceptanceCuts.h:22
 AlidNdPtAcceptanceCuts.h:23
 AlidNdPtAcceptanceCuts.h:24
 AlidNdPtAcceptanceCuts.h:25
 AlidNdPtAcceptanceCuts.h:26
 AlidNdPtAcceptanceCuts.h:27
 AlidNdPtAcceptanceCuts.h:28
 AlidNdPtAcceptanceCuts.h:29
 AlidNdPtAcceptanceCuts.h:30
 AlidNdPtAcceptanceCuts.h:31
 AlidNdPtAcceptanceCuts.h:32
 AlidNdPtAcceptanceCuts.h:33
 AlidNdPtAcceptanceCuts.h:34
 AlidNdPtAcceptanceCuts.h:35
 AlidNdPtAcceptanceCuts.h:36
 AlidNdPtAcceptanceCuts.h:37
 AlidNdPtAcceptanceCuts.h:38
 AlidNdPtAcceptanceCuts.h:39
 AlidNdPtAcceptanceCuts.h:40
 AlidNdPtAcceptanceCuts.h:41
 AlidNdPtAcceptanceCuts.h:42
 AlidNdPtAcceptanceCuts.h:43
 AlidNdPtAcceptanceCuts.h:44
 AlidNdPtAcceptanceCuts.h:45
 AlidNdPtAcceptanceCuts.h:46
 AlidNdPtAcceptanceCuts.h:47
 AlidNdPtAcceptanceCuts.h:48
 AlidNdPtAcceptanceCuts.h:49
 AlidNdPtAcceptanceCuts.h:50
 AlidNdPtAcceptanceCuts.h:51
 AlidNdPtAcceptanceCuts.h:52
 AlidNdPtAcceptanceCuts.h:53
 AlidNdPtAcceptanceCuts.h:54
 AlidNdPtAcceptanceCuts.h:55
 AlidNdPtAcceptanceCuts.h:56
 AlidNdPtAcceptanceCuts.h:57
 AlidNdPtAcceptanceCuts.h:58
 AlidNdPtAcceptanceCuts.h:59
 AlidNdPtAcceptanceCuts.h:60
 AlidNdPtAcceptanceCuts.h:61
 AlidNdPtAcceptanceCuts.h:62
 AlidNdPtAcceptanceCuts.h:63
 AlidNdPtAcceptanceCuts.h:64
 AlidNdPtAcceptanceCuts.h:65
 AlidNdPtAcceptanceCuts.h:66
 AlidNdPtAcceptanceCuts.h:67
 AlidNdPtAcceptanceCuts.h:68
 AlidNdPtAcceptanceCuts.h:69
 AlidNdPtAcceptanceCuts.h:70
 AlidNdPtAcceptanceCuts.h:71
 AlidNdPtAcceptanceCuts.h:72
 AlidNdPtAcceptanceCuts.h:73
 AlidNdPtAcceptanceCuts.h:74
 AlidNdPtAcceptanceCuts.h:75
 AlidNdPtAcceptanceCuts.h:76
 AlidNdPtAcceptanceCuts.h:77
 AlidNdPtAcceptanceCuts.h:78
 AlidNdPtAcceptanceCuts.h:79
 AlidNdPtAcceptanceCuts.h:80
 AlidNdPtAcceptanceCuts.h:81
 AlidNdPtAcceptanceCuts.h:82
 AlidNdPtAcceptanceCuts.h:83
 AlidNdPtAcceptanceCuts.h:84
 AlidNdPtAcceptanceCuts.h:85
 AlidNdPtAcceptanceCuts.h:86
 AlidNdPtAcceptanceCuts.h:87
 AlidNdPtAcceptanceCuts.h:88
 AlidNdPtAcceptanceCuts.h:89
 AlidNdPtAcceptanceCuts.h:90
 AlidNdPtAcceptanceCuts.h:91
 AlidNdPtAcceptanceCuts.h:92
 AlidNdPtAcceptanceCuts.h:93
 AlidNdPtAcceptanceCuts.h:94
 AlidNdPtAcceptanceCuts.h:95
 AlidNdPtAcceptanceCuts.h:96
 AlidNdPtAcceptanceCuts.h:97