1 ////////////////////////////////////////////////////////////////////////////////
3 // AliFemtoParticleCut - the pure virtual base class for the particle cut //
4 // All particle cuts must inherit from this one //
6 ////////////////////////////////////////////////////////////////////////////////
8 #ifndef ALIFEMTOPARTICLECUT_H
9 #define ALIFEMTOPARTICLECUT_H
11 #include "AliFemtoTypes.h"
12 #include "AliFemtoCutMonitorHandler.h"
13 #include <TObjString.h>
16 class AliFemtoAnalysis;
18 class AliFemtoParticleCut : public AliFemtoCutMonitorHandler {
20 friend class AliFemtoAnalysis;
23 AliFemtoParticleCut(); // default constructor. - Users should write their own
24 AliFemtoParticleCut(const AliFemtoParticleCut&); // copy constructor
25 virtual ~AliFemtoParticleCut(){/* no-op */}; // destructor
26 AliFemtoParticleCut& operator=(const AliFemtoParticleCut& aCut);
28 virtual AliFemtoString Report() =0; // user-written method to return string describing cuts
29 virtual TList* ListSettings(); // user-written list of settings which is stored in the result file
31 double Mass(){return fMass;}; // mass of the particle being selected
32 virtual void SetMass(const double& mass) {fMass = mass;};
34 virtual AliFemtoParticleCut* Clone() { return 0;}
36 virtual AliFemtoParticleType Type()=0;
38 // the following allows "back-pointing" from the CorrFctn to the "parent" Analysis
39 AliFemtoAnalysis* HbtAnalysis(){return fyAnalysis;};
40 void SetAnalysis(AliFemtoAnalysis*);
43 AliFemtoAnalysis* fyAnalysis; // Link to the base analysis class
47 ClassDef(AliFemtoParticleCut, 0)
51 inline AliFemtoParticleCut::AliFemtoParticleCut(): AliFemtoCutMonitorHandler(), fyAnalysis(0), fMass(0){} // default constructor. - Users should write their own
52 inline AliFemtoParticleCut::AliFemtoParticleCut(const AliFemtoParticleCut& c): AliFemtoCutMonitorHandler(), fyAnalysis(0), fMass(0) {
53 fMass = c.fMass; fyAnalysis = 0;
55 cout << " AliFemtoParticleCut::AliFemtoParticleCut(const AliFemtoParticleCut& c) - fMass: " << fMass << endl;
58 inline void AliFemtoParticleCut::SetAnalysis(AliFemtoAnalysis* analysis) { fyAnalysis = analysis; }
59 inline AliFemtoParticleCut& AliFemtoParticleCut::operator=(const AliFemtoParticleCut& aCut) { if (this == &aCut) return *this; fyAnalysis = aCut.fyAnalysis; fMass=aCut.fMass; return *this; }
60 inline TList *AliFemtoParticleCut::ListSettings() {
61 TList *tListSetttings = new TList();
63 snprintf(buf, 100, "AliFemtoParticleCut.mass=%f", fMass);
64 TObjString *str = new TObjString(buf);
65 tListSetttings->Add(str);
66 return tListSetttings;