]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONStringIntMap.cxx
Class description on 5 lines
[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
31ClassImp(AliMUONStringIntMap)
32
33//______________________________________________________________________________
34AliMUONStringIntMap::AliMUONStringIntMap()
35 : TObject(),
36 fNofItems(0),
37 fFirstArray(100),
38 fSecondArray(100)
39{
40/// Standard constructor
41
42 fFirstArray.SetOwner(true);
43}
44
45//______________________________________________________________________________
46AliMUONStringIntMap::AliMUONStringIntMap(const AliMUONStringIntMap& rhs)
47 : TObject(rhs)
48{
49/// Protected copy constructor
50
51 AliFatal("Copy constructor is not implemented.");
52}
53
54//______________________________________________________________________________
55AliMUONStringIntMap::~AliMUONStringIntMap()
56{
57/// Destructor
58
59 fFirstArray.Delete();
60}
61
62//______________________________________________________________________________
63AliMUONStringIntMap&
64AliMUONStringIntMap::operator = (const AliMUONStringIntMap& rhs)
65{
66/// Protected assignement operator
67
68 // check assignement to self
69 if (this == &rhs) return *this;
70
71 AliFatal("Assignment operator is not implemented.");
72
73 return *this;
74}
75
76
77//
78// public methods
79//
80
81//______________________________________________________________________________
82Bool_t AliMUONStringIntMap::Add(const TString& first, Int_t second)
83{
84/// Add map element if first not yet present
85
86 Int_t second2 = Get(first);
87 if ( second2 > 0 ) {
88 AliError(Form("%s is already present in the map", first.Data()));
89 return false;
90 }
91
92 // Resize TArrayI if needed
93 if (fSecondArray.GetSize() == fNofItems) fSecondArray.Set(2*fNofItems);
94
95 fFirstArray.Add(new TObjString(first));
96 fSecondArray.AddAt(second, fNofItems);
97 fNofItems++;
98
99 return true;
100}
101
102//______________________________________________________________________________
103Int_t AliMUONStringIntMap::Get(const TString& first) const
104{
105/// Find the element with specified key (first)
106
107 for (Int_t i=0; i<fNofItems; i++) {
108 if ( ((TObjString*)fFirstArray.At(i))->GetString() == first )
109 return fSecondArray.At(i);
110 }
111
112 return 0;
113}
114
115//______________________________________________________________________________
116Int_t AliMUONStringIntMap::GetNofItems() const
117{
118/// Return the number of elements
119
120 return fNofItems;
121}
122
123//______________________________________________________________________________
124void AliMUONStringIntMap::Clear(Option_t* /*option*/)
125{
126/// Delete the elements
127
128 fNofItems = 0;
129 fFirstArray.Delete();
130 fSecondArray.Reset();
131}
132
133//______________________________________________________________________________
134void AliMUONStringIntMap::Print(const char* /*option*/) const
135{
136/// Print the map elements
137
138 for (Int_t i=0; i<fNofItems; i++) {
139 cout << setw(4)
140 << i << " "
141 << ((TObjString*)fFirstArray.At(i))->GetString()
142 << " "
143 << setw(5)
144 << fSecondArray.At(i)
145 << endl;
146 }
147}
148
149//______________________________________________________________________________
150void AliMUONStringIntMap::Print(const TString& key, ofstream& out) const
151{
152// Prints the map elements
153
154 for (Int_t i=0; i<fNofItems; i++) {
155 out << key << " "
156 << ((TObjString*)fFirstArray.At(i))->GetString()
157 << " "
158 << setw(5)
159 << fSecondArray.At(i)
160 << endl;
161 }
162}