]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONStringIntMap.cxx
Updated for modifs in AliMpFiles
[u/mrichter/AliRoot.git] / MUON / AliMUONStringIntMap.cxx
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 //
18 // Class AliMUONStringIntMap
19 // ------------------------------------ 
20 // Helper class that substitutes map <string, int> 
21 // which ALICE does not allow to use 
22 //
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
31 ClassImp(AliMUONStringIntMap)
32
33 //______________________________________________________________________________
34 AliMUONStringIntMap::AliMUONStringIntMap()
35  : TObject(),
36    fNofItems(0),
37    fFirstArray(100),
38    fSecondArray(100)
39 {
40 /// Standard constructor
41
42   fFirstArray.SetOwner(true);
43 }
44
45 //______________________________________________________________________________
46 AliMUONStringIntMap::AliMUONStringIntMap(const AliMUONStringIntMap& rhs)
47   : TObject(rhs)
48 {
49 /// Protected copy constructor
50
51   AliFatal("Copy constructor is not implemented.");
52 }
53
54 //______________________________________________________________________________
55 AliMUONStringIntMap::~AliMUONStringIntMap()
56 {
57 /// Destructor
58
59   fFirstArray.Delete();
60 }
61
62 //______________________________________________________________________________
63 AliMUONStringIntMap& 
64 AliMUONStringIntMap::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 //______________________________________________________________________________
82 Bool_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 //______________________________________________________________________________
103 Int_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 //______________________________________________________________________________
116 Int_t  AliMUONStringIntMap::GetNofItems() const
117 {
118 /// Return the number of elements
119
120   return fNofItems;
121 }  
122
123 //______________________________________________________________________________
124 void  AliMUONStringIntMap::Clear(Option_t* /*option*/)
125 {
126 /// Delete the elements
127
128   fNofItems = 0;
129   fFirstArray.Delete();
130   fSecondArray.Reset();
131 }  
132     
133 //______________________________________________________________________________
134 void 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 //______________________________________________________________________________
150 void 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 }