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 "AliEveHOMERSourceMap.h"
11 #include <AliHLTHOMERSourceDesc.h>
15 //______________________________________________________________________
16 // AliEveHOMERSourceMap
19 ClassImp(AliEveHOMERSourceMap)
21 AliEveHOMERSourceMap::AliEveHOMERSourceMap(ESourceGrouping_e grouping) :
27 AliEveHOMERSourceMap* AliEveHOMERSourceMap::Create(ESourceGrouping_e grouping)
31 case kSG_ByDet: return new AliEveHOMERSourceMapByDet(grouping);
32 case kSG_ByType: return new AliEveHOMERSourceMapByType(grouping);
37 Int_t AliEveHOMERSourceMap::iterator::level()
39 const AliEveHOMERSource::SourceId& sid = id();
42 if ( ! sid.fDet.IsNull()) ++lvl;
43 if ( ! sid.fSDet.IsNull()) ++lvl;
44 if ( ! sid.fSSDet.IsNull()) ++lvl;
45 if ( ! sid.fType.IsNull()) ++lvl;
49 void AliEveHOMERSourceMap::PrintXXX()
51 for (iterator i = begin(); i != end(); ++i)
53 printf("%*s%s [state=%d, handle=0x%lx] {ssdet='%s'}\n", 4*i.level(), "",
54 i.description().Data(), i.state().fState,
55 (ULong_t) i.state().fHandle,
56 i.id().fSSDet.Data());
60 /******************************************************************************/
61 // AliEveHOMERSourceMapByDet
62 /******************************************************************************/
64 AliEveHOMERSourceMapByDet::AliEveHOMERSourceMapByDet(ESourceGrouping_e grouping) :
65 AliEveHOMERSourceMap(grouping),
69 TString AliEveHOMERSourceMapByDet::iterator_imp::description() const
71 const AliEveHOMERSource::SourceId& sid = id();
73 if ( ! sid.fType.IsNull()) return sid.fType;
74 if ( ! sid.fSSDet.IsNull()) return sid.fSSDet;
75 if ( ! sid.fSDet.IsNull()) return sid.fSDet;
76 if ( ! sid.fDet.IsNull()) return sid.fDet;
80 void AliEveHOMERSourceMapByDet::insert(AliEveHOMERSource::SourceId& sid,
81 AliEveHOMERSource::SourceState& sst,
84 Map_i i = fMap.find(sid);
87 // Check wildcard, else
88 sst.fState = def_state;
89 fMap.insert(std::make_pair(sid, sst));
93 void AliEveHOMERSourceMapByDet::FillMap(TList* handles, Bool_t def_state)
96 AliHLTHOMERSourceDesc* h;
97 while ((h = (AliHLTHOMERSourceDesc*) next()))
99 AliEveHOMERSource::SourceId srcid;
100 AliEveHOMERSource::SourceState srcst;
102 srcid.fDet = h->GetDetector();
103 insert(srcid, srcst, def_state);
105 srcid.fSDet = h->GetSubDetector();
106 if ( ! srcid.fSDet.IsNull()) insert(srcid, srcst, def_state);
108 srcid.fSSDet = h->GetSubSubDetector();
109 if ( ! srcid.fSSDet.IsNull()) insert(srcid, srcst, def_state);
111 srcid.fType = h->GetDataType();
113 insert(srcid, srcst, def_state);
118 /******************************************************************************/
119 // AliEveHOMERSourceMapByType
120 /******************************************************************************/
122 AliEveHOMERSourceMapByType::AliEveHOMERSourceMapByType(ESourceGrouping_e grouping) :
123 AliEveHOMERSourceMap(grouping),
127 TString AliEveHOMERSourceMapByType::iterator_imp::description() const
129 const AliEveHOMERSource::SourceId& sid = id();
131 if ( ! sid.fSSDet.IsNull()) return sid.fSSDet;
132 if ( ! sid.fSDet.IsNull()) return sid.fSDet;
133 if ( ! sid.fDet.IsNull()) return sid.fDet;
134 if ( ! sid.fType.IsNull()) return sid.fType;
138 void AliEveHOMERSourceMapByType::insert(AliEveHOMERSource::SourceId& sid,
139 AliEveHOMERSource::SourceState& sst,
142 Map_i i = fMap.find(sid);
145 // Check wildcard, else
146 sst.fState = def_state;
147 fMap.insert(std::make_pair(sid, sst));
151 void AliEveHOMERSourceMapByType::FillMap(TList* handles, Bool_t def_state)
154 AliHLTHOMERSourceDesc* h;
155 while ((h = (AliHLTHOMERSourceDesc*) next()))
157 AliEveHOMERSource::SourceId srcid;
158 AliEveHOMERSource::SourceState srcst;
160 srcid.fType = h->GetDataType();
161 insert(srcid, srcst, def_state);
163 srcid.fDet = h->GetDetector();
164 if (h->GetSubDetector().IsNull())
167 insert(srcid, srcst, def_state);
170 insert(srcid, srcst, def_state);
172 srcid.fSDet = h->GetSubDetector();
173 if (h->GetSubSubDetector().IsNull())
176 insert(srcid, srcst, def_state);
179 insert(srcid, srcst, def_state);
181 srcid.fSSDet = h->GetSubSubDetector();
183 insert(srcid, srcst, def_state);