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