ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/*
 

 

Author: R. GUERNANE LPSC Grenoble CNRS/IN2P3
*/

#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* /*opt*/) 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:1
 AliESDCaloTrigger.cxx:2
 AliESDCaloTrigger.cxx:3
 AliESDCaloTrigger.cxx:4
 AliESDCaloTrigger.cxx:5
 AliESDCaloTrigger.cxx:6
 AliESDCaloTrigger.cxx:7
 AliESDCaloTrigger.cxx:8
 AliESDCaloTrigger.cxx:9
 AliESDCaloTrigger.cxx:10
 AliESDCaloTrigger.cxx:11
 AliESDCaloTrigger.cxx:12
 AliESDCaloTrigger.cxx:13
 AliESDCaloTrigger.cxx:14
 AliESDCaloTrigger.cxx:15
 AliESDCaloTrigger.cxx:16
 AliESDCaloTrigger.cxx:17
 AliESDCaloTrigger.cxx:18
 AliESDCaloTrigger.cxx:19
 AliESDCaloTrigger.cxx:20
 AliESDCaloTrigger.cxx:21
 AliESDCaloTrigger.cxx:22
 AliESDCaloTrigger.cxx:23
 AliESDCaloTrigger.cxx:24
 AliESDCaloTrigger.cxx:25
 AliESDCaloTrigger.cxx:26
 AliESDCaloTrigger.cxx:27
 AliESDCaloTrigger.cxx:28
 AliESDCaloTrigger.cxx:29
 AliESDCaloTrigger.cxx:30
 AliESDCaloTrigger.cxx:31
 AliESDCaloTrigger.cxx:32
 AliESDCaloTrigger.cxx:33
 AliESDCaloTrigger.cxx:34
 AliESDCaloTrigger.cxx:35
 AliESDCaloTrigger.cxx:36
 AliESDCaloTrigger.cxx:37
 AliESDCaloTrigger.cxx:38
 AliESDCaloTrigger.cxx:39
 AliESDCaloTrigger.cxx:40
 AliESDCaloTrigger.cxx:41
 AliESDCaloTrigger.cxx:42
 AliESDCaloTrigger.cxx:43
 AliESDCaloTrigger.cxx:44
 AliESDCaloTrigger.cxx:45
 AliESDCaloTrigger.cxx:46
 AliESDCaloTrigger.cxx:47
 AliESDCaloTrigger.cxx:48
 AliESDCaloTrigger.cxx:49
 AliESDCaloTrigger.cxx:50
 AliESDCaloTrigger.cxx:51
 AliESDCaloTrigger.cxx:52
 AliESDCaloTrigger.cxx:53
 AliESDCaloTrigger.cxx:54
 AliESDCaloTrigger.cxx:55
 AliESDCaloTrigger.cxx:56
 AliESDCaloTrigger.cxx:57
 AliESDCaloTrigger.cxx:58
 AliESDCaloTrigger.cxx:59
 AliESDCaloTrigger.cxx:60
 AliESDCaloTrigger.cxx:61
 AliESDCaloTrigger.cxx:62
 AliESDCaloTrigger.cxx:63
 AliESDCaloTrigger.cxx:64
 AliESDCaloTrigger.cxx:65
 AliESDCaloTrigger.cxx:66
 AliESDCaloTrigger.cxx:67
 AliESDCaloTrigger.cxx:68
 AliESDCaloTrigger.cxx:69
 AliESDCaloTrigger.cxx:70
 AliESDCaloTrigger.cxx:71
 AliESDCaloTrigger.cxx:72
 AliESDCaloTrigger.cxx:73
 AliESDCaloTrigger.cxx:74
 AliESDCaloTrigger.cxx:75
 AliESDCaloTrigger.cxx:76
 AliESDCaloTrigger.cxx:77
 AliESDCaloTrigger.cxx:78
 AliESDCaloTrigger.cxx:79
 AliESDCaloTrigger.cxx:80
 AliESDCaloTrigger.cxx:81
 AliESDCaloTrigger.cxx:82
 AliESDCaloTrigger.cxx:83
 AliESDCaloTrigger.cxx:84
 AliESDCaloTrigger.cxx:85
 AliESDCaloTrigger.cxx:86
 AliESDCaloTrigger.cxx:87
 AliESDCaloTrigger.cxx:88
 AliESDCaloTrigger.cxx:89
 AliESDCaloTrigger.cxx:90
 AliESDCaloTrigger.cxx:91
 AliESDCaloTrigger.cxx:92
 AliESDCaloTrigger.cxx:93
 AliESDCaloTrigger.cxx:94
 AliESDCaloTrigger.cxx:95
 AliESDCaloTrigger.cxx:96
 AliESDCaloTrigger.cxx:97
 AliESDCaloTrigger.cxx:98
 AliESDCaloTrigger.cxx:99
 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