]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONStringIntMap.cxx
Typo corrected.
[u/mrichter/AliRoot.git] / MUON / AliMUONStringIntMap.cxx
CommitLineData
d635d68e 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16// $Id$
17//
f7006443 18// ------------------------------------
d635d68e 19// Class AliMUONStringIntMap
20// ------------------------------------
21// Helper class that substitutes map <string, int>
22// which ALICE does not allow to use
d635d68e 23// Author: Ivana Hrivnacova, IPN Orsay
24
25#include <Riostream.h>
26#include <TObjString.h>
27
28#include "AliMUONStringIntMap.h"
29#include "AliLog.h"
30
a9aad96e 31/// \cond CLASSIMP
d635d68e 32ClassImp(AliMUONStringIntMap)
a9aad96e 33/// \endcond
d635d68e 34
35//______________________________________________________________________________
36AliMUONStringIntMap::AliMUONStringIntMap()
37 : TObject(),
38 fNofItems(0),
39 fFirstArray(100),
40 fSecondArray(100)
41{
42/// Standard constructor
43
44 fFirstArray.SetOwner(true);
45}
46
d635d68e 47//______________________________________________________________________________
48AliMUONStringIntMap::~AliMUONStringIntMap()
49{
50/// Destructor
51
52 fFirstArray.Delete();
53}
54
d635d68e 55//
56// public methods
57//
58
59//______________________________________________________________________________
60Bool_t AliMUONStringIntMap::Add(const TString& first, Int_t second)
61{
62/// Add map element if first not yet present
abca6eb2 63
d635d68e 64 Int_t second2 = Get(first);
65 if ( second2 > 0 ) {
66 AliError(Form("%s is already present in the map", first.Data()));
67 return false;
68 }
69
70 // Resize TArrayI if needed
71 if (fSecondArray.GetSize() == fNofItems) fSecondArray.Set(2*fNofItems);
72
73 fFirstArray.Add(new TObjString(first));
74 fSecondArray.AddAt(second, fNofItems);
75 fNofItems++;
76
77 return true;
78}
79
abca6eb2 80//______________________________________________________________________________
81Bool_t AliMUONStringIntMap::Set(const TString& first, Int_t second)
82{
83 /// Set map element
84
85 Int_t index = Contains(first);
86 if ( index < 0 )
87 {
88 return Add(first,second);
89 }
90
91 fSecondArray.AddAt(second, index);
92
93 return true;
94}
95
96//______________________________________________________________________________
97Int_t
98AliMUONStringIntMap::Contains(const TString& first) const
99{
100 /// Whether this map contains the string 'first' or not
101
102 for (Int_t i=0; i<fNofItems; i++)
103 {
104 if ( ((TObjString*)fFirstArray.At(i))->GetString() == first )
105 {
106 return i;
107 }
108 }
109
110 return -1;
111}
112
d635d68e 113//______________________________________________________________________________
114Int_t AliMUONStringIntMap::Get(const TString& first) const
115{
116/// Find the element with specified key (first)
117
118 for (Int_t i=0; i<fNofItems; i++) {
119 if ( ((TObjString*)fFirstArray.At(i))->GetString() == first )
120 return fSecondArray.At(i);
121 }
122
123 return 0;
124}
125
126//______________________________________________________________________________
127Int_t AliMUONStringIntMap::GetNofItems() const
128{
129/// Return the number of elements
130
131 return fNofItems;
132}
133
134//______________________________________________________________________________
135void AliMUONStringIntMap::Clear(Option_t* /*option*/)
136{
137/// Delete the elements
138
139 fNofItems = 0;
140 fFirstArray.Delete();
141 fSecondArray.Reset();
142}
143
144//______________________________________________________________________________
145void AliMUONStringIntMap::Print(const char* /*option*/) const
146{
147/// Print the map elements
148
149 for (Int_t i=0; i<fNofItems; i++) {
150 cout << setw(4)
151 << i << " "
152 << ((TObjString*)fFirstArray.At(i))->GetString()
153 << " "
154 << setw(5)
155 << fSecondArray.At(i)
156 << endl;
157 }
158}
159
160//______________________________________________________________________________
161void AliMUONStringIntMap::Print(const TString& key, ofstream& out) const
162{
a9aad96e 163/// Print the map elements preceded by a key word
d635d68e 164
165 for (Int_t i=0; i<fNofItems; i++) {
166 out << key << " "
167 << ((TObjString*)fFirstArray.At(i))->GetString()
168 << " "
169 << setw(5)
170 << fSecondArray.At(i)
171 << endl;
172 }
173}