X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliQA.cxx;h=47365f1c0dfddcae6713d7bfd0af4dc07413b84a;hb=3f94bb0f753b6952ba5d84c71780ce27637c341f;hp=db284a1e63ae87e6de0120ad8202cf916bdb5ade;hpb=360e1aa3400ff949892f1dd9552b58429363c4da;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliQA.cxx b/STEER/AliQA.cxx index db284a1e63a..47365f1c0df 100644 --- a/STEER/AliQA.cxx +++ b/STEER/AliQA.cxx @@ -59,18 +59,18 @@ TString AliQA::fgDetNames[] = {"ITS", "TPC", "TRD", "TOF", "PHOS", "ZDC", "PMD", "T0", "VZERO", "ACORDE", "HLT", "Global", "CORR"} ; TString AliQA::fgGRPPath = "GRP/GRP/Data" ; TString AliQA::fgTaskNames[] = {"Raws", "Hits", "SDigits", "Digits", "RecPoints", "TrackSegments", "RecParticles", "ESDs"} ; -const TString AliQA::fkgLabLocalFile = "file://" ; -const TString AliQA::fkgLabLocalOCDB = "local://" ; -const TString AliQA::fkgLabAliEnOCDB = "alien://" ; -const TString AliQA::fkgRefFileName = "QA.root" ; -const TString AliQA::fkgQAName = "QA" ; -const TString AliQA::fkgQACorrNtName = "CorrQA" ; -const TString AliQA::fkgRefOCDBDirName = "QA" ; -TString AliQA::fkgRefDataDirName = "" ; -const TString AliQA::fkgQARefOCDBDefault = "alien://folder=/alice/QA/20" ; -const TString AliQA::fkgExpert = "Expert" ; -const UInt_t AliQA::fkgExpertBit = 16 ; -const UInt_t AliQA::fkgQABit = 17 ; +const TString AliQA::fgkLabLocalFile = "file://" ; +const TString AliQA::fgkLabLocalOCDB = "local://" ; +const TString AliQA::fgkLabAliEnOCDB = "alien://" ; +const TString AliQA::fgkRefFileName = "QA.root" ; +const TString AliQA::fgkQAName = "QA" ; +const TString AliQA::fgkQACorrNtName = "CorrQA" ; +const TString AliQA::fgkRefOCDBDirName = "QA" ; +TString AliQA::fgRefDataDirName = "" ; +const TString AliQA::fgkQARefOCDBDefault = "alien://folder=/alice/QA/20" ; +const TString AliQA::fgkExpert = "Expert" ; +const UInt_t AliQA::fgkExpertBit = 16 ; +const UInt_t AliQA::fgkQABit = 17 ; //____________________________________________________________________________ AliQA::AliQA() : @@ -85,8 +85,8 @@ AliQA::AliQA() : fEventSpecies(new Bool_t[fNEventSpecies]) { // default constructor - memset(fQA,0,fLengthQA); - memset(fEventSpecies,kFALSE,fNEventSpecies); + memset(fQA,0,fLengthQA*sizeof(ULong_t)); + memset(fEventSpecies,kFALSE,fNEventSpecies*sizeof(Bool_t)); } //____________________________________________________________________________ @@ -130,6 +130,23 @@ AliQA& AliQA::operator = (const AliQA& qa) return *this; } +//_______________________________________________________________ +AliQA::AliQA(const Int_t qalength, ULong_t * qa, const Int_t eslength, Bool_t * es) : +TNamed("QA", "Quality Assurance status"), +fNdet(kNDET), +fNEventSpecies(eslength), +fLengthQA(qalength), +fQA(new ULong_t[fLengthQA]), +fDet(kNULLDET), +fTask(kNULLTASK), +fEventSpecie(AliRecoParam::kDefault), +fEventSpecies(new Bool_t[fNEventSpecies]) +{ + // constructor to be used + memcpy(fQA, qa, fLengthQA*sizeof(ULong_t)); + memcpy(fEventSpecies, es, fNEventSpecies*sizeof(Bool_t)); +} + //_______________________________________________________________ AliQA::AliQA(const DETECTORINDEX_t det) : TNamed("QA", "Quality Assurance status"), @@ -144,8 +161,8 @@ AliQA::AliQA(const DETECTORINDEX_t det) : { // constructor to be used if (! CheckRange(det) ) fDet = kNULLDET ; - memset(fQA,0,fLengthQA); - memset(fEventSpecies,kFALSE,fNEventSpecies); + memset(fQA,0,fLengthQA*sizeof(ULong_t)); + memset(fEventSpecies,kFALSE,fNEventSpecies*sizeof(Bool_t)); } //_______________________________________________________________ @@ -162,8 +179,8 @@ AliQA::AliQA(const ALITASK_t tsk) : { // constructor to be used in the AliRoot module (SIM, REC, ESD or ANA) if (! CheckRange(tsk) ) fTask = kNULLTASK ; - memset(fQA,0,fLengthQA); - memset(fEventSpecies,kFALSE,fNEventSpecies); + memset(fQA,0,fLengthQA*sizeof(ULong_t)); + memset(fEventSpecies,kFALSE,fNEventSpecies*sizeof(Bool_t)); } //____________________________________________________________________________ @@ -395,8 +412,8 @@ TFile * AliQA::GetQAResultFile() fgQAResultFile = 0x0 ; // if (!fgQAResultFile) { TString dirName(fgQAResultDirName) ; - if ( dirName.Contains(fkgLabLocalFile)) - dirName.ReplaceAll(fkgLabLocalFile, "") ; + if ( dirName.Contains(fgkLabLocalFile)) + dirName.ReplaceAll(fgkLabLocalFile, "") ; TString fileName(dirName + fgQAResultFileName) ; TString opt("") ; if ( !gSystem->AccessPathName(fileName) ) @@ -512,6 +529,16 @@ AliQA * AliQA::Instance() return fgQA ; } +//_______________________________________________________________ +AliQA * AliQA::Instance(const Int_t qalength, ULong_t * qa, const Int_t eslength, Bool_t * es) +{ + // Get an instance of the singleton. The only authorized way to call the ctor + + if ( ! fgQA) + fgQA = new AliQA(qalength, qa, eslength, es) ; + return fgQA ; +} + //_______________________________________________________________ AliQA * AliQA::Instance(const DETECTORINDEX_t det) { @@ -662,12 +689,12 @@ void AliQA::SetQARefStorage(const char * name) // Set the root directory where the QA reference data are stored fgQARefDirName = name ; - if ( fgQARefDirName.Contains(fkgLabLocalFile) ) - fgQARefFileName = fkgRefFileName ; - else if ( fgQARefDirName.Contains(fkgLabLocalOCDB) ) - fgQARefFileName = fkgQAName ; - else if ( fgQARefDirName.Contains(fkgLabAliEnOCDB) ) - fgQARefFileName = fkgQAName ; + if ( fgQARefDirName.Contains(fgkLabLocalFile) ) + fgQARefFileName = fgkRefFileName ; + else if ( fgQARefDirName.Contains(fgkLabLocalOCDB) ) + fgQARefFileName = fgkQAName ; + else if ( fgQARefDirName.Contains(fgkLabAliEnOCDB) ) + fgQARefFileName = fgkQAName ; else { printf("ERROR: %s is an invalid storage definition\n", name) ; @@ -685,8 +712,8 @@ void AliQA::SetQAResultDirName(const char * name) fgQAResultDirName.Prepend(name) ; printf("AliQA::SetQAResultDirName: QA results are in %s\n", fgQAResultDirName.Data()) ; - if ( fgQAResultDirName.Contains(fkgLabLocalFile)) - fgQAResultDirName.ReplaceAll(fkgLabLocalFile, "") ; + if ( fgQAResultDirName.Contains(fgkLabLocalFile)) + fgQAResultDirName.ReplaceAll(fgkLabLocalFile, "") ; fgQAResultFileName.Prepend(fgQAResultDirName) ; } @@ -707,27 +734,16 @@ void AliQA::SetStatusBit(DETECTORINDEX_t det, ALITASK_t tsk, AliRecoParam::Event SetStatus(det, es, status) ; } -//_______________________________________________________________ -void AliQA::Show() const -{ - // dispplay the QA status word - - for (Int_t ies = 0 ; ies < fNEventSpecies ; ies++) { - const Bool_t what = IsEventSpecieSet(ies) ; - if ( what ) - ShowStatus(fDet, fTask, AliRecoParam::Convert(ies)) ; - } -} - //_______________________________________________________________ void AliQA::Show(DETECTORINDEX_t det) const { // dispplay the QA status word - + if ( det == kNULLDET) + det = fDet ; for (Int_t ies = 0 ; ies < fNEventSpecies ; ies++) { const Bool_t what = IsEventSpecieSet(ies) ; if ( what ) - ShowStatus(fDet, kNULLTASK, AliRecoParam::Convert(ies)) ; + ShowStatus(det, kNULLTASK, AliRecoParam::Convert(ies)) ; } }