#include <TClonesArray.h>
#include "AliVEvent.h"
#include "AliLog.h"
#include "AliNamedArrayI.h"
#include "AliEmcalContainer.h"
ClassImp(AliEmcalContainer)
AliEmcalContainer::AliEmcalContainer():
TNamed("AliEmcalContainer","AliEmcalContainer"),
fClArrayName(),
fClassName(),
fIsParticleLevel(kFALSE),
fClArray(0),
fCurrentID(0),
fLabelMap(0),
fRejectionReason(0)
{
fVertex[0] = 0;
fVertex[1] = 0;
fVertex[2] = 0;
}
AliEmcalContainer::AliEmcalContainer(const char *name):
TNamed(name,name),
fClArrayName(),
fClassName(),
fIsParticleLevel(kFALSE),
fClArray(0),
fCurrentID(0),
fLabelMap(0),
fRejectionReason(0)
{
fVertex[0] = 0;
fVertex[1] = 0;
fVertex[2] = 0;
}
void AliEmcalContainer::SetArray(AliVEvent *event)
{
const AliVVertex *vertex = event->GetPrimaryVertex();
if (vertex) vertex->GetXYZ(fVertex);
if (!fClArrayName.IsNull() && !fClArray) {
fClArray = dynamic_cast<TClonesArray*>(event->FindListObject(fClArrayName));
if (!fClArray) {
AliError(Form("%s: Could not retrieve array with name %s!", GetName(), fClArrayName.Data()));
return;
}
} else {
return;
}
if (!fClassName.IsNull()) {
TString objname(fClArray->GetClass()->GetName());
TClass cls(objname);
if (!cls.InheritsFrom(fClassName)) {
AliError(Form("%s: Objects of type %s in %s are not inherited from %s!",
GetName(), cls.GetName(), fClArrayName.Data(), fClassName.Data()));
fClArray = 0;
}
}
fLabelMap = dynamic_cast<AliNamedArrayI*>(event->FindListObject(fClArrayName + "_Map"));
}
Int_t AliEmcalContainer::GetIndexFromLabel(Int_t lab) const
{
if (fLabelMap) {
if (lab < fLabelMap->GetSize()) {
return fLabelMap->At(lab);
}
else {
AliDebug(3,Form("%s_AliEmcalContainer::GetIndexFromLabel - Label not found in the map, returning -1...",fClArrayName.Data()));
return -1;
}
}
else {
AliDebug(3,Form("%s_AliEmcalContainer::GetIndexFromLabel - No index-label map found, returning label...",fClArrayName.Data()));
return lab;
}
}
UShort_t AliEmcalContainer::GetRejectionReasonBitPosition() const
{
UInt_t rs = fRejectionReason;
UShort_t p = 0;
while (rs >>= 1) { p++; }
return p;
}
AliEmcalContainer.cxx:100 AliEmcalContainer.cxx:101 AliEmcalContainer.cxx:102 AliEmcalContainer.cxx:103 AliEmcalContainer.cxx:104 AliEmcalContainer.cxx:105 AliEmcalContainer.cxx:106 AliEmcalContainer.cxx:107 AliEmcalContainer.cxx:108 AliEmcalContainer.cxx:109 AliEmcalContainer.cxx:110