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
*/

// --- ROOT system ---AliEMCALTriggerRawDigit
#include <Riostream.h>
#include <TMath.h>

#include "AliEMCALTriggerRawDigit.h"

ClassImp(AliEMCALTriggerRawDigit)

//____________________________________________________________________________
AliEMCALTriggerRawDigit::AliEMCALTriggerRawDigit() : AliEMCALRawDigit(),
fTriggerBits(0),
fNL0Times(0),
fL0Times(),
fL1TimeSum(-1)
{
	// default ctor 
	for (Int_t i = 0; i < 10; i++) fL0Times[i] = -1;
}

//____________________________________________________________________________
AliEMCALTriggerRawDigit::AliEMCALTriggerRawDigit(Int_t id, Int_t timeSamples[], Int_t nSamples) : AliEMCALRawDigit(id, timeSamples, nSamples),
fTriggerBits(0),
fNL0Times(0),
fL0Times(),
fL1TimeSum(-1)
{
	// Ctor
	
	for (Int_t i = 0; i < 10; i++) fL0Times[i] = -1;
}

//____________________________________________________________________________
AliEMCALTriggerRawDigit::~AliEMCALTriggerRawDigit() 
{
	// Dtor
	
	//delete [] fL0Times;
}

//____________________________________________________________________________
Bool_t AliEMCALTriggerRawDigit::SetL0Time(const Int_t i)
{
	// Set L0 times
	
	for (Int_t j = 0; j < fNL0Times; j++)
	{
		if (i == fL0Times[j]) 
		{
			AliDebug(1,Form("Digit id %d: L0 time %d already there! Won't add it twice",fId,i));
			return kFALSE;
		}
	}
	
	fNL0Times++;
	
	if (fNL0Times > 9)
	{
		AliError("More than 10 L0 times!");
		return kFALSE;
	}
	
	fL0Times[fNL0Times - 1] = i;
	
	return kTRUE;
}

//____________________________________________________________________________
Bool_t AliEMCALTriggerRawDigit::GetL0Time(const Int_t i, Int_t& time) const
{
	// Get L0 times
	
	if (i < 0 || i > fNL0Times)
	{
		AliError("Bad index!");
		return kFALSE;
	}
		
	time = fL0Times[i];
	
	return kTRUE;
}

//____________________________________________________________________________
Bool_t AliEMCALTriggerRawDigit::GetL0Times(Int_t times[]) const
{
	// Get L0 times
	
	for (Int_t i = 0; i < fNL0Times; i++) times[i] = fL0Times[i];
	
	return kTRUE;
}

//____________________________________________________________________________
Int_t AliEMCALTriggerRawDigit::GetL0TimeSum(const Int_t time) const
{
	// Get L0 time sum
	
	Int_t value = 0;
	
	for (Int_t i = 0; i < fNSamples; i++)
	{
		Int_t timeBin, amp;
		GetTimeSample(i, timeBin, amp);
		
		if (timeBin >= time && timeBin < time + 4) value += amp;
	}
	
	return value;
}

//____________________________________________________________________________
Int_t AliEMCALTriggerRawDigit::GetTriggerBit(const TriggerType_t type, const Int_t mode) const
{
	// Get trigger bit
	
	Int_t shift = kTriggerTypeEnd * mode;
	Int_t mask  = 1 << type;
	
	return ((fTriggerBits >> shift) & mask);
}	

//____________________________________________________________________________
void AliEMCALTriggerRawDigit::Print(const Option_t* /*opt*/) const
{
	// Dump
	
	printf("===\n| Digit id: %4d / %d Time Samples: \n",fId,fNSamples);
	for (Int_t i=0; i < fNSamples; i++) 
	{
		Int_t timeBin, amp;
		GetTimeSample(i, timeBin, amp);
		printf("| (%d,%d) ",timeBin,amp);
	}	
	printf("\n");
	printf("| L0: (%d,%d) / %d Time(s): \n",GetTriggerBit(kL0,1),GetTriggerBit(kL0,0),fNL0Times);
	for (Int_t i = 0; i < fNL0Times; i++) 
	{
		Int_t time;
		if (GetL0Time(i, time)) printf("| %d ",time);
	}
	printf("\n");
	printf("| L1: g high (%d,%d) g low (%d,%d) j high (%d,%d) j low (%d,%d) / Time sum: %d\n",
		   GetTriggerBit(kL1GammaHigh,1),GetTriggerBit(kL1GammaHigh,0),GetTriggerBit(kL1GammaLow,1),GetTriggerBit(kL1GammaLow,0),
		   GetTriggerBit(kL1JetHigh,1),  GetTriggerBit(kL1JetHigh,0),  GetTriggerBit(kL1JetLow,1),  GetTriggerBit(kL1JetLow,0),
		   fL1TimeSum);
}

 AliEMCALTriggerRawDigit.cxx:1
 AliEMCALTriggerRawDigit.cxx:2
 AliEMCALTriggerRawDigit.cxx:3
 AliEMCALTriggerRawDigit.cxx:4
 AliEMCALTriggerRawDigit.cxx:5
 AliEMCALTriggerRawDigit.cxx:6
 AliEMCALTriggerRawDigit.cxx:7
 AliEMCALTriggerRawDigit.cxx:8
 AliEMCALTriggerRawDigit.cxx:9
 AliEMCALTriggerRawDigit.cxx:10
 AliEMCALTriggerRawDigit.cxx:11
 AliEMCALTriggerRawDigit.cxx:12
 AliEMCALTriggerRawDigit.cxx:13
 AliEMCALTriggerRawDigit.cxx:14
 AliEMCALTriggerRawDigit.cxx:15
 AliEMCALTriggerRawDigit.cxx:16
 AliEMCALTriggerRawDigit.cxx:17
 AliEMCALTriggerRawDigit.cxx:18
 AliEMCALTriggerRawDigit.cxx:19
 AliEMCALTriggerRawDigit.cxx:20
 AliEMCALTriggerRawDigit.cxx:21
 AliEMCALTriggerRawDigit.cxx:22
 AliEMCALTriggerRawDigit.cxx:23
 AliEMCALTriggerRawDigit.cxx:24
 AliEMCALTriggerRawDigit.cxx:25
 AliEMCALTriggerRawDigit.cxx:26
 AliEMCALTriggerRawDigit.cxx:27
 AliEMCALTriggerRawDigit.cxx:28
 AliEMCALTriggerRawDigit.cxx:29
 AliEMCALTriggerRawDigit.cxx:30
 AliEMCALTriggerRawDigit.cxx:31
 AliEMCALTriggerRawDigit.cxx:32
 AliEMCALTriggerRawDigit.cxx:33
 AliEMCALTriggerRawDigit.cxx:34
 AliEMCALTriggerRawDigit.cxx:35
 AliEMCALTriggerRawDigit.cxx:36
 AliEMCALTriggerRawDigit.cxx:37
 AliEMCALTriggerRawDigit.cxx:38
 AliEMCALTriggerRawDigit.cxx:39
 AliEMCALTriggerRawDigit.cxx:40
 AliEMCALTriggerRawDigit.cxx:41
 AliEMCALTriggerRawDigit.cxx:42
 AliEMCALTriggerRawDigit.cxx:43
 AliEMCALTriggerRawDigit.cxx:44
 AliEMCALTriggerRawDigit.cxx:45
 AliEMCALTriggerRawDigit.cxx:46
 AliEMCALTriggerRawDigit.cxx:47
 AliEMCALTriggerRawDigit.cxx:48
 AliEMCALTriggerRawDigit.cxx:49
 AliEMCALTriggerRawDigit.cxx:50
 AliEMCALTriggerRawDigit.cxx:51
 AliEMCALTriggerRawDigit.cxx:52
 AliEMCALTriggerRawDigit.cxx:53
 AliEMCALTriggerRawDigit.cxx:54
 AliEMCALTriggerRawDigit.cxx:55
 AliEMCALTriggerRawDigit.cxx:56
 AliEMCALTriggerRawDigit.cxx:57
 AliEMCALTriggerRawDigit.cxx:58
 AliEMCALTriggerRawDigit.cxx:59
 AliEMCALTriggerRawDigit.cxx:60
 AliEMCALTriggerRawDigit.cxx:61
 AliEMCALTriggerRawDigit.cxx:62
 AliEMCALTriggerRawDigit.cxx:63
 AliEMCALTriggerRawDigit.cxx:64
 AliEMCALTriggerRawDigit.cxx:65
 AliEMCALTriggerRawDigit.cxx:66
 AliEMCALTriggerRawDigit.cxx:67
 AliEMCALTriggerRawDigit.cxx:68
 AliEMCALTriggerRawDigit.cxx:69
 AliEMCALTriggerRawDigit.cxx:70
 AliEMCALTriggerRawDigit.cxx:71
 AliEMCALTriggerRawDigit.cxx:72
 AliEMCALTriggerRawDigit.cxx:73
 AliEMCALTriggerRawDigit.cxx:74
 AliEMCALTriggerRawDigit.cxx:75
 AliEMCALTriggerRawDigit.cxx:76
 AliEMCALTriggerRawDigit.cxx:77
 AliEMCALTriggerRawDigit.cxx:78
 AliEMCALTriggerRawDigit.cxx:79
 AliEMCALTriggerRawDigit.cxx:80
 AliEMCALTriggerRawDigit.cxx:81
 AliEMCALTriggerRawDigit.cxx:82
 AliEMCALTriggerRawDigit.cxx:83
 AliEMCALTriggerRawDigit.cxx:84
 AliEMCALTriggerRawDigit.cxx:85
 AliEMCALTriggerRawDigit.cxx:86
 AliEMCALTriggerRawDigit.cxx:87
 AliEMCALTriggerRawDigit.cxx:88
 AliEMCALTriggerRawDigit.cxx:89
 AliEMCALTriggerRawDigit.cxx:90
 AliEMCALTriggerRawDigit.cxx:91
 AliEMCALTriggerRawDigit.cxx:92
 AliEMCALTriggerRawDigit.cxx:93
 AliEMCALTriggerRawDigit.cxx:94
 AliEMCALTriggerRawDigit.cxx:95
 AliEMCALTriggerRawDigit.cxx:96
 AliEMCALTriggerRawDigit.cxx:97
 AliEMCALTriggerRawDigit.cxx:98
 AliEMCALTriggerRawDigit.cxx:99
 AliEMCALTriggerRawDigit.cxx:100
 AliEMCALTriggerRawDigit.cxx:101
 AliEMCALTriggerRawDigit.cxx:102
 AliEMCALTriggerRawDigit.cxx:103
 AliEMCALTriggerRawDigit.cxx:104
 AliEMCALTriggerRawDigit.cxx:105
 AliEMCALTriggerRawDigit.cxx:106
 AliEMCALTriggerRawDigit.cxx:107
 AliEMCALTriggerRawDigit.cxx:108
 AliEMCALTriggerRawDigit.cxx:109
 AliEMCALTriggerRawDigit.cxx:110
 AliEMCALTriggerRawDigit.cxx:111
 AliEMCALTriggerRawDigit.cxx:112
 AliEMCALTriggerRawDigit.cxx:113
 AliEMCALTriggerRawDigit.cxx:114
 AliEMCALTriggerRawDigit.cxx:115
 AliEMCALTriggerRawDigit.cxx:116
 AliEMCALTriggerRawDigit.cxx:117
 AliEMCALTriggerRawDigit.cxx:118
 AliEMCALTriggerRawDigit.cxx:119
 AliEMCALTriggerRawDigit.cxx:120
 AliEMCALTriggerRawDigit.cxx:121
 AliEMCALTriggerRawDigit.cxx:122
 AliEMCALTriggerRawDigit.cxx:123
 AliEMCALTriggerRawDigit.cxx:124
 AliEMCALTriggerRawDigit.cxx:125
 AliEMCALTriggerRawDigit.cxx:126
 AliEMCALTriggerRawDigit.cxx:127
 AliEMCALTriggerRawDigit.cxx:128
 AliEMCALTriggerRawDigit.cxx:129
 AliEMCALTriggerRawDigit.cxx:130
 AliEMCALTriggerRawDigit.cxx:131
 AliEMCALTriggerRawDigit.cxx:132
 AliEMCALTriggerRawDigit.cxx:133
 AliEMCALTriggerRawDigit.cxx:134
 AliEMCALTriggerRawDigit.cxx:135
 AliEMCALTriggerRawDigit.cxx:136
 AliEMCALTriggerRawDigit.cxx:137
 AliEMCALTriggerRawDigit.cxx:138
 AliEMCALTriggerRawDigit.cxx:139
 AliEMCALTriggerRawDigit.cxx:140
 AliEMCALTriggerRawDigit.cxx:141
 AliEMCALTriggerRawDigit.cxx:142
 AliEMCALTriggerRawDigit.cxx:143
 AliEMCALTriggerRawDigit.cxx:144
 AliEMCALTriggerRawDigit.cxx:145
 AliEMCALTriggerRawDigit.cxx:146
 AliEMCALTriggerRawDigit.cxx:147
 AliEMCALTriggerRawDigit.cxx:148
 AliEMCALTriggerRawDigit.cxx:149
 AliEMCALTriggerRawDigit.cxx:150
 AliEMCALTriggerRawDigit.cxx:151
 AliEMCALTriggerRawDigit.cxx:152
 AliEMCALTriggerRawDigit.cxx:153
 AliEMCALTriggerRawDigit.cxx:154
 AliEMCALTriggerRawDigit.cxx:155
 AliEMCALTriggerRawDigit.cxx:156
 AliEMCALTriggerRawDigit.cxx:157
 AliEMCALTriggerRawDigit.cxx:158
 AliEMCALTriggerRawDigit.cxx:159
 AliEMCALTriggerRawDigit.cxx:160
 AliEMCALTriggerRawDigit.cxx:161
 AliEMCALTriggerRawDigit.cxx:162
 AliEMCALTriggerRawDigit.cxx:163
 AliEMCALTriggerRawDigit.cxx:164
 AliEMCALTriggerRawDigit.cxx:165
 AliEMCALTriggerRawDigit.cxx:166
 AliEMCALTriggerRawDigit.cxx:167
 AliEMCALTriggerRawDigit.cxx:168
 AliEMCALTriggerRawDigit.cxx:169