ROOT logo
// $Id$
// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007

/**************************************************************************
 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
 * full copyright notice.                                                 *
 **************************************************************************/

#include "AliEveHOMERSourceMap.h"
#include "AliEveHOMERSourceMapByDet.h"
#include "AliEveHOMERSourceMapByType.h"

//______________________________________________________________________
//
// AliEveHOMERSourceMap is an abstract container for HLT HOMER sources,
// see AliHLTHOMERSourceDesc.
//
// The concrete implementations AliEveHOMERSourceMapByDet and
// AliEveHOMERSourceMapByType allow retrieval of HOMER sources in proper
// order as required for their display in EVE object browser.
// 

ClassImp(AliEveHOMERSourceMap)

AliEveHOMERSourceMap::AliEveHOMERSourceMap(ESourceGrouping_e grouping) :
  fGrouping(grouping)
{
  // Constructor.
}

AliEveHOMERSourceMap* AliEveHOMERSourceMap::Create(ESourceGrouping_e grouping)
{
  // Static constructor - instantiates appropriate sub-class.

  switch (grouping)
  {
    case kSG_ByDet:  return new AliEveHOMERSourceMapByDet(grouping);
    case kSG_ByType: return new AliEveHOMERSourceMapByType(grouping);
  }
  return 0;
}

Int_t AliEveHOMERSourceMap::iterator::level()
{
  // Returns the depth in iteration:
  // Det / Sub-Det / Sub-Sub-Det / Data-Type.

  const AliEveHOMERSource::SourceId& sid = id();

  Int_t lvl = 0;
  if ( ! sid.fDet.IsNull())   ++lvl;
  if ( ! sid.fSDet.IsNull())  ++lvl;
  if ( ! sid.fSSDet.IsNull()) ++lvl;
  if ( ! sid.fType.IsNull())  ++lvl;
  return lvl;
}

void AliEveHOMERSourceMap::PrintXXX()
{
  // Print entries in the map.

  for (iterator i = begin(); i != end(); ++i)
  {
    printf("%*s%s [state=%d, handle=0x%lx] {ssdet='%s'}\n", 4*i.level(), "",
	   i.description().Data(), i.state().fState,
	   (ULong_t) i.state().fHandle,
	   i.id().fSSDet.Data());
  }
}
 AliEveHOMERSourceMap.cxx:1
 AliEveHOMERSourceMap.cxx:2
 AliEveHOMERSourceMap.cxx:3
 AliEveHOMERSourceMap.cxx:4
 AliEveHOMERSourceMap.cxx:5
 AliEveHOMERSourceMap.cxx:6
 AliEveHOMERSourceMap.cxx:7
 AliEveHOMERSourceMap.cxx:8
 AliEveHOMERSourceMap.cxx:9
 AliEveHOMERSourceMap.cxx:10
 AliEveHOMERSourceMap.cxx:11
 AliEveHOMERSourceMap.cxx:12
 AliEveHOMERSourceMap.cxx:13
 AliEveHOMERSourceMap.cxx:14
 AliEveHOMERSourceMap.cxx:15
 AliEveHOMERSourceMap.cxx:16
 AliEveHOMERSourceMap.cxx:17
 AliEveHOMERSourceMap.cxx:18
 AliEveHOMERSourceMap.cxx:19
 AliEveHOMERSourceMap.cxx:20
 AliEveHOMERSourceMap.cxx:21
 AliEveHOMERSourceMap.cxx:22
 AliEveHOMERSourceMap.cxx:23
 AliEveHOMERSourceMap.cxx:24
 AliEveHOMERSourceMap.cxx:25
 AliEveHOMERSourceMap.cxx:26
 AliEveHOMERSourceMap.cxx:27
 AliEveHOMERSourceMap.cxx:28
 AliEveHOMERSourceMap.cxx:29
 AliEveHOMERSourceMap.cxx:30
 AliEveHOMERSourceMap.cxx:31
 AliEveHOMERSourceMap.cxx:32
 AliEveHOMERSourceMap.cxx:33
 AliEveHOMERSourceMap.cxx:34
 AliEveHOMERSourceMap.cxx:35
 AliEveHOMERSourceMap.cxx:36
 AliEveHOMERSourceMap.cxx:37
 AliEveHOMERSourceMap.cxx:38
 AliEveHOMERSourceMap.cxx:39
 AliEveHOMERSourceMap.cxx:40
 AliEveHOMERSourceMap.cxx:41
 AliEveHOMERSourceMap.cxx:42
 AliEveHOMERSourceMap.cxx:43
 AliEveHOMERSourceMap.cxx:44
 AliEveHOMERSourceMap.cxx:45
 AliEveHOMERSourceMap.cxx:46
 AliEveHOMERSourceMap.cxx:47
 AliEveHOMERSourceMap.cxx:48
 AliEveHOMERSourceMap.cxx:49
 AliEveHOMERSourceMap.cxx:50
 AliEveHOMERSourceMap.cxx:51
 AliEveHOMERSourceMap.cxx:52
 AliEveHOMERSourceMap.cxx:53
 AliEveHOMERSourceMap.cxx:54
 AliEveHOMERSourceMap.cxx:55
 AliEveHOMERSourceMap.cxx:56
 AliEveHOMERSourceMap.cxx:57
 AliEveHOMERSourceMap.cxx:58
 AliEveHOMERSourceMap.cxx:59
 AliEveHOMERSourceMap.cxx:60
 AliEveHOMERSourceMap.cxx:61
 AliEveHOMERSourceMap.cxx:62
 AliEveHOMERSourceMap.cxx:63
 AliEveHOMERSourceMap.cxx:64
 AliEveHOMERSourceMap.cxx:65
 AliEveHOMERSourceMap.cxx:66
 AliEveHOMERSourceMap.cxx:67
 AliEveHOMERSourceMap.cxx:68
 AliEveHOMERSourceMap.cxx:69
 AliEveHOMERSourceMap.cxx:70