X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliQADataMaker.cxx;h=97e145b62b8786e534257bf347794ea0f0f902c4;hb=2a1dceee762afb8eb27bf1f564a3e9383a514952;hp=18011327bfecc55be80fb37d9e9bb62b84219598;hpb=cb905b0f75222cc7f550736be28bd892eb22f466;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliQADataMaker.cxx b/STEER/AliQADataMaker.cxx index 18011327bfe..97e145b62b8 100644 --- a/STEER/AliQADataMaker.cxx +++ b/STEER/AliQADataMaker.cxx @@ -29,6 +29,17 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // --- Standard library --- @@ -47,13 +58,18 @@ AliQADataMaker::AliQADataMaker(const char * name, const char * title) : fOutput(0x0), fDetectorDir(0x0), fDetectorDirName(""), - fCurrentCycle(-1), + fCurrentCycle(0), fCycle(9999999), fCycleCounter(0), - fRun(0) + fWriteExpert(kFALSE), + fParameterList(new TList*[AliRecoParam::kNSpecies]), + fRun(0), + fEventSpecie(AliRecoParam::kDefault) { // ctor fDetectorDirName = GetName() ; + for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) + fParameterList[specie] = NULL ; } //____________________________________________________________________________ @@ -65,30 +81,59 @@ AliQADataMaker::AliQADataMaker(const AliQADataMaker& qadm) : fCurrentCycle(qadm.fCurrentCycle), fCycle(qadm.fCycle), fCycleCounter(qadm.fCycleCounter), - fRun(qadm.fRun) + fWriteExpert(qadm.fWriteExpert), + fParameterList(qadm.fParameterList), + fRun(qadm.fRun), + fEventSpecie(qadm.fEventSpecie) { //copy ctor fDetectorDirName = GetName() ; } //____________________________________________________________________________ -Int_t AliQADataMaker::Add2List(TH1 * hist, const Int_t index, TObjArray * list) +Int_t AliQADataMaker::Add2List(TH1 * hist, const Int_t index, TObjArray ** list, const Bool_t expert, const Bool_t saveForCorr) { // Set histograms memory resident and add to the list // Maximm allowed is 10000 - TString className(hist->ClassName()) ; - if( ! className.BeginsWith("TH") ) { - AliError(Form("QA data Object must be a generic TH1 ROOT object and not %s", className.Data())) ; - return -1 ; - } - if ( index > 10000 ) { + + Int_t rv = -1 ; + TClass * classType = hist->Class() ; + TString className(classType->GetName()) ; + if( ! className.BeginsWith("T") && ! classType->InheritsFrom("TH1") ) { + AliError(Form("QA data Object must be a generic ROOT object and derive fom TH1 and not %s", className.Data())) ; + } else if ( index > 10000 ) { AliError("Max number of authorized QA objects is 10000") ; - return -1 ; - } else { - hist->SetDirectory(0) ; - list->AddAtAndExpand(hist, index) ; - return list->GetLast() ; - } + } else { + if (expert) + hist->SetBit(AliQA::GetExpertBit()) ; + TH1 * histClone[AliRecoParam::kNSpecies] ; + for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) { + histClone[specie] = CloneMe(hist, specie) ; + histClone[specie]->SetDirectory(0) ; + list[specie]->AddAtAndExpand(histClone[specie], index) ; + if(saveForCorr) { + char * name = Form("%s_%s", list[AliRecoParam::kDefault]->GetName(), hist->GetName()) ; + TParameter * p = new TParameter(name, 9999.9999) ; + if ( fParameterList[specie] == NULL ) + fParameterList[specie] = new TList() ; + fParameterList[specie]->Add(p) ; + } + } + rv = list[AliRecoParam::kDefault]->GetLast() ; + } + delete hist ; + return rv ; +} + +//____________________________________________________________________________ +TH1 * AliQADataMaker::CloneMe(TH1 * hist, Int_t specie) const +{ + // clones a histogram + char * name = Form("%s_%s", AliRecoParam::GetEventSpecieName(specie), hist->GetName()) ; + TH1 * hClone = dynamic_cast(hist->Clone(name)) ; + if ( hist->TestBit(AliQA::GetExpertBit()) ) + hClone->SetBit(AliQA::GetExpertBit()) ; + return hClone ; } //____________________________________________________________________________ @@ -98,7 +143,8 @@ void AliQADataMaker::DefaultEndOfDetectorCycle(AliQA::TASKINDEX_t task) // sets the QA result to Fatal AliQA::Instance(AliQA::GetDetIndex(GetName())) ; AliQA * qa = AliQA::Instance(task) ; - qa->Set(AliQA::kFATAL) ; + for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) + qa->Set(AliQA::kFATAL, specie) ; AliQA::GetQAResultFile()->cd() ; qa->Write(AliQA::GetQAName(), kWriteDelete) ; AliQA::GetQAResultFile()->Close() ; @@ -113,27 +159,23 @@ void AliQADataMaker::Finish() const } //____________________________________________________________________________ -TObject * AliQADataMaker::GetData(TObjArray * list, const Int_t index) +TObject * AliQADataMaker::GetData(TObjArray ** list, const Int_t index) { // Returns the QA object at index. Limit is 100. - if (list) { + if ( ! list ) { + AliError("Data list is NULL !!") ; + return NULL ; + } + if (list[AliRecoParam::AConvert(fEventSpecie)]) { if ( index > 10000 ) { AliError("Max number of authorized QA objects is 10000") ; return NULL ; } else { - return list->At(index) ; + Int_t esindex = AliRecoParam::AConvert(fEventSpecie) ; + return list[esindex]->At(index) ; } - } else { + } else { AliError("Data list is NULL !!") ; return NULL ; } } - -//____________________________________________________________________________ -void AliQADataMaker::Reset(const Bool_t sameCycle) -{ - // Resets defaut value of data members - if (!sameCycle) { - fCycleCounter = 0 ; - } -}