fSpecCDBUri(),
fInitCDBCalled(kFALSE),
fSetRunNumberFromDataCalled(kFALSE),
+ fQADetectors("ALL"),
+ fQATasks("ALL"),
fRunQA(kTRUE),
fRunGlobalQA(kTRUE),
fInLoopQA(kFALSE),
fSpecCDBUri(),
fInitCDBCalled(rec.fInitCDBCalled),
fSetRunNumberFromDataCalled(rec.fSetRunNumberFromDataCalled),
+ fQADetectors(rec.fQADetectors),
+ fQATasks(rec.fQATasks),
fRunQA(rec.fRunQA),
fRunGlobalQA(rec.fRunGlobalQA),
fInLoopQA(rec.fInLoopQA),
AliCodeTimerAuto("");
if (!InitRun(input)) return kFALSE;
-
//******* The loop over events
Int_t iEvent = 0;
while ((iEvent < fRunLoader->GetNumberOfEvents()) ||
gSystem->GetProcInfo(&ProcInfo);
AliInfo(Form("Current memory usage %d %d", ProcInfo.fMemResident, ProcInfo.fMemVirtual));
-
//QA
- AliQADataMakerSteer qas ;
- if (fRunQA && fRawReader) {
- qas.Run(fRunLocalReconstruction, fRawReader) ;
- fSameQACycle = kTRUE ;
+ if (fRunQA && fRawReader && fQATasks.Contains(Form("%d", AliQA::kRAWS))) {
+ AliQADataMakerSteer qas ;
+ qas.Run(fRunLocalReconstruction, fRawReader) ;
+ fSameQACycle = kTRUE ;
}
//Initialize the QA and start of cycle for out-of-cycle QA
if (fRunQA) {
-// TString detStr(fFillESD);
-// for (Int_t iDet = 0; iDet < fgkNDetectors; iDet++) {
-// if (!IsSelected(fgkDetectorName[iDet], detStr)) continue;
-// AliQADataMakerRec *qadm = GetQADataMaker(iDet);
-// if (!qadm) continue;
-// AliInfo(Form("Initializing the QA data maker for %s",
-// fgkDetectorName[iDet]));
-// qadm->Init(AliQA::kRECPOINTS, AliCDBManager::Instance()->GetRun());
-// qadm->Init(AliQA::kESDS, AliCDBManager::Instance()->GetRun());
-// if (!fInLoopQA) {
-// qadm->StartOfCycle(AliQA::kRECPOINTS, fSameQACycle);
-// qadm->StartOfCycle(AliQA::kESDS,"same");
-// }
-// }
+ TString detStr(fQADetectors) ;
+ for (Int_t iDet = 0; iDet < fgkNDetectors; iDet++) {
+ if (!IsSelected(fgkDetectorName[iDet], detStr))
+ continue;
+ AliQADataMakerRec *qadm = GetQADataMaker(iDet);
+ if (!qadm)
+ continue;
+ AliInfo(Form("Initializing the QA data maker for %s",
+ fgkDetectorName[iDet]));
+ if (fQATasks.Contains(Form("%d", AliQA::kRECPOINTS)))
+ qadm->Init(AliQA::kRECPOINTS, AliCDBManager::Instance()->GetRun());
+ if (fQATasks.Contains(Form("%d", AliQA::kESDS)))
+ qadm->Init(AliQA::kESDS, AliCDBManager::Instance()->GetRun());
+ if (!fInLoopQA) {
+ if (fQATasks.Contains(Form("%d", AliQA::kRECPOINTS))) {
+ qadm->StartOfCycle(AliQA::kRECPOINTS, fSameQACycle);
+ fSameQACycle = kTRUE;
+ }
+ if (fQATasks.Contains(Form("%d", AliQA::kESDS))) {
+ qadm->StartOfCycle(AliQA::kESDS, fSameQACycle);
+ fSameQACycle = kTRUE;
+ }
+ }
+ }
if (fRunGlobalQA) {
AliQADataMakerRec *qadm = GetQADataMaker(AliQA::kGLOBAL);
AliInfo(Form("Initializing the global QA data maker"));
- TObjArray *arr=
- qadm->Init(AliQA::kRECPOINTS, AliCDBManager::Instance()->GetRun());
- AliTracker::SetResidualsArray(arr);
- qadm->Init(AliQA::kESDS, AliCDBManager::Instance()->GetRun());
+ if (fQATasks.Contains(Form("%d", AliQA::kRECPOINTS))) {
+ TObjArray *arr=
+ qadm->Init(AliQA::kRECPOINTS, AliCDBManager::Instance()->GetRun());
+ AliTracker::SetResidualsArray(arr);
+ }
+ if (fQATasks.Contains(Form("%d", AliQA::kESDS))) {
+ qadm->Init(AliQA::kESDS, AliCDBManager::Instance()->GetRun());
+ }
if (!fInLoopQA) {
- qadm->StartOfCycle(AliQA::kRECPOINTS, fSameQACycle);
- qadm->StartOfCycle(AliQA::kESDS, "same");
+ fSameQACycle = kFALSE;
+ if (fQATasks.Contains(Form("%d", AliQA::kRECPOINTS))) {
+ qadm->StartOfCycle(AliQA::kRECPOINTS, fSameQACycle);
+ fSameQACycle = kTRUE;
+ }
+ if (fQATasks.Contains(Form("%d", AliQA::kESDS))) {
+ qadm->StartOfCycle(AliQA::kESDS, fSameQACycle);
+ fSameQACycle = kTRUE;
+ }
}
}
- if (!fInLoopQA)
- fSameQACycle = kTRUE;
}
//Initialize the Plane Efficiency framework
//Start of cycle for the in-loop QA
if (fInLoopQA) {
if (fRunQA) {
- TString detStr(fFillESD);
+ fSameQACycle = kFALSE ;
+ TString detStr(fQADetectors);
for (Int_t iDet = 0; iDet < fgkNDetectors; iDet++) {
if (!IsSelected(fgkDetectorName[iDet], detStr))
continue;
AliQADataMakerRec *qadm = GetQADataMaker(iDet);
if (!qadm)
continue;
- qadm->StartOfCycle(AliQA::kRECPOINTS, fSameQACycle);
- qadm->StartOfCycle(AliQA::kESDS, "same") ;
+ if (fQATasks.Contains(Form("%d", AliQA::kRECPOINTS))) {
+ qadm->StartOfCycle(AliQA::kRECPOINTS, fSameQACycle);
+ fSameQACycle = kTRUE;
+ }
+ if (fQATasks.Contains(Form("%d", AliQA::kESDS))) {
+ qadm->StartOfCycle(AliQA::kESDS, fSameQACycle) ;
+ fSameQACycle = kTRUE;
+ }
}
if (fRunGlobalQA) {
+ fSameQACycle = kFALSE;
AliQADataMakerRec *qadm = GetQADataMaker(AliQA::kGLOBAL);
- qadm->StartOfCycle(AliQA::kRECPOINTS, fSameQACycle);
- qadm->StartOfCycle(AliQA::kESDS, "same");
+ if (fQATasks.Contains(Form("%d", AliQA::kRECPOINTS))) {
+ qadm->StartOfCycle(AliQA::kRECPOINTS, fSameQACycle);
+ fSameQACycle = kTRUE;
+ }
+ if (fQATasks.Contains(Form("%d", AliQA::kESDS))) {
+ qadm->StartOfCycle(AliQA::kESDS, fSameQACycle);
+ fSameQACycle = kTRUE;
+ }
}
}
}
if (fRunQA) {
if (fRunGlobalQA) {
AliQADataMakerRec *qadm = GetQADataMaker(AliQA::kGLOBAL);
- if (qadm) qadm->Exec(AliQA::kESDS, fesd);
+ if (qadm && fQATasks.Contains(Form("%d", AliQA::kESDS)))
+ qadm->Exec(AliQA::kESDS, fesd);
}
}
AliInfo(Form("Event %d -> Current memory usage %d %d",iEvent, ProcInfo.fMemResident, ProcInfo.fMemVirtual));
- // End of cycle for the in-loop QA
+ // End of cycle for the in-loop
if (fInLoopQA) {
if (fRunQA) {
- RunQA(fFillESD.Data(), fesd);
- TString detStr(fFillESD);
+ RunQA(fesd);
for (Int_t iDet = 0; iDet < fgkNDetectors; iDet++) {
- if (!IsSelected(fgkDetectorName[iDet], detStr))
+ if (!IsSelected(fgkDetectorName[iDet], fQADetectors))
continue;
AliQADataMakerRec * qadm = GetQADataMaker(iDet);
- if (!qadm)
+ if (!qadm)
continue;
- qadm->EndOfCycle(AliQA::kRECPOINTS);
- qadm->EndOfCycle(AliQA::kESDS);
+ if (fQATasks.Contains(Form("%d", AliQA::kRECPOINTS)))
+ qadm->EndOfCycle(AliQA::kRECPOINTS);
+ if (fQATasks.Contains(Form("%d", AliQA::kESDS)))
+ qadm->EndOfCycle(AliQA::kESDS);
qadm->Finish();
}
}
if (fRunGlobalQA) {
AliQADataMakerRec *qadm = GetQADataMaker(AliQA::kGLOBAL);
if (qadm) {
- qadm->EndOfCycle(AliQA::kRECPOINTS);
- qadm->EndOfCycle(AliQA::kESDS);
- qadm->Finish();
- }
+ if (fQATasks.Contains(Form("%d", AliQA::kRECPOINTS)))
+ qadm->EndOfCycle(AliQA::kRECPOINTS);
+ if (fQATasks.Contains(Form("%d", AliQA::kESDS)))
+ qadm->EndOfCycle(AliQA::kESDS);
+ qadm->Finish();
+ }
}
}
if (!fInLoopQA) {
if (fRunQA) {
AliQADataMakerSteer qas;
- qas.Run(fRunLocalReconstruction.Data(), AliQA::kRECPOINTS, fSameQACycle);
+ if (fQATasks.Contains(Form("%d", AliQA::kRECPOINTS)))
+ qas.Run(fRunLocalReconstruction.Data(), AliQA::kRECPOINTS, fSameQACycle);
//qas.Reset() ;
- qas.Run(fRunLocalReconstruction.Data(), AliQA::kESDS, fSameQACycle);
+ if (fQATasks.Contains(Form("%d", AliQA::kESDS)))
+ qas.Run(fRunLocalReconstruction.Data(), AliQA::kESDS, fSameQACycle);
if (fRunGlobalQA) {
AliQADataMakerRec *qadm = GetQADataMaker(AliQA::kGLOBAL);
if (qadm) {
- qadm->EndOfCycle(AliQA::kRECPOINTS);
- qadm->EndOfCycle(AliQA::kESDS);
+ if (fQATasks.Contains(Form("%d", AliQA::kRECPOINTS)))
+ qadm->EndOfCycle(AliQA::kRECPOINTS);
+ if (fQATasks.Contains(Form("%d", AliQA::kESDS)))
+ qadm->EndOfCycle(AliQA::kESDS);
qadm->Finish();
}
}
//AliInfo
//(Form("Running QA data maker for %s", fgkDetectorName[iDet]));
- qadm->Exec(AliQA::kRECPOINTS, clustersTree) ;
-
+ if (fQATasks.Contains(Form("%d", AliQA::kRECPOINTS)))
+ qadm->Exec(AliQA::kRECPOINTS, clustersTree) ;
//AliCodeTimerStop
//(Form("Running QA data maker for %s", fgkDetectorName[iDet]));
}
}
//_____________________________________________________________________________
-Bool_t AliReconstruction::RunQA(const char* detectors, AliESDEvent *& esd)
+Bool_t AliReconstruction::RunQA(AliESDEvent *& esd)
{
// run the Quality Assurance data producer
AliCodeTimerAuto("")
- TString detStr = detectors;
+ TString detStr = fQADetectors ;
for (Int_t iDet = 0; iDet < fgkNDetectors; iDet++) {
if (!IsSelected(fgkDetectorName[iDet], detStr))
continue;
AliCodeTimerStart(Form("running quality assurance data maker for %s", fgkDetectorName[iDet]));
AliInfo(Form("running quality assurance data maker for %s", fgkDetectorName[iDet]));
- qadm->Exec(AliQA::kESDS, esd) ;
- qadm->Increment() ;
-
+ if (fQATasks.Contains(Form("%d", AliQA::kESDS))) {
+ qadm->Exec(AliQA::kESDS, esd) ;
+ qadm->Increment() ;
+ }
AliCodeTimerStop(Form("running quality assurance data maker for %s", fgkDetectorName[iDet]));
}
if ((detStr.CompareTo("ALL") != 0) && !detStr.IsNull()) {
gROOT->ProcessLine("gAliEveEvent->StartStopAutoLoadTimer();");
gSystem->Run();
}
+
+//_____________________________________________________________________________
+Bool_t AliReconstruction::SetRunQA(TString detAndAction)
+{
+ // Allows to run QA for a selected set of detectors
+ // and a selected set of tasks among RAWS, RECPOINTS and ESDS
+ // all selected detectors run the same selected tasks
+
+ if (!detAndAction.Contains(":")) {
+ AliError( Form("%s is a wrong syntax, use \"DetectorList:ActionList\" \n", detAndAction.Data()) ) ;
+ fRunQA = kFALSE ;
+ return kFALSE ;
+ }
+ Int_t colon = detAndAction.Index(":") ;
+ fQADetectors = detAndAction(0, colon) ;
+ if (fQADetectors.Contains("ALL") )
+ fQADetectors = fFillESD ;
+ fQATasks = detAndAction(colon+1, detAndAction.Sizeof() ) ;
+ if (fQATasks.Contains("ALL") ) {
+ fQATasks = Form("%d %d %d", AliQA::kRAWS, AliQA::kRECPOINTS, AliQA::kESDS) ;
+ } else {
+ fQATasks.ToUpper() ;
+ TString tempo("") ;
+ if ( fQATasks.Contains("RAW") )
+ tempo = Form("%d ", AliQA::kRAWS) ;
+ if ( fQATasks.Contains("RECPOINT") )
+ tempo += Form("%d ", AliQA::kRECPOINTS) ;
+ if ( fQATasks.Contains("ESD") )
+ tempo += Form("%d ", AliQA::kESDS) ;
+ fQATasks = tempo ;
+ if (fQATasks.IsNull()) {
+ AliInfo("No QA requested\n") ;
+ fRunQA = kFALSE ;
+ return kTRUE ;
+ }
+ }
+ TString tempo(fQATasks) ;
+ tempo.ReplaceAll(Form("%d", AliQA::kRAWS), AliQA::GetTaskName(AliQA::kRAWS)) ;
+ tempo.ReplaceAll(Form("%d", AliQA::kRECPOINTS), AliQA::GetTaskName(AliQA::kRECPOINTS)) ;
+ tempo.ReplaceAll(Form("%d", AliQA::kESDS), AliQA::GetTaskName(AliQA::kESDS)) ;
+ AliInfo( Form("QA will be done on \"%s\" for \"%s\"\n", fQADetectors.Data(), tempo.Data()) ) ;
+ fRunQA = kTRUE ;
+ return kTRUE;
+}
+
+