//-----------------------------------------------------------------------------
#include "AliMpMotifMap.h"
+
+#include "AliCodeTimer.h"
+#include "AliMpExMapIterator.h"
#include "AliMpVMotif.h"
#include "AliMpMotif.h"
#include "AliMpMotifSpecial.h"
/// \endcond
//_____________________________________________________________________________
-AliMpMotifMap::AliMpMotifMap(Bool_t /*standardConstructor*/)
- : TObject()
-#ifdef WITH_ROOT
- ,fMotifs(true),
- fMotifTypes(true),
- fMotifPositions(true),
- fMotifPositions2(true)
-#endif
+AliMpMotifMap::AliMpMotifMap()
+ : TObject(),
+ fMotifs(),
+ fMotifTypes(),
+ fMotifPositions(),
+ fMotifPositions2()
{
/// Standard constructor
- //fMotifPositions2.SetOwner(false);
+#ifdef WITH_ROOT
+ fMotifPositions2.SetOwner(false);
+#endif
}
//_____________________________________________________________________________
-AliMpMotifMap::AliMpMotifMap()
+AliMpMotifMap::AliMpMotifMap(TRootIOCtor* ioCtor)
: TObject(),
+#ifdef WITH_STL
fMotifs(),
fMotifTypes(),
fMotifPositions(),
fMotifPositions2()
+#endif
+#ifdef WITH_ROOT
+ fMotifs(ioCtor),
+ fMotifTypes(ioCtor),
+ fMotifPositions(ioCtor),
+ fMotifPositions2(ioCtor)
+#endif
{
-/// Default constructor
+/// Root IO constructor
+
+#ifdef WITH_ROOT
+ fMotifPositions2.SetOwner(false);
+#endif
}
//_____________________________________________________________________________
delete ip->second;
}
#endif
+
}
//
if (fMotifs.GetSize()) {
cout << "Dump of Motif Map - " << fMotifs.GetSize() << " entries:" << endl;
Int_t counter = 0;
- TExMapIter i = fMotifs.GetIterator();
- Long_t key, value;
- while ( i.Next(key, value) ) {
- TString id = fMotifs.AliMpExMap::GetString(key);
- AliMpVMotif* motif = (AliMpVMotif*)value;
+ AliMpExMapIterator* it = fMotifs.CreateIterator();
+ Int_t key;
+ AliMpVMotif* motif;
+
+ while ( ( motif = static_cast<AliMpVMotif*>(it->Next(key)) ) )
+ {
+ TString id = fMotifs.AliMpExMap::GetString(key);
cout << "Map element "
<< setw(3) << counter++ << " "
<< id.Data() << " " ;
cout << endl;
}
cout << endl;
+ delete it;
}
#endif
}
#ifdef WITH_ROOT
if (fMotifTypes.GetSize()) {
cout << "Dump of Motif Type Map - " << fMotifTypes.GetSize() << " entries:" << endl;
- Int_t counter = 0;
- TExMapIter i = fMotifTypes.GetIterator();
- Long_t key, value;
- while ( i.Next(key, value) ) {
+ Int_t counter = 0;
+ AliMpExMapIterator* it = fMotifTypes.CreateIterator();
+ Int_t key;
+ AliMpMotifType* motifType;
+
+ while ( ( motifType = static_cast<AliMpMotifType*>(it->Next(key)) ) )
+ {
TString id = AliMpExMap::GetString(key);
- AliMpMotifType* motifType = (AliMpMotifType*)value;
cout << "Map element "
<< setw(3) << counter++ << " "
<< id.Data() << " " ;
cout << endl;
}
cout << endl;
+ delete it;
}
#endif
}
#ifdef WITH_ROOT
ecn.Set(fMotifPositions.GetSize());
- TExMapIter it = fMotifPositions.GetIterator();
- Long_t key, value;
+ TIter next(fMotifPositions.CreateIterator());
+ AliMpMotifPosition* motifPosition;
Int_t i(0);
-
- while ( it.Next(key, value) )
+ while ( ( motifPosition = static_cast<AliMpMotifPosition*>(next()) ) )
{
- AliMpMotifPosition* motifPosition = reinterpret_cast<AliMpMotifPosition*>(value);
ecn[i] = motifPosition->GetID();
++i;
}
-
#endif
}
{
/// Return the motif position which is in the map on the index-th position
+ AliCodeTimerAuto("");
+
if ( index >= GetNofMotifPositions() ) {
AliErrorStream() << "Index " << index << " outside limits." << endl;
return 0;
#endif
#ifdef WITH_ROOT
- return (AliMpMotifPosition*)fMotifPositions.GetObject(index);
+ TIter next(fMotifPositions.CreateIterator());
+ while (index-- > 0) next();
+ return static_cast<AliMpMotifPosition*>(next());
#endif
}
#endif
#ifdef WITH_ROOT
- TExMapIter it = fMotifPositions.GetIterator();
- Long_t key, value;
-
- while ( it.Next(key, value) ) {
- AliMpMotifPosition* motifPosition = reinterpret_cast<AliMpMotifPosition*>(value);
+ TIter next(fMotifPositions.CreateIterator());
+ AliMpMotifPosition* motifPosition;
+ while ( ( motifPosition = static_cast<AliMpMotifPosition*>(next()) ) )
+ {
nofPads += motifPosition->GetMotif()->GetMotifType()->GetNofPads();
}
#endif
if (fMotifPositions.GetSize()) {
cout << "Dump of Motif Position Map - " << fMotifPositions.GetSize() << " entries:" << endl;
Int_t counter = 0;
- TExMapIter i = fMotifPositions.GetIterator();
- Long_t key, value;
- while ( i.Next(key, value) ) {
- AliMpMotifPosition* motifPosition = (AliMpMotifPosition*)value;
+ TIter next(fMotifPositions.CreateIterator());
+ AliMpMotifPosition* motifPosition;
+
+ while ( ( motifPosition = static_cast<AliMpMotifPosition*>(next()) ) )
+ {
cout << "Map element "
<< setw(3) << counter++ << " ";
PrintMotifPosition(motifPosition);
#endif
#ifdef WITH_ROOT
- if (fMotifPositions2.GetSize()) {
+
+ if (fMotifPositions2.GetSize())
+ {
cout << "Dump of Motif Position Map 2 - " << fMotifPositions2.GetSize() << " entries:" << endl;
+ TIter next(fMotifPositions2.CreateIterator());
+ AliMpMotifPosition* motifPosition(0x0);
Int_t counter = 0;
- TExMapIter i = fMotifPositions2.GetIterator();
- Long_t key, value;
- while ( i.Next(key, value) ) {
- AliMpMotifPosition* motifPosition = (AliMpMotifPosition*)value;
- cout << "Map element "
- << setw(3) << counter++ << " ";
+
+ while ( ( motifPosition = static_cast<AliMpMotifPosition*>(next()) ) )
+ {
+ cout << "Map element " << setw(3) << counter++ << " ";
PrintMotifPosition2(motifPosition);
cout << endl;
}
#endif
#ifdef WITH_ROOT
- fMotifPositions.Add(motifPosition->GetID(), motifPosition);
+ fMotifPositions.Add(motifPosition->GetID() << 16, motifPosition);
#endif
return true;
return;
}
- TExMapIter i = fMotifPositions.GetIterator();
- Long_t key, value;
- while ( i.Next(key, value) ) {
- AliMpMotifPosition* motifPosition = (AliMpMotifPosition*)value;
+ TIter next(fMotifPositions.CreateIterator());
+ AliMpMotifPosition* motifPosition(0x0);
+ while ( ( motifPosition = static_cast<AliMpMotifPosition*>(next()) ) )
+ {
fMotifPositions2.Add(motifPosition->GetLowIndicesLimit(), motifPosition);
}
#endif
#ifdef WITH_ROOT
if (fMotifPositions.GetSize()) {
- TExMapIter i = fMotifPositions.GetIterator();
- Long_t key, value;
- while ( i.Next(key, value) ) {
- AliMpMotifPosition* motifPosition = (AliMpMotifPosition*)value;
+ TIter next(fMotifPositions.CreateIterator());
+ AliMpMotifPosition* motifPosition;
+ while ( ( motifPosition = static_cast<AliMpMotifPosition*>(next()) ) )
+ {
out << setw(5) << motifPosition->GetID() << " "
<< setw(3) << motifPosition->GetLowIndicesLimit().GetFirst() << " "
<< setw(3) << motifPosition->GetLowIndicesLimit().GetSecond()
{
/// Find the motif with the specified ID.
+ //AliCodeTimerAuto("");
+
#ifdef WITH_STL
MotifMapIterator i = fMotifs.find(motifID);
if (i != fMotifs.end())
/// with the given motifTypeID and motifDimensions.
/// Disagreement causes fatal error.
+ //AliCodeTimerAuto("");
+
AliMpVMotif* motif = FindMotif(motifID);
if (motif && motif->GetMotifType()->GetID() != motifTypeID) {
- Fatal("FindMotif",
- "Motif has been already defined with a different type.");
+ AliFatal("Motif has been already defined with a different type.");
return 0;
}
( motif->GetPadDimensions(0).X() != padDimensions.X() ||
motif->GetPadDimensions(0).Y() != padDimensions.Y())) {
- Fatal("FindMotifType",
- "Motif type has been already defined with different dimensions.");
+ AliFatal("Motif type has been already defined with different dimensions.");
return 0;
}
(padDimensions.X() == 0. && padDimensions.Y() == 0.) &&
!dynamic_cast<AliMpMotifSpecial*>(motif)) {
- Fatal("FindMotifType",
- "Motif type has been already defined with different dimensions.");
+ AliFatal("Motif type has been already defined with different dimensions.");
return 0;
}
{
/// Find the motif type with the specified motif type ID.
+ //AliCodeTimerAuto("");
+
#ifdef WITH_STL
MotifTypeMapIterator i = fMotifTypes.find(motifTypeID);
if (i != fMotifTypes.end())
{
/// Find the motif position with the specified motif position ID.
+ //AliCodeTimerAuto("");
+
#ifdef WITH_STL
MotifPositionMapIterator i = fMotifPositions.find(motifPositionID);
if (i != fMotifPositions.end())
#endif
#ifdef WITH_ROOT
- return (AliMpMotifPosition*)fMotifPositions.GetValue(motifPositionID);
+ return (AliMpMotifPosition*)fMotifPositions.GetValue(motifPositionID << 16);
#endif
}