#include "AliEMCALTriggerBoard.h"
#include "AliEMCALTriggerPatch.h"
#include "AliLog.h"
#include <TClonesArray.h>
#include <iostream>
#include <cstdlib>
using namespace std;
ClassImp(AliEMCALTriggerBoard)
AliEMCALTriggerBoard::AliEMCALTriggerBoard() : TObject(),
fRegion(0x0),
fMap(0x0),
fRegionSize(0x0),
fSubRegionSize(0x0),
fPatchSize(0x0),
fPatches(0x0)
{
}
AliEMCALTriggerBoard::AliEMCALTriggerBoard(const TVector2& RS) : TObject(),
fRegion(0x0),
fMap(0x0),
fRegionSize( new TVector2( RS ) ),
fSubRegionSize( new TVector2() ),
fPatchSize( new TVector2() ),
fPatches( new TClonesArray("AliEMCALTriggerPatch",10) )
{
fRegion = (int**)malloc( (int)fRegionSize->X() * sizeof( int* ) );
if (!fRegion) printf("Error: malloc could not allocate %d bytes for fRegion\n",
int(fRegionSize->X() * sizeof( int* )));
fMap = (int**)malloc( (int)fRegionSize->X() * sizeof( int* ) );
if (!fMap) printf("Error: malloc could not allocate %d bytes for fMap\n",
int(fRegionSize->X() * sizeof( int* )));
for (Int_t i=0;i<fRegionSize->X();i++)
{
if(fRegion){
fRegion[i] = (int*)malloc( (int)fRegionSize->Y() * sizeof( int ) );
if (!fRegion[i]) printf("Error: malloc could not allocate %d bytes for fRegion[%d]\n",
i,int(fRegionSize->Y() * sizeof( int )));
}
if(fMap){
fMap[i] = (int*)malloc( (int)fRegionSize->Y() * sizeof( int ) );
if (!fMap[i]) printf("Error: malloc could not allocate %d bytes for fMap[%d]\n",
i,int(fRegionSize->Y() * sizeof( int )));
}
}
ZeroRegion();
if(fMap){
for (int i=0; i<fRegionSize->X(); ++i)
for (int j=0; j<fRegionSize->Y(); ++j) fMap[i][j] = 0;
}
}
AliEMCALTriggerBoard::~AliEMCALTriggerBoard()
{
for (Int_t i=0;i<fRegionSize->X();i++)
{
if (fRegion[i]) {free(fRegion[i]); fRegion[i] = 0;}
if ( fMap[i]) {free(fMap[i]); fMap[i] = 0;}
}
free(fRegion); fRegion = 0x0;
free(fMap); fMap = 0x0;
if(fPatches)fPatches->Delete();
delete fPatches;
}
void AliEMCALTriggerBoard::ZeroRegion()
{
if(fRegion){
for (Int_t i=0;i<int(fRegionSize->X());i++) for (Int_t j=0;j<int(fRegionSize->Y());j++) fRegion[i][j] = 0;
}
else {
AliFatal("fRegion was not previously initialized");
}
}
void AliEMCALTriggerBoard::SlidingWindow(Int_t thres)
{
for (int i = 0; i <= int(fRegionSize->X() - fPatchSize->X() * fSubRegionSize->X()); i += int(fSubRegionSize->X())) {
for (int j = 0; j <= int(fRegionSize->Y() - fPatchSize->Y() * fSubRegionSize->Y()); j += int(fSubRegionSize->Y())) {
AliDebug(999, Form("--- Current window at (%2d,%2d) ---",i,j));
int sum = 0;
for (int k = 0; k < int(fPatchSize->X() * fSubRegionSize->X()); k++) {
for (int l = 0; l < int(fPatchSize->Y() * fSubRegionSize->Y()); l++) {
sum += fRegion[i + k][j + l];
AliDebug(999, Form("Adding fRegion[%2d + %2d][%2d + %2d]: %d and sum is %d",i,k,j,l,fRegion[i + k][j + l],sum));
}
}
if (sum > thres) {
AliDebug(999, Form("Adding new patch at (%2d,%2d) w/ amplitude %d", i, j, sum));
new((*fPatches)[fPatches->GetEntriesFast()]) AliEMCALTriggerPatch(i, j, sum);
}
}
}
}
void AliEMCALTriggerBoard::Scan()
{
cout << " ";
for (Int_t i=0; i<int(fRegionSize->X()); i++) printf("%8d ",i);
cout << "\n";
for (Int_t i=0; i<int(fRegionSize->X())-5; i++) printf("-------");
cout << "\n";
for (Int_t i=0; i<int(fRegionSize->Y()); i++)
{
if (i && !(i%12))
{
for (Int_t j=0; j<int(fRegionSize->X())-5; j++) printf("-------");
cout << endl;
}
printf("%3d |",i);
for (Int_t j=0; j<int(fRegionSize->X()); j++)
{
printf("%2d/%5d ", fMap[j][i], fRegion[j][i]);
}
cout << endl;
}
}
void AliEMCALTriggerBoard::Reset()
{
fPatches->Delete();
ZeroRegion();
}
AliEMCALTriggerBoard.cxx:1 AliEMCALTriggerBoard.cxx:2 AliEMCALTriggerBoard.cxx:3 AliEMCALTriggerBoard.cxx:4 AliEMCALTriggerBoard.cxx:5 AliEMCALTriggerBoard.cxx:6 AliEMCALTriggerBoard.cxx:7 AliEMCALTriggerBoard.cxx:8 AliEMCALTriggerBoard.cxx:9 AliEMCALTriggerBoard.cxx:10 AliEMCALTriggerBoard.cxx:11 AliEMCALTriggerBoard.cxx:12 AliEMCALTriggerBoard.cxx:13 AliEMCALTriggerBoard.cxx:14 AliEMCALTriggerBoard.cxx:15 AliEMCALTriggerBoard.cxx:16 AliEMCALTriggerBoard.cxx:17 AliEMCALTriggerBoard.cxx:18 AliEMCALTriggerBoard.cxx:19 AliEMCALTriggerBoard.cxx:20 AliEMCALTriggerBoard.cxx:21 AliEMCALTriggerBoard.cxx:22 AliEMCALTriggerBoard.cxx:23 AliEMCALTriggerBoard.cxx:24 AliEMCALTriggerBoard.cxx:25 AliEMCALTriggerBoard.cxx:26 AliEMCALTriggerBoard.cxx:27 AliEMCALTriggerBoard.cxx:28 AliEMCALTriggerBoard.cxx:29 AliEMCALTriggerBoard.cxx:30 AliEMCALTriggerBoard.cxx:31 AliEMCALTriggerBoard.cxx:32 AliEMCALTriggerBoard.cxx:33 AliEMCALTriggerBoard.cxx:34 AliEMCALTriggerBoard.cxx:35 AliEMCALTriggerBoard.cxx:36 AliEMCALTriggerBoard.cxx:37 AliEMCALTriggerBoard.cxx:38 AliEMCALTriggerBoard.cxx:39 AliEMCALTriggerBoard.cxx:40 AliEMCALTriggerBoard.cxx:41 AliEMCALTriggerBoard.cxx:42 AliEMCALTriggerBoard.cxx:43 AliEMCALTriggerBoard.cxx:44 AliEMCALTriggerBoard.cxx:45 AliEMCALTriggerBoard.cxx:46 AliEMCALTriggerBoard.cxx:47 AliEMCALTriggerBoard.cxx:48 AliEMCALTriggerBoard.cxx:49 AliEMCALTriggerBoard.cxx:50 AliEMCALTriggerBoard.cxx:51 AliEMCALTriggerBoard.cxx:52 AliEMCALTriggerBoard.cxx:53 AliEMCALTriggerBoard.cxx:54 AliEMCALTriggerBoard.cxx:55 AliEMCALTriggerBoard.cxx:56 AliEMCALTriggerBoard.cxx:57 AliEMCALTriggerBoard.cxx:58 AliEMCALTriggerBoard.cxx:59 AliEMCALTriggerBoard.cxx:60 AliEMCALTriggerBoard.cxx:61 AliEMCALTriggerBoard.cxx:62 AliEMCALTriggerBoard.cxx:63 AliEMCALTriggerBoard.cxx:64 AliEMCALTriggerBoard.cxx:65 AliEMCALTriggerBoard.cxx:66 AliEMCALTriggerBoard.cxx:67 AliEMCALTriggerBoard.cxx:68 AliEMCALTriggerBoard.cxx:69 AliEMCALTriggerBoard.cxx:70 AliEMCALTriggerBoard.cxx:71 AliEMCALTriggerBoard.cxx:72 AliEMCALTriggerBoard.cxx:73 AliEMCALTriggerBoard.cxx:74 AliEMCALTriggerBoard.cxx:75 AliEMCALTriggerBoard.cxx:76 AliEMCALTriggerBoard.cxx:77 AliEMCALTriggerBoard.cxx:78 AliEMCALTriggerBoard.cxx:79 AliEMCALTriggerBoard.cxx:80 AliEMCALTriggerBoard.cxx:81 AliEMCALTriggerBoard.cxx:82 AliEMCALTriggerBoard.cxx:83 AliEMCALTriggerBoard.cxx:84 AliEMCALTriggerBoard.cxx:85 AliEMCALTriggerBoard.cxx:86 AliEMCALTriggerBoard.cxx:87 AliEMCALTriggerBoard.cxx:88 AliEMCALTriggerBoard.cxx:89 AliEMCALTriggerBoard.cxx:90 AliEMCALTriggerBoard.cxx:91 AliEMCALTriggerBoard.cxx:92 AliEMCALTriggerBoard.cxx:93 AliEMCALTriggerBoard.cxx:94 AliEMCALTriggerBoard.cxx:95 AliEMCALTriggerBoard.cxx:96 AliEMCALTriggerBoard.cxx:97 AliEMCALTriggerBoard.cxx:98 AliEMCALTriggerBoard.cxx:99 AliEMCALTriggerBoard.cxx:100 AliEMCALTriggerBoard.cxx:101 AliEMCALTriggerBoard.cxx:102 AliEMCALTriggerBoard.cxx:103 AliEMCALTriggerBoard.cxx:104 AliEMCALTriggerBoard.cxx:105 AliEMCALTriggerBoard.cxx:106 AliEMCALTriggerBoard.cxx:107 AliEMCALTriggerBoard.cxx:108 AliEMCALTriggerBoard.cxx:109 AliEMCALTriggerBoard.cxx:110 AliEMCALTriggerBoard.cxx:111 AliEMCALTriggerBoard.cxx:112 AliEMCALTriggerBoard.cxx:113 AliEMCALTriggerBoard.cxx:114 AliEMCALTriggerBoard.cxx:115 AliEMCALTriggerBoard.cxx:116 AliEMCALTriggerBoard.cxx:117 AliEMCALTriggerBoard.cxx:118 AliEMCALTriggerBoard.cxx:119 AliEMCALTriggerBoard.cxx:120 AliEMCALTriggerBoard.cxx:121 AliEMCALTriggerBoard.cxx:122 AliEMCALTriggerBoard.cxx:123 AliEMCALTriggerBoard.cxx:124 AliEMCALTriggerBoard.cxx:125 AliEMCALTriggerBoard.cxx:126 AliEMCALTriggerBoard.cxx:127 AliEMCALTriggerBoard.cxx:128 AliEMCALTriggerBoard.cxx:129 AliEMCALTriggerBoard.cxx:130 AliEMCALTriggerBoard.cxx:131 AliEMCALTriggerBoard.cxx:132 AliEMCALTriggerBoard.cxx:133 AliEMCALTriggerBoard.cxx:134 AliEMCALTriggerBoard.cxx:135 AliEMCALTriggerBoard.cxx:136 AliEMCALTriggerBoard.cxx:137 AliEMCALTriggerBoard.cxx:138 AliEMCALTriggerBoard.cxx:139 AliEMCALTriggerBoard.cxx:140 AliEMCALTriggerBoard.cxx:141 AliEMCALTriggerBoard.cxx:142 AliEMCALTriggerBoard.cxx:143 AliEMCALTriggerBoard.cxx:144 AliEMCALTriggerBoard.cxx:145 AliEMCALTriggerBoard.cxx:146 AliEMCALTriggerBoard.cxx:147 AliEMCALTriggerBoard.cxx:148 AliEMCALTriggerBoard.cxx:149 AliEMCALTriggerBoard.cxx:150 AliEMCALTriggerBoard.cxx:151 AliEMCALTriggerBoard.cxx:152 AliEMCALTriggerBoard.cxx:153 AliEMCALTriggerBoard.cxx:154 AliEMCALTriggerBoard.cxx:155 AliEMCALTriggerBoard.cxx:156 AliEMCALTriggerBoard.cxx:157 AliEMCALTriggerBoard.cxx:158 AliEMCALTriggerBoard.cxx:159 AliEMCALTriggerBoard.cxx:160 AliEMCALTriggerBoard.cxx:161 AliEMCALTriggerBoard.cxx:162 AliEMCALTriggerBoard.cxx:163 AliEMCALTriggerBoard.cxx:164 AliEMCALTriggerBoard.cxx:165 AliEMCALTriggerBoard.cxx:166 AliEMCALTriggerBoard.cxx:167 AliEMCALTriggerBoard.cxx:168 AliEMCALTriggerBoard.cxx:169 AliEMCALTriggerBoard.cxx:170 AliEMCALTriggerBoard.cxx:171 AliEMCALTriggerBoard.cxx:172 AliEMCALTriggerBoard.cxx:173 AliEMCALTriggerBoard.cxx:174 AliEMCALTriggerBoard.cxx:175 AliEMCALTriggerBoard.cxx:176 AliEMCALTriggerBoard.cxx:177 AliEMCALTriggerBoard.cxx:178 AliEMCALTriggerBoard.cxx:179 AliEMCALTriggerBoard.cxx:180 AliEMCALTriggerBoard.cxx:181 AliEMCALTriggerBoard.cxx:182 AliEMCALTriggerBoard.cxx:183 AliEMCALTriggerBoard.cxx:184 AliEMCALTriggerBoard.cxx:185 AliEMCALTriggerBoard.cxx:186 AliEMCALTriggerBoard.cxx:187