Coverity
[u/mrichter/AliRoot.git] / EVE / EveHLT / AliEveHOMERSourceMap.cxx
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 #include "AliEveHOMERSourceMap.h"
11 #include "AliEveHOMERSourceMapByDet.h"
12 #include "AliEveHOMERSourceMapByType.h"
13
14 //______________________________________________________________________
15 //
16 // AliEveHOMERSourceMap is an abstract container for HLT HOMER sources,
17 // see AliHLTHOMERSourceDesc.
18 //
19 // The concrete implementations AliEveHOMERSourceMapByDet and
20 // AliEveHOMERSourceMapByType allow retrieval of HOMER sources in proper
21 // order as required for their display in EVE object browser.
22 // 
23
24 ClassImp(AliEveHOMERSourceMap)
25
26 AliEveHOMERSourceMap::AliEveHOMERSourceMap(ESourceGrouping_e grouping) :
27   fGrouping(grouping)
28 {
29   // Constructor.
30 }
31
32 AliEveHOMERSourceMap* AliEveHOMERSourceMap::Create(ESourceGrouping_e grouping)
33 {
34   // Static constructor - instantiates appropriate sub-class.
35
36   switch (grouping)
37   {
38     case kSG_ByDet:  return new AliEveHOMERSourceMapByDet(grouping);
39     case kSG_ByType: return new AliEveHOMERSourceMapByType(grouping);
40   }
41   return 0;
42 }
43
44 Int_t AliEveHOMERSourceMap::iterator::level()
45 {
46   // Returns the depth in iteration:
47   // Det / Sub-Det / Sub-Sub-Det / Data-Type.
48
49   const AliEveHOMERSource::SourceId& sid = id();
50
51   Int_t lvl = 0;
52   if ( ! sid.fDet.IsNull())   ++lvl;
53   if ( ! sid.fSDet.IsNull())  ++lvl;
54   if ( ! sid.fSSDet.IsNull()) ++lvl;
55   if ( ! sid.fType.IsNull())  ++lvl;
56   return lvl;
57 }
58
59 void AliEveHOMERSourceMap::PrintXXX()
60 {
61   // Print entries in the map.
62
63   for (iterator i = begin(); i != end(); ++i)
64   {
65     printf("%*s%s [state=%d, handle=0x%lx] {ssdet='%s'}\n", 4*i.level(), "",
66            i.description().Data(), i.state().fState,
67            (ULong_t) i.state().fHandle,
68            i.id().fSSDet.Data());
69   }
70 }