fLoader[iDet] = NULL ;
fQADataMaker[iDet] = NULL ;
fQACycles[iDet] = 999999 ;
+ fQAWriteExpert[iDet] = kFALSE ;
}
}
}
{
// cpy ctor
for (UInt_t iDet = 0; iDet < fgkNDetectors; iDet++) {
- fLoader[iDet] = qas.fLoader[iDet] ;
- fQADataMaker[iDet] = qas.fQADataMaker[iDet] ;
- fQACycles[iDet] = qas.fQACycles[iDet] ;
+ fLoader[iDet] = qas.fLoader[iDet] ;
+ fQADataMaker[iDet] = qas.fQADataMaker[iDet] ;
+ fQACycles[iDet] = qas.fQACycles[iDet] ;
+ fQAWriteExpert[iDet] = qas.fQAWriteExpert[iDet] ;
}
}
for (UInt_t iDet = 0; iDet < fgkNDetectors ; iDet++) {
if (IsSelected(AliQA::GetDetName(iDet))) {
AliQADataMaker * qadm = GetQADataMaker(iDet) ;
+ if (!qadm) continue; // This detector doesn't have any QA (for example, HLT)
if ( qadm->IsCycleDone() ) {
- qadm->EndOfCycle(AliQA::kRAWS) ;
- qadm->StartOfCycle(AliQA::kRAWS) ;
+ qadm->EndOfCycle(taskIndex) ;
}
TTree * data = NULL ;
AliLoader* loader = GetLoader(qadm->GetUniqueID());
} //task switch
}
} // detector loop
+ Increment() ;
} // event loop
// Save QA data for all detectors
rv = Finish(taskIndex) ;
for (UInt_t iDet = 0; iDet < fgkNDetectors ; iDet++) {
if (IsSelected(AliQA::GetDetName(iDet))) {
AliQADataMaker * qadm = GetQADataMaker(iDet) ;
- qadm->EndOfCycle(taskIndex) ;
+ if (qadm) qadm->EndOfCycle(taskIndex) ;
}
}
return kTRUE ;
}
}
+//_____________________________________________________________________________
+void AliQADataMakerSteer::Increment()
+{
+ // Increments the cycle counter for all QA Data Makers
+ for (UInt_t iDet = 0; iDet < fgkNDetectors ; iDet++) {
+ if (IsSelected(AliQA::GetDetName(iDet))) {
+ AliQADataMaker * qadm = GetQADataMaker(iDet) ;
+ if (qadm)
+ qadm->Increment() ;
+ }
+ }
+}
+
//_____________________________________________________________________________
Bool_t AliQADataMakerSteer::Init(const AliQA::TASKINDEX_t taskIndex, const char * input )
{
if ( ! AliGeomManager::GetGeometry() )
AliGeomManager::LoadGeometry() ;
- InitQADataMaker(fRunNumber, fRecoParam, fCycleSame, kTRUE, detArray) ;
+ InitQADataMaker(fRunNumber, fRecoParam, detArray) ; //, fCycleSame, kTRUE, detArray) ;
return kTRUE ;
}
//_____________________________________________________________________________
-void AliQADataMakerSteer::InitQADataMaker(UInt_t run, const AliRecoParam & par, Bool_t sameCycle, Bool_t startOption, TObjArray * detArray)
+void AliQADataMakerSteer::InitQADataMaker(UInt_t run, const AliRecoParam & par, TObjArray * detArray)
{
// Initializes The QADataMaker for all active detectors and for all active tasks
for (UInt_t iDet = 0; iDet < fgkNDetectors ; iDet++) {
if (IsSelected(AliQA::GetDetName(iDet))) {
AliQADataMaker * qadm = GetQADataMaker(iDet) ;
+ if (fQAWriteExpert[iDet])
+ qadm->SetWriteExpert() ;
if (!qadm) {
AliError(Form("AliQADataMaker not found for %s", AliQA::GetDetName(iDet))) ;
fDetectorsW.ReplaceAll(AliQA::GetDetName(iDet), "") ;
}
// Set default reco params
qadm->SetRecoParam(par.GetDetRecoParam(iDet));
+ Bool_t sameCycle = kFALSE ;
for (UInt_t taskIndex = 0; taskIndex < AliQA::kNTASKINDEX; taskIndex++) {
if ( fTasks.Contains(Form("%d", taskIndex)) ) {
- qadm->Init(AliQA::GetTaskIndex(AliQA::GetTaskName(taskIndex)), run, GetQACycles(qadm->GetUniqueID())) ;
- if (startOption) {
- qadm->StartOfCycle(AliQA::GetTaskIndex(AliQA::GetTaskName(taskIndex)), sameCycle) ;
- sameCycle = kTRUE ;
- }
+ qadm->StartOfCycle(AliQA::GetTaskIndex(AliQA::GetTaskName(taskIndex)), run, sameCycle) ;
+ qadm->Init(AliQA::GetTaskIndex(AliQA::GetTaskName(taskIndex)), GetQACycles(qadm->GetUniqueID())) ;
+ sameCycle = kTRUE ;
}
}
}
// Merge all the cycles from all detectors in one single file per run
TString cmd ;
if (runNumber == -1)
- cmd = Form(".! ls *%s*.%d.*.root > tempo.txt", AliQA::GetQADataFileName(), runNumber) ;
+ cmd = Form(".! ls *%s*.%d.root > tempo.txt", AliQA::GetQADataFileName(), runNumber) ;
else
- cmd = Form(".! ls *%s*.*.*.root > tempo.txt", AliQA::GetQADataFileName()) ;
+ cmd = Form(".! ls *%s*.*.root > tempo.txt", AliQA::GetQADataFileName()) ;
gROOT->ProcessLine(cmd.Data()) ;
ifstream in("tempo.txt") ;
const Int_t runMax = 10 ;
TString file[AliQA::kNDET*runMax] ;
- Int_t run[AliQA::kNDET*runMax] = {-1} ;
Int_t index = 0 ;
while ( 1 ) {
AliError(Form("run number %d not found", runNumber)) ;
return kFALSE ;
}
-
- Int_t runIndex = 0 ;
- Int_t runIndexMax = 0 ;
- TString stmp(Form(".%s.", AliQA::GetQADataFileName())) ;
- for (Int_t ifile = 0 ; ifile < index ; ifile++) {
- TString tmp(file[ifile]) ;
- tmp.ReplaceAll(".root", "") ;
- TString det = tmp(0, tmp.Index(".")) ;
- tmp.Remove(0, tmp.Index(stmp)+4) ;
- TString ttmp = tmp(0, tmp.Index(".")) ;
- Int_t newRun = ttmp.Atoi() ;
- for (Int_t irun = 0; irun <= runIndexMax; irun++) {
- if (newRun == run[irun])
- break ;
- run[runIndex] = newRun ;
- runIndex++ ;
- }
- runIndexMax = runIndex ;
- ttmp = tmp(tmp.Index(".")+1, tmp.Length()) ;
- Int_t cycle = ttmp.Atoi() ;
- AliDebug(1, Form("%s : det = %s run = %d cycle = %d \n", file[ifile].Data(), det.Data(), newRun, cycle)) ;
- }
- for (Int_t irun = 0 ; irun < runIndexMax ; irun++) {
- TFileMerger merger ;
- TString outFileName(Form("Merged.%s.Data.%d.root",AliQA::GetQADataFileName(),run[irun]));
- merger.OutputFile(outFileName.Data()) ;
- for (Int_t ifile = 0 ; ifile < index-1 ; ifile++) {
- TString pattern(Form("%s.%d.", AliQA::GetQADataFileName(), run[irun])) ;
- TString tmp(file[ifile]) ;
- if (tmp.Contains(pattern)) {
- merger.AddFile(tmp) ;
- }
- }
- merger.Merge() ;
+
+ TFileMerger merger ;
+ TString outFileName(Form("Merged.%s.Data.%d.root",AliQA::GetQADataFileName(),runNumber));
+ merger.OutputFile(outFileName.Data()) ;
+ for (Int_t ifile = 0 ; ifile < index-1 ; ifile++) {
+ TString pattern(Form("%s.%d.", AliQA::GetQADataFileName(), runNumber));
+ TString tmp(file[ifile]) ;
+ if (tmp.Contains(pattern)) {
+ merger.AddFile(tmp) ;
+ }
}
-
+ merger.Merge() ;
return kTRUE ;
}
for (UInt_t iDet = 0; iDet < fgkNDetectors ; iDet++) {
if (IsSelected(AliQA::GetDetName(iDet))) {
AliQADataMaker * qadm = GetQADataMaker(iDet);
- qadm->Reset(sameCycle);
+ qadm->Reset();
}
}
if (fRawReaderDelete) {
void AliQADataMakerSteer::RunOneEvent(AliRawReader * rawReader)
{
//Runs all the QA data Maker for Raws only and on one event only (event loop done by calling method)
-
+ if ( ! rawReader )
+ return ;
AliCodeTimerAuto("") ;
if (fTasks.Contains(Form("%d", AliQA::kRAWS))){
for (UInt_t iDet = 0; iDet < fgkNDetectors; iDet++) {
AliQADataMaker *qadm = GetQADataMaker(iDet);
if (!qadm)
continue;
+ if ( qadm->IsCycleDone() ) {
+ qadm->EndOfCycle() ;
+ }
AliCodeTimerStart(Form("running RAW quality assurance data maker for %s", AliQA::GetDetName(iDet)));
qadm->Exec(AliQA::kRAWS, rawReader) ;
AliCodeTimerStop(Form("running RAW quality assurance data maker for %s", AliQA::GetDetName(iDet)));
AliQADataMaker *qadm = GetQADataMaker(iDet);
if (!qadm)
continue;
+ if ( qadm->IsCycleDone() ) {
+ qadm->EndOfCycle() ;
+ }
AliCodeTimerStart(Form("running ESD quality assurance data maker for %s", AliQA::GetDetName(iDet)));
qadm->Exec(AliQA::kESDS, esd) ;
AliCodeTimerStop(Form("running ESD quality assurance data maker for %s", AliQA::GetDetName(iDet)));
// Runs all the QA data Maker for ESDs only and on one event only (event loop done by calling method)
AliCodeTimerAuto("") ;
if (fTasks.Contains(Form("%d", AliQA::kRECPOINTS))) {
- if (!IsSelected(AliQA::GetDetName(det))) {
+ if (IsSelected(AliQA::GetDetName(det))) {
AliQADataMaker *qadm = GetQADataMaker(det);
if (qadm) {
+ if ( qadm->IsCycleDone() ) {
+ qadm->EndOfCycle() ;
+ }
AliCodeTimerStart(Form("running RecPoints quality assurance data maker for %s", AliQA::GetDetName(det)));
qadm->Exec(AliQA::kRECPOINTS, tree) ;
- AliCodeTimerStop(Form("running RecPoints quality assurance data maker for %s", AliQA::GetDetName(det)));
- }
- }
- }
+ AliCodeTimerStop(Form("running RecPoints quality assurance data maker for %s", AliQA::GetDetName(det)));
+ }
+ }
+ }
}
//_____________________________________________________________________________
-Bool_t AliQADataMakerSteer::Save2OCDB(const Int_t runNumber, const char * year, const Int_t cycleNumber, const char * detectors) const
+Bool_t AliQADataMakerSteer::Save2OCDB(const Int_t runNumber, const char * year, const char * detectors) const
{
// take the locasl QA data merge into a single file and save in OCDB
Bool_t rv = kTRUE ;
rv = Merge(runNumber) ;
if ( ! rv )
return kFALSE ;
- TString inputFileName(Form("Merged.%s.%d.root", AliQA::GetQADataFileName(), runNumber)) ;
+ TString inputFileName(Form("Merged.%s.Data.%d.root", AliQA::GetQADataFileName(), runNumber)) ;
inputFile = TFile::Open(inputFileName.Data()) ;
rv = SaveIt2OCDB(runNumber, inputFile, year) ;
} else {
for (Int_t index = 0; index < AliQA::kNDET; index++) {
if (sdet.Contains(AliQA::GetDetName(index))) {
- TString inputFileName(Form("%s.%s.%d.%d.root", AliQA::GetDetName(index), AliQA::GetQADataFileName(), runNumber, cycleNumber)) ;
+ TString inputFileName(Form("%s.%s.%d.root", AliQA::GetDetName(index), AliQA::GetQADataFileName(), runNumber)) ;
inputFile = TFile::Open(inputFileName.Data()) ;
rv *= SaveIt2OCDB(runNumber, inputFile, year) ;
}
if ( detDir ) {
AliInfo(Form("Entering %s", detDir->GetName())) ;
TString detOCDBDir(Form("%s/%s/%s", AliQA::GetDetName(detIndex), AliQA::GetRefOCDBDirName(), AliQA::GetRefDataDirName())) ;
+ printf("SSSSSSSSSSSSSSSSSSSSS %s\n", detOCDBDir.Data()) ;
AliCDBId idr(detOCDBDir.Data(), runNumber, AliCDBRunRange::Infinity()) ;
TList * listDetQAD = new TList() ;
TString listName(Form("%s QA data Reference", AliQA::GetDetName(detIndex))) ;