#include <TObjArray.h>
#include <TClonesArray.h>
#include <TGeoManager.h>
#include <AliEMCALAfterBurnerUF.h>
#include <AliEMCALGeometry.h>
#include <AliEMCALUnfolding.h>
#include <AliAODCaloCluster.h>
#include <AliVCaloCells.h>
#include <AliEMCALRecPoint.h>
#include <AliEMCALDigit.h>
ClassImp(AliEMCALAfterBurnerUF)
AliEMCALAfterBurnerUF::AliEMCALAfterBurnerUF():
fGeom(NULL),
fLogWeight(4.5),
fECALocMaxCut(0.03),
fMinECut(0.01),
fRecPoints(NULL),
fDigitsArr(NULL),
fClusterUnfolding(NULL)
{
Init();
}
AliEMCALAfterBurnerUF::AliEMCALAfterBurnerUF(Float_t logWeight, Float_t ecaLocMaxCut, Float_t minECut):
fGeom(NULL),
fLogWeight(logWeight),
fECALocMaxCut(ecaLocMaxCut),
fMinECut(minECut),
fRecPoints(NULL),
fDigitsArr(NULL),
fClusterUnfolding(NULL)
{
Init();
}
void AliEMCALAfterBurnerUF::Init()
{
if (!gGeoManager)
Warning("AliEMCALAfterBurnerUF::Init","GeoManager not found, please import the geometry.root file or pass to the geometry the misalignment matrices");
if (!gGeoManager)
Info("AliEMCALAfterBurnerUF::Init", "gGeoManager was not set, be careful");
if (!AliEMCALGeometry::GetInstance()) {
Warning("AliEMCALAfterBurnerUF::Init", "AliEMCALGeometry is not yet initialized. Initializing with EMCAL_COMPLETEV1");
AliEMCALGeometry::GetInstance("EMCAL_COMPLETEV1");
}
fGeom = AliEMCALGeometry::GetInstance();
if (!fGeom)
Fatal("AliEMCALAfterBurnerUF::AliEMCALAfterBurnerUF", "could not get EMCAL geometry");
fClusterUnfolding = new AliEMCALUnfolding(fGeom);
fClusterUnfolding->SetECALocalMaxCut(fECALocMaxCut);
fClusterUnfolding->SetThreshold(fMinECut);
fRecPoints = new TObjArray(100);
fDigitsArr = new TClonesArray("AliEMCALDigit",1152);
}
AliEMCALAfterBurnerUF::~AliEMCALAfterBurnerUF()
{
if (fClusterUnfolding) delete fClusterUnfolding;
if (fRecPoints) {
fRecPoints->Delete();
delete fRecPoints;
}
if (fDigitsArr) {
fDigitsArr->Clear("C");
delete fDigitsArr;
}
}
void AliEMCALAfterBurnerUF::Clear()
{
if (fRecPoints) fRecPoints->Delete();
if (fDigitsArr) fDigitsArr->Clear("C");
}
void AliEMCALAfterBurnerUF::RecPoints2Clusters(TObjArray *clusArray)
{
for(Int_t i = 0; i < fRecPoints->GetEntriesFast(); i++)
{
AliEMCALRecPoint *recPoint = (AliEMCALRecPoint*) fRecPoints->At(i);
const Int_t ncells = recPoint->GetMultiplicity();
Int_t ncellsTrue = 0;
UShort_t absIds[ncells];
Double32_t ratios[ncells];
for (Int_t c = 0; c < ncells; c++) {
AliEMCALDigit *digit = (AliEMCALDigit*) fDigitsArr->At(recPoint->GetDigitsList()[c]);
absIds[ncellsTrue] = digit->GetId();
ratios[ncellsTrue] = recPoint->GetEnergiesList()[c]/digit->GetAmplitude();
if (ratios[ncellsTrue] > 0.001) ncellsTrue++;
}
if (ncellsTrue < 1) {
Warning("AliEMCALAfterBurnerUF::RecPoints2Clusters", "skipping cluster with no cells");
continue;
}
TVector3 gpos;
Float_t g[3];
recPoint->EvalGlobalPosition(fLogWeight, fDigitsArr);
recPoint->GetGlobalPosition(gpos);
gpos.GetXYZ(g);
AliAODCaloCluster *clus = new AliAODCaloCluster();
clus->SetType(AliVCluster::kEMCALClusterv1);
clus->SetE(recPoint->GetEnergy());
clus->SetPosition(g);
clus->SetNCells(ncellsTrue);
clus->SetCellsAbsId(absIds);
clus->SetCellsAmplitudeFraction(ratios);
clusArray->Add(clus);
}
}
void AliEMCALAfterBurnerUF::UnfoldClusters(TObjArray *clusArray, AliVCaloCells *cellsEMCAL)
{
Int_t ndigits = 0;
Int_t nclus = clusArray->GetEntriesFast();
for (Int_t i = 0; i < nclus; i++)
{
AliVCluster *clus = (AliVCluster*) clusArray->At(i);
if (!clus->IsEMCAL()) continue;
AliEMCALRecPoint *recPoint = new AliEMCALRecPoint("");
recPoint->SetClusterType(AliVCluster::kEMCALClusterv1);
fRecPoints->Add(recPoint);
for (Int_t c = 0; c < clus->GetNCells(); c++) {
Int_t absId = clus->GetCellAbsId(c);
Double_t amp = cellsEMCAL->GetCellAmplitude(absId);
Double_t time = cellsEMCAL->GetCellTime(absId);
AliEMCALDigit *digit = (AliEMCALDigit*) fDigitsArr->New(ndigits);
digit->SetId(absId);
digit->SetAmplitude(amp);
digit->SetTime(time);
digit->SetTimeR(time);
digit->SetIndexInList(ndigits);
recPoint->AddDigit(*digit, amp, kFALSE);
ndigits++;
}
clusArray->RemoveAt(i);
delete clus;
}
fClusterUnfolding->SetInput(fRecPoints->GetEntriesFast(), fRecPoints, fDigitsArr);
fClusterUnfolding->MakeUnfolding();
RecPoints2Clusters(clusArray);
fRecPoints->Delete();
fDigitsArr->Clear("C");
clusArray->Compress();
}
AliEMCALAfterBurnerUF.cxx:1 AliEMCALAfterBurnerUF.cxx:2 AliEMCALAfterBurnerUF.cxx:3 AliEMCALAfterBurnerUF.cxx:4 AliEMCALAfterBurnerUF.cxx:5 AliEMCALAfterBurnerUF.cxx:6 AliEMCALAfterBurnerUF.cxx:7 AliEMCALAfterBurnerUF.cxx:8 AliEMCALAfterBurnerUF.cxx:9 AliEMCALAfterBurnerUF.cxx:10 AliEMCALAfterBurnerUF.cxx:11 AliEMCALAfterBurnerUF.cxx:12 AliEMCALAfterBurnerUF.cxx:13 AliEMCALAfterBurnerUF.cxx:14 AliEMCALAfterBurnerUF.cxx:15 AliEMCALAfterBurnerUF.cxx:16 AliEMCALAfterBurnerUF.cxx:17 AliEMCALAfterBurnerUF.cxx:18 AliEMCALAfterBurnerUF.cxx:19 AliEMCALAfterBurnerUF.cxx:20 AliEMCALAfterBurnerUF.cxx:21 AliEMCALAfterBurnerUF.cxx:22 AliEMCALAfterBurnerUF.cxx:23 AliEMCALAfterBurnerUF.cxx:24 AliEMCALAfterBurnerUF.cxx:25 AliEMCALAfterBurnerUF.cxx:26 AliEMCALAfterBurnerUF.cxx:27 AliEMCALAfterBurnerUF.cxx:28 AliEMCALAfterBurnerUF.cxx:29 AliEMCALAfterBurnerUF.cxx:30 AliEMCALAfterBurnerUF.cxx:31 AliEMCALAfterBurnerUF.cxx:32 AliEMCALAfterBurnerUF.cxx:33 AliEMCALAfterBurnerUF.cxx:34 AliEMCALAfterBurnerUF.cxx:35 AliEMCALAfterBurnerUF.cxx:36 AliEMCALAfterBurnerUF.cxx:37 AliEMCALAfterBurnerUF.cxx:38 AliEMCALAfterBurnerUF.cxx:39 AliEMCALAfterBurnerUF.cxx:40 AliEMCALAfterBurnerUF.cxx:41 AliEMCALAfterBurnerUF.cxx:42 AliEMCALAfterBurnerUF.cxx:43 AliEMCALAfterBurnerUF.cxx:44 AliEMCALAfterBurnerUF.cxx:45 AliEMCALAfterBurnerUF.cxx:46 AliEMCALAfterBurnerUF.cxx:47 AliEMCALAfterBurnerUF.cxx:48 AliEMCALAfterBurnerUF.cxx:49 AliEMCALAfterBurnerUF.cxx:50 AliEMCALAfterBurnerUF.cxx:51 AliEMCALAfterBurnerUF.cxx:52 AliEMCALAfterBurnerUF.cxx:53 AliEMCALAfterBurnerUF.cxx:54 AliEMCALAfterBurnerUF.cxx:55 AliEMCALAfterBurnerUF.cxx:56 AliEMCALAfterBurnerUF.cxx:57 AliEMCALAfterBurnerUF.cxx:58 AliEMCALAfterBurnerUF.cxx:59 AliEMCALAfterBurnerUF.cxx:60 AliEMCALAfterBurnerUF.cxx:61 AliEMCALAfterBurnerUF.cxx:62 AliEMCALAfterBurnerUF.cxx:63 AliEMCALAfterBurnerUF.cxx:64 AliEMCALAfterBurnerUF.cxx:65 AliEMCALAfterBurnerUF.cxx:66 AliEMCALAfterBurnerUF.cxx:67 AliEMCALAfterBurnerUF.cxx:68 AliEMCALAfterBurnerUF.cxx:69 AliEMCALAfterBurnerUF.cxx:70 AliEMCALAfterBurnerUF.cxx:71 AliEMCALAfterBurnerUF.cxx:72 AliEMCALAfterBurnerUF.cxx:73 AliEMCALAfterBurnerUF.cxx:74 AliEMCALAfterBurnerUF.cxx:75 AliEMCALAfterBurnerUF.cxx:76 AliEMCALAfterBurnerUF.cxx:77 AliEMCALAfterBurnerUF.cxx:78 AliEMCALAfterBurnerUF.cxx:79 AliEMCALAfterBurnerUF.cxx:80 AliEMCALAfterBurnerUF.cxx:81 AliEMCALAfterBurnerUF.cxx:82 AliEMCALAfterBurnerUF.cxx:83 AliEMCALAfterBurnerUF.cxx:84 AliEMCALAfterBurnerUF.cxx:85 AliEMCALAfterBurnerUF.cxx:86 AliEMCALAfterBurnerUF.cxx:87 AliEMCALAfterBurnerUF.cxx:88 AliEMCALAfterBurnerUF.cxx:89 AliEMCALAfterBurnerUF.cxx:90 AliEMCALAfterBurnerUF.cxx:91 AliEMCALAfterBurnerUF.cxx:92 AliEMCALAfterBurnerUF.cxx:93 AliEMCALAfterBurnerUF.cxx:94 AliEMCALAfterBurnerUF.cxx:95 AliEMCALAfterBurnerUF.cxx:96 AliEMCALAfterBurnerUF.cxx:97 AliEMCALAfterBurnerUF.cxx:98 AliEMCALAfterBurnerUF.cxx:99 AliEMCALAfterBurnerUF.cxx:100 AliEMCALAfterBurnerUF.cxx:101 AliEMCALAfterBurnerUF.cxx:102 AliEMCALAfterBurnerUF.cxx:103 AliEMCALAfterBurnerUF.cxx:104 AliEMCALAfterBurnerUF.cxx:105 AliEMCALAfterBurnerUF.cxx:106 AliEMCALAfterBurnerUF.cxx:107 AliEMCALAfterBurnerUF.cxx:108 AliEMCALAfterBurnerUF.cxx:109 AliEMCALAfterBurnerUF.cxx:110 AliEMCALAfterBurnerUF.cxx:111 AliEMCALAfterBurnerUF.cxx:112 AliEMCALAfterBurnerUF.cxx:113 AliEMCALAfterBurnerUF.cxx:114 AliEMCALAfterBurnerUF.cxx:115 AliEMCALAfterBurnerUF.cxx:116 AliEMCALAfterBurnerUF.cxx:117 AliEMCALAfterBurnerUF.cxx:118 AliEMCALAfterBurnerUF.cxx:119 AliEMCALAfterBurnerUF.cxx:120 AliEMCALAfterBurnerUF.cxx:121 AliEMCALAfterBurnerUF.cxx:122 AliEMCALAfterBurnerUF.cxx:123 AliEMCALAfterBurnerUF.cxx:124 AliEMCALAfterBurnerUF.cxx:125 AliEMCALAfterBurnerUF.cxx:126 AliEMCALAfterBurnerUF.cxx:127 AliEMCALAfterBurnerUF.cxx:128 AliEMCALAfterBurnerUF.cxx:129 AliEMCALAfterBurnerUF.cxx:130 AliEMCALAfterBurnerUF.cxx:131 AliEMCALAfterBurnerUF.cxx:132 AliEMCALAfterBurnerUF.cxx:133 AliEMCALAfterBurnerUF.cxx:134 AliEMCALAfterBurnerUF.cxx:135 AliEMCALAfterBurnerUF.cxx:136 AliEMCALAfterBurnerUF.cxx:137 AliEMCALAfterBurnerUF.cxx:138 AliEMCALAfterBurnerUF.cxx:139 AliEMCALAfterBurnerUF.cxx:140 AliEMCALAfterBurnerUF.cxx:141 AliEMCALAfterBurnerUF.cxx:142 AliEMCALAfterBurnerUF.cxx:143 AliEMCALAfterBurnerUF.cxx:144 AliEMCALAfterBurnerUF.cxx:145 AliEMCALAfterBurnerUF.cxx:146 AliEMCALAfterBurnerUF.cxx:147 AliEMCALAfterBurnerUF.cxx:148 AliEMCALAfterBurnerUF.cxx:149 AliEMCALAfterBurnerUF.cxx:150 AliEMCALAfterBurnerUF.cxx:151 AliEMCALAfterBurnerUF.cxx:152 AliEMCALAfterBurnerUF.cxx:153 AliEMCALAfterBurnerUF.cxx:154 AliEMCALAfterBurnerUF.cxx:155 AliEMCALAfterBurnerUF.cxx:156 AliEMCALAfterBurnerUF.cxx:157 AliEMCALAfterBurnerUF.cxx:158 AliEMCALAfterBurnerUF.cxx:159 AliEMCALAfterBurnerUF.cxx:160 AliEMCALAfterBurnerUF.cxx:161 AliEMCALAfterBurnerUF.cxx:162 AliEMCALAfterBurnerUF.cxx:163 AliEMCALAfterBurnerUF.cxx:164 AliEMCALAfterBurnerUF.cxx:165 AliEMCALAfterBurnerUF.cxx:166 AliEMCALAfterBurnerUF.cxx:167 AliEMCALAfterBurnerUF.cxx:168 AliEMCALAfterBurnerUF.cxx:169 AliEMCALAfterBurnerUF.cxx:170 AliEMCALAfterBurnerUF.cxx:171 AliEMCALAfterBurnerUF.cxx:172 AliEMCALAfterBurnerUF.cxx:173 AliEMCALAfterBurnerUF.cxx:174 AliEMCALAfterBurnerUF.cxx:175 AliEMCALAfterBurnerUF.cxx:176 AliEMCALAfterBurnerUF.cxx:177 AliEMCALAfterBurnerUF.cxx:178 AliEMCALAfterBurnerUF.cxx:179 AliEMCALAfterBurnerUF.cxx:180 AliEMCALAfterBurnerUF.cxx:181 AliEMCALAfterBurnerUF.cxx:182 AliEMCALAfterBurnerUF.cxx:183 AliEMCALAfterBurnerUF.cxx:184 AliEMCALAfterBurnerUF.cxx:185 AliEMCALAfterBurnerUF.cxx:186 AliEMCALAfterBurnerUF.cxx:187 AliEMCALAfterBurnerUF.cxx:188 AliEMCALAfterBurnerUF.cxx:189 AliEMCALAfterBurnerUF.cxx:190 AliEMCALAfterBurnerUF.cxx:191 AliEMCALAfterBurnerUF.cxx:192 AliEMCALAfterBurnerUF.cxx:193 AliEMCALAfterBurnerUF.cxx:194 AliEMCALAfterBurnerUF.cxx:195 AliEMCALAfterBurnerUF.cxx:196 AliEMCALAfterBurnerUF.cxx:197 AliEMCALAfterBurnerUF.cxx:198 AliEMCALAfterBurnerUF.cxx:199 AliEMCALAfterBurnerUF.cxx:200 AliEMCALAfterBurnerUF.cxx:201 AliEMCALAfterBurnerUF.cxx:202 AliEMCALAfterBurnerUF.cxx:203 AliEMCALAfterBurnerUF.cxx:204 AliEMCALAfterBurnerUF.cxx:205 AliEMCALAfterBurnerUF.cxx:206 AliEMCALAfterBurnerUF.cxx:207 AliEMCALAfterBurnerUF.cxx:208 AliEMCALAfterBurnerUF.cxx:209 AliEMCALAfterBurnerUF.cxx:210 AliEMCALAfterBurnerUF.cxx:211 AliEMCALAfterBurnerUF.cxx:212 AliEMCALAfterBurnerUF.cxx:213 AliEMCALAfterBurnerUF.cxx:214 AliEMCALAfterBurnerUF.cxx:215 AliEMCALAfterBurnerUF.cxx:216 AliEMCALAfterBurnerUF.cxx:217 AliEMCALAfterBurnerUF.cxx:218 AliEMCALAfterBurnerUF.cxx:219 AliEMCALAfterBurnerUF.cxx:220 AliEMCALAfterBurnerUF.cxx:221 AliEMCALAfterBurnerUF.cxx:222 AliEMCALAfterBurnerUF.cxx:223 AliEMCALAfterBurnerUF.cxx:224 AliEMCALAfterBurnerUF.cxx:225 AliEMCALAfterBurnerUF.cxx:226 AliEMCALAfterBurnerUF.cxx:227 AliEMCALAfterBurnerUF.cxx:228 AliEMCALAfterBurnerUF.cxx:229 AliEMCALAfterBurnerUF.cxx:230 AliEMCALAfterBurnerUF.cxx:231 AliEMCALAfterBurnerUF.cxx:232 AliEMCALAfterBurnerUF.cxx:233 AliEMCALAfterBurnerUF.cxx:234 AliEMCALAfterBurnerUF.cxx:235 AliEMCALAfterBurnerUF.cxx:236 AliEMCALAfterBurnerUF.cxx:237 AliEMCALAfterBurnerUF.cxx:238 AliEMCALAfterBurnerUF.cxx:239 AliEMCALAfterBurnerUF.cxx:240 AliEMCALAfterBurnerUF.cxx:241 AliEMCALAfterBurnerUF.cxx:242 AliEMCALAfterBurnerUF.cxx:243 AliEMCALAfterBurnerUF.cxx:244 AliEMCALAfterBurnerUF.cxx:245 AliEMCALAfterBurnerUF.cxx:246 AliEMCALAfterBurnerUF.cxx:247 AliEMCALAfterBurnerUF.cxx:248 AliEMCALAfterBurnerUF.cxx:249 AliEMCALAfterBurnerUF.cxx:250 AliEMCALAfterBurnerUF.cxx:251 AliEMCALAfterBurnerUF.cxx:252 AliEMCALAfterBurnerUF.cxx:253 AliEMCALAfterBurnerUF.cxx:254 AliEMCALAfterBurnerUF.cxx:255 AliEMCALAfterBurnerUF.cxx:256 AliEMCALAfterBurnerUF.cxx:257 AliEMCALAfterBurnerUF.cxx:258 AliEMCALAfterBurnerUF.cxx:259 AliEMCALAfterBurnerUF.cxx:260 AliEMCALAfterBurnerUF.cxx:261 AliEMCALAfterBurnerUF.cxx:262 AliEMCALAfterBurnerUF.cxx:263 AliEMCALAfterBurnerUF.cxx:264 AliEMCALAfterBurnerUF.cxx:265 AliEMCALAfterBurnerUF.cxx:266 AliEMCALAfterBurnerUF.cxx:267 AliEMCALAfterBurnerUF.cxx:268 AliEMCALAfterBurnerUF.cxx:269 AliEMCALAfterBurnerUF.cxx:270 AliEMCALAfterBurnerUF.cxx:271 AliEMCALAfterBurnerUF.cxx:272 AliEMCALAfterBurnerUF.cxx:273 AliEMCALAfterBurnerUF.cxx:274 AliEMCALAfterBurnerUF.cxx:275 AliEMCALAfterBurnerUF.cxx:276 AliEMCALAfterBurnerUF.cxx:277 AliEMCALAfterBurnerUF.cxx:278 AliEMCALAfterBurnerUF.cxx:279 AliEMCALAfterBurnerUF.cxx:280 AliEMCALAfterBurnerUF.cxx:281 AliEMCALAfterBurnerUF.cxx:282 AliEMCALAfterBurnerUF.cxx:283 AliEMCALAfterBurnerUF.cxx:284 AliEMCALAfterBurnerUF.cxx:285 AliEMCALAfterBurnerUF.cxx:286 AliEMCALAfterBurnerUF.cxx:287 AliEMCALAfterBurnerUF.cxx:288 AliEMCALAfterBurnerUF.cxx:289 AliEMCALAfterBurnerUF.cxx:290 AliEMCALAfterBurnerUF.cxx:291 AliEMCALAfterBurnerUF.cxx:292 AliEMCALAfterBurnerUF.cxx:293 AliEMCALAfterBurnerUF.cxx:294 AliEMCALAfterBurnerUF.cxx:295 AliEMCALAfterBurnerUF.cxx:296 AliEMCALAfterBurnerUF.cxx:297 AliEMCALAfterBurnerUF.cxx:298 AliEMCALAfterBurnerUF.cxx:299