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)
68 TString AliEveHOMERSourceMapByDet::iterator_imp::description()
70 const AliEveHOMERSource::SourceId& sid = id();
72 if ( ! sid.fType.IsNull()) return sid.fType;
73 if ( ! sid.fSSDet.IsNull()) return sid.fSSDet;
74 if ( ! sid.fSDet.IsNull()) return sid.fSDet;
75 if ( ! sid.fDet.IsNull()) return sid.fDet;
79 void AliEveHOMERSourceMapByDet::insert(AliEveHOMERSource::SourceId& sid,
80 AliEveHOMERSource::SourceState& sst,
83 Map_i i = fMap.find(sid);
86 // Check wildcard, else
87 sst.fState = def_state;
88 fMap.insert(std::make_pair(sid, sst));
92 void AliEveHOMERSourceMapByDet::FillMap(TList* handles, Bool_t def_state)
95 AliHLTHOMERSourceDesc* h;
96 while ((h = (AliHLTHOMERSourceDesc*) next()))
98 AliEveHOMERSource::SourceId srcid;
99 AliEveHOMERSource::SourceState srcst;
101 srcid.fDet = h->GetDetector();
102 insert(srcid, srcst, def_state);
104 srcid.fSDet = h->GetSubDetector();
105 if ( ! srcid.fSDet.IsNull()) insert(srcid, srcst, def_state);
107 srcid.fSSDet = h->GetSubSubDetector();
108 if ( ! srcid.fSSDet.IsNull()) insert(srcid, srcst, def_state);
110 srcid.fType = h->GetDataType();
112 insert(srcid, srcst, def_state);
117 /******************************************************************************/
118 // AliEveHOMERSourceMapByType
119 /******************************************************************************/
121 AliEveHOMERSourceMapByType::AliEveHOMERSourceMapByType(ESourceGrouping_e grouping) :
122 AliEveHOMERSourceMap(grouping)
125 TString AliEveHOMERSourceMapByType::iterator_imp::description()
127 const AliEveHOMERSource::SourceId& sid = id();
129 if ( ! sid.fSSDet.IsNull()) return sid.fSSDet;
130 if ( ! sid.fSDet.IsNull()) return sid.fSDet;
131 if ( ! sid.fDet.IsNull()) return sid.fDet;
132 if ( ! sid.fType.IsNull()) return sid.fType;
136 void AliEveHOMERSourceMapByType::insert(AliEveHOMERSource::SourceId& sid,
137 AliEveHOMERSource::SourceState& sst,
140 Map_i i = fMap.find(sid);
143 // Check wildcard, else
144 sst.fState = def_state;
145 fMap.insert(std::make_pair(sid, sst));
149 void AliEveHOMERSourceMapByType::FillMap(TList* handles, Bool_t def_state)
152 AliHLTHOMERSourceDesc* h;
153 while ((h = (AliHLTHOMERSourceDesc*) next()))
155 AliEveHOMERSource::SourceId srcid;
156 AliEveHOMERSource::SourceState srcst;
158 srcid.fType = h->GetDataType();
159 insert(srcid, srcst, def_state);
161 srcid.fDet = h->GetDetector();
162 if (h->GetSubDetector().IsNull())
165 insert(srcid, srcst, def_state);
168 insert(srcid, srcst, def_state);
170 srcid.fSDet = h->GetSubDetector();
171 if (h->GetSubSubDetector().IsNull())
174 insert(srcid, srcst, def_state);
177 insert(srcid, srcst, def_state);
179 srcid.fSSDet = h->GetSubSubDetector();
181 insert(srcid, srcst, def_state);