]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TOF/AliTOFRawMap.cxx
Add class to access simulation parameters, AliEMCALSimParam, to be set in configurati...
[u/mrichter/AliRoot.git] / TOF / AliTOFRawMap.cxx
CommitLineData
15ec34b9 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/////////////////////////////////////////////////////////////////////////
19// //
20// AliTOFRawMap class //
21// //
22// It enables fast check if the TDC channel was already engaged //
23// for a measurement. //
24// The index of a AliTOFrawData is saved in the each rawdatamap "cell" //
25// (there is an offset +1, because the index can be zero and //
26// zero means empty cell. //
27// //
28/////////////////////////////////////////////////////////////////////////
29
30#include "TClonesArray.h"
31
32#include "AliLog.h"
33
34#include "AliTOFGeometry.h"
35#include "AliTOFRawMap.h"
36
37ClassImp(AliTOFRawMap)
38
39AliTOFRawMap::AliTOFRawMap():
8a190ba2 40 TObject(),
15ec34b9 41 fNtrm(-1),
42 fNtrmChain(-1),
43 fNtdc(-1),
44 fNtdcChannel(-1),
45 fRawData(0x0),
46 fMaxIndex(-1),
47 fRawMap(0x0)
48{
49//
50// Default ctor
51//
52}
53
54////////////////////////////////////////////////////////////////////////
8a190ba2 55AliTOFRawMap::AliTOFRawMap(TClonesArray *dig)://, AliTOFGeometry *tofGeom:
56 TObject(),
57 fNtrm(AliTOFGeometry::NTRM()+2),
58 fNtrmChain(AliTOFGeometry::NChain()),
59 fNtdc(AliTOFGeometry::NTdc()),
60 fNtdcChannel(AliTOFGeometry::NCh()),
15ec34b9 61 fRawData(dig),
62 fMaxIndex(-1),
63 fRawMap(0x0)
64{
65//
66// ctor
67//
68
69// of course, these constants must not be hardwired
70// change later
71
15ec34b9 72 fMaxIndex = fNtrm*fNtrmChain*fNtdc*fNtdcChannel;
73 fRawMap = new Int_t[fMaxIndex];
74 Clear();
75}
76
77////////////////////////////////////////////////////////////////////////
8a190ba2 78AliTOFRawMap::AliTOFRawMap(const AliTOFRawMap & rawMap)
79 :TObject(rawMap),
80 fNtrm(rawMap.fNtrm),
81 fNtrmChain(rawMap.fNtrmChain),
82 fNtdc(rawMap.fNtdc),
83 fNtdcChannel(rawMap.fNtdcChannel),
84 fRawData(rawMap.fRawData),
15ec34b9 85 fMaxIndex(-1),
86 fRawMap(0x0)
87{
88//
89// Dummy copy constructor
90//
91
8a190ba2 92 fMaxIndex = fNtrm*fNtrmChain*fNtdc*fNtdcChannel;
93 fRawMap = new Int_t[fMaxIndex];
94}
95
96////////////////////////////////////////////////////////////////////////
97AliTOFRawMap &
98AliTOFRawMap::operator=(const AliTOFRawMap & /*rawMap*/)
99{
100//
101// Dummy copy constructor
102//
103 return *this;
15ec34b9 104}
105
106
107////////////////////////////////////////////////////////////////////////
108AliTOFRawMap::~AliTOFRawMap()
109{
110//
111// Destructor
112//
8a190ba2 113 if (fRawMap)
114 delete[] fRawMap;
15ec34b9 115
116}
117
118////////////////////////////////////////////////////////////////////////
119void AliTOFRawMap::Clear(const char *)
120{
121//
122// Clear hitmap
123//
124 memset(fRawMap,0,sizeof(int)*fMaxIndex);
125}
126
127////////////////////////////////////////////////////////////////////////
128Int_t AliTOFRawMap::CheckedIndex(Int_t *slot) const
129{
130//
131// Return checked indices for vol
132//
133 Int_t index =
134 slot[0]*fNtrmChain*fNtdc*fNtdcChannel + // TRM
135 slot[1]*fNtdc*fNtdcChannel + // TRM chain
136 slot[2]*fNtdcChannel + // TDC
137 slot[3]; // TDC channel
138
139 if (index >= fMaxIndex) {
140 AliError("CheckedIndex - input outside bounds");
141 return -1;
142 } else {
143 return index;
144 }
145}
146
147////////////////////////////////////////////////////////////////////////
148void AliTOFRawMap::SetHit(Int_t *slot, Int_t idigit)
149{
150//
151// Assign digit to pad vol
152//
153
154// 0 means empty pad, we need to shift indeces by 1
155 fRawMap[CheckedIndex(slot)]=idigit+1;
156}
157
158////////////////////////////////////////////////////////////////////////
159void AliTOFRawMap::SetHit(Int_t *slot)
160{
161//
162// Assign last digit to channel slot
163//
164
165// 0 means empty pad, we need to shift indeces by 1
166 fRawMap[CheckedIndex(slot)]=fRawData->GetLast()+1;
167}
168
169////////////////////////////////////////////////////////////////////////
170Int_t AliTOFRawMap::GetHitIndex(Int_t *slot) const
171{
172//
173// Get contents of channel slot
174//
175
176// 0 means empty pad, we need to shift indeces by 1
177 return fRawMap[CheckedIndex(slot)]-1;
178}
179
180////////////////////////////////////////////////////////////////////////
181TObject* AliTOFRawMap::GetHit(Int_t *slot) const
182{
183//
184// Get pointer to object at alot
185// return 0 if vol out of bounds
186 Int_t index = GetHitIndex(slot);
187 return (index <0) ? 0 : fRawData->UncheckedAt(index);
188}
189
190////////////////////////////////////////////////////////////////////////
191FlagType AliTOFRawMap::TestHit(Int_t *slot) const
192{
193//
194// Check if hit cell is empty, used or unused
195//
196 Int_t inf = fRawMap[CheckedIndex(slot)];
197 if (inf > 0) {
198 return kUsed;
199 } else if (inf == 0) {
200 return kEmpty;
201 } else {
202 return kUnused;
203 }
204}
205