Merge changes from branches/dev/EVE. This branch was following development in ROOT...
[u/mrichter/AliRoot.git] / EVE / EveHLT / AliEveHOMERSource.h
1 // $Id$
2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3
4 /**************************************************************************
5  * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6  * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
7  * full copyright notice.                                                 *
8  **************************************************************************/
9
10 #ifndef AliEveAliEVEHOMERSource_H
11 #define AliEveAliEVEHOMERSource_H
12
13 #include <TEveElement.h>
14
15 #include <TNamed.h>
16
17 class AliHLTHOMERSourceDesc;
18
19 class AliEveHOMERSource : public TEveElement,
20                           public TNamed
21 {
22 private:
23   AliEveHOMERSource(const AliEveHOMERSource&);            // Not implemented
24   AliEveHOMERSource& operator=(const AliEveHOMERSource&); // Not implemented
25
26 public:
27   struct SourceId
28   {
29     TString fDet, fSDet, fSSDet, fType;
30
31     struct CmpByDet
32     {
33       bool operator()(const SourceId& s1, const SourceId& s2)
34       {
35         Int_t r;
36         if ((r = s1.fDet  .CompareTo(s2.fDet)  )) return r < 0;
37         if ((r = s1.fSDet .CompareTo(s2.fSDet) )) return r < 0;
38         if ((r = s1.fSSDet.CompareTo(s2.fSSDet))) return r < 0;
39         if ((r = s1.fType .CompareTo(s2.fType) )) return r < 0;
40         return false;
41       }
42     };
43
44     struct CmpByType
45     {
46       bool operator()(const SourceId& s1, const SourceId& s2)
47       {
48         Int_t r;
49         if ((r = s1.fType .CompareTo(s2.fType) )) return r < 0;
50         if ((r = s1.fDet  .CompareTo(s2.fDet)  )) return r < 0;
51         if ((r = s1.fSDet .CompareTo(s2.fSDet) )) return r < 0;
52         if ((r = s1.fSSDet.CompareTo(s2.fSSDet))) return r < 0;
53         return false;
54       }
55     };
56
57   };
58
59   struct SourceState
60   {
61     Bool_t                  fState;
62     AliHLTHOMERSourceDesc  *fHandle;
63
64     SourceState() : fState(kFALSE), fHandle(0) {}
65     SourceState(Bool_t state) : fState(state), fHandle(0) {}
66   };
67
68 protected:
69   const SourceId    *fSrcId;
70         SourceState *fSrcState;
71
72 public:
73   AliEveHOMERSource(const Text_t* n="HOMER Source", const Text_t* t="");
74   virtual ~AliEveHOMERSource() {}
75
76   const SourceId* GetSourceId() const  { return fSrcId; }
77   void SetSourceId(const SourceId* id) { fSrcId = id; }
78
79   SourceState* GetSourceState() const  { return fSrcState; }
80   void SetSourceState(SourceState* st) { fSrcState = st; TEveElement::SetRnrState(st->fState); }
81
82   void SetSource(const SourceId* id, SourceState* st) { fSrcId = id; fSrcState = st; TEveElement::SetRnrState(st->fState); }
83
84   virtual Bool_t SingleRnrState() const { return kTRUE; }
85   virtual void   SetRnrState(Bool_t rnr);
86
87   ClassDef(AliEveHOMERSource, 1);
88 }; // endclass AliEveHOMERSource
89
90 #endif