#include "TFile.h"
#include "TKey.h"
#include "TObjArray.h"
#include "TH1F.h"
#include "TAxis.h"
#include "TGraphErrors.h"
#include "TLine.h"
#include "TCanvas.h"
#include "TString.h"
#include "AliLog.h"
#include "AliTRDtrendingManager.h"
ClassImp(AliTRDtrendingManager)
AliTRDtrendingManager* AliTRDtrendingManager::fgInstance=NULL;
AliTRDtrendingManager* AliTRDtrendingManager::Instance()
{
if (!fgInstance) fgInstance = new AliTRDtrendingManager();
return fgInstance;
}
void AliTRDtrendingManager::Terminate()
{
if (fgInstance != NULL) {
if(TFile::Open("TRD.Trend.root", "RECREATE")){
if(fEntries) fEntries->Write();
gFile->Close();
}
delete fgInstance; fgInstance = NULL;
}
}
AliTRDtrendingManager::AliTRDtrendingManager()
: TObject()
,fEntries(NULL)
{
}
AliTRDtrendingManager::~AliTRDtrendingManager()
{
if(fEntries){
fEntries->Delete();
delete fEntries;
}
}
void AliTRDtrendingManager::AddValue(
const Char_t *name
,Double_t mean,Double_t sigm
,const Char_t *title
,const Char_t *responsible
,const Char_t *notifiables
,Char_t **messages
)
{
if(!fEntries){
AliDebug(1, "No trending map loaded. Create one from scratch.");
MakeList(1000);
}
if(GetValue(name)){
AliInfo(Form("Trend value \"%s\" already in list. Use Modify function", name));
return;
}
AliTRDtrendValue *fValue = new AliTRDtrendValue(name, title?title:"");
fValue->Set(mean, sigm);
if(messages) for(Int_t ilevel(AliTRDtrendValue::kNlevels); ilevel--;) if(messages[ilevel]) fValue->SetAlarm(ilevel, messages[ilevel]);
TObjArray *r(NULL);
if(responsible){
TString s(responsible);
r=s.Tokenize("/");
if(r->GetEntriesFast()!=2){
AliWarning("Responsible name/email incorrectly formated.");
} else {
fValue->SetResponsible(((TObjString*)r->At(0))->String().Data(), ((TObjString*)r->At(1))->String().Data());
}
r->Delete(); delete r;
}
if(notifiables){
TString s(notifiables);
TObjArray *n=s.Tokenize(",");
for(Int_t in(0); in<TMath::Min(AliTRDtrendValue::kNnotifiable, n->GetEntriesFast()); in++){
TString ss(((TObjString*)n->At(in))->String());
r=ss.Tokenize("/");
if(r->GetEntriesFast()!=2){
AliWarning(Form("Notifiable person name/email incorrectly formated for [%s].", ss.Data()));
} else {
fValue->SetNotifiable(((TObjString*)r->At(0))->String().Data(), ((TObjString*)r->At(1))->String().Data());
}
r->Delete(); delete r;
}
n->Delete(); delete n;
}
fEntries->AddLast(fValue);
}
AliTRDtrendValue* AliTRDtrendingManager::GetValue(const Char_t *name)
{
if(!fEntries){
AliError("No trending map defined.");
return NULL;
}
return (AliTRDtrendValue*)fEntries->FindObject(name);
}
TH1* AliTRDtrendingManager::MakeTrends(const char *fileList, TObjArray *dump)
{
if(!fEntries){
AliWarning("Trending map undefined");
return NULL;
}
Int_t ntv(fEntries->GetEntries());
FILE *fp(NULL);
if(!(fp= fopen(fileList, "rt"))){
AliWarning(Form("Can not open file list \"%s\"", fileList));
return NULL;
}
Int_t *na = new Int_t[ntv]; memset(na, 0, ntv*sizeof(Int_t));
Float_t *la = new Float_t[ntv]; memset(la, 0, ntv*sizeof(Float_t));
Float_t *lm = new Float_t[ntv]; for(Int_t im(0); im<ntv; im++) lm[im] = 1.e5;
Float_t *lM = new Float_t[ntv]; for(Int_t im(0); im<ntv; im++) lM[im] = -1.e5;
TGraphErrors **g = new TGraphErrors*[ntv]; memset(g, 0, ntv*sizeof(TGraphErrors*));
AliTRDtrendValue *TV(NULL), *tv(NULL);
TString sfp; Int_t run[10000], nr(0);
while(sfp.Gets(fp)){
TObjArray *afp=sfp.Tokenize("/");
Int_t idx = afp->GetEntries()-2;
Int_t rno = ((TObjString*)(*afp)[idx])->GetString().Atoi();
afp->Delete(); delete afp;
if(!TFile::Open(sfp.Data())) continue;
run[nr] = rno; Int_t nmiss(0);
for(Int_t it(0); it<ntv; it++){
if(!(TV = (AliTRDtrendValue*)fEntries->At(it))) continue;
if(!(tv = (AliTRDtrendValue*)gFile->Get(TV->GetName()))) {
AliDebug(1, Form("Missing %09d.%s", rno, TV->GetName()));
nmiss++;
continue;
}
if(tv->GetVal()<=-998. ||
(strstr(TV->GetName(), "TRDcheckDET")&&TMath::Abs(tv->GetVal())<1.e-5) ||
(strstr(TV->GetName(), "TRDefficiency")&&tv->GetVal()<1.e-5) ||
(!(strcmp(TV->GetName(), "TRDcheckDET_ChargeTracklet"))&&TMath::Abs(tv->GetVal())<1.e1)) continue;
if(IsRelativeMeanSigma()){
(*tv)/=(*TV);
la[it]+=tv->GetVal(); na[it]++;
} else {
if(tv->GetVal()<lm[it]) lm[it]=tv->GetVal();
if(tv->GetVal()>lM[it])lM[it]=tv->GetVal();
}
if(!g[it]){
g[it] = new TGraphErrors();
g[it]->SetNameTitle(TV->GetName(), TV->GetTitle());
g[it]->SetMarkerStyle(4);g[it]->SetMarkerSize(1.2);
g[it]->SetLineStyle(2);g[it]->SetLineWidth(1);
}
Int_t ip(g[it]->GetN());
g[it]->SetPoint(ip, nr, tv->GetVal());
g[it]->SetPointError(ip, 0., tv->GetErr());
}
if(Float_t(nmiss)/ntv>.1) AliWarning(Form("Run[%09d] Missing %6.2f%% values", rno, 1.e2*nmiss/ntv));
nr++;
}
TH1 *hT = new TH1F("hT", ";#bf{RUN};", nr, -0.5, nr-0.5);
TAxis *ax = hT->GetXaxis(); ax->SetTitleOffset(2.6);ax->CenterTitle(); ax->SetBit(TAxis::kLabelsVert);
TAxis *ay = hT->GetYaxis(); ay->SetTitleOffset(IsRelativeMeanSigma()?0.4:0.75);ay->CenterTitle(); ay->SetAxisColor(kRed); ay->SetDecimals();
for(Int_t ir(0); ir<nr; ir++) ax->SetBinLabel(ir+1, Form("%09d", run[ir]));
TLine *line(NULL);
TCanvas *c = new TCanvas("c", "TRD Trend", 1, 1, 2400, 1000);
c->SetLeftMargin(IsRelativeMeanSigma()?0.03666361:0.05685619);
c->SetRightMargin(0.005499542);
c->SetTopMargin(0.02542373);
c->SetBottomMargin(0.1758475);
for(Int_t it(0); it<ntv; it++){
if(!g[it]) continue;
c->Clear();
if(IsRelativeMeanSigma()){
ay->SetRangeUser(-5, 5);
ay->SetTitle(Form("#bf{%s [#sigmau]}", g[it]->GetTitle()));
line = new TLine(-0.5, na[it]?(la[it]/na[it]):0., nr-0.5, na[it]?(la[it]/na[it]):0.);
line->SetLineColor(kBlue);
} else {
ay->SetRangeUser(lm[it]-0.1*(lM[it]-lm[it]), lM[it]+0.1*(lM[it]-lm[it]));
ay->SetTitle(Form("#bf{%s}", g[it]->GetTitle()));
}
hT->Draw("p");
g[it]->Draw("ple5");
if(line) line->Draw();
c->Modified(); c->Update(); c->SaveAs(Form("Trend_%s.gif", g[it]->GetName()));
if(dump) dump->Add(g[it]);
else delete g[it];
if(line) delete line;
}
delete [] g;
delete [] lm;
delete [] lM;
delete [] la;
delete [] na;
return hT;
}
Bool_t AliTRDtrendingManager::ModifyValue(
const Char_t *name
,const Char_t *title
,Double_t mean, Double_t sgm
,Char_t **messages
,const Char_t *responsible
,const Char_t *notifiables
)
{
if(!fEntries){
AliError("No trending map loaded.");
return kFALSE;
}
AliWarning("*** EXPERT FUNCTION *** This function is modifying one trending value to the current DB. Continue if you know what yout do!");
AliTRDtrendValue *fValue(NULL);
if(!(fValue = GetValue(name))) {
AliError(Form("Missing trending value %s", name));
return kFALSE;
}
fValue->SetTitle(title);
fValue->Set(mean, sgm);
if(messages){
for(Int_t ilevel(AliTRDtrendValue::kNlevels); ilevel--;) fValue->SetAlarm(ilevel, messages[ilevel]);
}
TString s;
TObjArray *r(NULL);
if(responsible){
s=responsible;
r=s.Tokenize("/");
if(r->GetEntriesFast()!=2){
AliWarning("Responsible name/email incorrectly formated.");
} else {
fValue->SetResponsible(((TObjString*)r->At(0))->String().Data(), ((TObjString*)r->At(1))->String().Data());
}
r->Delete(); delete r;
}
if(notifiables){
s=notifiables;
TObjArray *n=s.Tokenize(",");
for(Int_t in(0); in<TMath::Min(AliTRDtrendValue::kNnotifiable, n->GetEntriesFast()); in++){
TString ss(((TObjString*)n->At(in))->String());
r=ss.Tokenize("/");
if(r->GetEntriesFast()!=2){
AliWarning(Form("Notifiable person name/email incorrectly formated for [%s].", ss.Data()));
} else {
fValue->SetNotifiable(((TObjString*)r->At(0))->String().Data(), ((TObjString*)r->At(1))->String().Data());
}
r->Delete(); delete r;
}
n->Delete(); delete n;
}
return kTRUE;
}
void AliTRDtrendingManager::Print(Option_t *o) const
{
if(!fEntries){
AliError("No trending map available.");
return;
}
for(Int_t iv(0); iv<fEntries->GetEntriesFast(); iv++){
((AliTRDtrendValue*)fEntries->At(iv))->Print(o);
}
}
void AliTRDtrendingManager::Load(const char *fn)
{
AliDebug(1, "Loading TRD trending ...");
if(!TFile::Open(fn)) return;
TList *tvList = gFile->GetListOfKeys(); TIterator *iter(tvList->MakeIterator()); AliTRDtrendValue *tv(NULL);
MakeList(tvList->GetEntries());
TKey *ktv(NULL);
while((ktv = (TKey*)iter->Next())){
tv = (AliTRDtrendValue*)gFile->Get(ktv->GetName());
fEntries->AddLast(new AliTRDtrendValue(*tv));
delete tv;
}
gFile->Close();
}
void AliTRDtrendingManager::MakeList(Int_t entries)
{
fEntries = new TObjArray(entries);
fEntries->SetOwner();
fEntries->SetName("TrendValues");
}
AliTRDtrendingManager.cxx:1 AliTRDtrendingManager.cxx:2 AliTRDtrendingManager.cxx:3 AliTRDtrendingManager.cxx:4 AliTRDtrendingManager.cxx:5 AliTRDtrendingManager.cxx:6 AliTRDtrendingManager.cxx:7 AliTRDtrendingManager.cxx:8 AliTRDtrendingManager.cxx:9 AliTRDtrendingManager.cxx:10 AliTRDtrendingManager.cxx:11 AliTRDtrendingManager.cxx:12 AliTRDtrendingManager.cxx:13 AliTRDtrendingManager.cxx:14 AliTRDtrendingManager.cxx:15 AliTRDtrendingManager.cxx:16 AliTRDtrendingManager.cxx:17 AliTRDtrendingManager.cxx:18 AliTRDtrendingManager.cxx:19 AliTRDtrendingManager.cxx:20 AliTRDtrendingManager.cxx:21 AliTRDtrendingManager.cxx:22 AliTRDtrendingManager.cxx:23 AliTRDtrendingManager.cxx:24 AliTRDtrendingManager.cxx:25 AliTRDtrendingManager.cxx:26 AliTRDtrendingManager.cxx:27 AliTRDtrendingManager.cxx:28 AliTRDtrendingManager.cxx:29 AliTRDtrendingManager.cxx:30 AliTRDtrendingManager.cxx:31 AliTRDtrendingManager.cxx:32 AliTRDtrendingManager.cxx:33 AliTRDtrendingManager.cxx:34 AliTRDtrendingManager.cxx:35 AliTRDtrendingManager.cxx:36 AliTRDtrendingManager.cxx:37 AliTRDtrendingManager.cxx:38 AliTRDtrendingManager.cxx:39 AliTRDtrendingManager.cxx:40 AliTRDtrendingManager.cxx:41 AliTRDtrendingManager.cxx:42 AliTRDtrendingManager.cxx:43 AliTRDtrendingManager.cxx:44 AliTRDtrendingManager.cxx:45 AliTRDtrendingManager.cxx:46 AliTRDtrendingManager.cxx:47 AliTRDtrendingManager.cxx:48 AliTRDtrendingManager.cxx:49 AliTRDtrendingManager.cxx:50 AliTRDtrendingManager.cxx:51 AliTRDtrendingManager.cxx:52 AliTRDtrendingManager.cxx:53 AliTRDtrendingManager.cxx:54 AliTRDtrendingManager.cxx:55 AliTRDtrendingManager.cxx:56 AliTRDtrendingManager.cxx:57 AliTRDtrendingManager.cxx:58 AliTRDtrendingManager.cxx:59 AliTRDtrendingManager.cxx:60 AliTRDtrendingManager.cxx:61 AliTRDtrendingManager.cxx:62 AliTRDtrendingManager.cxx:63 AliTRDtrendingManager.cxx:64 AliTRDtrendingManager.cxx:65 AliTRDtrendingManager.cxx:66 AliTRDtrendingManager.cxx:67 AliTRDtrendingManager.cxx:68 AliTRDtrendingManager.cxx:69 AliTRDtrendingManager.cxx:70 AliTRDtrendingManager.cxx:71 AliTRDtrendingManager.cxx:72 AliTRDtrendingManager.cxx:73 AliTRDtrendingManager.cxx:74 AliTRDtrendingManager.cxx:75 AliTRDtrendingManager.cxx:76 AliTRDtrendingManager.cxx:77 AliTRDtrendingManager.cxx:78 AliTRDtrendingManager.cxx:79 AliTRDtrendingManager.cxx:80 AliTRDtrendingManager.cxx:81 AliTRDtrendingManager.cxx:82 AliTRDtrendingManager.cxx:83 AliTRDtrendingManager.cxx:84 AliTRDtrendingManager.cxx:85 AliTRDtrendingManager.cxx:86 AliTRDtrendingManager.cxx:87 AliTRDtrendingManager.cxx:88 AliTRDtrendingManager.cxx:89 AliTRDtrendingManager.cxx:90 AliTRDtrendingManager.cxx:91 AliTRDtrendingManager.cxx:92 AliTRDtrendingManager.cxx:93 AliTRDtrendingManager.cxx:94 AliTRDtrendingManager.cxx:95 AliTRDtrendingManager.cxx:96 AliTRDtrendingManager.cxx:97 AliTRDtrendingManager.cxx:98 AliTRDtrendingManager.cxx:99 AliTRDtrendingManager.cxx:100 AliTRDtrendingManager.cxx:101 AliTRDtrendingManager.cxx:102 AliTRDtrendingManager.cxx:103 AliTRDtrendingManager.cxx:104 AliTRDtrendingManager.cxx:105 AliTRDtrendingManager.cxx:106 AliTRDtrendingManager.cxx:107 AliTRDtrendingManager.cxx:108 AliTRDtrendingManager.cxx:109 AliTRDtrendingManager.cxx:110 AliTRDtrendingManager.cxx:111 AliTRDtrendingManager.cxx:112 AliTRDtrendingManager.cxx:113 AliTRDtrendingManager.cxx:114 AliTRDtrendingManager.cxx:115 AliTRDtrendingManager.cxx:116 AliTRDtrendingManager.cxx:117 AliTRDtrendingManager.cxx:118 AliTRDtrendingManager.cxx:119 AliTRDtrendingManager.cxx:120 AliTRDtrendingManager.cxx:121 AliTRDtrendingManager.cxx:122 AliTRDtrendingManager.cxx:123 AliTRDtrendingManager.cxx:124 AliTRDtrendingManager.cxx:125 AliTRDtrendingManager.cxx:126 AliTRDtrendingManager.cxx:127 AliTRDtrendingManager.cxx:128 AliTRDtrendingManager.cxx:129 AliTRDtrendingManager.cxx:130 AliTRDtrendingManager.cxx:131 AliTRDtrendingManager.cxx:132 AliTRDtrendingManager.cxx:133 AliTRDtrendingManager.cxx:134 AliTRDtrendingManager.cxx:135 AliTRDtrendingManager.cxx:136 AliTRDtrendingManager.cxx:137 AliTRDtrendingManager.cxx:138 AliTRDtrendingManager.cxx:139 AliTRDtrendingManager.cxx:140 AliTRDtrendingManager.cxx:141 AliTRDtrendingManager.cxx:142 AliTRDtrendingManager.cxx:143 AliTRDtrendingManager.cxx:144 AliTRDtrendingManager.cxx:145 AliTRDtrendingManager.cxx:146 AliTRDtrendingManager.cxx:147 AliTRDtrendingManager.cxx:148 AliTRDtrendingManager.cxx:149 AliTRDtrendingManager.cxx:150 AliTRDtrendingManager.cxx:151 AliTRDtrendingManager.cxx:152 AliTRDtrendingManager.cxx:153 AliTRDtrendingManager.cxx:154 AliTRDtrendingManager.cxx:155 AliTRDtrendingManager.cxx:156 AliTRDtrendingManager.cxx:157 AliTRDtrendingManager.cxx:158 AliTRDtrendingManager.cxx:159 AliTRDtrendingManager.cxx:160 AliTRDtrendingManager.cxx:161 AliTRDtrendingManager.cxx:162 AliTRDtrendingManager.cxx:163 AliTRDtrendingManager.cxx:164 AliTRDtrendingManager.cxx:165 AliTRDtrendingManager.cxx:166 AliTRDtrendingManager.cxx:167 AliTRDtrendingManager.cxx:168 AliTRDtrendingManager.cxx:169 AliTRDtrendingManager.cxx:170 AliTRDtrendingManager.cxx:171 AliTRDtrendingManager.cxx:172 AliTRDtrendingManager.cxx:173 AliTRDtrendingManager.cxx:174 AliTRDtrendingManager.cxx:175 AliTRDtrendingManager.cxx:176 AliTRDtrendingManager.cxx:177 AliTRDtrendingManager.cxx:178 AliTRDtrendingManager.cxx:179 AliTRDtrendingManager.cxx:180 AliTRDtrendingManager.cxx:181 AliTRDtrendingManager.cxx:182 AliTRDtrendingManager.cxx:183 AliTRDtrendingManager.cxx:184 AliTRDtrendingManager.cxx:185 AliTRDtrendingManager.cxx:186 AliTRDtrendingManager.cxx:187 AliTRDtrendingManager.cxx:188 AliTRDtrendingManager.cxx:189 AliTRDtrendingManager.cxx:190 AliTRDtrendingManager.cxx:191 AliTRDtrendingManager.cxx:192 AliTRDtrendingManager.cxx:193 AliTRDtrendingManager.cxx:194 AliTRDtrendingManager.cxx:195 AliTRDtrendingManager.cxx:196 AliTRDtrendingManager.cxx:197 AliTRDtrendingManager.cxx:198 AliTRDtrendingManager.cxx:199 AliTRDtrendingManager.cxx:200 AliTRDtrendingManager.cxx:201 AliTRDtrendingManager.cxx:202 AliTRDtrendingManager.cxx:203 AliTRDtrendingManager.cxx:204 AliTRDtrendingManager.cxx:205 AliTRDtrendingManager.cxx:206 AliTRDtrendingManager.cxx:207 AliTRDtrendingManager.cxx:208 AliTRDtrendingManager.cxx:209 AliTRDtrendingManager.cxx:210 AliTRDtrendingManager.cxx:211 AliTRDtrendingManager.cxx:212 AliTRDtrendingManager.cxx:213 AliTRDtrendingManager.cxx:214 AliTRDtrendingManager.cxx:215 AliTRDtrendingManager.cxx:216 AliTRDtrendingManager.cxx:217 AliTRDtrendingManager.cxx:218 AliTRDtrendingManager.cxx:219 AliTRDtrendingManager.cxx:220 AliTRDtrendingManager.cxx:221 AliTRDtrendingManager.cxx:222 AliTRDtrendingManager.cxx:223 AliTRDtrendingManager.cxx:224 AliTRDtrendingManager.cxx:225 AliTRDtrendingManager.cxx:226 AliTRDtrendingManager.cxx:227 AliTRDtrendingManager.cxx:228 AliTRDtrendingManager.cxx:229 AliTRDtrendingManager.cxx:230 AliTRDtrendingManager.cxx:231 AliTRDtrendingManager.cxx:232 AliTRDtrendingManager.cxx:233 AliTRDtrendingManager.cxx:234 AliTRDtrendingManager.cxx:235 AliTRDtrendingManager.cxx:236 AliTRDtrendingManager.cxx:237 AliTRDtrendingManager.cxx:238 AliTRDtrendingManager.cxx:239 AliTRDtrendingManager.cxx:240 AliTRDtrendingManager.cxx:241 AliTRDtrendingManager.cxx:242 AliTRDtrendingManager.cxx:243 AliTRDtrendingManager.cxx:244 AliTRDtrendingManager.cxx:245 AliTRDtrendingManager.cxx:246 AliTRDtrendingManager.cxx:247 AliTRDtrendingManager.cxx:248 AliTRDtrendingManager.cxx:249 AliTRDtrendingManager.cxx:250 AliTRDtrendingManager.cxx:251 AliTRDtrendingManager.cxx:252 AliTRDtrendingManager.cxx:253 AliTRDtrendingManager.cxx:254 AliTRDtrendingManager.cxx:255 AliTRDtrendingManager.cxx:256 AliTRDtrendingManager.cxx:257 AliTRDtrendingManager.cxx:258 AliTRDtrendingManager.cxx:259 AliTRDtrendingManager.cxx:260 AliTRDtrendingManager.cxx:261 AliTRDtrendingManager.cxx:262 AliTRDtrendingManager.cxx:263 AliTRDtrendingManager.cxx:264 AliTRDtrendingManager.cxx:265 AliTRDtrendingManager.cxx:266 AliTRDtrendingManager.cxx:267 AliTRDtrendingManager.cxx:268 AliTRDtrendingManager.cxx:269 AliTRDtrendingManager.cxx:270 AliTRDtrendingManager.cxx:271 AliTRDtrendingManager.cxx:272 AliTRDtrendingManager.cxx:273 AliTRDtrendingManager.cxx:274 AliTRDtrendingManager.cxx:275 AliTRDtrendingManager.cxx:276 AliTRDtrendingManager.cxx:277 AliTRDtrendingManager.cxx:278 AliTRDtrendingManager.cxx:279 AliTRDtrendingManager.cxx:280 AliTRDtrendingManager.cxx:281 AliTRDtrendingManager.cxx:282 AliTRDtrendingManager.cxx:283 AliTRDtrendingManager.cxx:284 AliTRDtrendingManager.cxx:285 AliTRDtrendingManager.cxx:286 AliTRDtrendingManager.cxx:287 AliTRDtrendingManager.cxx:288 AliTRDtrendingManager.cxx:289 AliTRDtrendingManager.cxx:290 AliTRDtrendingManager.cxx:291 AliTRDtrendingManager.cxx:292 AliTRDtrendingManager.cxx:293 AliTRDtrendingManager.cxx:294 AliTRDtrendingManager.cxx:295 AliTRDtrendingManager.cxx:296 AliTRDtrendingManager.cxx:297 AliTRDtrendingManager.cxx:298 AliTRDtrendingManager.cxx:299 AliTRDtrendingManager.cxx:300 AliTRDtrendingManager.cxx:301 AliTRDtrendingManager.cxx:302 AliTRDtrendingManager.cxx:303 AliTRDtrendingManager.cxx:304 AliTRDtrendingManager.cxx:305 AliTRDtrendingManager.cxx:306 AliTRDtrendingManager.cxx:307 AliTRDtrendingManager.cxx:308 AliTRDtrendingManager.cxx:309 AliTRDtrendingManager.cxx:310 AliTRDtrendingManager.cxx:311 AliTRDtrendingManager.cxx:312 AliTRDtrendingManager.cxx:313 AliTRDtrendingManager.cxx:314 AliTRDtrendingManager.cxx:315 AliTRDtrendingManager.cxx:316 AliTRDtrendingManager.cxx:317 AliTRDtrendingManager.cxx:318 AliTRDtrendingManager.cxx:319 AliTRDtrendingManager.cxx:320 AliTRDtrendingManager.cxx:321 AliTRDtrendingManager.cxx:322 AliTRDtrendingManager.cxx:323 AliTRDtrendingManager.cxx:324 AliTRDtrendingManager.cxx:325 AliTRDtrendingManager.cxx:326 AliTRDtrendingManager.cxx:327 AliTRDtrendingManager.cxx:328 AliTRDtrendingManager.cxx:329 AliTRDtrendingManager.cxx:330 AliTRDtrendingManager.cxx:331 AliTRDtrendingManager.cxx:332 AliTRDtrendingManager.cxx:333 AliTRDtrendingManager.cxx:334 AliTRDtrendingManager.cxx:335 AliTRDtrendingManager.cxx:336 AliTRDtrendingManager.cxx:337 AliTRDtrendingManager.cxx:338 AliTRDtrendingManager.cxx:339 AliTRDtrendingManager.cxx:340 AliTRDtrendingManager.cxx:341 AliTRDtrendingManager.cxx:342 AliTRDtrendingManager.cxx:343 AliTRDtrendingManager.cxx:344 AliTRDtrendingManager.cxx:345 AliTRDtrendingManager.cxx:346 AliTRDtrendingManager.cxx:347 AliTRDtrendingManager.cxx:348 AliTRDtrendingManager.cxx:349 AliTRDtrendingManager.cxx:350 AliTRDtrendingManager.cxx:351 AliTRDtrendingManager.cxx:352 AliTRDtrendingManager.cxx:353 AliTRDtrendingManager.cxx:354 AliTRDtrendingManager.cxx:355 AliTRDtrendingManager.cxx:356 AliTRDtrendingManager.cxx:357 AliTRDtrendingManager.cxx:358 AliTRDtrendingManager.cxx:359