"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() :
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));
}
//____________________________________________________________________________
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"),
{
// 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));
}
//_______________________________________________________________
{
// 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));
}
//____________________________________________________________________________
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) )
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)
{
// 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) ;
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) ;
}
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)) ;
}
}