#include "TObjArray.h"
#include "TObjString.h"
#include "TH1.h"
#include "AliLog.h"
#include "AliTRDtriggerInfo.h"
ClassImp(AliTRDtriggerInfo)
AliTRDtriggerInfo::AliTRDtriggerInfo()
:TObject()
,fTriggerList(NULL)
,fHisto(NULL)
{
memset(fTriggerSel, 0, kTriggerListSize *sizeof(Bool_t));
memset(fTriggerStat, 0, kTriggerListSize *sizeof(Int_t));
}
AliTRDtriggerInfo::~AliTRDtriggerInfo()
{
if(fHisto) delete fHisto;
if(fTriggerList){ fTriggerList->Delete(); delete fTriggerList;}
}
Int_t AliTRDtriggerInfo::Add(const Char_t *trigger, Int_t nstat, Bool_t select)
{
Int_t itrig(-1), nt(0);
if((nt=GetNTriggers()) && (itrig = GetTrigger(trigger))>=0){
fTriggerSel[itrig] = select;
fTriggerStat[itrig]+= nstat;
} else {
if(!nt) fTriggerList = new TObjArray;
fTriggerList->Add(new TObjString(trigger));
fTriggerStat[nt] = nstat;
fTriggerSel[nt] = select;
nt++;
}
return nt;
}
void AliTRDtriggerInfo::Draw(Option_t *opt)
{
Int_t nt(0);
if(!(nt = GetNTriggers())) return;
if(fHisto && fHisto->GetNbinsX() != nt){ delete fHisto; fHisto=NULL;}
if(!fHisto) fHisto = new TH1F("hTriggerStat", "Trigger Statistics;TRIGGER;Freq. [%]", nt, 0.5, nt+0.5);
TAxis *ax(fHisto->GetXaxis()); fHisto->Reset();
ax->SetTitleOffset(6.5); ax->CenterTitle();
fHisto->SetFillStyle(3001);fHisto->SetFillColor(kGreen);
fHisto->SetBarWidth(0.8);fHisto->SetBarOffset(0.1);
Int_t ibin(0);
if(strcmp(opt, "")!=0){
TString sopt(opt);
TObjArray *optTriggers = sopt.Tokenize(" ");
for(Int_t iopt(0); iopt<optTriggers->GetEntries(); iopt++){
const Char_t *trigger = ((TObjString*)(*optTriggers)[iopt])->GetName();
Int_t itrig(-1);
if((itrig = GetTrigger(trigger))<0) continue;
ibin++;
ax->SetBinLabel(ibin, trigger);
fHisto->SetBinContent(ibin, fTriggerStat[itrig]);
}
optTriggers->Delete(); delete optTriggers;
} else {
for(Int_t jtrig(nt); jtrig--;){
ibin++;
ax->SetBinLabel(ibin, ((TObjString*)(*fTriggerList)[jtrig])->GetName());
fHisto->SetBinContent(ibin, fTriggerStat[jtrig]);
}
}
ax->SetRange(1, ibin);
fHisto->Scale(1.e2/fHisto->Integral());
fHisto->Draw("hbar2");
return;
}
Int_t AliTRDtriggerInfo::GetNTriggers() const
{
return fTriggerList?fTriggerList->GetEntries():0;
}
const char* AliTRDtriggerInfo::GetTrigger(Int_t it) const
{
if(it<0||it>=GetNTriggers()) return 0;
return ((TObjString*)(*fTriggerList)[it])->GetName();
}
Int_t AliTRDtriggerInfo::GetTrigger(const char *trigger) const
{
for(Int_t jtrig(GetNTriggers()); jtrig--;){
if(((TObjString*)(*fTriggerList)[jtrig])->String().CompareTo(trigger)==0) return jtrig;
}
return -1;
}
Long64_t AliTRDtriggerInfo::Merge(TCollection* list)
{
Int_t imerge(1);
AliTRDtriggerInfo *o(NULL);
TIterator *it(list->MakeIterator());
while((o = (AliTRDtriggerInfo*)it->Next())){
for(Int_t jtrig(o->GetNTriggers()); jtrig--;) Add(((TObjString*)(*o->fTriggerList)[jtrig])->GetName(), o->fTriggerStat[jtrig], o->fTriggerSel[jtrig]);
imerge++;
}
return imerge;
}
void AliTRDtriggerInfo::Print(Option_t *opt) const
{
Int_t nt(GetNTriggers());
Int_t stat(0); for(Int_t jtrig(0); jtrig<nt; jtrig++) stat+=fTriggerStat[jtrig];
printf("TriggerClasses[%3d] Stat[%5d]\n", nt, stat);
if(!nt || strcmp(opt,"a")!=0) return;
for(Int_t jtrig(0); jtrig<nt; jtrig++) printf(" %3d \"%s\" [%5d]\n", jtrig, ((TObjString*)(*fTriggerList)[jtrig])->GetName(), fTriggerStat[jtrig]);
}
AliTRDtriggerInfo.cxx:100 AliTRDtriggerInfo.cxx:101 AliTRDtriggerInfo.cxx:102 AliTRDtriggerInfo.cxx:103 AliTRDtriggerInfo.cxx:104 AliTRDtriggerInfo.cxx:105 AliTRDtriggerInfo.cxx:106 AliTRDtriggerInfo.cxx:107 AliTRDtriggerInfo.cxx:108 AliTRDtriggerInfo.cxx:109 AliTRDtriggerInfo.cxx:110 AliTRDtriggerInfo.cxx:111 AliTRDtriggerInfo.cxx:112 AliTRDtriggerInfo.cxx:113 AliTRDtriggerInfo.cxx:114 AliTRDtriggerInfo.cxx:115 AliTRDtriggerInfo.cxx:116 AliTRDtriggerInfo.cxx:117 AliTRDtriggerInfo.cxx:118 AliTRDtriggerInfo.cxx:119 AliTRDtriggerInfo.cxx:120 AliTRDtriggerInfo.cxx:121 AliTRDtriggerInfo.cxx:122 AliTRDtriggerInfo.cxx:123 AliTRDtriggerInfo.cxx:124 AliTRDtriggerInfo.cxx:125 AliTRDtriggerInfo.cxx:126 AliTRDtriggerInfo.cxx:127 AliTRDtriggerInfo.cxx:128 AliTRDtriggerInfo.cxx:129 AliTRDtriggerInfo.cxx:130 AliTRDtriggerInfo.cxx:131 AliTRDtriggerInfo.cxx:132 AliTRDtriggerInfo.cxx:133 AliTRDtriggerInfo.cxx:134 AliTRDtriggerInfo.cxx:135 AliTRDtriggerInfo.cxx:136 AliTRDtriggerInfo.cxx:137 AliTRDtriggerInfo.cxx:138 AliTRDtriggerInfo.cxx:139 AliTRDtriggerInfo.cxx:140 AliTRDtriggerInfo.cxx:141 AliTRDtriggerInfo.cxx:142 AliTRDtriggerInfo.cxx:143 AliTRDtriggerInfo.cxx:144 AliTRDtriggerInfo.cxx:145 AliTRDtriggerInfo.cxx:146 AliTRDtriggerInfo.cxx:147 AliTRDtriggerInfo.cxx:148 AliTRDtriggerInfo.cxx:149 AliTRDtriggerInfo.cxx:150 AliTRDtriggerInfo.cxx:151 AliTRDtriggerInfo.cxx:152 AliTRDtriggerInfo.cxx:153 AliTRDtriggerInfo.cxx:154 AliTRDtriggerInfo.cxx:155 AliTRDtriggerInfo.cxx:156 AliTRDtriggerInfo.cxx:157