51 TFile *
AliQAv1::fgQADataFile = 0x0 ;
52 TString
AliQAv1::fgQADataFileName = "QA" ;
53 TFile *
AliQAv1::fgQARefFile = 0x0 ;
54 TString
AliQAv1::fgQARefDirName = "" ;
55 TString
AliQAv1::fgQARefFileName = "QA.root" ;
56 TFile *
AliQAv1::fgQAResultFile = 0x0 ;
57 TString
AliQAv1::fgQAResultDirName = "" ;
58 TString
AliQAv1::fgQAResultFileName = "QA.root" ;
59 TString
AliQAv1::fgDetNames[] = {
"ITS",
"TPC",
"TRD",
"TOF",
"PHOS",
"HMPID",
"EMCAL",
"MUON",
"FMD",
60 "ZDC",
"PMD",
"T0",
"VZERO",
"ACORDE",
"AD",
"FIT",
"MFT",
"HLT",
"Global",
"CORR" } ;
62 TString
AliQAv1::fgTaskNames[] = {
"Raws",
"Hits",
"SDigits",
"Digits",
"DigitsR",
"RecPoints",
"TrackSegments",
"RecParticles",
"ESDs"} ;
92 fLengthQA(fNdet*fNEventSpecies),
93 fQA(new ULong_t[fLengthQA]),
97 fEventSpecies(new Bool_t[fNEventSpecies])
126 TNamed::operator=(qa);
147 TNamed(
"QA",
"Quality Assurance status"),
164 TNamed(
"QA",
"Quality Assurance status"),
182 TNamed(
"QA",
"Quality Assurance status"),
227 for (index = 0; index <
kNDET ; index++)
237 Bool_t rv = ( det < 0 || det >
kNDET ) ? kFALSE : kTRUE ;
239 AliFatal(Form(
"Detector index %d is out of range: 0 <= index <= %d", det,
kNDET)) ;
247 Bool_t rv = ( task < kRAW || task >
kNTASK ) ? kFALSE : kTRUE ;
249 AliFatal(Form(
"Module index %d is out of range: 0 <= index <= %d", task,
kNTASK)) ;
258 Bool_t rv = ( bit < 0 || bit >
kNBIT ) ? kFALSE : kTRUE ;
260 AliFatal(Form(
"Status bit %d is out of range: 0 <= bit <= %d", bit,
kNBIT)) ;
287 AliFatal(Form(
"Event Specie %d is not valid", es)) ;
323 const char* bitName[
kNBIT+1]={
"NONE",
"INFO",
"WARNING",
"ERROR",
"FATAL"};
339 if ( arr->At(index) ) {
340 rv =
static_cast<TH1*
>(arr->At(index)) ;
351 TString sname(name) ;
353 for (Int_t det = 0; det <
kNDET ; det++) {
367 if ( det >= 0 && det <
kNDET)
377 const char * temp = Form(
"%s.%s.%d.root", name,
fgQADataFileName.Data(), run) ;
380 if (gSystem->AccessPathName(temp))
389 if (gSystem->AccessPathName(temp))
446 if (!gSystem->AccessPathName(fileName)) {
469 if ( !gSystem->AccessPathName(fileName) )
472 if ( gSystem->AccessPathName(dirName) )
473 gSystem->mkdir(dirName) ;
491 for (Int_t bit =
kINFO ; bit <
kNBIT ; bit++) {
502 TString sname(name) ;
519 return IsSet(det, tsk, es, bit) ;
533 ULong_t offset =
Offset(tsk) ;
536 status = (status & 1 << offset) != 0 ;
549 ULong_t offset =
Offset(tsk) ;
552 for ( Int_t bit = 0 ; bit <
kNBIT ; bit++) {
554 st += (status & 1 << offset) != 0 ;
571 for ( Int_t tsk = 0 ; tsk <
kNTASK ; tsk++) {
573 for ( Int_t bit = 0 ; bit <
kNBIT ; bit++) {
575 st += (status & 1 << offset) != 0 ;
641 AliInfoClass(
"fgQA = static_cast<AliQAv1 *> (esdFile->Get(\"QA\")") ;
644 AliInfoClass(
"fgQA = static_cast<AliQAv1 *> (esdFile->Get(\"QA\")") ;
666 else if (tsk ==
kESDS)
677 for (Int_t det = 0 ; det <
kNDET ; det++) {
679 for (Int_t task = 0 ; task <
kNTASK ; task++) {
681 for (Int_t bit = 0 ; bit <
kNBIT ; bit++) {
684 while ( (qa = (
AliQAv1*)next() ) ) {
738 ULong_t offset =
Offset(tsk) ;
740 for ( Int_t bit = 0 ; bit <
kNBIT ; bit++) {
742 status = status & ~1 << offset ;
784 AliErrorClass(Form(
"ERROR: %s is an invalid storage definition", name)) ;
789 AliInfoClass(Form(
"AliQAv1::SetQARefDir: QA references are in %s\n", tmp.Data() )) ;
814 Reset(det, tsk, es) ;
816 ULong_t offset =
Offset(tsk) ;
819 status = status | 1 << offset ;
840 for (index = 0 ; index <
kNDET ; index++) {
841 for (Int_t tsk =
kRAW ; tsk <
kNTASK ; tsk++) {
857 ULong_t tskStatus[
kNTASK] ;
858 tskStatus[
kRAW] = status & 0x0000f ;
859 tskStatus[
kSIM] = status & 0x000f0 ;
860 tskStatus[
kREC] = status & 0x00f00 ;
861 tskStatus[
kESD] = status & 0x0f000 ;
862 tskStatus[
kANA] = status & 0xf0000 ;
867 for (Int_t itsk = kRAW ; itsk <
kNTASK ; itsk++) {
911 ULong_t offset =
Offset(tsk) ;
914 status = status & 0 << offset ;
static UShort_t GetMaxQAObj()
static const char * GetEventSpecieName(EventSpecie_t es)
static TFile * fgQARefFile
the name of the file where the quality assurance maker store their results
TFile * Open(const char *filename, Long64_t &nevents)
static const TString fgkQACorrNtName
name of QA object
static const TString fgkRefFileName
label to identify a file as AliEn OCDB
void SetStatus(DETECTORINDEX_t det, AliRecoParam::EventSpecie_t es, ULong_t status)
Bool_t * fEventSpecies
default storage for QA in OCDB
static const UInt_t fgkQABit
name of Reference File Name
static const UInt_t fgkImageBit
TObject bit identifing the object as "expert".
static TString fgDetNames[]
the current event specie
static TFile * fgQAResultFile
file name where to find the reference data
static const TString fgkLabLocalOCDB
label to identify a file as local
static TFile * GetQAResultFile()
QABIT_t GetQAStatusBit(AliRecoParam::EventSpecie_t es=AliRecoParam::kDefault, DETECTORINDEX_t det=kNULLDET, ALITASK_t tsk=kNULLTASK) const
Bool_t CheckRange(DETECTORINDEX_t det) const
ULong_t GetStatus(DETECTORINDEX_t det, AliRecoParam::EventSpecie_t es) const
static const UInt_t fgkForbidCloningBit
flag that the histrogram was cloned per trigger class
static void SetQAResultDirName(const char *name)
static const TString fgkLabAliEnOCDB
label to identify a file as local OCDB
static TString fgQADataFileName
the output file where the quality assurance maker store their results
Bool_t CheckFatal() const
static TString fgQAResultFileName
the location of the output file where the QA results are stored
#define AliFatalClass(message)
static void SetQARefStorage(const char *name)
ULong_t Offset(ALITASK_t tsk) const
#define AliInfoClass(message)
TString fileName(const char *dir, int runNumber, const char *da, int i, const char *type)
void ShowASCIIStatus(AliRecoParam::EventSpecie_t es, DETECTORINDEX_t det, ALITASK_t tsk, ULong_t status) const
AliQAv1 & operator=(const AliQAv1 &qa)
#define AliErrorClass(message)
static DETECTORINDEX_t GetDetIndex(const char *name)
void ShowStatus(DETECTORINDEX_t det, ALITASK_t tsk=kNULLTASK, AliRecoParam::EventSpecie_t es=AliRecoParam::kDefault) const
static EventSpecie_t ConvertIndex(Int_t index)
static TH1 * GetData(TObjArray **list, Int_t index, AliRecoParam::EventSpecie_t eventSpecie)
void Show(DETECTORINDEX_t det=kNULLDET) const
static const UInt_t fgkOrigHistoKeptBit
flag that the histogram is forbiden to clone per trigger class
static const TString fgkImageFileName
Long64_t Merge(const TCollection *list)
const char * GetBitName(QABIT_t bit) const
Bool_t IsSetAny(DETECTORINDEX_t det, ALITASK_t tsk, AliRecoParam::EventSpecie_t es) const
static TFile * GetQADataFile(const char *name, Int_t run)
void Reset(DETECTORINDEX_t det, ALITASK_t tsk, AliRecoParam::EventSpecie_t es)
static const Int_t fgkQADebugLevel
bit in the QA data object which is set when Checker does not return 0
static const TString GetDetName(DETECTORINDEX_t det)
static const char * GetAliTaskName(ALITASK_t tsk)
#define AliFatal(message)
static const TString fImageFileFormat
name of the file that contains all the QA images
ALITASK_t fTask
the current detector (ITS, TPC, ....)
static TString fgQARefFileName
name of directory where to find the reference data file
void UnSetStatusBit(DETECTORINDEX_t det, ALITASK_t tsk, AliRecoParam::EventSpecie_t es, QABIT_t bit)
void SetStatusBit(DETECTORINDEX_t det, ALITASK_t tsk, AliRecoParam::EventSpecie_t es, QABIT_t bit)
static const UShort_t fgkMaxQAObjects
format of the file that contains all the QA images
Bool_t IsSet(DETECTORINDEX_t det, ALITASK_t tsk, AliRecoParam::EventSpecie_t es, QABIT_t bit) const
static MODE_t Mode(TASKINDEX_t task)
void Set(QABIT_t bit, AliRecoParam::EventSpecie_t es)
static TString fgQARefDirName
the output file where the quality assurance maker store their results
static TString fgQAResultDirName
File where to find the QA result.
static TString fgRefDataDirName
name of Reference directory name in OCDB
static const UInt_t fgkQAClonedBit
maximum number of QA objects allowed dor each task (Raws, digits,....)
static const TString fgkExpert
list of mode names
static const TString fgkRefOCDBDirName
name of QA Correlation Ntuple
void ResetStatus(DETECTORINDEX_t det)
Bool_t IsEventSpecieSet(AliRecoParam::EventSpecie_t es) const
static EventSpecie_t Convert(Int_t ies)
static const UInt_t fgkExpertBit
name for the expert directory
static const TString fgkQAName
debug level used for QA verbosity
static const char * GetQAName()
void UnSet(QABIT_t bit, AliRecoParam::EventSpecie_t es)
static Int_t AConvert(EventSpecie_t es)
static TString fgGRPPath
list of detector names
static const char * GetQADataFileName()
static TString fgTaskNames[]
list of Run Type names
static TString GetTaskName(UInt_t tsk)
static const TString fgkLabLocalFile
TObject bit identifing the object to be plotted on the QA image.
static const TString fgkQARefOCDBDefault
name of Reference directory name in OCDB for data
static TString fgModeNames[]
list of tasks names
static TFile * fgQADataFile
path of the GRP object in OCDB
AliRecoParam::EventSpecie_t fEventSpecie
the current environment (SIM, REC, ESD, ANA)
static AliQAv1 * Instance()
static TASKINDEX_t GetTaskIndex(const char *name)