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 purpeateose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
19 EMCal trigger data container
20 for data (both raw & rec) persistency
21 Author: R. GUERNANE LPSC Grenoble CNRS/IN2P3
24 #include "AliEMCALTriggerData.h"
25 #include "AliEMCALTriggerPatch.h"
27 #include "TIterator.h"
28 #include "Riostream.h"
30 ClassImp(AliEMCALTriggerData)
33 AliEMCALTriggerData::AliEMCALTriggerData() : TObject(),
50 for (Int_t i = 0; i < 2; i++)
52 fL0Patches[i] = new TClonesArray("AliEMCALTriggerPatch");
53 fL1GammaPatches[i] = new TClonesArray("AliEMCALTriggerPatch");
54 fL1JetPatches[i] = new TClonesArray("AliEMCALTriggerPatch");
57 for (Int_t i = 0; i < 32; i++) for (Int_t j = 0; j < 24; j++) for (Int_t k = 0; k < 4; k++) fL0Region[i][j][k] = 0;
58 for (Int_t i = 0; i < 2; i++) for (Int_t j = 0; j < 48; j++) for (Int_t k = 0; k < 64; k++) fL1Region[i][j][k] = 0;
60 fL1V0[0] = fL1V0[1] = 0;
61 for (Int_t i = 0; i < 8; i++) fL1TriggerType[i] = 0;
65 AliEMCALTriggerData::~AliEMCALTriggerData()
69 for (Int_t i = 0; i < 2; i++)
71 if ( fL0Patches[i]) fL0Patches[i]->Delete();
72 if (fL1GammaPatches[i]) fL1GammaPatches[i]->Delete();
73 if ( fL1JetPatches[i]) fL1JetPatches[i]->Delete();
78 void AliEMCALTriggerData::SetL0Region(Int_t i, const Int_t**& region)
84 AliError("Bad index!");
88 for (Int_t j=0;j<24;j++)
89 for (Int_t k=0;k<4;k++) fL0Region[i][j][k] = region[j][k];
93 void AliEMCALTriggerData::GetPatches(TriggerType_t type, Int_t i, TClonesArray& patches) const
99 AliError("Bad index!");
106 patches = *fL0Patches[i];
109 patches = *fL1GammaPatches[i];
112 patches = *fL1JetPatches[i];
115 AliError("Unknown trigger type!");
121 TClonesArray* AliEMCALTriggerData::GetPatches(TriggerType_t type, Int_t i) const
127 AliError("Bad index!");
134 return fL0Patches[i];
137 return fL1GammaPatches[i];
140 return fL1JetPatches[i];
143 AliError("Unknown trigger type!");
151 void AliEMCALTriggerData::SetPatches(TriggerType_t type, Int_t i, const TClonesArray& patches)
153 // Set list of patches
157 AliError("Bad index!");
161 if (patches.GetEntriesFast())
163 TClonesArray* arr = 0x0;
171 arr = fL1GammaPatches[i];
174 arr = fL1JetPatches[i];
177 AliError("Unknown trigger type!");
183 Int_t size = arr->GetSize() + patches.GetSize();
187 for (Int_t k = 0; k < patches.GetEntriesFast(); k++)
189 AliEMCALTriggerPatch* p = static_cast<AliEMCALTriggerPatch*>(patches.At(k));
190 new((*arr)[arr->GetEntriesFast()]) AliEMCALTriggerPatch(*p);
195 AliError("TClonesArray is NULL!");
201 void AliEMCALTriggerData::SetL1Region(Int_t i, Int_t**& region)
207 AliError("Bad index!");
211 for (Int_t j = 0; j < 48; j++)
212 for (Int_t k = 0; k < 64; k++) fL1Region[i][j][k] = region[j][k];
216 void AliEMCALTriggerData::GetL1Region(Int_t i, Int_t arr[][64]) const
222 AliError("Bad index!");
226 for (Int_t j = 0; j < 48; j++) for (Int_t k = 0; k < 64; k++) { arr[j][k] = fL1Region[i][j][k]; }
231 void AliEMCALTriggerData::Scan() const
238 printf("\tFound (%2d,%2d) patches\n", fL0Patches[1]->GetEntriesFast(), fL0Patches[0]->GetEntriesFast());
240 nP = fL0Patches[1]->MakeIterator();
241 while (AliEMCALTriggerPatch* p = (AliEMCALTriggerPatch*)nP->Next()) {printf("\t"); p->Print("");}
243 nP = fL0Patches[0]->MakeIterator();
244 while (AliEMCALTriggerPatch* p = (AliEMCALTriggerPatch*)nP->Next()) {printf("\t"); p->Print("");}
246 printf("\tFound (%4d,%4d) gamma patches\n",fL1GammaPatches[1]->GetEntriesFast(), fL1GammaPatches[0]->GetEntriesFast());
248 nP = fL1GammaPatches[1]->MakeIterator();
249 while (AliEMCALTriggerPatch* p = (AliEMCALTriggerPatch*)nP->Next()) {printf("\t"); p->Print("");}
251 nP = fL1GammaPatches[0]->MakeIterator();
252 while (AliEMCALTriggerPatch* p = (AliEMCALTriggerPatch*)nP->Next()) {printf("\t"); p->Print("");}
253 printf("\tFound (%4d,%4d) jet patches\n",fL1JetPatches[1]->GetEntriesFast(), fL1JetPatches[0]->GetEntriesFast());
255 nP = fL1JetPatches[1]->MakeIterator();
256 while (AliEMCALTriggerPatch* p = (AliEMCALTriggerPatch*)nP->Next()) {printf("\t"); p->Print("");}
258 nP = fL1JetPatches[0]->MakeIterator();
259 while (AliEMCALTriggerPatch* p = (AliEMCALTriggerPatch*)nP->Next()) {printf("\t"); p->Print("");}
263 void AliEMCALTriggerData::Reset()
267 for (Int_t i = 0; i < 2; i++)
269 if ( fL0Patches[i]) fL0Patches[i]->Delete();
270 if (fL1GammaPatches[i]) fL1GammaPatches[i]->Delete();
271 if ( fL1JetPatches[i]) fL1JetPatches[i]->Delete();
274 for (Int_t i = 0; i < 2; i++) for (Int_t j = 0; j < 48; j++) for (Int_t k = 0; k < 64; k++) fL1Region[i][j][k] = 0;