1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 Revision 1.5 2000/10/02 21:28:09 fca
19 Removal of useless dependecies via forward declarations
21 Revision 1.4 2000/07/13 16:19:44 fca
22 Mainly coding conventions + some small bug fixes
24 Revision 1.3 2000/07/03 11:54:57 morsch
25 AliMUONSegmentation and AliMUONHitMap have been replaced by AliSegmentation and AliHitMap in STEER
26 The methods GetPadIxy and GetPadXxy of AliMUONSegmentation have changed name to GetPadI and GetPadC.
28 Revision 1.2 2000/06/15 07:58:48 morsch
29 Code from MUON-dev joined
31 Revision 1.1.2.2 2000/06/12 07:58:06 morsch
34 Revision 1.1.2.1 2000/06/09 22:01:09 morsch
35 Code from AliMUONHitMap.h
36 Most coding rule violations corrected.
40 #include "AliMUONHitMapA1.h"
41 #include "AliSegmentation.h"
42 #include "AliMUONResponse.h"
43 #include "AliMUONDigit.h"
45 #include <TObjArray.h>
48 ClassImp(AliMUONHitMapA1)
51 AliMUONHitMapA1::AliMUONHitMapA1(AliSegmentation *seg, TObjArray *dig)
55 fNpx = fSegmentation->Npx()+1;
56 fNpy = fSegmentation->Npy()+1;
57 fMaxIndex=2*(fNpx+1)*2*(fNpy+1)+2*fNpy;
59 fHitMap = new Int_t[fMaxIndex];
61 fNdigits = fDigits->GetEntriesFast();
65 AliMUONHitMapA1::AliMUONHitMapA1(const AliMUONHitMapA1 & hitMap)
67 // Dummy copy constructor
72 AliMUONHitMapA1::~AliMUONHitMapA1()
75 // if (fDigits) delete fDigits;
76 if (fHitMap) delete[] fHitMap;
79 void AliMUONHitMapA1::Clear(const char *)
82 memset(fHitMap,0,sizeof(int)*fMaxIndex);
85 Int_t AliMUONHitMapA1::CheckedIndex(Int_t ix, Int_t iy) const
87 // Return checked indices ix, iy
88 Int_t index=2*fNpy*(ix+fNpx)+(iy+fNpy);
89 if (index > fMaxIndex) {
90 printf("\n \n \n Try to read/write outside array !!!! \n \n %d %d %d %d %d %d",
91 ix,iy, fMaxIndex, index, fNpx, fNpy);
99 void AliMUONHitMapA1::FillHits()
101 // Fill hits from digits list
102 Int_t ndigits = fDigits->GetEntriesFast();
103 //printf("\n Filling hits into HitMap\n");
104 //printf("FindRawClusters -- ndigits %d \n",ndigits);
105 if (!ndigits) return;
107 for (Int_t ndig=0; ndig<fNdigits; ndig++) {
108 dig = (AliMUONDigit*)fDigits->UncheckedAt(ndig);
109 SetHit(dig->fPadX,dig->fPadY,ndig);
114 void AliMUONHitMapA1::SetHit(Int_t ix, Int_t iy, Int_t idigit)
116 // Assign digit to hit cell ix,iy
117 // fHitMap[kMaxNpady*(ix+fNpx)+(iy+fNpy)]=idigit+1;
118 fHitMap[CheckedIndex(ix, iy)]=idigit+1;
121 void AliMUONHitMapA1::DeleteHit(Int_t ix, Int_t iy)
123 // Delete hit at cell ix,iy
124 // fHitMap[kMaxNpady*(ix+fNpx)+(iy+fNpy)]=0;
125 fHitMap[CheckedIndex(ix, iy)]=0;
128 void AliMUONHitMapA1::FlagHit(Int_t ix, Int_t iy)
131 fHitMap[CheckedIndex(ix, iy)]=
132 -TMath::Abs(fHitMap[CheckedIndex(ix, iy)]);
135 Int_t AliMUONHitMapA1::GetHitIndex(Int_t ix, Int_t iy) const
137 // Get absolute value of contents of hit cell ix,iy
138 return TMath::Abs(fHitMap[CheckedIndex(ix, iy)])-1;
141 TObject* AliMUONHitMapA1::GetHit(Int_t ix, Int_t iy) const
143 // Get pointer to object at hit cell ix, iy
144 // Force crash if index does not exist ! (Manu)
145 Int_t index=GetHitIndex(ix,iy);
146 return (index <0) ? 0 : fDigits->UncheckedAt(GetHitIndex(ix,iy));
149 FlagType AliMUONHitMapA1::TestHit(Int_t ix, Int_t iy)
151 // Check if hit cell is empty, used or unused
153 Int_t inf=fHitMap[CheckedIndex(ix, iy)];
156 } else if (inf == 0) {
163 AliMUONHitMapA1 & AliMUONHitMapA1::operator = (const AliMUONHitMapA1 & rhs)
165 // Dummy assignment operator