effc++ warnings corrected
[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     SourceId(): fDet(), fSDet(), fSSDet(), fType() {}
30     TString fDet, fSDet, fSSDet, fType;
31
32     struct CmpByDet
33     {
34       bool operator()(const SourceId& s1, const SourceId& s2)
35       {
36         Int_t r;
37         if ((r = s1.fDet  .CompareTo(s2.fDet)  )) return r < 0;
38         if ((r = s1.fSDet .CompareTo(s2.fSDet) )) return r < 0;
39         if ((r = s1.fSSDet.CompareTo(s2.fSSDet))) return r < 0;
40         if ((r = s1.fType .CompareTo(s2.fType) )) return r < 0;
41         return false;
42       }
43     };
44
45     struct CmpByType
46     {
47       bool operator()(const SourceId& s1, const SourceId& s2)
48       {
49         Int_t r;
50         if ((r = s1.fType .CompareTo(s2.fType) )) return r < 0;
51         if ((r = s1.fDet  .CompareTo(s2.fDet)  )) return r < 0;
52         if ((r = s1.fSDet .CompareTo(s2.fSDet) )) return r < 0;
53         if ((r = s1.fSSDet.CompareTo(s2.fSSDet))) return r < 0;
54         return false;
55       }
56     };
57
58   };
59
60   struct SourceState
61   {
62     Bool_t                  fState;
63     AliHLTHOMERSourceDesc  *fHandle;
64
65     SourceState() : fState(kFALSE), fHandle(0) {}
66     SourceState(Bool_t state) : fState(state), fHandle(0) {}
67   };
68
69 protected:
70   const SourceId    *fSrcId;
71         SourceState *fSrcState;
72
73 public:
74   AliEveHOMERSource(const Text_t* n="HOMER Source", const Text_t* t="");
75   virtual ~AliEveHOMERSource() {}
76
77   const SourceId* GetSourceId() const  { return fSrcId; }
78   void SetSourceId(const SourceId* id) { fSrcId = id; }
79
80   SourceState* GetSourceState() const  { return fSrcState; }
81   void SetSourceState(SourceState* st) { fSrcState = st; TEveElement::SetRnrState(st->fState); }
82
83   void SetSource(const SourceId* id, SourceState* st) { fSrcId = id; fSrcState = st; TEveElement::SetRnrState(st->fState); }
84
85   virtual Bool_t SingleRnrState() const { return kTRUE; }
86   virtual void   SetRnrState(Bool_t rnr);
87
88   ClassDef(AliEveHOMERSource, 1);
89 }; // endclass AliEveHOMERSource
90
91 #endif