ROOT logo
////////////////////////////////////////////////////////////////////////////////
/// AliFemtoPairCut - the pure virtual base class for the pair cut           ///
/// All pair cuts must inherit from this one                                 ///
////////////////////////////////////////////////////////////////////////////////

#ifndef AliFemtoPairCut_hh
#define AliFemtoPairCut_hh

#include <string>

class AliFemtoAnalysis;

#include "AliFemtoString.h"
#include "AliFemtoEvent.h"
#include "AliFemtoPair.h"
#include "AliFemtoCutMonitorHandler.h"
#include <TList.h>
#include <TObjString.h>

class AliFemtoPairCut : public AliFemtoCutMonitorHandler {

  friend class AliFemtoAnalysis;

public:
  enum DataType {kESD=0, kAOD=1, kKine=2};
  typedef enum DataType AliFemtoDataType;

  AliFemtoPairCut();   // default constructor. - Users should write their own
  AliFemtoPairCut(const AliFemtoPairCut& c); // copy constructor
  virtual ~AliFemtoPairCut(){/* no-op */};  // destructor
  AliFemtoPairCut& operator=(const AliFemtoPairCut &aCut);

  virtual bool Pass(const AliFemtoPair* pair) =0;  // true if passes, false if not

  virtual AliFemtoString Report() =0;    // user-written method to return string describing cuts
  virtual TList *ListSettings() =0;
  virtual void EventBegin(const AliFemtoEvent* aEvent);
  virtual void EventEnd(const AliFemtoEvent* aEvent);
  virtual AliFemtoPairCut* Clone() { return 0;}

  // the following allows "back-pointing" from the CorrFctn to the "parent" Analysis
  AliFemtoAnalysis* HbtAnalysis(){return fyAnalysis;};
  void SetAnalysis(AliFemtoAnalysis* aAnalysis);    // Set Back pointer to Analysis

protected:
  AliFemtoAnalysis* fyAnalysis; // Link to the base analysis class

#ifdef __ROOT__
  ClassDef(AliFemtoPairCut, 0)
#endif
};


inline AliFemtoPairCut::AliFemtoPairCut(const AliFemtoPairCut& /* c */) :  AliFemtoCutMonitorHandler(), fyAnalysis(0) {  }
inline void AliFemtoPairCut::SetAnalysis(AliFemtoAnalysis* analysis) { fyAnalysis = analysis; }
inline AliFemtoPairCut::AliFemtoPairCut(): AliFemtoCutMonitorHandler(), fyAnalysis(0) {}   // default constructor. - Users should write their own
inline AliFemtoPairCut& AliFemtoPairCut::operator=(const AliFemtoPairCut &aCut) { if (this == &aCut) return *this; fyAnalysis = aCut.fyAnalysis; return *this; }

inline void AliFemtoPairCut::EventBegin(const AliFemtoEvent* /* aEvent */ ) 
{ /* no-op */ }
inline void AliFemtoPairCut::EventEnd(const AliFemtoEvent* /* aEvent */ ) 
{ /* no-op */ }
#endif
 AliFemtoPairCut.h:1
 AliFemtoPairCut.h:2
 AliFemtoPairCut.h:3
 AliFemtoPairCut.h:4
 AliFemtoPairCut.h:5
 AliFemtoPairCut.h:6
 AliFemtoPairCut.h:7
 AliFemtoPairCut.h:8
 AliFemtoPairCut.h:9
 AliFemtoPairCut.h:10
 AliFemtoPairCut.h:11
 AliFemtoPairCut.h:12
 AliFemtoPairCut.h:13
 AliFemtoPairCut.h:14
 AliFemtoPairCut.h:15
 AliFemtoPairCut.h:16
 AliFemtoPairCut.h:17
 AliFemtoPairCut.h:18
 AliFemtoPairCut.h:19
 AliFemtoPairCut.h:20
 AliFemtoPairCut.h:21
 AliFemtoPairCut.h:22
 AliFemtoPairCut.h:23
 AliFemtoPairCut.h:24
 AliFemtoPairCut.h:25
 AliFemtoPairCut.h:26
 AliFemtoPairCut.h:27
 AliFemtoPairCut.h:28
 AliFemtoPairCut.h:29
 AliFemtoPairCut.h:30
 AliFemtoPairCut.h:31
 AliFemtoPairCut.h:32
 AliFemtoPairCut.h:33
 AliFemtoPairCut.h:34
 AliFemtoPairCut.h:35
 AliFemtoPairCut.h:36
 AliFemtoPairCut.h:37
 AliFemtoPairCut.h:38
 AliFemtoPairCut.h:39
 AliFemtoPairCut.h:40
 AliFemtoPairCut.h:41
 AliFemtoPairCut.h:42
 AliFemtoPairCut.h:43
 AliFemtoPairCut.h:44
 AliFemtoPairCut.h:45
 AliFemtoPairCut.h:46
 AliFemtoPairCut.h:47
 AliFemtoPairCut.h:48
 AliFemtoPairCut.h:49
 AliFemtoPairCut.h:50
 AliFemtoPairCut.h:51
 AliFemtoPairCut.h:52
 AliFemtoPairCut.h:53
 AliFemtoPairCut.h:54
 AliFemtoPairCut.h:55
 AliFemtoPairCut.h:56
 AliFemtoPairCut.h:57
 AliFemtoPairCut.h:58
 AliFemtoPairCut.h:59
 AliFemtoPairCut.h:60
 AliFemtoPairCut.h:61
 AliFemtoPairCut.h:62
 AliFemtoPairCut.h:63