#include <cerrno>
#include <memory>
#include "AliHLTTTreeProcessor.h"
#include "AliHLTErrorGuard.h"
#include "TDirectory.h"
#include "TDatime.h"
#include "TString.h"
#include "TTree.h"
#include "TH1.h"
#include "TStopwatch.h"
#include "TUUID.h"
#include "TSystem.h"
#include "TRandom3.h"
ClassImp(AliHLTTTreeProcessor)
AliHLTTTreeProcessor::AliHLTTTreeProcessor()
: AliHLTProcessor(),
fDefinitions(),
fTree(0),
fMaxEntries(kMaxEntries),
fPublishInterval(kInterval),
fLastTime(0),
fpEventTimer(NULL),
fpCycleTimer(NULL),
fMaxMemory(700000),
fMaxEventTime(0),
fNofEventsForce(0),
fForcedEventsCount(0),
fSkippedEventsCount(0),
fNewEventsCount(0),
fUniqueId(0),
fIgnoreCycleTime(10),
fCycleTimeFactor(1.0)
{
}
const AliHLTUInt32_t AliHLTTTreeProcessor::fgkTimeScale=1000000;
AliHLTTTreeProcessor::~AliHLTTTreeProcessor()
{
}
AliHLTComponentDataType AliHLTTTreeProcessor::GetOutputDataType()
{
return kAliHLTDataTypeHistogram;
}
void AliHLTTTreeProcessor::GetOutputDataSize(unsigned long& constBase, double& inputMultiplier)
{
if (!fDefinitions.size()) {
HLTError("Can not calculate output data size, no histogram definitions were provided");
return;
}
constBase = 0;
for (list_const_iterator i = fDefinitions.begin(); i != fDefinitions.end(); ++i)
constBase += i->GetSize();
inputMultiplier = 1.;
}
int AliHLTTTreeProcessor::DoInit(int argc, const char** argv)
{
int iResult = 0;
FillHistogramDefinitions();
fMaxEntries = kMaxEntries;
fPublishInterval = kInterval;
fLastTime = 0;
TString cdbPath("HLT/ConfigHLT/");
cdbPath += GetComponentID();
iResult = ConfigureFromCDBTObjString(cdbPath);
if (iResult < 0)
return iResult;
if (argc && (iResult = ConfigureFromArgumentString(argc, argv)) < 0)
return iResult;
TUUID guid = GenerateGUID();
union
{
UChar_t buf[16];
UInt_t bufAsInt[4];
};
guid.GetUUID(buf);
fUniqueId = bufAsInt[0];
if (!fTree) {
std::auto_ptr<TTree> ptr(CreateTree(0, NULL));
if (ptr.get()) {
ptr->SetDirectory(0);
ptr->SetCircular(fMaxEntries);
fTree = ptr.release();
} else
return -EINVAL;
} else {
HLTError("fTree pointer must be null before DoInit call");
return -EINVAL;
}
if (iResult>=0 && fMaxEventTime>0) {
fpEventTimer=new TStopwatch;
if (fpEventTimer) {
fpEventTimer->Reset();
}
fpCycleTimer=new TStopwatch;
if (fpCycleTimer) {
fpCycleTimer->Reset();
}
}
fSkippedEventsCount=0;
return iResult;
}
int AliHLTTTreeProcessor::DoDeinit()
{
delete fTree;
fTree = 0;
fDefinitions.clear();
if (fpEventTimer) delete fpEventTimer;
fpEventTimer=NULL;
if (fpCycleTimer) delete fpCycleTimer;
fpCycleTimer=NULL;
return 0;
}
int AliHLTTTreeProcessor::DoEvent(const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData)
{
AliHLTUInt32_t eventType=0;
if (!IsDataEvent(&eventType) && eventType!=gkAliEventTypeEndOfRun) return 0;
if (!fTree) {
HLTError("fTree is a null pointer, try to call AliHLTTTreeProcessor::DoInit first.");
return -EINVAL;
}
AliHLTUInt32_t averageEventTime=0;
AliHLTUInt32_t averageCycleTime=0;
int fillingtime=0;
int publishtime=0;
bool bDoFilling=true;
bool bDoPublishing=false;
const int cycleResetInterval=1000;
if (fpEventTimer && fpCycleTimer) {
averageEventTime=AliHLTUInt32_t(fpEventTimer->RealTime()*fgkTimeScale)/(GetEventCount()+1);
fillingtime=int(fpEventTimer->RealTime()*fgkTimeScale);
publishtime=fillingtime;
fpEventTimer->Start(kFALSE);
fpCycleTimer->Stop();
averageCycleTime=AliHLTUInt32_t(fpCycleTimer->RealTime()*fgkTimeScale)/((GetEventCount()%cycleResetInterval)+1);
bDoFilling=4*averageEventTime<3*fMaxEventTime ||
(averageEventTime<fCycleTimeFactor*averageCycleTime && fpCycleTimer->RealTime()>fIgnoreCycleTime);
if (fNofEventsForce>0 && fForcedEventsCount<fNofEventsForce) {
fForcedEventsCount++;
bDoFilling=true;
}
}
ProcInfo_t ProcInfo;
gSystem->GetProcInfo(&ProcInfo);
if (ProcInfo.fMemResident>fMaxMemory) bDoFilling=false;
int iResult = 0;
if (eventType!=gkAliEventTypeEndOfRun) {
if (bDoFilling) {iResult=FillTree(fTree, evtData, trigData); fNewEventsCount++;}
else fSkippedEventsCount++;
}
if (fpEventTimer) {
fpEventTimer->Stop();
fillingtime=int(fpEventTimer->RealTime()*fgkTimeScale)-fillingtime;
if (fillingtime<0) fillingtime=0;
fpEventTimer->Start(kFALSE);
}
if (iResult < 0) {
ALIHLTERRORGUARD(5, "FillTree failed with %d, first event %d", iResult, GetEventCount());
return iResult;
}
const TDatime time;
if (( time.Get() - fLastTime > fPublishInterval && fNewEventsCount>0) ||
eventType==gkAliEventTypeEndOfRun) {
if ((bDoPublishing=fLastTime>0)) {
for (list_const_iterator i = fDefinitions.begin(); i != fDefinitions.end(); ++i) {
if (TH1* h = CreateHistogram(*i)) {
PushBack(h, GetOriginDataType(), GetDataSpec());
delete h;
}
}
unsigned eventcount=GetEventCount()+1;
HLTBenchmark("publishing %d histograms, %d entries in tree, %d new events since last publishing, accumulated %d of %d events (%.1f%%)", fDefinitions.size(), fTree->GetEntriesFast(), fNewEventsCount, eventcount-fSkippedEventsCount, eventcount, eventcount>0?(100*float(eventcount-fSkippedEventsCount)/eventcount):0);
fNewEventsCount=0;
HLTBenchmark("current memory usage %d %d", ProcInfo.fMemResident, ProcInfo.fMemVirtual);
}
fLastTime=time.Get();
if (fLastTime==0) {
gRandom->SetSeed(fUniqueId);
fLastTime-=gRandom->Integer(fPublishInterval);
}
}
if (fpEventTimer) {
fpEventTimer->Stop();
publishtime=int(fpEventTimer->RealTime()*fgkTimeScale)-publishtime;
if (publishtime>fillingtime) publishtime-=fillingtime;
else publishtime=0;
averageEventTime=AliHLTUInt32_t(fpEventTimer->RealTime()*fgkTimeScale)/(GetEventCount()+1);
static UInt_t lastTime=0;
if (time.Get()-lastTime>5 ||
eventType==gkAliEventTypeEndOfRun ||
bDoPublishing) {
lastTime=time.Get();
unsigned eventcount=GetEventCount()+1;
HLTBenchmark("filling time %d us, publishing time %d, average total processing time %d us, cycle time %d us, accumulated %d of %d events (%.1f%%)", fillingtime, publishtime, averageEventTime, averageCycleTime, eventcount-fSkippedEventsCount, eventcount, eventcount>0?(100*float(eventcount-fSkippedEventsCount)/eventcount):0);
}
}
if (fpCycleTimer) {
bool bReset=(GetEventCount()%cycleResetInterval)==0;
fpCycleTimer->Start(bReset);
}
return iResult;
}
int AliHLTTTreeProcessor::ScanConfigurationArgument(int argc, const char** argv)
{
if (argc <= 0)
return 0;
std::list<AliHLTHistogramDefinition> newDefs;
AliHLTHistogramDefinition def;
int i = 0;
int maxEntries = fMaxEntries;
while (i < argc) {
const TString argument(argv[i]);
if (argument.CompareTo("-maxentries") == 0) {
if (i + 1 == argc) {
HLTError("Numeric value for '-maxentries' is expected");
return -EPROTO;
}
maxEntries = TString(argv[i + 1]).Atoi();
if (maxEntries <= 0) {
HLTError("Bad value for '-maxentries': %d", maxEntries);
return -EPROTO;
}
i += 2;
} else if (argument.CompareTo("-interval") == 0) {
if (i + 1 == argc) {
HLTError("Numeric value for '-interval' is expected");
return -EPROTO;
}
const Int_t interval = TString(argv[i + 1]).Atoi();
if (interval < 0) {
HLTError("Bad value for '-interval' argument: %d", interval);
return -EPROTO;
}
fPublishInterval = interval;
i += 2;
} else if (argument.CompareTo("-maxeventtime") == 0) {
if (i + 1 == argc) {
HLTError("Numeric value for '-maxeventtime' is expected");
return -EPROTO;
}
const Int_t time = TString(argv[i + 1]).Atoi();
if (time < 0) {
HLTError("Bad value for '-maxeventtime' argument: %d", time);
return -EPROTO;
}
fMaxEventTime = time;
i += 2;
} else if (argument.CompareTo("-forced-events") == 0) {
if (i + 1 == argc) {
HLTError("Numeric value for '-forced-events' is expected");
return -EPROTO;
}
const Int_t count = TString(argv[i + 1]).Atoi();
if (count < 0) {
HLTError("Bad value for '-forced-events' argument: %d", count);
return -EPROTO;
}
fNofEventsForce = count;
fForcedEventsCount=0;
i += 2;
} else if (argument.CompareTo("-ignore-cycletime") == 0) {
if (i + 1 == argc) {
HLTError("Numeric value for '-ignore-cycletime' is expected");
return -EPROTO;
}
const Int_t time = TString(argv[i + 1]).Atoi();
if (time < 0) {
HLTError("Bad value for '-ignore-cycletime' argument: %d", time);
return -EPROTO;
}
fIgnoreCycleTime = time;
i += 2;
} else if (argument.CompareTo("-maxmemory") == 0) {
if (i + 1 == argc) {
HLTError("Numeric value for '-maxmemory' is expected");
return -EPROTO;
}
const Int_t mem = TString(argv[i + 1]).Atoi();
if (mem < 0) {
HLTError("Bad value for '-maxmemory' argument: %d", time);
return -EPROTO;
}
fMaxMemory = mem;
i += 2;
} else if (argument.CompareTo("-cycletime-factor") == 0) {
if (i + 1 == argc) {
HLTError("Numeric value for '-cycletime-factor' is expected");
return -EPROTO;
}
const Float_t factor = TString(argv[i + 1]).Atof();
if (factor < 0) {
HLTError("Bad value for '-cycletime-factor' argument: %f", factor);
return -EPROTO;
}
fCycleTimeFactor = factor;
i += 2;
} else if (argument.CompareTo("-histogram") == 0) {
const int nParsed = ParseHistogramDefinition(argc, argv, i, def);
if (!nParsed)
return -EPROTO;
newDefs.push_back(def);
i += nParsed;
} else {
HLTError("Unknown argument %s", argument.Data());
return -EPROTO;
}
}
if (maxEntries != fMaxEntries) {
fMaxEntries = maxEntries;
if (fTree) {
fTree->Reset();
fTree->SetCircular(fMaxEntries);
}
}
if (newDefs.size())
fDefinitions.swap(newDefs);
return i;
}
TH1* AliHLTTTreeProcessor::CreateHistogram(const AliHLTHistogramDefinition& d)
{
if (!fTree) {
HLTError("fTree is a null pointer, try to call AliHLTTTreeProcessor::DoInit first.");
return 0;
}
TString histName(d.GetName());
if (!histName.Contains("(")) {
histName += TString::Format("(%d)", Int_t(kDefaultNBins));
}
const Long64_t rez = fTree->Project(histName.Data(), d.GetExpression().Data(), d.GetCut().Data(), d.GetDrawOption().Data());
if (rez == -1) {
HLTError("TTree::Project failed");
return 0;
}
histName = histName(0, histName.Index("("));
TH1 * hist = dynamic_cast<TH1*>(gDirectory->Get(histName.Data()));
if (!hist) {
const TString msg(Form("Hist %s is a null pointer, selection was %s, strange name or hist's type\n", histName.Data(), d.GetExpression().Data()));
HLTError(msg.Data());
}else if (d.GetDrawOption().Length()) {
hist->SetOption(d.GetDrawOption().Data());
}
TString str2=d.GetCut().Data();
str2.ReplaceAll("Track_", "");
str2.ReplaceAll("&&", " ");
str2 = histName+" "+str2;
hist->SetTitle(str2);
if(d.GetTitle().Length()){
TString axis=d.GetTitle().Data();
axis.ReplaceAll("_{T}", "underscore{T}");
axis.ReplaceAll("_", " ");
axis.ReplaceAll("underscore{T}", "_{T}");
hist->SetXTitle(axis);
hist->GetXaxis()->CenterTitle();
}
return hist;
}
int AliHLTTTreeProcessor::ParseHistogramDefinition(int argc, const char** argv, int pos, AliHLTHistogramDefinition& dst)const
{
if (pos + 1 == argc) {
HLTError("Bad histogram definition, histogram name is expected");
return 0;
}
dst.SetName(argv[pos + 1]);
pos += 2;
if (pos == argc || TString(argv[pos]).CompareTo("-size")) {
HLTError("Bad histogram definition, '-size' is expected");
return 0;
}
if (pos + 1 == argc) {
HLTError("Bad histogram definition, size is expected");
return 0;
}
dst.SetSize(TString(argv[pos + 1]).Atoi());
if (dst.GetSize() <= 0) {
HLTError("Bad histogram definition, positive size is required");
return 0;
}
pos += 2;
if (pos == argc || TString(argv[pos]).CompareTo("-expression")) {
HLTError("Bad histogram definition, '-expression' is expected");
return 0;
}
if (pos + 1 == argc) {
HLTError("Bad histogram definition, expression is expected");
return 0;
}
dst.SetExpression(argv[pos + 1]);
pos += 2;
int processed = 6;
dst.SetTitle("");
dst.SetCut("");
dst.SetDrawOption("");
if (pos + 1 >= argc){
return processed;
}
if (TString(argv[pos]).CompareTo("-title") == 0) {
dst.SetTitle(argv[pos + 1]);
pos += 2;
processed += 2;
}
if (pos + 1 >= argc)
return processed;
if (TString(argv[pos]).CompareTo("-cut") == 0) {
dst.SetCut(argv[pos + 1]);
pos += 2;
processed += 2;
}
if (pos + 1 >= argc)
return processed;
if (TString(argv[pos]).CompareTo("-opt") == 0) {
dst.SetDrawOption(argv[pos + 1]);
processed += 2;
}
return processed;
}
AliHLTTTreeProcessor.cxx:1 AliHLTTTreeProcessor.cxx:2 AliHLTTTreeProcessor.cxx:3 AliHLTTTreeProcessor.cxx:4 AliHLTTTreeProcessor.cxx:5 AliHLTTTreeProcessor.cxx:6 AliHLTTTreeProcessor.cxx:7 AliHLTTTreeProcessor.cxx:8 AliHLTTTreeProcessor.cxx:9 AliHLTTTreeProcessor.cxx:10 AliHLTTTreeProcessor.cxx:11 AliHLTTTreeProcessor.cxx:12 AliHLTTTreeProcessor.cxx:13 AliHLTTTreeProcessor.cxx:14 AliHLTTTreeProcessor.cxx:15 AliHLTTTreeProcessor.cxx:16 AliHLTTTreeProcessor.cxx:17 AliHLTTTreeProcessor.cxx:18 AliHLTTTreeProcessor.cxx:19 AliHLTTTreeProcessor.cxx:20 AliHLTTTreeProcessor.cxx:21 AliHLTTTreeProcessor.cxx:22 AliHLTTTreeProcessor.cxx:23 AliHLTTTreeProcessor.cxx:24 AliHLTTTreeProcessor.cxx:25 AliHLTTTreeProcessor.cxx:26 AliHLTTTreeProcessor.cxx:27 AliHLTTTreeProcessor.cxx:28 AliHLTTTreeProcessor.cxx:29 AliHLTTTreeProcessor.cxx:30 AliHLTTTreeProcessor.cxx:31 AliHLTTTreeProcessor.cxx:32 AliHLTTTreeProcessor.cxx:33 AliHLTTTreeProcessor.cxx:34 AliHLTTTreeProcessor.cxx:35 AliHLTTTreeProcessor.cxx:36 AliHLTTTreeProcessor.cxx:37 AliHLTTTreeProcessor.cxx:38 AliHLTTTreeProcessor.cxx:39 AliHLTTTreeProcessor.cxx:40 AliHLTTTreeProcessor.cxx:41 AliHLTTTreeProcessor.cxx:42 AliHLTTTreeProcessor.cxx:43 AliHLTTTreeProcessor.cxx:44 AliHLTTTreeProcessor.cxx:45 AliHLTTTreeProcessor.cxx:46 AliHLTTTreeProcessor.cxx:47 AliHLTTTreeProcessor.cxx:48 AliHLTTTreeProcessor.cxx:49 AliHLTTTreeProcessor.cxx:50 AliHLTTTreeProcessor.cxx:51 AliHLTTTreeProcessor.cxx:52 AliHLTTTreeProcessor.cxx:53 AliHLTTTreeProcessor.cxx:54 AliHLTTTreeProcessor.cxx:55 AliHLTTTreeProcessor.cxx:56 AliHLTTTreeProcessor.cxx:57 AliHLTTTreeProcessor.cxx:58 AliHLTTTreeProcessor.cxx:59 AliHLTTTreeProcessor.cxx:60 AliHLTTTreeProcessor.cxx:61 AliHLTTTreeProcessor.cxx:62 AliHLTTTreeProcessor.cxx:63 AliHLTTTreeProcessor.cxx:64 AliHLTTTreeProcessor.cxx:65 AliHLTTTreeProcessor.cxx:66 AliHLTTTreeProcessor.cxx:67 AliHLTTTreeProcessor.cxx:68 AliHLTTTreeProcessor.cxx:69 AliHLTTTreeProcessor.cxx:70 AliHLTTTreeProcessor.cxx:71 AliHLTTTreeProcessor.cxx:72 AliHLTTTreeProcessor.cxx:73 AliHLTTTreeProcessor.cxx:74 AliHLTTTreeProcessor.cxx:75 AliHLTTTreeProcessor.cxx:76 AliHLTTTreeProcessor.cxx:77 AliHLTTTreeProcessor.cxx:78 AliHLTTTreeProcessor.cxx:79 AliHLTTTreeProcessor.cxx:80 AliHLTTTreeProcessor.cxx:81 AliHLTTTreeProcessor.cxx:82 AliHLTTTreeProcessor.cxx:83 AliHLTTTreeProcessor.cxx:84 AliHLTTTreeProcessor.cxx:85 AliHLTTTreeProcessor.cxx:86 AliHLTTTreeProcessor.cxx:87 AliHLTTTreeProcessor.cxx:88 AliHLTTTreeProcessor.cxx:89 AliHLTTTreeProcessor.cxx:90 AliHLTTTreeProcessor.cxx:91 AliHLTTTreeProcessor.cxx:92 AliHLTTTreeProcessor.cxx:93 AliHLTTTreeProcessor.cxx:94 AliHLTTTreeProcessor.cxx:95 AliHLTTTreeProcessor.cxx:96 AliHLTTTreeProcessor.cxx:97 AliHLTTTreeProcessor.cxx:98 AliHLTTTreeProcessor.cxx:99 AliHLTTTreeProcessor.cxx:100 AliHLTTTreeProcessor.cxx:101 AliHLTTTreeProcessor.cxx:102 AliHLTTTreeProcessor.cxx:103 AliHLTTTreeProcessor.cxx:104 AliHLTTTreeProcessor.cxx:105 AliHLTTTreeProcessor.cxx:106 AliHLTTTreeProcessor.cxx:107 AliHLTTTreeProcessor.cxx:108 AliHLTTTreeProcessor.cxx:109 AliHLTTTreeProcessor.cxx:110 AliHLTTTreeProcessor.cxx:111 AliHLTTTreeProcessor.cxx:112 AliHLTTTreeProcessor.cxx:113 AliHLTTTreeProcessor.cxx:114 AliHLTTTreeProcessor.cxx:115 AliHLTTTreeProcessor.cxx:116 AliHLTTTreeProcessor.cxx:117 AliHLTTTreeProcessor.cxx:118 AliHLTTTreeProcessor.cxx:119 AliHLTTTreeProcessor.cxx:120 AliHLTTTreeProcessor.cxx:121 AliHLTTTreeProcessor.cxx:122 AliHLTTTreeProcessor.cxx:123 AliHLTTTreeProcessor.cxx:124 AliHLTTTreeProcessor.cxx:125 AliHLTTTreeProcessor.cxx:126 AliHLTTTreeProcessor.cxx:127 AliHLTTTreeProcessor.cxx:128 AliHLTTTreeProcessor.cxx:129 AliHLTTTreeProcessor.cxx:130 AliHLTTTreeProcessor.cxx:131 AliHLTTTreeProcessor.cxx:132 AliHLTTTreeProcessor.cxx:133 AliHLTTTreeProcessor.cxx:134 AliHLTTTreeProcessor.cxx:135 AliHLTTTreeProcessor.cxx:136 AliHLTTTreeProcessor.cxx:137 AliHLTTTreeProcessor.cxx:138 AliHLTTTreeProcessor.cxx:139 AliHLTTTreeProcessor.cxx:140 AliHLTTTreeProcessor.cxx:141 AliHLTTTreeProcessor.cxx:142 AliHLTTTreeProcessor.cxx:143 AliHLTTTreeProcessor.cxx:144 AliHLTTTreeProcessor.cxx:145 AliHLTTTreeProcessor.cxx:146 AliHLTTTreeProcessor.cxx:147 AliHLTTTreeProcessor.cxx:148 AliHLTTTreeProcessor.cxx:149 AliHLTTTreeProcessor.cxx:150 AliHLTTTreeProcessor.cxx:151 AliHLTTTreeProcessor.cxx:152 AliHLTTTreeProcessor.cxx:153 AliHLTTTreeProcessor.cxx:154 AliHLTTTreeProcessor.cxx:155 AliHLTTTreeProcessor.cxx:156 AliHLTTTreeProcessor.cxx:157 AliHLTTTreeProcessor.cxx:158 AliHLTTTreeProcessor.cxx:159 AliHLTTTreeProcessor.cxx:160 AliHLTTTreeProcessor.cxx:161 AliHLTTTreeProcessor.cxx:162 AliHLTTTreeProcessor.cxx:163 AliHLTTTreeProcessor.cxx:164 AliHLTTTreeProcessor.cxx:165 AliHLTTTreeProcessor.cxx:166 AliHLTTTreeProcessor.cxx:167 AliHLTTTreeProcessor.cxx:168 AliHLTTTreeProcessor.cxx:169 AliHLTTTreeProcessor.cxx:170 AliHLTTTreeProcessor.cxx:171 AliHLTTTreeProcessor.cxx:172 AliHLTTTreeProcessor.cxx:173 AliHLTTTreeProcessor.cxx:174 AliHLTTTreeProcessor.cxx:175 AliHLTTTreeProcessor.cxx:176 AliHLTTTreeProcessor.cxx:177 AliHLTTTreeProcessor.cxx:178 AliHLTTTreeProcessor.cxx:179 AliHLTTTreeProcessor.cxx:180 AliHLTTTreeProcessor.cxx:181 AliHLTTTreeProcessor.cxx:182 AliHLTTTreeProcessor.cxx:183 AliHLTTTreeProcessor.cxx:184 AliHLTTTreeProcessor.cxx:185 AliHLTTTreeProcessor.cxx:186 AliHLTTTreeProcessor.cxx:187 AliHLTTTreeProcessor.cxx:188 AliHLTTTreeProcessor.cxx:189 AliHLTTTreeProcessor.cxx:190 AliHLTTTreeProcessor.cxx:191 AliHLTTTreeProcessor.cxx:192 AliHLTTTreeProcessor.cxx:193 AliHLTTTreeProcessor.cxx:194 AliHLTTTreeProcessor.cxx:195 AliHLTTTreeProcessor.cxx:196 AliHLTTTreeProcessor.cxx:197 AliHLTTTreeProcessor.cxx:198 AliHLTTTreeProcessor.cxx:199 AliHLTTTreeProcessor.cxx:200 AliHLTTTreeProcessor.cxx:201 AliHLTTTreeProcessor.cxx:202 AliHLTTTreeProcessor.cxx:203 AliHLTTTreeProcessor.cxx:204 AliHLTTTreeProcessor.cxx:205 AliHLTTTreeProcessor.cxx:206 AliHLTTTreeProcessor.cxx:207 AliHLTTTreeProcessor.cxx:208 AliHLTTTreeProcessor.cxx:209 AliHLTTTreeProcessor.cxx:210 AliHLTTTreeProcessor.cxx:211 AliHLTTTreeProcessor.cxx:212 AliHLTTTreeProcessor.cxx:213 AliHLTTTreeProcessor.cxx:214 AliHLTTTreeProcessor.cxx:215 AliHLTTTreeProcessor.cxx:216 AliHLTTTreeProcessor.cxx:217 AliHLTTTreeProcessor.cxx:218 AliHLTTTreeProcessor.cxx:219 AliHLTTTreeProcessor.cxx:220 AliHLTTTreeProcessor.cxx:221 AliHLTTTreeProcessor.cxx:222 AliHLTTTreeProcessor.cxx:223 AliHLTTTreeProcessor.cxx:224 AliHLTTTreeProcessor.cxx:225 AliHLTTTreeProcessor.cxx:226 AliHLTTTreeProcessor.cxx:227 AliHLTTTreeProcessor.cxx:228 AliHLTTTreeProcessor.cxx:229 AliHLTTTreeProcessor.cxx:230 AliHLTTTreeProcessor.cxx:231 AliHLTTTreeProcessor.cxx:232 AliHLTTTreeProcessor.cxx:233 AliHLTTTreeProcessor.cxx:234 AliHLTTTreeProcessor.cxx:235 AliHLTTTreeProcessor.cxx:236 AliHLTTTreeProcessor.cxx:237 AliHLTTTreeProcessor.cxx:238 AliHLTTTreeProcessor.cxx:239 AliHLTTTreeProcessor.cxx:240 AliHLTTTreeProcessor.cxx:241 AliHLTTTreeProcessor.cxx:242 AliHLTTTreeProcessor.cxx:243 AliHLTTTreeProcessor.cxx:244 AliHLTTTreeProcessor.cxx:245 AliHLTTTreeProcessor.cxx:246 AliHLTTTreeProcessor.cxx:247 AliHLTTTreeProcessor.cxx:248 AliHLTTTreeProcessor.cxx:249 AliHLTTTreeProcessor.cxx:250 AliHLTTTreeProcessor.cxx:251 AliHLTTTreeProcessor.cxx:252 AliHLTTTreeProcessor.cxx:253 AliHLTTTreeProcessor.cxx:254 AliHLTTTreeProcessor.cxx:255 AliHLTTTreeProcessor.cxx:256 AliHLTTTreeProcessor.cxx:257 AliHLTTTreeProcessor.cxx:258 AliHLTTTreeProcessor.cxx:259 AliHLTTTreeProcessor.cxx:260 AliHLTTTreeProcessor.cxx:261 AliHLTTTreeProcessor.cxx:262 AliHLTTTreeProcessor.cxx:263 AliHLTTTreeProcessor.cxx:264 AliHLTTTreeProcessor.cxx:265 AliHLTTTreeProcessor.cxx:266 AliHLTTTreeProcessor.cxx:267 AliHLTTTreeProcessor.cxx:268 AliHLTTTreeProcessor.cxx:269 AliHLTTTreeProcessor.cxx:270 AliHLTTTreeProcessor.cxx:271 AliHLTTTreeProcessor.cxx:272 AliHLTTTreeProcessor.cxx:273 AliHLTTTreeProcessor.cxx:274 AliHLTTTreeProcessor.cxx:275 AliHLTTTreeProcessor.cxx:276 AliHLTTTreeProcessor.cxx:277 AliHLTTTreeProcessor.cxx:278 AliHLTTTreeProcessor.cxx:279 AliHLTTTreeProcessor.cxx:280 AliHLTTTreeProcessor.cxx:281 AliHLTTTreeProcessor.cxx:282 AliHLTTTreeProcessor.cxx:283 AliHLTTTreeProcessor.cxx:284 AliHLTTTreeProcessor.cxx:285 AliHLTTTreeProcessor.cxx:286 AliHLTTTreeProcessor.cxx:287 AliHLTTTreeProcessor.cxx:288 AliHLTTTreeProcessor.cxx:289 AliHLTTTreeProcessor.cxx:290 AliHLTTTreeProcessor.cxx:291 AliHLTTTreeProcessor.cxx:292 AliHLTTTreeProcessor.cxx:293 AliHLTTTreeProcessor.cxx:294 AliHLTTTreeProcessor.cxx:295 AliHLTTTreeProcessor.cxx:296 AliHLTTTreeProcessor.cxx:297 AliHLTTTreeProcessor.cxx:298 AliHLTTTreeProcessor.cxx:299 AliHLTTTreeProcessor.cxx:300 AliHLTTTreeProcessor.cxx:301 AliHLTTTreeProcessor.cxx:302 AliHLTTTreeProcessor.cxx:303 AliHLTTTreeProcessor.cxx:304 AliHLTTTreeProcessor.cxx:305 AliHLTTTreeProcessor.cxx:306 AliHLTTTreeProcessor.cxx:307 AliHLTTTreeProcessor.cxx:308 AliHLTTTreeProcessor.cxx:309 AliHLTTTreeProcessor.cxx:310 AliHLTTTreeProcessor.cxx:311 AliHLTTTreeProcessor.cxx:312 AliHLTTTreeProcessor.cxx:313 AliHLTTTreeProcessor.cxx:314 AliHLTTTreeProcessor.cxx:315 AliHLTTTreeProcessor.cxx:316 AliHLTTTreeProcessor.cxx:317 AliHLTTTreeProcessor.cxx:318 AliHLTTTreeProcessor.cxx:319 AliHLTTTreeProcessor.cxx:320 AliHLTTTreeProcessor.cxx:321 AliHLTTTreeProcessor.cxx:322 AliHLTTTreeProcessor.cxx:323 AliHLTTTreeProcessor.cxx:324 AliHLTTTreeProcessor.cxx:325 AliHLTTTreeProcessor.cxx:326 AliHLTTTreeProcessor.cxx:327 AliHLTTTreeProcessor.cxx:328 AliHLTTTreeProcessor.cxx:329 AliHLTTTreeProcessor.cxx:330 AliHLTTTreeProcessor.cxx:331 AliHLTTTreeProcessor.cxx:332 AliHLTTTreeProcessor.cxx:333 AliHLTTTreeProcessor.cxx:334 AliHLTTTreeProcessor.cxx:335 AliHLTTTreeProcessor.cxx:336 AliHLTTTreeProcessor.cxx:337 AliHLTTTreeProcessor.cxx:338 AliHLTTTreeProcessor.cxx:339 AliHLTTTreeProcessor.cxx:340 AliHLTTTreeProcessor.cxx:341 AliHLTTTreeProcessor.cxx:342 AliHLTTTreeProcessor.cxx:343 AliHLTTTreeProcessor.cxx:344 AliHLTTTreeProcessor.cxx:345 AliHLTTTreeProcessor.cxx:346 AliHLTTTreeProcessor.cxx:347 AliHLTTTreeProcessor.cxx:348 AliHLTTTreeProcessor.cxx:349 AliHLTTTreeProcessor.cxx:350 AliHLTTTreeProcessor.cxx:351 AliHLTTTreeProcessor.cxx:352 AliHLTTTreeProcessor.cxx:353 AliHLTTTreeProcessor.cxx:354 AliHLTTTreeProcessor.cxx:355 AliHLTTTreeProcessor.cxx:356 AliHLTTTreeProcessor.cxx:357 AliHLTTTreeProcessor.cxx:358 AliHLTTTreeProcessor.cxx:359 AliHLTTTreeProcessor.cxx:360 AliHLTTTreeProcessor.cxx:361 AliHLTTTreeProcessor.cxx:362 AliHLTTTreeProcessor.cxx:363 AliHLTTTreeProcessor.cxx:364 AliHLTTTreeProcessor.cxx:365 AliHLTTTreeProcessor.cxx:366 AliHLTTTreeProcessor.cxx:367 AliHLTTTreeProcessor.cxx:368 AliHLTTTreeProcessor.cxx:369 AliHLTTTreeProcessor.cxx:370 AliHLTTTreeProcessor.cxx:371 AliHLTTTreeProcessor.cxx:372 AliHLTTTreeProcessor.cxx:373 AliHLTTTreeProcessor.cxx:374 AliHLTTTreeProcessor.cxx:375 AliHLTTTreeProcessor.cxx:376 AliHLTTTreeProcessor.cxx:377 AliHLTTTreeProcessor.cxx:378 AliHLTTTreeProcessor.cxx:379 AliHLTTTreeProcessor.cxx:380 AliHLTTTreeProcessor.cxx:381 AliHLTTTreeProcessor.cxx:382 AliHLTTTreeProcessor.cxx:383 AliHLTTTreeProcessor.cxx:384 AliHLTTTreeProcessor.cxx:385 AliHLTTTreeProcessor.cxx:386 AliHLTTTreeProcessor.cxx:387 AliHLTTTreeProcessor.cxx:388 AliHLTTTreeProcessor.cxx:389 AliHLTTTreeProcessor.cxx:390 AliHLTTTreeProcessor.cxx:391 AliHLTTTreeProcessor.cxx:392 AliHLTTTreeProcessor.cxx:393 AliHLTTTreeProcessor.cxx:394 AliHLTTTreeProcessor.cxx:395 AliHLTTTreeProcessor.cxx:396 AliHLTTTreeProcessor.cxx:397 AliHLTTTreeProcessor.cxx:398 AliHLTTTreeProcessor.cxx:399 AliHLTTTreeProcessor.cxx:400 AliHLTTTreeProcessor.cxx:401 AliHLTTTreeProcessor.cxx:402 AliHLTTTreeProcessor.cxx:403 AliHLTTTreeProcessor.cxx:404 AliHLTTTreeProcessor.cxx:405 AliHLTTTreeProcessor.cxx:406 AliHLTTTreeProcessor.cxx:407 AliHLTTTreeProcessor.cxx:408 AliHLTTTreeProcessor.cxx:409 AliHLTTTreeProcessor.cxx:410 AliHLTTTreeProcessor.cxx:411 AliHLTTTreeProcessor.cxx:412 AliHLTTTreeProcessor.cxx:413 AliHLTTTreeProcessor.cxx:414 AliHLTTTreeProcessor.cxx:415 AliHLTTTreeProcessor.cxx:416 AliHLTTTreeProcessor.cxx:417 AliHLTTTreeProcessor.cxx:418 AliHLTTTreeProcessor.cxx:419 AliHLTTTreeProcessor.cxx:420 AliHLTTTreeProcessor.cxx:421 AliHLTTTreeProcessor.cxx:422 AliHLTTTreeProcessor.cxx:423 AliHLTTTreeProcessor.cxx:424 AliHLTTTreeProcessor.cxx:425 AliHLTTTreeProcessor.cxx:426 AliHLTTTreeProcessor.cxx:427 AliHLTTTreeProcessor.cxx:428 AliHLTTTreeProcessor.cxx:429 AliHLTTTreeProcessor.cxx:430 AliHLTTTreeProcessor.cxx:431 AliHLTTTreeProcessor.cxx:432 AliHLTTTreeProcessor.cxx:433 AliHLTTTreeProcessor.cxx:434 AliHLTTTreeProcessor.cxx:435 AliHLTTTreeProcessor.cxx:436 AliHLTTTreeProcessor.cxx:437 AliHLTTTreeProcessor.cxx:438 AliHLTTTreeProcessor.cxx:439 AliHLTTTreeProcessor.cxx:440 AliHLTTTreeProcessor.cxx:441 AliHLTTTreeProcessor.cxx:442 AliHLTTTreeProcessor.cxx:443 AliHLTTTreeProcessor.cxx:444 AliHLTTTreeProcessor.cxx:445 AliHLTTTreeProcessor.cxx:446 AliHLTTTreeProcessor.cxx:447 AliHLTTTreeProcessor.cxx:448 AliHLTTTreeProcessor.cxx:449 AliHLTTTreeProcessor.cxx:450 AliHLTTTreeProcessor.cxx:451 AliHLTTTreeProcessor.cxx:452 AliHLTTTreeProcessor.cxx:453 AliHLTTTreeProcessor.cxx:454 AliHLTTTreeProcessor.cxx:455 AliHLTTTreeProcessor.cxx:456 AliHLTTTreeProcessor.cxx:457 AliHLTTTreeProcessor.cxx:458 AliHLTTTreeProcessor.cxx:459 AliHLTTTreeProcessor.cxx:460 AliHLTTTreeProcessor.cxx:461 AliHLTTTreeProcessor.cxx:462 AliHLTTTreeProcessor.cxx:463 AliHLTTTreeProcessor.cxx:464 AliHLTTTreeProcessor.cxx:465 AliHLTTTreeProcessor.cxx:466 AliHLTTTreeProcessor.cxx:467 AliHLTTTreeProcessor.cxx:468 AliHLTTTreeProcessor.cxx:469 AliHLTTTreeProcessor.cxx:470 AliHLTTTreeProcessor.cxx:471 AliHLTTTreeProcessor.cxx:472 AliHLTTTreeProcessor.cxx:473 AliHLTTTreeProcessor.cxx:474 AliHLTTTreeProcessor.cxx:475 AliHLTTTreeProcessor.cxx:476 AliHLTTTreeProcessor.cxx:477 AliHLTTTreeProcessor.cxx:478 AliHLTTTreeProcessor.cxx:479 AliHLTTTreeProcessor.cxx:480 AliHLTTTreeProcessor.cxx:481 AliHLTTTreeProcessor.cxx:482 AliHLTTTreeProcessor.cxx:483 AliHLTTTreeProcessor.cxx:484 AliHLTTTreeProcessor.cxx:485 AliHLTTTreeProcessor.cxx:486 AliHLTTTreeProcessor.cxx:487 AliHLTTTreeProcessor.cxx:488 AliHLTTTreeProcessor.cxx:489 AliHLTTTreeProcessor.cxx:490 AliHLTTTreeProcessor.cxx:491 AliHLTTTreeProcessor.cxx:492 AliHLTTTreeProcessor.cxx:493 AliHLTTTreeProcessor.cxx:494 AliHLTTTreeProcessor.cxx:495 AliHLTTTreeProcessor.cxx:496 AliHLTTTreeProcessor.cxx:497 AliHLTTTreeProcessor.cxx:498 AliHLTTTreeProcessor.cxx:499 AliHLTTTreeProcessor.cxx:500 AliHLTTTreeProcessor.cxx:501 AliHLTTTreeProcessor.cxx:502 AliHLTTTreeProcessor.cxx:503 AliHLTTTreeProcessor.cxx:504 AliHLTTTreeProcessor.cxx:505 AliHLTTTreeProcessor.cxx:506 AliHLTTTreeProcessor.cxx:507 AliHLTTTreeProcessor.cxx:508 AliHLTTTreeProcessor.cxx:509 AliHLTTTreeProcessor.cxx:510 AliHLTTTreeProcessor.cxx:511 AliHLTTTreeProcessor.cxx:512 AliHLTTTreeProcessor.cxx:513 AliHLTTTreeProcessor.cxx:514 AliHLTTTreeProcessor.cxx:515 AliHLTTTreeProcessor.cxx:516 AliHLTTTreeProcessor.cxx:517 AliHLTTTreeProcessor.cxx:518 AliHLTTTreeProcessor.cxx:519 AliHLTTTreeProcessor.cxx:520 AliHLTTTreeProcessor.cxx:521 AliHLTTTreeProcessor.cxx:522 AliHLTTTreeProcessor.cxx:523 AliHLTTTreeProcessor.cxx:524 AliHLTTTreeProcessor.cxx:525 AliHLTTTreeProcessor.cxx:526 AliHLTTTreeProcessor.cxx:527 AliHLTTTreeProcessor.cxx:528 AliHLTTTreeProcessor.cxx:529 AliHLTTTreeProcessor.cxx:530 AliHLTTTreeProcessor.cxx:531 AliHLTTTreeProcessor.cxx:532 AliHLTTTreeProcessor.cxx:533 AliHLTTTreeProcessor.cxx:534 AliHLTTTreeProcessor.cxx:535 AliHLTTTreeProcessor.cxx:536 AliHLTTTreeProcessor.cxx:537 AliHLTTTreeProcessor.cxx:538 AliHLTTTreeProcessor.cxx:539 AliHLTTTreeProcessor.cxx:540 AliHLTTTreeProcessor.cxx:541 AliHLTTTreeProcessor.cxx:542 AliHLTTTreeProcessor.cxx:543 AliHLTTTreeProcessor.cxx:544 AliHLTTTreeProcessor.cxx:545 AliHLTTTreeProcessor.cxx:546 AliHLTTTreeProcessor.cxx:547 AliHLTTTreeProcessor.cxx:548 AliHLTTTreeProcessor.cxx:549 AliHLTTTreeProcessor.cxx:550 AliHLTTTreeProcessor.cxx:551 AliHLTTTreeProcessor.cxx:552 AliHLTTTreeProcessor.cxx:553 AliHLTTTreeProcessor.cxx:554 AliHLTTTreeProcessor.cxx:555 AliHLTTTreeProcessor.cxx:556 AliHLTTTreeProcessor.cxx:557 AliHLTTTreeProcessor.cxx:558 AliHLTTTreeProcessor.cxx:559 AliHLTTTreeProcessor.cxx:560 AliHLTTTreeProcessor.cxx:561 AliHLTTTreeProcessor.cxx:562 AliHLTTTreeProcessor.cxx:563 AliHLTTTreeProcessor.cxx:564 AliHLTTTreeProcessor.cxx:565 AliHLTTTreeProcessor.cxx:566 AliHLTTTreeProcessor.cxx:567 AliHLTTTreeProcessor.cxx:568 AliHLTTTreeProcessor.cxx:569 AliHLTTTreeProcessor.cxx:570 AliHLTTTreeProcessor.cxx:571 AliHLTTTreeProcessor.cxx:572 AliHLTTTreeProcessor.cxx:573 AliHLTTTreeProcessor.cxx:574 AliHLTTTreeProcessor.cxx:575 AliHLTTTreeProcessor.cxx:576 AliHLTTTreeProcessor.cxx:577 AliHLTTTreeProcessor.cxx:578 AliHLTTTreeProcessor.cxx:579 AliHLTTTreeProcessor.cxx:580 AliHLTTTreeProcessor.cxx:581 AliHLTTTreeProcessor.cxx:582 AliHLTTTreeProcessor.cxx:583 AliHLTTTreeProcessor.cxx:584 AliHLTTTreeProcessor.cxx:585 AliHLTTTreeProcessor.cxx:586 AliHLTTTreeProcessor.cxx:587 AliHLTTTreeProcessor.cxx:588 AliHLTTTreeProcessor.cxx:589