X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=inline;f=ITS%2FAliITSQASSDChecker.cxx;h=8b25f8f9e0b5b370ebf62a82983c249cac3fa945;hb=b0e25852769a15330f327ed7af0c652a80fdb908;hp=63af85b086ced3430e57c18cfccff1acd68f9405;hpb=5379c4a36d42baeb9f7a3f573a57bb4957b3628d;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSQASSDChecker.cxx b/ITS/AliITSQASSDChecker.cxx index 63af85b086c..8b25f8f9e0b 100644 --- a/ITS/AliITSQASSDChecker.cxx +++ b/ITS/AliITSQASSDChecker.cxx @@ -40,16 +40,157 @@ AliITSQASSDChecker& AliITSQASSDChecker::operator = (const AliITSQASSDChecker& qa return *this; } +void AliITSQASSDChecker::CheckRaws(TH1* histo) { + + Double_t minSSDDataSize = 0; + Double_t maxSSDDataSize = 200; + Double_t minDDLDataSize = 0; + Double_t maxDDLDataSize = 50; + Double_t minLDCDataSize = 0; + Double_t maxLDCDataSize = 100; + Double_t minMeanDDLDataSize = 0; + Double_t maxMeanDDLDataSize = 50; + Double_t minMeanLDCDataSize = 0; + Double_t maxMeanLDCDataSize = 100; + // Double_t maxOccupancy = 5; + + TString histname = histo->GetName(); + + if (histname.EndsWith("SSDEventType")) { + if (histo->GetEntries()==0) { + AliWarning("Event type histogram is empty"); + } + else if (histo->GetBinContent(histo->FindBin(7))==0) AliWarning("No type 7 (physics) events in EventType"); + } + + if (histname.EndsWith("SSDDataSize")) { + if (histo->GetEntries()==0) AliWarning("SSD data size histogram is empty"); + if (histo->GetMean()>maxSSDDataSize||histo->GetMean()GetMean())); + } + + if (histname.EndsWith("SSDDataSizePerDDL")) { + if (histo->GetEntries()==0) { + AliWarning("Data size per DDL histogram is empty"); + } + else { + for(Int_t i = 512; i < 528; i++) { + if(histo->GetBinContent(histo->FindBin(i))==0) { + AliWarning(Form("Data size / DDL histogram: bin for DDL %i is empty",i)); + } + else if(histo->GetBinContent(histo->FindBin(i))GetBinContent(histo->FindBin(i))>maxDDLDataSize) AliWarning(Form("Data size DDL %i is %-.2g kB",i,histo->GetBinContent(histo->FindBin(i)))); + } + } + } + + if (histname.EndsWith("SSDDataSizePerLDC")) { + if (histo->GetEntries()==0) { + AliWarning("Data size per LDC histogram is empty"); + } + else { + AliInfo(Form("Data size per LDC histogram has %i entries",histo->GetEntries())); + for(Int_t i = 170; i < 178; i++) { + if(histo->GetBinContent(histo->FindBin(i))==0) { + AliWarning(Form("Data size / LDC histogram: bin for LDC %i is empty",i)); + } + else if(histo->GetBinContent(histo->FindBin(i))==minLDCDataSize||histo->GetBinContent(histo->FindBin(i))>maxLDCDataSize) AliWarning(Form("Data size LDC %i is %-.2g kB",i,histo->GetBinContent(i))); + } + } + } + + if (histname.EndsWith("SSDLDCId")) { + if (histo->GetEntries()==0) { + AliWarning("LDC ID histogram is empty"); + } + else { + for(Int_t i = 170; i < 177; i++) { + if(histo->GetBinContent(histo->FindBin(i))==0) { + AliWarning(Form("LDC ID histogram: No entries for LDC %i",i)); + } + else if(histo->GetBinContent(histo->FindBin(i))!=histo->GetBinContent(histo->FindBin(i+1))) { + AliWarning("LDC Id distribution is not uniform"); + i=176; + } + } + } + } + + if (histname.EndsWith("SSDDDLId")) { + if (histo->GetEntries()==0) { + AliWarning("DDL ID histogram is empty"); + } + else { + for(Int_t i = 512; i < 527; i++) { + if(histo->GetBinContent(histo->FindBin(i))==0) { + AliWarning(Form("DDL ID histogram: No entries for DDL %i",i)); + } + else if(histo->GetBinContent(histo->FindBin(i))!=histo->GetBinContent(histo->FindBin(i+1))) { + AliWarning("DDL Id distribution is not uniform"); + i=526; + } + } + } + } + + if (histname.Contains("SSDDataSizeLDC")) { + if (histo->GetEntries()==0) { + AliWarning(Form("LDC %s data size distribution is empty", histname(histname.Length()-3,3).Data())); + } + else if (histo->GetMean()GetMean()>maxMeanLDCDataSize) AliWarning(Form("Mean data size of LDC %s is %-.2g kB",histname(histname.Length()-3,3).Data(), histo->GetMean())); + } + + if (histname.Contains("SSDDataSizeDDL")) { + if (histo->GetEntries()==0) { + AliWarning(Form("DDL %s data size distribution is empty", histname(histname.Length()-3,3).Data())); + } + else if (histo->GetMean()GetMean()>maxMeanDDLDataSize) AliWarning(Form("Mean data size of DDL %s is %-.2g kB",histname(histname.Length()-3,3).Data(), histo->GetMean())); + } + + if (histname.Contains("SSDAverageOccupancy")) { + + const char* side = ""; + int ladder = 0; + int layernr = 0; + + if (histname.EndsWith("5")) layernr = 499; + if (histname.EndsWith("6")) layernr = 599; + + for (Int_t i = 1; i < histo->GetNbinsY() + 1; i++) { //ladder/side loop + if(i==3.*int(i/3.)){ + ladder=int(i/3.)+layernr; + side="P side"; + } + else if(i==3.*int(i+1/3.)){ + ladder=int((i+1)/3.)+layernr; + side="N side"; + } + + for (Int_t j = 1; j < histo->GetNbinsX() + 1; j++) { //module loop + //if(histo->GetBinContent(j,i)>maxOccupancy) + // AliWarning(Form("Occupancy ladder %i, module %i, %s is %-.2f %%",ladder,j,side, histo->GetBinContent(j,i))); + }//module loop + }//ladder loop + } + +} + +void AliITSQASSDChecker::CheckRecPoints(TH1* /*histo*/) { + + +} + //__________________________________________________________________ Double_t AliITSQASSDChecker::Check(AliQAv1::ALITASK_t /*index*/, TObjArray * list) { AliDebug(AliQAv1::GetQADebugLevel(),Form("AliITSQASSDChecker called with offset: %d\n", fSubDetOffset)); - + //cout<<"(AliITSQASSDChecker::Check): List name "<GetName()<GetName(); + if (list->GetEntries() == 0){ test = 1. ; // nothing to check } else { + TIter next(list) ; TH1 * hdata ; count = 0 ; @@ -58,7 +199,17 @@ Double_t AliITSQASSDChecker::Check(AliQAv1::ALITASK_t /*index*/, TObjArray * lis TString histname = hdata->GetName(); if(!histname.Contains("fHistSSD")) continue; Double_t rv = 0.; - if(hdata->GetEntries()>0) rv = 1; + if(hdata->GetEntries()>0) { + rv = 1; + + //if(histname.Contains("PerDDL")) cout << "(AliITSQASSDChecker::Check) " << histname << " has " << hdata->GetEntries() << " entries. Mean: " << hdata->GetMean() << endl; + + // if(hdata->GetMean()>0&&!histname.Contains("_Ladder")) cout << "(AliITSQASSDChecker::Check) " << histname << " not empty! " << hdata->GetEntries() << " entries. Mean: " << hdata->GetMean() << endl; + } + + // if (listname.Contains("Raws")) CheckRaws(hdata); + // if (listname.Contains("RecPoints")) CheckRecPoints(hdata); + //AliDebug(AliQAv1::GetQADebugLevel(), Form("%s -> %f", hdata->GetName(), rv)) ; //cout<GetName()<<" - "<