#include "AliMpSlatMotifMap.h"
#include "AliMpVMotif.h"
#include "AliMpMotifType.h"
#include "AliLog.h"
#include "TList.h"
#include "TObjString.h"
#include "TString.h"
#include "Riostream.h"
using std::cout;
using std::endl;
ClassImp(AliMpSlatMotifMap)
AliMpSlatMotifMap::AliMpSlatMotifMap()
: TObject(),
fMotifs(),
fMotifTypes()
{
fMotifs.SetOwner(kTRUE);
fMotifTypes.SetOwner(kTRUE);
}
AliMpSlatMotifMap::~AliMpSlatMotifMap()
{
Reset();
}
void
AliMpSlatMotifMap::Reset()
{
fMotifs.DeleteAll();
fMotifTypes.DeleteAll();
}
Bool_t
AliMpSlatMotifMap::AddMotif(AliMpVMotif* motif, Bool_t warn)
{
AliDebug(1,Form("Adding motif %s",motif->GetID().Data()));
AliMpVMotif* found = FindMotif(motif->GetID());
if (found) {
if (warn && found == motif)
{
AliWarning(Form("The motif %s is already in map",motif->GetID().Data()));
}
if (warn && found != motif)
{
AliError(Form("Another motif with the same ID=%s is already in map",
motif->GetID().Data()));
}
return false;
}
fMotifs.Add(new TObjString(motif->GetID()),motif);
return true;
}
Bool_t
AliMpSlatMotifMap::AddMotifType(AliMpMotifType* motifType, Bool_t warn)
{
AliDebug(1,Form("Adding motifType %s",motifType->GetID().Data()));
AliMpMotifType* found = FindMotifType(motifType->GetID());
if (found) {
if (warn && found == motifType)
{
AliWarning(Form("The motifType %s is already in map",
motifType->GetID().Data()));
}
if (warn && found != motifType)
{
AliError(Form("Another motifType with the same ID=%s is already in map",
motifType->GetID().Data()));
}
return false;
}
fMotifTypes.Add(new TObjString(motifType->GetID()),motifType);
return true;
}
AliMpVMotif*
AliMpSlatMotifMap::FindMotif(const TString& id) const
{
AliDebug(1,Form("Looking for motif %s",id.Data()));
TObject* object = fMotifs.GetValue(id.Data());
if (object)
{
AliMpVMotif* motif = static_cast<AliMpVMotif*>(object);
AliDebug(1,Form("Found : %p id=%s",motif,motif->GetID().Data()));
return motif;
}
AliDebug(1,"Not found");
return 0x0;
}
AliMpMotifType*
AliMpSlatMotifMap::FindMotifType(const TString& id) const
{
AliDebug(1,Form("Looking for motifType %s",id.Data()));
TObject* object = fMotifTypes.GetValue(id.Data());
if (object)
{
AliMpMotifType* motifType = static_cast<AliMpMotifType*>(object);
AliDebug(1,Form("Found : %p id=%s",motifType,motifType->GetID().Data()));
return motifType;
}
AliDebug(1,"Not found");
return 0x0;
}
void
AliMpSlatMotifMap::Print(Option_t*) const
{
cout << "Motifs=" << endl;
TObject* key;
TIter next(&fMotifs);
while ( ( key = next() ) )
{
AliMpVMotif* motif = dynamic_cast<AliMpVMotif*>(fMotifs.GetValue(key));
if (motif) cout << motif->GetID() << endl;
}
cout << "MotifTypes=" << endl;
TIter tnext(&fMotifTypes);
while ( ( key = tnext() ) )
{
AliMpMotifType* motifType = dynamic_cast<AliMpMotifType*>(fMotifTypes.GetValue(key));
if (motifType) cout << motifType->GetID() << endl;
}
}
AliMpSlatMotifMap.cxx:100 AliMpSlatMotifMap.cxx:101 AliMpSlatMotifMap.cxx:102 AliMpSlatMotifMap.cxx:103 AliMpSlatMotifMap.cxx:104 AliMpSlatMotifMap.cxx:105 AliMpSlatMotifMap.cxx:106 AliMpSlatMotifMap.cxx:107 AliMpSlatMotifMap.cxx:108 AliMpSlatMotifMap.cxx:109 AliMpSlatMotifMap.cxx:110 AliMpSlatMotifMap.cxx:111 AliMpSlatMotifMap.cxx:112 AliMpSlatMotifMap.cxx:113 AliMpSlatMotifMap.cxx:114 AliMpSlatMotifMap.cxx:115 AliMpSlatMotifMap.cxx:116 AliMpSlatMotifMap.cxx:117 AliMpSlatMotifMap.cxx:118 AliMpSlatMotifMap.cxx:119 AliMpSlatMotifMap.cxx:120 AliMpSlatMotifMap.cxx:121 AliMpSlatMotifMap.cxx:122 AliMpSlatMotifMap.cxx:123 AliMpSlatMotifMap.cxx:124 AliMpSlatMotifMap.cxx:125 AliMpSlatMotifMap.cxx:126 AliMpSlatMotifMap.cxx:127 AliMpSlatMotifMap.cxx:128 AliMpSlatMotifMap.cxx:129 AliMpSlatMotifMap.cxx:130 AliMpSlatMotifMap.cxx:131 AliMpSlatMotifMap.cxx:132 AliMpSlatMotifMap.cxx:133 AliMpSlatMotifMap.cxx:134 AliMpSlatMotifMap.cxx:135 AliMpSlatMotifMap.cxx:136 AliMpSlatMotifMap.cxx:137 AliMpSlatMotifMap.cxx:138 AliMpSlatMotifMap.cxx:139 AliMpSlatMotifMap.cxx:140 AliMpSlatMotifMap.cxx:141 AliMpSlatMotifMap.cxx:142 AliMpSlatMotifMap.cxx:143 AliMpSlatMotifMap.cxx:144 AliMpSlatMotifMap.cxx:145 AliMpSlatMotifMap.cxx:146 AliMpSlatMotifMap.cxx:147 AliMpSlatMotifMap.cxx:148 AliMpSlatMotifMap.cxx:149 AliMpSlatMotifMap.cxx:150 AliMpSlatMotifMap.cxx:151 AliMpSlatMotifMap.cxx:152 AliMpSlatMotifMap.cxx:153 AliMpSlatMotifMap.cxx:154 AliMpSlatMotifMap.cxx:155 AliMpSlatMotifMap.cxx:156 AliMpSlatMotifMap.cxx:157 AliMpSlatMotifMap.cxx:158 AliMpSlatMotifMap.cxx:159 AliMpSlatMotifMap.cxx:160 AliMpSlatMotifMap.cxx:161 AliMpSlatMotifMap.cxx:162 AliMpSlatMotifMap.cxx:163 AliMpSlatMotifMap.cxx:164 AliMpSlatMotifMap.cxx:165 AliMpSlatMotifMap.cxx:166 AliMpSlatMotifMap.cxx:167 AliMpSlatMotifMap.cxx:168 AliMpSlatMotifMap.cxx:169 AliMpSlatMotifMap.cxx:170 AliMpSlatMotifMap.cxx:171 AliMpSlatMotifMap.cxx:172 AliMpSlatMotifMap.cxx:173 AliMpSlatMotifMap.cxx:174 AliMpSlatMotifMap.cxx:175 AliMpSlatMotifMap.cxx:176 AliMpSlatMotifMap.cxx:177 AliMpSlatMotifMap.cxx:178 AliMpSlatMotifMap.cxx:179 AliMpSlatMotifMap.cxx:180 AliMpSlatMotifMap.cxx:181 AliMpSlatMotifMap.cxx:182 AliMpSlatMotifMap.cxx:183 AliMpSlatMotifMap.cxx:184 AliMpSlatMotifMap.cxx:185 AliMpSlatMotifMap.cxx:186 AliMpSlatMotifMap.cxx:187 AliMpSlatMotifMap.cxx:188