]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONGeometrySVMap.h
Bug fixed: pointer was not properly deleted
[u/mrichter/AliRoot.git] / MUON / AliMUONGeometrySVMap.h
CommitLineData
89cc3034 1// $Id$
2//
3// Class AliMUONGeometrySVMap
4// -----------------------------------
5// As the detection element frame is different from the
6// frame of the sensitive volume(s) defined in Geant,
7// the sensitive volumes have to be mapped to the detection
8// elements. In the map, fSVMap, the sensitive voolumes are specified
9// by the full path in the volume hierarchy, defined as:
10// /volname.copyNo/volName.copyNo1/...
11//
12// The array of global positions of sensitive volumes fSVPositions
13// is included to make easier the verification of the assignements
14// in the fSVMap.
15//
16// Author: Ivana Hrivnacova, IPN Orsay
17
18#ifndef ALI_MUON_GEOMETRY_SV_MAP_H
19#define ALI_MUON_GEOMETRY_SV_MAP_H
20
21#include <Riostream.h>
22#include <TObject.h>
23#include <TObjArray.h>
24#include <TArrayI.h>
25
26class TGeoCombiTrans;
27class TGeoTranslation;
28
29// Substitutes map <string, int>
30// which ALICE does not allow to use
31
32class AliMUONStringIntMap : public TObject
33{
34 public:
35 AliMUONStringIntMap();
36 virtual ~AliMUONStringIntMap();
37
38 // methods
39 Bool_t Add(const TString& first, Int_t second);
40 Int_t Get(const TString& first) const;
41 Int_t GetNofItems() const;
42 void Clear();
43 virtual void Print(const char* /*option*/ = "") const;
44 void Print(const TString& key, ofstream& out) const;
45
46 protected:
47 AliMUONStringIntMap(const AliMUONStringIntMap& rhs);
48
49 // operators
50 AliMUONStringIntMap& operator = (const AliMUONStringIntMap& rhs);
51
52 private:
53 // data members
54 Int_t fNofItems; // number of items
55 TObjArray fFirstArray; // first item array
56 TArrayI fSecondArray; // second item array
57
58 ClassDef(AliMUONStringIntMap,1) // motif map
59};
60
61
62class AliMUONGeometrySVMap : public TObject
63{
64 public:
65 AliMUONGeometrySVMap(Int_t initSize);
66 AliMUONGeometrySVMap();
67 virtual ~AliMUONGeometrySVMap();
68
69 // methods
70 void Add(const TString& volumePath,
71 Int_t detElemId);
72 void AddPosition(const TString& volumePath,
73 const TGeoTranslation& globalPosition);
74
75 void Clear();
76 void ClearPositions();
77 void SortPositions();
78 virtual void Print(Option_t* option) const;
79 void PrintPositions() const;
80 void WriteMap(ofstream& out) const;
81
82 // get methods
83 Int_t GetDetElemId(const TString& volumePath) const;
84
85 protected:
86 AliMUONGeometrySVMap(const AliMUONGeometrySVMap& rhs);
87
88 // operators
89 AliMUONGeometrySVMap& operator
90 = (const AliMUONGeometrySVMap& rhs);
91
92 private:
93 const TGeoCombiTrans* FindByName(const TString& name) const;
94
95 // data members
96 AliMUONStringIntMap fSVMap; // Map of sensitive volume paths
97 // and detector element id
98 TObjArray fSVPositions; // The array of transformations
99
100 ClassDef(AliMUONGeometrySVMap,1) // MUON sensitive volume map
101};
102
103#endif //ALI_MUON_GEOMETRY_TRANSFORM_STORE_H