]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/Reve/NLTBases.h
Dummy methods DefineParticle required by the interface added.
[u/mrichter/AliRoot.git] / EVE / Reve / NLTBases.h
1 // $Header$
2
3 #ifndef REVE_NLTBases_H
4 #define REVE_NLTBases_H
5
6 #include <Reve/Reve.h>
7
8 #include <list>
9
10 class TBuffer3D;
11
12 namespace Reve {
13
14 class NLTProjected;
15 class NLTProjector;
16
17 ////////////////////////////////////////////////////////////////
18 //                                                            //
19 // NLTProjectable                                             //
20 //                                                            //
21 // Abstract base class for non-linear projectable objects.    //
22 //                                                            //
23 ////////////////////////////////////////////////////////////////
24
25 class NLTProjectable
26 {
27 private:
28   NLTProjectable(const NLTProjectable&);            // Not implemented
29   NLTProjectable& operator=(const NLTProjectable&); // Not implemented
30
31 protected:
32   std::list<NLTProjected*> fProjectedList; // references to projected instances.
33
34 public:
35   NLTProjectable();
36   virtual ~NLTProjectable();
37
38   virtual TClass* ProjectedClass() const = 0;
39
40   virtual void AddProjected(NLTProjected* p)    { fProjectedList.push_back(p); }
41   virtual void RemoveProjected(NLTProjected* p) { fProjectedList.remove(p); }
42
43   ClassDef(NLTProjectable, 0); // Abstract base class for non-linear projectable objects.  
44 }; // endclass NLTProjectable
45
46 ////////////////////////////////////////////////////////////////
47 //                                                            //
48 // NLTProjected                                               //
49 //                                                            //
50 // Abstract base class for non-linear projected objects.      //
51 //                                                            //
52 ////////////////////////////////////////////////////////////////
53
54 class NLTProjected
55 {
56 private:
57   NLTProjected(const NLTProjected&);            // Not implemented
58   NLTProjected& operator=(const NLTProjected&); // Not implemented
59
60 protected:
61   NLTProjector   *fProjector;     // manager
62   NLTProjectable *fProjectable;   // link to original object
63   Float_t         fDepth;         // z coordinate
64
65 public:
66   NLTProjected();
67   virtual ~NLTProjected();
68
69   virtual void SetProjection(NLTProjector* proj, NLTProjectable* model);
70   virtual void UnRefProjectable(NLTProjectable* assumed_parent);
71
72   virtual void SetDepth(Float_t d) { fDepth = d; }
73
74   virtual void UpdateProjection() = 0;
75
76   ClassDef(NLTProjected, 0); // Abstract base class for non-linear projected object. 
77 }; // endclass NLTProjected
78
79 }
80
81 #endif