ROOT logo
#ifndef ALIDNDPTBACKGROUNDCUTS_H
#define ALIDNDPTBACKGROUNDCUTS_H

//------------------------------------------------------------------------------
// Class to keep selection cuts for 
// cosmic and kinks and splitted tracks. 
// 
// Author: J.Otwinowski 25/01/2010
//------------------------------------------------------------------------------

class TParticle;
class AliESDtrack;
class AliExternalTrackParam;

#include "AliAnalysisCuts.h"

class AlidNdPtBackgroundCuts : public AliAnalysisCuts
{
public:
  AlidNdPtBackgroundCuts(const Char_t* name ="AlidNdPtBackgroundCuts", const Char_t *title ="");
  virtual ~AlidNdPtBackgroundCuts(); 
 
  // setters 
  void SetEtaWindow(const Float_t min=-10., const Float_t max=10.)  { fMinEta=min; fMaxEta=max; }
  void SetPhiWindow(const Float_t min=0., const Float_t max=1e99)  { fMinPhi=min; fMaxPhi=max;}
  void SetPtWindow(const Float_t min=0., const Float_t max=1e99)   { fMinPt=min;  fMaxPt=max;}
  void SetMaxFracSharedClust(const Float_t max=1.)   {fMaxFracSharedClust=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;}

  Float_t GetMaxFracSharedClust() const {return fMaxFracSharedClust;}

  // Get control histo
  THnSparseF *GetControlHisto() const {return fControlHisto;} 

  // cuts init function
  void Init();

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

  //
  Bool_t IsBackgroundTrack(AliESDtrack *track1, AliESDtrack *track2);
  Bool_t IsCosmicTrack(AliESDtrack *track1, AliESDtrack *track2);
  Bool_t IsSplittedTrack(AliESDtrack *track1, AliESDtrack *track2);
  
  // Merge output objects (needed by PROOF) 
  virtual Long64_t Merge(TCollection* list);

  // fill control histograms
  void  SetHistogramsOn(Bool_t fill=kTRUE) {fFillControlHisto = fill; }
  Bool_t  IsHistogramsOn() const {return fFillControlHisto; }

private:
  Float_t fMinEta; // min pseudorapidity limit
  Float_t fMaxEta; // max pseudorapidity limit
  Float_t fMinPhi; // min azimuthal angle (rad) limit
  Float_t fMaxPhi; // max azimuthal angle (rad) limit
  Float_t fMinPt;  // min pt limit
  Float_t fMaxPt;  // max pt limit
  Float_t fMaxFracSharedClust; // max fraction of track shared clusters 

  Bool_t  fFillControlHisto;  // flag to fill control histograms 
  THnSparseF *fControlHisto;  //-> etasum:dphi:dpt:pt1:fracSharedClust1:qsum

  AlidNdPtBackgroundCuts(const AlidNdPtBackgroundCuts&); // not implemented
  AlidNdPtBackgroundCuts& operator=(const AlidNdPtBackgroundCuts&); // not implemented

  ClassDef(AlidNdPtBackgroundCuts, 1)
};

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