2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
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 **************************************************************************/
10 #include "AliEveHOMERSourceMapByDet.h"
11 #include <AliHLTHOMERSourceDesc.h>
15 //______________________________________________________________________
17 // AliEveHOMERSourceMap is an abstract container for HLT HOMER sources,
18 // see AliHLTHOMERSourceDesc.
20 // The concrete implementations AliEveHOMERSourceMapByDet and
21 // AliEveHOMERSourceMapByType allow retrieval of HOMER sources in proper
22 // order as required for their display in EVE object browser.
25 AliEveHOMERSourceMapByDet::AliEveHOMERSourceMapByDet(ESourceGrouping_e grouping) :
26 AliEveHOMERSourceMap(grouping),
30 TString AliEveHOMERSourceMapByDet::iterator_imp::description() const
32 // Return identifier string for current entry.
34 const AliEveHOMERSource::SourceId& sid = id();
36 if ( ! sid.fType.IsNull()) return sid.fType;
37 if ( ! sid.fSSDet.IsNull()) return sid.fSSDet;
38 if ( ! sid.fSDet.IsNull()) return sid.fSDet;
39 if ( ! sid.fDet.IsNull()) return sid.fDet;
43 void AliEveHOMERSourceMapByDet::insert(AliEveHOMERSource::SourceId& sid,
44 AliEveHOMERSource::SourceState& sst,
47 // Insert source-state for given source-id.
48 // Does nothing if the entry already exists.
50 Map_i i = fMap.find(sid);
53 // Check wildcard, else
54 sst.fState = def_state;
55 fMap.insert(std::make_pair(sid, sst));
59 void AliEveHOMERSourceMapByDet::FillMap(const TList* handles, Bool_t def_state)
61 // Fill the map from the list of HOMER source handles.
64 AliHLTHOMERSourceDesc* h;
65 while ((h = (AliHLTHOMERSourceDesc*) next()))
67 AliEveHOMERSource::SourceId srcid;
68 AliEveHOMERSource::SourceState srcst;
70 srcid.fDet = h->GetDetector();
71 insert(srcid, srcst, def_state);
73 srcid.fSDet = h->GetSubDetector();
74 if ( ! srcid.fSDet.IsNull()) insert(srcid, srcst, def_state);
76 srcid.fSSDet = h->GetSubSubDetector();
77 if ( ! srcid.fSSDet.IsNull()) insert(srcid, srcst, def_state);
79 srcid.fType = h->GetDataType();
81 insert(srcid, srcst, def_state);