#include "AliESDCaloTrigger.h"
#include "AliLog.h"
#include "TArrayI.h"
#include "Riostream.h"
#include <cstdlib>
ClassImp(AliESDCaloTrigger)
AliESDCaloTrigger::AliESDCaloTrigger() : AliVCaloTrigger(),
fNEntries(0),
fCurrent(-1),
fColumn(0x0),
fRow(0x0),
fAmplitude(0x0),
fTime(0x0),
fNL0Times(0x0),
fL0Times(new TArrayI()),
fL1TimeSum(0x0),
fTriggerBits(0x0),
fL1Threshold(),
fL1V0(),
fL1FrameMask(0)
{
for (int i = 0; i < 4; i++) fL1Threshold[i] = 0;
fL1V0[0] = fL1V0[1] = 0;
}
AliESDCaloTrigger::AliESDCaloTrigger(const AliESDCaloTrigger& src) : AliVCaloTrigger(src),
fNEntries(0),
fCurrent(-1),
fColumn(0x0),
fRow(0x0),
fAmplitude(0x0),
fTime(0x0),
fNL0Times(0x0),
fL0Times(new TArrayI()),
fL1TimeSum(0x0),
fTriggerBits(0x0),
fL1Threshold(),
fL1V0(),
fL1FrameMask(0)
{
src.Copy(*this);
}
AliESDCaloTrigger::~AliESDCaloTrigger()
{
if (fNEntries) DeAllocate();
delete fL0Times; fL0Times = 0x0;
}
void AliESDCaloTrigger::DeAllocate()
{
delete [] fColumn; fColumn = 0x0;
delete [] fRow; fRow = 0x0;
delete [] fAmplitude; fAmplitude = 0x0;
delete [] fTime; fTime = 0x0;
delete [] fNL0Times; fNL0Times = 0x0;
delete [] fL1TimeSum; fL1TimeSum = 0x0;
delete [] fTriggerBits; fTriggerBits = 0x0;
fNEntries = 0;
fCurrent = -1;
fL0Times->Reset();
}
AliESDCaloTrigger& AliESDCaloTrigger::operator=(const AliESDCaloTrigger& src)
{
if (this != &src) src.Copy(*this);
return *this;
}
void AliESDCaloTrigger::Copy(TObject &obj) const
{
AliVCaloTrigger::Copy(obj);
AliESDCaloTrigger& dest = static_cast<AliESDCaloTrigger&>(obj);
if (dest.fNEntries) dest.DeAllocate();
dest.Allocate(fNEntries);
for (Int_t i = 0; i < fNEntries; i++)
{
Int_t times[10];
for (Int_t j = 0; j < 10; j++) times[j] = fL0Times->At(10 * i + j);
dest.Add(fColumn[i], fRow[i], fAmplitude[i], fTime[i], times, fNL0Times[i], fL1TimeSum[i], fTriggerBits[i]);
}
for (int i = 0; i < 4; i++) dest.SetL1Threshold(i, fL1Threshold[i]);
dest.SetL1V0(fL1V0);
dest.SetL1FrameMask(fL1FrameMask);
}
void AliESDCaloTrigger::Allocate(Int_t size)
{
if (!size) return;
fNEntries = size;
fColumn = new Int_t[fNEntries];
fRow = new Int_t[fNEntries];
fAmplitude = new Float_t[fNEntries];
fTime = new Float_t[fNEntries];
fNL0Times = new Int_t[fNEntries];
fL1TimeSum = new Int_t[fNEntries];
fTriggerBits = new Int_t[fNEntries];
for (Int_t i = 0; i < fNEntries; i++)
{
fColumn[i] = 0;
fRow[i] = 0;
fAmplitude[i] = 0;
fTime[i] = 0;
fNL0Times[i] = 0;
fL1TimeSum[i] = 0;
fTriggerBits[i] = 0;
}
fL0Times->Set(fNEntries * 10);
}
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, Int_t trgbits)
{
fCurrent++;
fColumn[fCurrent] = col;
fRow[fCurrent] = row;
fAmplitude[fCurrent] = amp;
fTime[fCurrent] = time;
fNL0Times[fCurrent] = ntrgtimes;
fL1TimeSum[fCurrent] = trgts;
fTriggerBits[fCurrent] = trgbits;
if (ntrgtimes > 9)
{
AliError("Should not have more than 10 L0 times");
return kFALSE;
}
for (Int_t i = 0; i < fNL0Times[fCurrent]; i++) fL0Times->AddAt(trgtimes[i], 10 * fCurrent + i);
return kTRUE;
}
Bool_t AliESDCaloTrigger::Next()
{
if (fCurrent >= fNEntries - 1 || !fNEntries) return kFALSE;
fCurrent++;
return kTRUE;
}
void AliESDCaloTrigger::GetPosition(Int_t& col, Int_t& row) const
{
if (fCurrent == -1) return;
col = fColumn?fColumn[fCurrent]:0;
row = fRow?fRow[fCurrent]:0;
}
void AliESDCaloTrigger::GetAmplitude(Float_t& amp) const
{
if (fCurrent == -1) return;
amp = fAmplitude?fAmplitude[fCurrent]:0;
}
void AliESDCaloTrigger::GetTime(Float_t& time) const
{
if (fCurrent == -1) return;
time = fTime?fTime[fCurrent]:0;
}
void AliESDCaloTrigger::GetL1TimeSum(Int_t& amp) const
{
if (fCurrent == -1) return;
amp = fL1TimeSum?fL1TimeSum[fCurrent]:0;
}
void AliESDCaloTrigger::GetNL0Times(Int_t& ntimes) const
{
if (fCurrent == -1) return;
ntimes = fNL0Times?fNL0Times[fCurrent]:0;
}
void AliESDCaloTrigger::GetTriggerBits(Int_t& bits) const
{
if (fCurrent == -1) return;
bits = fTriggerBits?fTriggerBits[fCurrent]:0;
}
void AliESDCaloTrigger::GetL0Times(Int_t times[]) const
{
if (fCurrent == -1) return;
if (fNL0Times && fL0Times) {
for (Int_t i = 0; i < fNL0Times[fCurrent]; i++) times[i] = fL0Times->At(10 * fCurrent + i);
}
}
void AliESDCaloTrigger::Print(const Option_t* ) const
{
if (fCurrent == -1) return;
if (!fColumn) return;
if (!fRow) return;
if (!fAmplitude) return;
if (!fTime) return;
if (!fNL0Times) return;
if (!fL0Times) return;
if (!fL1TimeSum) return;
if (!fTriggerBits) return;
printf("============\n");
printf("--L0:\n");
printf("\tPOSITION (X: %2d Y: %2d) / FITTED F-ALTRO (AMP: %4f TIME: %3f)\n",
fColumn[fCurrent], fRow[fCurrent], fAmplitude[fCurrent], fTime[fCurrent]);
printf("\t%d L0 TIMES (", fNL0Times[fCurrent]);
for (Int_t i = 0; i < fNL0Times[fCurrent]; i++) printf("%2d ",fL0Times->At(10 * fCurrent + i));
printf(")\n");
printf("--L1:\n");
printf("\tTIME SUM: %4d\n", fL1TimeSum[fCurrent]);
printf("\tHIGH THRESHOLDS (GAMMA: %4d, JET: %4d)\n", fL1Threshold[0], fL1Threshold[1]);
printf("\tLOW THRESHOLDS (GAMMA: %4d, JET: %4d)\n", fL1Threshold[2], fL1Threshold[3]);
printf("--TRIGGER BITS: 0x%x\n", fTriggerBits[fCurrent]);
}
AliESDCaloTrigger.cxx:100 AliESDCaloTrigger.cxx:101 AliESDCaloTrigger.cxx:102 AliESDCaloTrigger.cxx:103 AliESDCaloTrigger.cxx:104 AliESDCaloTrigger.cxx:105 AliESDCaloTrigger.cxx:106 AliESDCaloTrigger.cxx:107 AliESDCaloTrigger.cxx:108 AliESDCaloTrigger.cxx:109 AliESDCaloTrigger.cxx:110 AliESDCaloTrigger.cxx:111 AliESDCaloTrigger.cxx:112 AliESDCaloTrigger.cxx:113 AliESDCaloTrigger.cxx:114 AliESDCaloTrigger.cxx:115 AliESDCaloTrigger.cxx:116 AliESDCaloTrigger.cxx:117 AliESDCaloTrigger.cxx:118 AliESDCaloTrigger.cxx:119 AliESDCaloTrigger.cxx:120 AliESDCaloTrigger.cxx:121 AliESDCaloTrigger.cxx:122 AliESDCaloTrigger.cxx:123 AliESDCaloTrigger.cxx:124 AliESDCaloTrigger.cxx:125 AliESDCaloTrigger.cxx:126 AliESDCaloTrigger.cxx:127 AliESDCaloTrigger.cxx:128 AliESDCaloTrigger.cxx:129 AliESDCaloTrigger.cxx:130 AliESDCaloTrigger.cxx:131 AliESDCaloTrigger.cxx:132 AliESDCaloTrigger.cxx:133 AliESDCaloTrigger.cxx:134 AliESDCaloTrigger.cxx:135 AliESDCaloTrigger.cxx:136 AliESDCaloTrigger.cxx:137 AliESDCaloTrigger.cxx:138 AliESDCaloTrigger.cxx:139 AliESDCaloTrigger.cxx:140 AliESDCaloTrigger.cxx:141 AliESDCaloTrigger.cxx:142 AliESDCaloTrigger.cxx:143 AliESDCaloTrigger.cxx:144 AliESDCaloTrigger.cxx:145 AliESDCaloTrigger.cxx:146 AliESDCaloTrigger.cxx:147 AliESDCaloTrigger.cxx:148 AliESDCaloTrigger.cxx:149 AliESDCaloTrigger.cxx:150 AliESDCaloTrigger.cxx:151 AliESDCaloTrigger.cxx:152 AliESDCaloTrigger.cxx:153 AliESDCaloTrigger.cxx:154 AliESDCaloTrigger.cxx:155 AliESDCaloTrigger.cxx:156 AliESDCaloTrigger.cxx:157 AliESDCaloTrigger.cxx:158 AliESDCaloTrigger.cxx:159 AliESDCaloTrigger.cxx:160 AliESDCaloTrigger.cxx:161 AliESDCaloTrigger.cxx:162 AliESDCaloTrigger.cxx:163 AliESDCaloTrigger.cxx:164 AliESDCaloTrigger.cxx:165 AliESDCaloTrigger.cxx:166 AliESDCaloTrigger.cxx:167 AliESDCaloTrigger.cxx:168 AliESDCaloTrigger.cxx:169 AliESDCaloTrigger.cxx:170 AliESDCaloTrigger.cxx:171 AliESDCaloTrigger.cxx:172 AliESDCaloTrigger.cxx:173 AliESDCaloTrigger.cxx:174 AliESDCaloTrigger.cxx:175 AliESDCaloTrigger.cxx:176 AliESDCaloTrigger.cxx:177 AliESDCaloTrigger.cxx:178 AliESDCaloTrigger.cxx:179 AliESDCaloTrigger.cxx:180 AliESDCaloTrigger.cxx:181 AliESDCaloTrigger.cxx:182 AliESDCaloTrigger.cxx:183 AliESDCaloTrigger.cxx:184 AliESDCaloTrigger.cxx:185 AliESDCaloTrigger.cxx:186 AliESDCaloTrigger.cxx:187 AliESDCaloTrigger.cxx:188 AliESDCaloTrigger.cxx:189 AliESDCaloTrigger.cxx:190 AliESDCaloTrigger.cxx:191 AliESDCaloTrigger.cxx:192 AliESDCaloTrigger.cxx:193 AliESDCaloTrigger.cxx:194 AliESDCaloTrigger.cxx:195 AliESDCaloTrigger.cxx:196 AliESDCaloTrigger.cxx:197 AliESDCaloTrigger.cxx:198 AliESDCaloTrigger.cxx:199 AliESDCaloTrigger.cxx:200 AliESDCaloTrigger.cxx:201 AliESDCaloTrigger.cxx:202 AliESDCaloTrigger.cxx:203 AliESDCaloTrigger.cxx:204 AliESDCaloTrigger.cxx:205 AliESDCaloTrigger.cxx:206 AliESDCaloTrigger.cxx:207 AliESDCaloTrigger.cxx:208 AliESDCaloTrigger.cxx:209 AliESDCaloTrigger.cxx:210 AliESDCaloTrigger.cxx:211 AliESDCaloTrigger.cxx:212 AliESDCaloTrigger.cxx:213 AliESDCaloTrigger.cxx:214 AliESDCaloTrigger.cxx:215 AliESDCaloTrigger.cxx:216 AliESDCaloTrigger.cxx:217 AliESDCaloTrigger.cxx:218 AliESDCaloTrigger.cxx:219 AliESDCaloTrigger.cxx:220 AliESDCaloTrigger.cxx:221 AliESDCaloTrigger.cxx:222 AliESDCaloTrigger.cxx:223 AliESDCaloTrigger.cxx:224 AliESDCaloTrigger.cxx:225 AliESDCaloTrigger.cxx:226 AliESDCaloTrigger.cxx:227 AliESDCaloTrigger.cxx:228 AliESDCaloTrigger.cxx:229 AliESDCaloTrigger.cxx:230 AliESDCaloTrigger.cxx:231 AliESDCaloTrigger.cxx:232 AliESDCaloTrigger.cxx:233 AliESDCaloTrigger.cxx:234 AliESDCaloTrigger.cxx:235 AliESDCaloTrigger.cxx:236 AliESDCaloTrigger.cxx:237 AliESDCaloTrigger.cxx:238 AliESDCaloTrigger.cxx:239 AliESDCaloTrigger.cxx:240 AliESDCaloTrigger.cxx:241 AliESDCaloTrigger.cxx:242 AliESDCaloTrigger.cxx:243 AliESDCaloTrigger.cxx:244 AliESDCaloTrigger.cxx:245 AliESDCaloTrigger.cxx:246 AliESDCaloTrigger.cxx:247 AliESDCaloTrigger.cxx:248 AliESDCaloTrigger.cxx:249 AliESDCaloTrigger.cxx:250 AliESDCaloTrigger.cxx:251 AliESDCaloTrigger.cxx:252 AliESDCaloTrigger.cxx:253 AliESDCaloTrigger.cxx:254 AliESDCaloTrigger.cxx:255 AliESDCaloTrigger.cxx:256 AliESDCaloTrigger.cxx:257 AliESDCaloTrigger.cxx:258 AliESDCaloTrigger.cxx:259 AliESDCaloTrigger.cxx:260 AliESDCaloTrigger.cxx:261 AliESDCaloTrigger.cxx:262 AliESDCaloTrigger.cxx:263 AliESDCaloTrigger.cxx:264 AliESDCaloTrigger.cxx:265 AliESDCaloTrigger.cxx:266 AliESDCaloTrigger.cxx:267 AliESDCaloTrigger.cxx:268 AliESDCaloTrigger.cxx:269 AliESDCaloTrigger.cxx:270 AliESDCaloTrigger.cxx:271 AliESDCaloTrigger.cxx:272 AliESDCaloTrigger.cxx:273 AliESDCaloTrigger.cxx:274 AliESDCaloTrigger.cxx:275 AliESDCaloTrigger.cxx:276 AliESDCaloTrigger.cxx:277 AliESDCaloTrigger.cxx:278 AliESDCaloTrigger.cxx:279 AliESDCaloTrigger.cxx:280 AliESDCaloTrigger.cxx:281 AliESDCaloTrigger.cxx:282 AliESDCaloTrigger.cxx:283 AliESDCaloTrigger.cxx:284 AliESDCaloTrigger.cxx:285 AliESDCaloTrigger.cxx:286 AliESDCaloTrigger.cxx:287 AliESDCaloTrigger.cxx:288 AliESDCaloTrigger.cxx:289 AliESDCaloTrigger.cxx:290 AliESDCaloTrigger.cxx:291 AliESDCaloTrigger.cxx:292 AliESDCaloTrigger.cxx:293 AliESDCaloTrigger.cxx:294