ROOT logo
//-*- Mode: C++ -*-

// $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 "AliEveHOMERSourceList.h"
#include "AliEveHOMERSourceMap.h"
#include "AliEveHOMERManager.h"

//______________________________________________________________________________
// AliEveHOMERSourceList
//

ClassImp(AliEveHOMERSourceList)

AliEveHOMERSourceList::AliEveHOMERSourceList(const Text_t* n, const Text_t* t) :
  TEveElementList(n, t),
  fManager (0),
  fSrcMap  (0)
{

}

AliEveHOMERSourceList::~AliEveHOMERSourceList()
{
  // !!!!! delete maps
}

/******************************************************************************/

void AliEveHOMERSourceList::CreateByDet()
{
  delete fSrcMap;
  fSrcMap = AliEveHOMERSourceMap::Create(AliEveHOMERSourceMap::kSG_ByDet);
  RebuildSourceReps();
}

void AliEveHOMERSourceList::CreateByType()
{
  delete fSrcMap;
  fSrcMap = AliEveHOMERSourceMap::Create(AliEveHOMERSourceMap::kSG_ByType);
  RebuildSourceReps();
}

void AliEveHOMERSourceList::RebuildSourceReps()
{
  DestroyElements();
  TList* srcList = fManager->GetSourceList();
  fSrcMap->FillMap(srcList, 1);

  List_t parentStack;
  parentStack.push_back(this);
  Int_t parentLvl = 1;
  for (AliEveHOMERSourceMap::iterator i=fSrcMap->begin(); i!=fSrcMap->end(); ++i)
  {
    while (parentLvl > i.level()) { parentStack.pop_back(); --parentLvl; }

    AliEveHOMERSource* src = new AliEveHOMERSource(i.description());
    src->SetSource(&i.id(), &i.state());

    parentStack.back()->AddElement(src);

    parentStack.push_back(src); ++parentLvl;
    
    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());

    
  }
}


Bool_t AliEveHOMERSourceList::GetSelectedSources() {
  // Set selected source in HOMER sources list, of HOMERManager

  if ( ! fManager ) {
    printf ( "Error : no ptr to HomerManager!");
    return kFALSE;
  }
    

  Bool_t bResult = kFALSE;

  for ( AliEveHOMERSourceMap::iterator iter=fSrcMap->begin(); iter!=fSrcMap->end(); ++iter ) {

    if ( ! iter.state().fHandle ) 
      continue;
    
    fManager->SetSourceState( (AliHLTHOMERSourceDesc*) iter.state().fHandle,iter.state().fState );
    bResult = kTRUE;

#if 0 // EVE_DEBUG   
    printf("%*s%s [state=%d, handle=0x%lx] {ssdet='%s'}\n", 4*iter.level(), "",
	   iter.description().Data(), iter.state().fState,
	   (ULong_t) iter.state().fHandle,
	   iter.id().fSSDet.Data());
    
#endif
    


  }


  return bResult;
}


/******************************************************************************/
/*
void AliEveHOMERSourceList::SelectAll()
{
  EnableListElements(kTRUE, kTRUE);
}

void AliEveHOMERSourceList::DeselectAll()
{
  DisableListElements (kFALSE, kFALSE);
}
*/
 AliEveHOMERSourceList.cxx:1
 AliEveHOMERSourceList.cxx:2
 AliEveHOMERSourceList.cxx:3
 AliEveHOMERSourceList.cxx:4
 AliEveHOMERSourceList.cxx:5
 AliEveHOMERSourceList.cxx:6
 AliEveHOMERSourceList.cxx:7
 AliEveHOMERSourceList.cxx:8
 AliEveHOMERSourceList.cxx:9
 AliEveHOMERSourceList.cxx:10
 AliEveHOMERSourceList.cxx:11
 AliEveHOMERSourceList.cxx:12
 AliEveHOMERSourceList.cxx:13
 AliEveHOMERSourceList.cxx:14
 AliEveHOMERSourceList.cxx:15
 AliEveHOMERSourceList.cxx:16
 AliEveHOMERSourceList.cxx:17
 AliEveHOMERSourceList.cxx:18
 AliEveHOMERSourceList.cxx:19
 AliEveHOMERSourceList.cxx:20
 AliEveHOMERSourceList.cxx:21
 AliEveHOMERSourceList.cxx:22
 AliEveHOMERSourceList.cxx:23
 AliEveHOMERSourceList.cxx:24
 AliEveHOMERSourceList.cxx:25
 AliEveHOMERSourceList.cxx:26
 AliEveHOMERSourceList.cxx:27
 AliEveHOMERSourceList.cxx:28
 AliEveHOMERSourceList.cxx:29
 AliEveHOMERSourceList.cxx:30
 AliEveHOMERSourceList.cxx:31
 AliEveHOMERSourceList.cxx:32
 AliEveHOMERSourceList.cxx:33
 AliEveHOMERSourceList.cxx:34
 AliEveHOMERSourceList.cxx:35
 AliEveHOMERSourceList.cxx:36
 AliEveHOMERSourceList.cxx:37
 AliEveHOMERSourceList.cxx:38
 AliEveHOMERSourceList.cxx:39
 AliEveHOMERSourceList.cxx:40
 AliEveHOMERSourceList.cxx:41
 AliEveHOMERSourceList.cxx:42
 AliEveHOMERSourceList.cxx:43
 AliEveHOMERSourceList.cxx:44
 AliEveHOMERSourceList.cxx:45
 AliEveHOMERSourceList.cxx:46
 AliEveHOMERSourceList.cxx:47
 AliEveHOMERSourceList.cxx:48
 AliEveHOMERSourceList.cxx:49
 AliEveHOMERSourceList.cxx:50
 AliEveHOMERSourceList.cxx:51
 AliEveHOMERSourceList.cxx:52
 AliEveHOMERSourceList.cxx:53
 AliEveHOMERSourceList.cxx:54
 AliEveHOMERSourceList.cxx:55
 AliEveHOMERSourceList.cxx:56
 AliEveHOMERSourceList.cxx:57
 AliEveHOMERSourceList.cxx:58
 AliEveHOMERSourceList.cxx:59
 AliEveHOMERSourceList.cxx:60
 AliEveHOMERSourceList.cxx:61
 AliEveHOMERSourceList.cxx:62
 AliEveHOMERSourceList.cxx:63
 AliEveHOMERSourceList.cxx:64
 AliEveHOMERSourceList.cxx:65
 AliEveHOMERSourceList.cxx:66
 AliEveHOMERSourceList.cxx:67
 AliEveHOMERSourceList.cxx:68
 AliEveHOMERSourceList.cxx:69
 AliEveHOMERSourceList.cxx:70
 AliEveHOMERSourceList.cxx:71
 AliEveHOMERSourceList.cxx:72
 AliEveHOMERSourceList.cxx:73
 AliEveHOMERSourceList.cxx:74
 AliEveHOMERSourceList.cxx:75
 AliEveHOMERSourceList.cxx:76
 AliEveHOMERSourceList.cxx:77
 AliEveHOMERSourceList.cxx:78
 AliEveHOMERSourceList.cxx:79
 AliEveHOMERSourceList.cxx:80
 AliEveHOMERSourceList.cxx:81
 AliEveHOMERSourceList.cxx:82
 AliEveHOMERSourceList.cxx:83
 AliEveHOMERSourceList.cxx:84
 AliEveHOMERSourceList.cxx:85
 AliEveHOMERSourceList.cxx:86
 AliEveHOMERSourceList.cxx:87
 AliEveHOMERSourceList.cxx:88
 AliEveHOMERSourceList.cxx:89
 AliEveHOMERSourceList.cxx:90
 AliEveHOMERSourceList.cxx:91
 AliEveHOMERSourceList.cxx:92
 AliEveHOMERSourceList.cxx:93
 AliEveHOMERSourceList.cxx:94
 AliEveHOMERSourceList.cxx:95
 AliEveHOMERSourceList.cxx:96
 AliEveHOMERSourceList.cxx:97
 AliEveHOMERSourceList.cxx:98
 AliEveHOMERSourceList.cxx:99
 AliEveHOMERSourceList.cxx:100
 AliEveHOMERSourceList.cxx:101
 AliEveHOMERSourceList.cxx:102
 AliEveHOMERSourceList.cxx:103
 AliEveHOMERSourceList.cxx:104
 AliEveHOMERSourceList.cxx:105
 AliEveHOMERSourceList.cxx:106
 AliEveHOMERSourceList.cxx:107
 AliEveHOMERSourceList.cxx:108
 AliEveHOMERSourceList.cxx:109
 AliEveHOMERSourceList.cxx:110
 AliEveHOMERSourceList.cxx:111
 AliEveHOMERSourceList.cxx:112
 AliEveHOMERSourceList.cxx:113
 AliEveHOMERSourceList.cxx:114
 AliEveHOMERSourceList.cxx:115
 AliEveHOMERSourceList.cxx:116
 AliEveHOMERSourceList.cxx:117
 AliEveHOMERSourceList.cxx:118
 AliEveHOMERSourceList.cxx:119
 AliEveHOMERSourceList.cxx:120
 AliEveHOMERSourceList.cxx:121
 AliEveHOMERSourceList.cxx:122
 AliEveHOMERSourceList.cxx:123
 AliEveHOMERSourceList.cxx:124
 AliEveHOMERSourceList.cxx:125
 AliEveHOMERSourceList.cxx:126
 AliEveHOMERSourceList.cxx:127
 AliEveHOMERSourceList.cxx:128