ROOT logo
#ifndef ALIFILTEREDTREEACCEPTANCECUTS_H
#define ALIFILTEREDTREEACCEPTANCECUTS_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 AliFilteredTreeAcceptanceCuts : public AliAnalysisCuts
{
public:
  AliFilteredTreeAcceptanceCuts(const Char_t* name ="AliFilteredTreeAcceptanceCuts", const Char_t *title ="");
  virtual ~AliFilteredTreeAcceptanceCuts(); 
 
  // setters 
  void SetEtaRange(Float_t min=-1e99, Float_t max=1e99)  { fMinEta=min; fMaxEta=max; }
  void SetPhiRange(Float_t min=-1e99, Float_t max=1e99)  { fMinPhi=min; fMaxPhi=max;}
  void SetPtRange(Float_t min=-1e99, Float_t max=1e99)   { fMinPt=min;  fMaxPt=max;}
  void SetExcludeEtaPhiRange(Float_t etaMin, Float_t etaMax, Float_t phiMin, Float_t phiMax)
  	{ fExcludeMinEta = etaMin; fExcludeMaxEta = etaMax; fExcludeMinPhi = phiMin; fExcludeMaxPhi = phiMax; fCheckRange=kTRUE; }
  void SetExcludeEtaPhiRange2(Float_t etaMin, Float_t etaMax, Float_t phiMin, Float_t phiMax)
  	{ fExcludeMinEta2 = etaMin; fExcludeMaxEta2 = etaMax; fExcludeMinPhi2 = phiMin; fExcludeMaxPhi2 = phiMax; fCheckRange=kTRUE; }  	

  void SetMaxDCAr(Float_t max=1e99) { fMaxDCAr=max;}
  void SetMaxDCAz(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
 
  AliFilteredTreeAcceptanceCuts(const AliFilteredTreeAcceptanceCuts&); // not implemented
  AliFilteredTreeAcceptanceCuts& operator=(const AliFilteredTreeAcceptanceCuts&); // not implemented

  ClassDef(AliFilteredTreeAcceptanceCuts, 1)
};

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