]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FEMTOSCOPY/AliFemto/AliFemtoEventReader.h
Migration of PWG2/FEMTOSCOPY to PWGCF/FEMTOSCOPY
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / AliFemto / AliFemtoEventReader.h
1 ////////////////////////////////////////////////////////////////////////////////
2 /// AliFemtoEventReader - the pure virtual base class for the event reader   ///
3 /// All event readers must inherit from this one                             ///
4 ////////////////////////////////////////////////////////////////////////////////
5 #ifndef ALIFEMTOEVENTREADER_H
6 #define ALIFEMTOEVENTREADER_H
7
8 class AliFemtoEvent;
9 class AliFemtoEventCut;
10 class AliFemtoTrackCut;
11 class AliFemtoV0Cut;
12 class AliFemtoXiCut;
13 class AliFemtoKinkCut;
14
15 #include "AliFemtoString.h"
16 #include <iostream>
17 #include <fstream>
18 #include <stdio.h>
19
20 using namespace std;
21
22 class AliFemtoEventReader {
23   
24  public:
25   // even tho it's only a base class and never constructed, if you don't have an implementation,
26   // you get "AliFemtoEventReader type_info node" upon dynamical loading
27   AliFemtoEventReader() : fEventCut(0), fTrackCut(0), fV0Cut(0), fXiCut(0), fKinkCut(0), fReaderStatus(0), fDebug(1) { /* no-op */ };
28   AliFemtoEventReader(const AliFemtoEventReader& aReader);
29   virtual ~AliFemtoEventReader(){/* no-op */}
30   
31   AliFemtoEventReader& operator=(const AliFemtoEventReader& aReader);
32   
33   virtual AliFemtoEvent* ReturnHbtEvent() =0;
34
35   virtual AliFemtoString Report();    // user-written method to return string describing reader
36                                       // Including whatever "early" cuts are being done
37
38   // this next method does NOT need to be implemented, in which case the 
39   // "default" method below is executed
40   virtual int WriteHbtEvent(AliFemtoEvent*){cout << "No WriteHbtEvent implemented\n"; return (0);}
41
42   // these next two are optional but would make sense for, e.g., opening and closing a file
43   virtual int Init(const char* ReadWrite, AliFemtoString& Message);
44   virtual void Finish(){/*no-op*/};
45   
46   int Status() const {return fReaderStatus;} // AliFemtoManager looks at this for guidance if it gets null pointer from ReturnHbtEvent
47
48   virtual void SetEventCut(AliFemtoEventCut* ecut);
49   virtual void SetTrackCut(AliFemtoTrackCut* pcut);
50   virtual void SetV0Cut(AliFemtoV0Cut* pcut);
51   virtual void SetXiCut(AliFemtoXiCut* pcut);
52   virtual void SetKinkCut(AliFemtoKinkCut* pcut);
53   virtual AliFemtoEventCut* EventCut();
54   virtual AliFemtoTrackCut* TrackCut();
55   virtual AliFemtoV0Cut*    V0Cut();
56   virtual AliFemtoXiCut*    XiCut();
57   virtual AliFemtoKinkCut*    KinkCut();
58
59   /* control of debug informations print out, my rule is: */
60   /* 0: no output at all                                  */
61   /* 1: once (e.g. in constructor, finsh                  */
62   /* 2: once per event                                    */
63   /* 3: once per track                                    */
64   /* 4: once per pair                                     */
65   int Debug() const {return fDebug;} 
66   void SetDebug(int d){fDebug=d;}
67
68 protected:
69   AliFemtoEventCut* fEventCut;     //! link to the front-loaded event cut
70   AliFemtoTrackCut* fTrackCut;     //! link to the front-loaded track cut
71   AliFemtoV0Cut* fV0Cut;           //! link to the front-loaded V0 cut
72   AliFemtoXiCut* fXiCut;           //! link to the front-loaded Xi cut
73   AliFemtoKinkCut* fKinkCut;       //! link to the front-loaded Kink cut
74   int fReaderStatus;               // 0="good"
75   int fDebug;                      // Debug information level
76 #ifdef __ROOT__
77   ClassDef(AliFemtoEventReader,0)
78 #endif
79 };
80
81 #endif
82