Coverity
[u/mrichter/AliRoot.git] / EVE / EveHLT / AliEveHOMERSourceMap.cxx
CommitLineData
a15e6d7d 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"
0e21a96f 11#include "AliEveHOMERSourceMapByDet.h"
12#include "AliEveHOMERSourceMapByType.h"
a15e6d7d 13
14//______________________________________________________________________
a15e6d7d 15//
ca8fb7ae 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//
a15e6d7d 23
24ClassImp(AliEveHOMERSourceMap)
25
26AliEveHOMERSourceMap::AliEveHOMERSourceMap(ESourceGrouping_e grouping) :
27 fGrouping(grouping)
28{
ca8fb7ae 29 // Constructor.
a15e6d7d 30}
31
32AliEveHOMERSourceMap* AliEveHOMERSourceMap::Create(ESourceGrouping_e grouping)
33{
ca8fb7ae 34 // Static constructor - instantiates appropriate sub-class.
35
a15e6d7d 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
44Int_t AliEveHOMERSourceMap::iterator::level()
45{
ca8fb7ae 46 // Returns the depth in iteration:
47 // Det / Sub-Det / Sub-Sub-Det / Data-Type.
48
a15e6d7d 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
59void AliEveHOMERSourceMap::PrintXXX()
60{
ca8fb7ae 61 // Print entries in the map.
62
a15e6d7d 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}