]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - MUON/AliMUONHitMapA1.cxx
Cosmetic changes for the integration of doxygen
[u/mrichter/AliRoot.git] / MUON / AliMUONHitMapA1.cxx
... / ...
CommitLineData
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/*
17$Log$
18Revision 1.10 2001/11/02 12:43:21 jchudoba
19remove fNdigits data member, it could have wrong value if fDigits is updated. Make this class non-persistent
20
21Revision 1.9 2001/03/20 13:34:05 egangler
22Obvious small bug
23
24Revision 1.8 2001/01/26 21:47:21 morsch
25Use access functions to AliMUONDigit member data.
26
27Revision 1.7 2001/01/25 11:43:48 morsch
28Add a "real" default constructor.
29
30Revision 1.6 2000/10/06 09:05:42 morsch
31Correction on upper limits for x- and y- coordinates to make code work with slat chambers.
32
33Revision 1.5 2000/10/02 21:28:09 fca
34Removal of useless dependecies via forward declarations
35
36Revision 1.4 2000/07/13 16:19:44 fca
37Mainly coding conventions + some small bug fixes
38
39Revision 1.3 2000/07/03 11:54:57 morsch
40AliMUONSegmentation and AliMUONHitMap have been replaced by AliSegmentation and AliHitMap in STEER
41The methods GetPadIxy and GetPadXxy of AliMUONSegmentation have changed name to GetPadI and GetPadC.
42
43Revision 1.2 2000/06/15 07:58:48 morsch
44Code from MUON-dev joined
45
46Revision 1.1.2.2 2000/06/12 07:58:06 morsch
47include TMath.h
48
49Revision 1.1.2.1 2000/06/09 22:01:09 morsch
50Code from AliMUONHitMap.h
51Most coding rule violations corrected.
52
53*/
54
55#include "AliMUONHitMapA1.h"
56#include "AliSegmentation.h"
57#include "AliMUONResponse.h"
58#include "AliMUONDigit.h"
59
60#include <TObjArray.h>
61#include <TMath.h>
62
63ClassImp(AliMUONHitMapA1)
64
65 AliMUONHitMapA1::AliMUONHitMapA1()
66{
67 // Default constructor
68 fNpx = 0;
69 fNpy = 0;
70 fMaxIndex = 0;
71
72 fHitMap = 0;
73 fDigits = 0;
74}
75
76AliMUONHitMapA1::AliMUONHitMapA1(AliSegmentation *seg, TObjArray *dig)
77{
78// Constructor
79 fNpx = seg->Npx()+1;
80 fNpy = seg->Npy()+1;
81 fMaxIndex=2*(fNpx+1)*2*(fNpy+1)+2*fNpy;
82
83 fHitMap = new Int_t[fMaxIndex];
84 fDigits = dig;
85 Clear();
86}
87
88AliMUONHitMapA1::AliMUONHitMapA1(const AliMUONHitMapA1 & hitMap)
89{
90// Dummy copy constructor
91 ;
92}
93
94
95AliMUONHitMapA1::~AliMUONHitMapA1()
96{
97// Destructor
98 if (fHitMap) delete[] fHitMap;
99}
100
101void AliMUONHitMapA1::Clear(const char *)
102{
103// Clear hitmap
104 memset(fHitMap,0,sizeof(int)*fMaxIndex);
105}
106
107Bool_t AliMUONHitMapA1::ValidateHit(Int_t ix, Int_t iy)
108{
109 //
110 // Check if pad coordinates are within boundaries
111 //
112// printf("\n Validate %d %d %d %d", ix, iy, fNpx, fNpy);
113
114 return (TMath::Abs(ix) <= fNpx && TMath::Abs(iy) <= fNpy);
115}
116
117Int_t AliMUONHitMapA1::CheckedIndex(Int_t ix, Int_t iy) const
118{
119// Return checked indices ix, iy
120 Int_t index=2*fNpy*(ix+fNpx)+(iy+fNpy);
121 if (index >= fMaxIndex) {
122 printf("\n \n \n Try to read/write outside array !!!! \n \n %d %d %d %d %d %d",
123 ix,iy, fMaxIndex, index, fNpx, fNpy);
124 return fMaxIndex-1;
125 } else {
126 return index;
127 }
128}
129
130
131void AliMUONHitMapA1::FillHits()
132{
133// Fill hits from digits list
134 Int_t ndigits = fDigits->GetEntriesFast();
135 //printf("\n Filling hits into HitMap\n");
136 //printf("FindRawClusters -- ndigits %d \n",ndigits);
137 if (!ndigits) return;
138 AliMUONDigit *dig;
139 for (Int_t ndig=0; ndig<ndigits; ndig++) {
140 dig = (AliMUONDigit*)fDigits->UncheckedAt(ndig);
141 SetHit(dig->PadX(),dig->PadY(),ndig);
142 }
143}
144
145
146void AliMUONHitMapA1::SetHit(Int_t ix, Int_t iy, Int_t idigit)
147{
148// Assign digit to hit cell ix,iy
149// fHitMap[kMaxNpady*(ix+fNpx)+(iy+fNpy)]=idigit+1;
150 fHitMap[CheckedIndex(ix, iy)]=idigit+1;
151}
152
153void AliMUONHitMapA1::DeleteHit(Int_t ix, Int_t iy)
154{
155// Delete hit at cell ix,iy
156// fHitMap[kMaxNpady*(ix+fNpx)+(iy+fNpy)]=0;
157 fHitMap[CheckedIndex(ix, iy)]=0;
158}
159
160void AliMUONHitMapA1::FlagHit(Int_t ix, Int_t iy)
161{
162// Flag hit as used
163 fHitMap[CheckedIndex(ix, iy)]=
164 -TMath::Abs(fHitMap[CheckedIndex(ix, iy)]);
165}
166
167Int_t AliMUONHitMapA1::GetHitIndex(Int_t ix, Int_t iy) const
168{
169// Get absolute value of contents of hit cell ix,iy
170 return TMath::Abs(fHitMap[CheckedIndex(ix, iy)])-1;
171}
172
173TObject* AliMUONHitMapA1::GetHit(Int_t ix, Int_t iy) const
174{
175 // Get pointer to object at hit cell ix, iy
176 // Force crash if index does not exist ! (Manu)
177 Int_t index=GetHitIndex(ix,iy);
178 return (index <0) ? 0 : fDigits->UncheckedAt(GetHitIndex(ix,iy));
179}
180
181FlagType AliMUONHitMapA1::TestHit(Int_t ix, Int_t iy)
182{
183// Check if hit cell is empty, used or unused
184//
185 Int_t inf=fHitMap[CheckedIndex(ix, iy)];
186 if (inf < 0) {
187 return kUsed;
188 } else if (inf == 0) {
189 return kEmpty;
190 } else {
191 return kUnused;
192 }
193}
194
195AliMUONHitMapA1 & AliMUONHitMapA1::operator = (const AliMUONHitMapA1 & rhs)
196{
197// Dummy assignment operator
198 return *this;
199}
200
201
202
203
204