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 **************************************************************************/
21 Author: R. GUERNANE LPSC Grenoble CNRS/IN2P3
24 #include "AliESDCaloTrigger.h"
28 #include "Riostream.h"
31 ClassImp(AliESDCaloTrigger)
34 AliESDCaloTrigger::AliESDCaloTrigger() : TNamed(),
42 fL0Times(new TArrayI()),
46 for (Int_t i = 0; i < 48; i++) for (Int_t j = 0; j < 64; j++) fTriggerBits[i][j] = 0;
50 AliESDCaloTrigger::AliESDCaloTrigger(const AliESDCaloTrigger& src) : TNamed(src),
58 fL0Times(new TArrayI()),
66 AliESDCaloTrigger::~AliESDCaloTrigger()
69 if (fNEntries) DeAllocate();
71 delete fL0Times; fL0Times = 0x0;
75 void AliESDCaloTrigger::DeAllocate()
78 delete [] fColumn; fColumn = 0x0;
79 delete [] fRow; fRow = 0x0;
80 delete [] fAmplitude; fAmplitude = 0x0;
81 delete [] fTime; fTime = 0x0;
82 delete [] fNL0Times; fNL0Times = 0x0;
83 delete [] fL1TimeSum; fL1TimeSum = 0x0;
84 // delete [] fL0Times; fL0Times = 0x0;
89 for (Int_t i = 0; i < 48; i++) for (Int_t j = 0; j < 64; j++) fTriggerBits[i][j] = 0;
95 AliESDCaloTrigger& AliESDCaloTrigger::operator=(const AliESDCaloTrigger& src)
98 if (this != &src) src.Copy(*this);
104 void AliESDCaloTrigger::Copy(TObject &obj) const
109 AliESDCaloTrigger& dest = static_cast<AliESDCaloTrigger&>(obj);
111 if (dest.fNEntries) dest.DeAllocate();
113 dest.Allocate(fNEntries);
115 for (Int_t i = 0; i < fNEntries; i++)
118 for (Int_t j = 0; j < 10; j++) times[j] = fL0Times->At(10 * i + j);
120 dest.Add(fColumn[i], fRow[i], fAmplitude[i], fTime[i], times, fNL0Times[i], fL1TimeSum[i]);
123 for (Int_t i = 0; i < 48; i++) for (Int_t j = 0; j < 64; j++) dest.fTriggerBits[i][j] = fTriggerBits[i][j];
127 void AliESDCaloTrigger::Allocate(Int_t size)
134 fColumn = new Int_t[fNEntries];
135 fRow = new Int_t[fNEntries];
136 fAmplitude = new Float_t[fNEntries];
137 fTime = new Float_t[fNEntries];
138 fNL0Times = new Int_t[fNEntries];
139 // fL0Times = new Int_t[fNEntries * 10];
140 fL1TimeSum = new Int_t[fNEntries];
142 for (Int_t i = 0; i < fNEntries; i++)
152 fL0Times->Set(fNEntries * 10);
156 Bool_t AliESDCaloTrigger::Add(Int_t col, Int_t row, Float_t amp, Float_t time, Int_t trgtimes[], Int_t ntrgtimes, Int_t trgts)
161 fColumn[fCurrent] = col;
162 fRow[fCurrent] = row;
163 fAmplitude[fCurrent] = amp;
164 fTime[fCurrent] = time;
165 fNL0Times[fCurrent] = ntrgtimes;
166 fL1TimeSum[fCurrent] = trgts;
170 AliError("Should not have more than 10 L0 times");
174 for (Int_t i = 0; i < fNL0Times[fCurrent]; i++) fL0Times->AddAt(trgtimes[i], 10 * fCurrent + i);
180 void AliESDCaloTrigger::SetTriggerBits(Int_t col, Int_t row, Int_t i, Int_t j)
183 if (col < 0 || col > 47 || row < 0 || row > 63)
185 AliError("Bad position!");
189 fTriggerBits[col][row] = (fTriggerBits[col][row] | (1 << (i + 3 * j))); // L0 L1g L1j
193 Bool_t AliESDCaloTrigger::Next()
196 if (fCurrent >= fNEntries - 1 || !fNEntries) return kFALSE;
204 void AliESDCaloTrigger::GetPosition(Int_t& col, Int_t& row) const
207 if (fCurrent == -1) return;
209 col = fColumn[fCurrent];
210 row = fRow[fCurrent];
214 void AliESDCaloTrigger::GetAmplitude(Float_t& amp) const
217 if (fCurrent == -1) return;
219 amp = fAmplitude[fCurrent];
223 void AliESDCaloTrigger::GetTime(Float_t& time) const
226 if (fCurrent == -1) return;
228 time = fTime[fCurrent];
232 void AliESDCaloTrigger::GetL1TimeSum(Int_t& amp) const
235 if (fCurrent == -1) return;
237 amp = fL1TimeSum[fCurrent];
241 void AliESDCaloTrigger::GetNL0Times(Int_t& ntimes) const
244 if (fCurrent == -1) return;
246 ntimes = fNL0Times[fCurrent];
250 void AliESDCaloTrigger::GetTriggerBits(Char_t& bits) const
253 if (fCurrent == -1) return;
255 bits = fTriggerBits[fColumn[fCurrent]][fRow[fCurrent]];
259 void AliESDCaloTrigger::GetL0Times(Int_t times[]) const
262 if (fCurrent == -1) return;
264 for (Int_t i = 0; i < fNL0Times[fCurrent]; i++) times[i] = fL0Times->At(10 * fCurrent + i);
268 void AliESDCaloTrigger::Print(const Option_t* /*opt*/) const
271 if (fCurrent == -1) return;
273 printf("============\n");
275 printf("\tPOSITION (X: %2d Y: %2d) / FITTED F-ALTRO (AMP: %4f TIME: %3f)\n",
276 fColumn[fCurrent], fRow[fCurrent], fAmplitude[fCurrent], fTime[fCurrent]);
277 printf("\t%d L0 TIMES (", fNL0Times[fCurrent]);
278 for (Int_t i = 0; i < fNL0Times[fCurrent]; i++) printf("%2d ",fL0Times->At(10 * fCurrent + i));
281 printf("\tTIME SUM: %4d\n", fL1TimeSum[fCurrent]);
282 printf("\tTHRESHOLDS (GAMMA: %4d, JET: %4d)\n", fL1Threshold[0], fL1Threshold[1]);
283 printf("--TRIGGER BITS: 0x%x\n", fTriggerBits[fColumn[fCurrent]][fRow[fCurrent]]);