]>
Commit | Line | Data |
---|---|---|
e118b27e | 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 AliMUONGeometryDEIndexing | |
19 | // ------------------------------- | |
20 | // The class that provides conversion between the detection element Id | |
21 | // and the index in the array. | |
22 | // Used in storing DE transformations and segmentations. | |
23 | // (See more in the header file.) | |
24 | // | |
25 | // Author: Ivana Hrivnacova, IPN Orsay | |
26 | ||
27 | #include <Riostream.h> | |
28 | #include <TGeoMatrix.h> | |
29 | #include <TObjString.h> | |
30 | ||
31 | #include "AliLog.h" | |
32 | ||
33 | #include "AliMUONGeometryDEIndexing.h" | |
34 | #include "AliMUONConstants.h" | |
35 | ||
36 | ClassImp(AliMUONGeometryDEIndexing) | |
37 | ||
38 | const Int_t AliMUONGeometryDEIndexing::fgkHemisphere = 50; | |
39 | ||
40 | //______________________________________________________________________________ | |
41 | AliMUONGeometryDEIndexing::AliMUONGeometryDEIndexing( | |
42 | Int_t moduleId, Int_t nofDetElements) | |
43 | : AliMUONVGeometryDEIndexing(), | |
44 | fModuleId(moduleId), | |
45 | fNofDetElements(nofDetElements) | |
46 | { | |
47 | // Standard constructor | |
48 | } | |
49 | ||
50 | //______________________________________________________________________________ | |
51 | AliMUONGeometryDEIndexing::AliMUONGeometryDEIndexing() | |
52 | : AliMUONVGeometryDEIndexing(), | |
53 | fModuleId(0), | |
54 | fNofDetElements(0) | |
55 | { | |
56 | // Ddefault constructor | |
57 | } | |
58 | ||
59 | //______________________________________________________________________________ | |
60 | AliMUONGeometryDEIndexing::~AliMUONGeometryDEIndexing() { | |
61 | // | |
62 | } | |
63 | ||
64 | // | |
65 | // private methods | |
66 | // | |
67 | ||
68 | //______________________________________________________________________________ | |
69 | Int_t AliMUONGeometryDEIndexing::GetFirstDetElemId() const | |
70 | { | |
71 | // Get first detection element Id for chamber specified by moduleId | |
72 | // --- | |
73 | ||
74 | return (fModuleId+1)*100; | |
75 | } | |
76 | ||
77 | // | |
78 | // public methods | |
79 | // | |
80 | ||
81 | //______________________________________________________________________________ | |
82 | Int_t AliMUONGeometryDEIndexing::GetDetElementIndex(Int_t detElemId) const | |
83 | { | |
84 | // Returns the index of detector element specified by detElemId | |
85 | // --- | |
86 | ||
87 | if ( fNofDetElements == 0 ) { | |
88 | AliFatal("The number of detection elements has not been set."); | |
89 | return 0; | |
90 | } | |
91 | ||
92 | Int_t index = detElemId - GetFirstDetElemId(); | |
93 | if (index >= fgkHemisphere) | |
94 | index += - fgkHemisphere + fNofDetElements/2; | |
95 | ||
96 | return index; | |
97 | } | |
98 | ||
99 | //______________________________________________________________________________ | |
100 | Int_t AliMUONGeometryDEIndexing::GetDetElementId(Int_t detElemIndex) const | |
101 | { | |
102 | // Returns the ID of detector element specified by index | |
103 | // --- | |
104 | ||
105 | if ( fNofDetElements == 0 ) { | |
106 | AliFatal("The number of detection elements has not been set."); | |
107 | return 0; | |
108 | } | |
109 | ||
110 | Int_t detElemId = detElemIndex; | |
111 | ||
112 | if ( detElemIndex >= fNofDetElements/2 ) | |
113 | detElemId += fgkHemisphere - fNofDetElements/2; | |
114 | ||
115 | detElemId += GetFirstDetElemId(); | |
116 | ||
117 | return detElemId; | |
118 | } |