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

#ifndef ALIFEMTOPARTICLECUT_H
#define ALIFEMTOPARTICLECUT_H

#include "AliFemtoTypes.h"
#include "AliFemtoCutMonitorHandler.h"
#include <TObjString.h>
#include <TList.h>

class AliFemtoAnalysis;

class AliFemtoParticleCut : public AliFemtoCutMonitorHandler {

  friend class AliFemtoAnalysis;

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

  virtual AliFemtoString Report() =0;    // user-written method to return string describing cuts
  virtual TList* ListSettings();      // user-written list of settings which is stored in the result file

  double Mass(){return fMass;};       // mass of the particle being selected
  virtual void SetMass(const double& mass) {fMass = mass;};

  virtual AliFemtoParticleCut* Clone() { return 0;}

  virtual AliFemtoParticleType Type()=0;

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

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

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

inline AliFemtoParticleCut::AliFemtoParticleCut(): AliFemtoCutMonitorHandler(), fyAnalysis(0), fMass(0){}   // default constructor. - Users should write their own
inline AliFemtoParticleCut::AliFemtoParticleCut(const AliFemtoParticleCut& c): AliFemtoCutMonitorHandler(), fyAnalysis(0), fMass(0) { 
  fMass = c.fMass; fyAnalysis = 0; 
#ifdef STHBTDEBUG
  cout << " AliFemtoParticleCut::AliFemtoParticleCut(const AliFemtoParticleCut& c) - fMass: " << fMass << endl;
#endif
}
inline void AliFemtoParticleCut::SetAnalysis(AliFemtoAnalysis* analysis) { fyAnalysis = analysis; }
inline AliFemtoParticleCut& AliFemtoParticleCut::operator=(const AliFemtoParticleCut& aCut) { if (this == &aCut) return *this; fyAnalysis = aCut.fyAnalysis; fMass=aCut.fMass; return *this; }
  inline TList *AliFemtoParticleCut::ListSettings() { 
    TList *tListSetttings = new TList(); 
    char buf[100];
    snprintf(buf, 100, "AliFemtoParticleCut.mass=%f", fMass);
    TObjString *str = new TObjString(buf);
    tListSetttings->Add(str);
    return tListSetttings;
  }
  
#endif
 AliFemtoParticleCut.h:1
 AliFemtoParticleCut.h:2
 AliFemtoParticleCut.h:3
 AliFemtoParticleCut.h:4
 AliFemtoParticleCut.h:5
 AliFemtoParticleCut.h:6
 AliFemtoParticleCut.h:7
 AliFemtoParticleCut.h:8
 AliFemtoParticleCut.h:9
 AliFemtoParticleCut.h:10
 AliFemtoParticleCut.h:11
 AliFemtoParticleCut.h:12
 AliFemtoParticleCut.h:13
 AliFemtoParticleCut.h:14
 AliFemtoParticleCut.h:15
 AliFemtoParticleCut.h:16
 AliFemtoParticleCut.h:17
 AliFemtoParticleCut.h:18
 AliFemtoParticleCut.h:19
 AliFemtoParticleCut.h:20
 AliFemtoParticleCut.h:21
 AliFemtoParticleCut.h:22
 AliFemtoParticleCut.h:23
 AliFemtoParticleCut.h:24
 AliFemtoParticleCut.h:25
 AliFemtoParticleCut.h:26
 AliFemtoParticleCut.h:27
 AliFemtoParticleCut.h:28
 AliFemtoParticleCut.h:29
 AliFemtoParticleCut.h:30
 AliFemtoParticleCut.h:31
 AliFemtoParticleCut.h:32
 AliFemtoParticleCut.h:33
 AliFemtoParticleCut.h:34
 AliFemtoParticleCut.h:35
 AliFemtoParticleCut.h:36
 AliFemtoParticleCut.h:37
 AliFemtoParticleCut.h:38
 AliFemtoParticleCut.h:39
 AliFemtoParticleCut.h:40
 AliFemtoParticleCut.h:41
 AliFemtoParticleCut.h:42
 AliFemtoParticleCut.h:43
 AliFemtoParticleCut.h:44
 AliFemtoParticleCut.h:45
 AliFemtoParticleCut.h:46
 AliFemtoParticleCut.h:47
 AliFemtoParticleCut.h:48
 AliFemtoParticleCut.h:49
 AliFemtoParticleCut.h:50
 AliFemtoParticleCut.h:51
 AliFemtoParticleCut.h:52
 AliFemtoParticleCut.h:53
 AliFemtoParticleCut.h:54
 AliFemtoParticleCut.h:55
 AliFemtoParticleCut.h:56
 AliFemtoParticleCut.h:57
 AliFemtoParticleCut.h:58
 AliFemtoParticleCut.h:59
 AliFemtoParticleCut.h:60
 AliFemtoParticleCut.h:61
 AliFemtoParticleCut.h:62
 AliFemtoParticleCut.h:63
 AliFemtoParticleCut.h:64
 AliFemtoParticleCut.h:65
 AliFemtoParticleCut.h:66
 AliFemtoParticleCut.h:67
 AliFemtoParticleCut.h:68
 AliFemtoParticleCut.h:69