**************************************************************************/
/* $Id$ */
+///////////////////////////////////////////////////////////////////////////////
+// //
+// class for running the QA makers //
+// //
+// AliQADataMakerSteer qas; //
+// qas.Run(AliQA::kRAWS, rawROOTFileName); //
+// qas.Run(AliQA::kHITS); //
+// qas.Run(AliQA::kSDIGITS); //
+// qas.Run(AliQA::kDIGITS); //
+// qas.Run(AliQA::kRECPOINTS); //
+// qas.Run(AliQA::kESDS); //
+// //
+///////////////////////////////////////////////////////////////////////////////
#include <TKey.h>
#include <TFile.h>
#include "AliLog.h"
#include "AliModule.h"
#include "AliQA.h"
-#include "AliQADataMaker.h"
+#include "AliQADataMakerRec.h"
+#include "AliQADataMakerSim.h"
#include "AliQADataMakerSteer.h"
#include "AliRawReaderDate.h"
#include "AliRawReaderFile.h"
//_____________________________________________________________________________
AliQADataMakerSteer::AliQADataMakerSteer(const char* gAliceFilename, const char * name, const char * title) :
TNamed(name, title),
+ fCurrentEvent(0),
fCycleSame(kFALSE),
- fDetectors("ALL"),
+ fDetectors("ALL"),
+ fDetectorsW("ALL"),
fESD(NULL),
fESDTree(NULL),
fFirst(kTRUE),
fGAliceFileName(gAliceFilename),
- fRunNumber(0),
+ fMaxEvents(0),
fNumberOfEvents(999999),
+ fRunNumber(0),
fRawReader(NULL),
fRawReaderDelete(kTRUE),
fRunLoader(NULL)
{
// default ctor
+ fMaxEvents = fNumberOfEvents ;
for (UInt_t iDet = 0; iDet < fgkNDetectors; iDet++) {
if (IsSelected(AliQA::GetDetName(iDet))) {
fLoader[iDet] = NULL ;
//_____________________________________________________________________________
AliQADataMakerSteer::AliQADataMakerSteer(const AliQADataMakerSteer & qas) :
TNamed(qas),
+ fCurrentEvent(qas.fCurrentEvent),
fCycleSame(kFALSE),
- fDetectors(qas.fDetectors),
+ fDetectors(qas.fDetectors),
+ fDetectorsW(qas.fDetectorsW),
fESD(NULL),
fESDTree(NULL),
fFirst(qas.fFirst),
fGAliceFileName(qas.fGAliceFileName),
- fRunNumber(qas.fRunNumber),
+ fMaxEvents(qas.fMaxEvents),
fNumberOfEvents(qas.fNumberOfEvents),
+ fRunNumber(qas.fRunNumber),
fRawReader(NULL),
fRawReaderDelete(kTRUE),
fRunLoader(NULL)
}
//_____________________________________________________________________________
-Bool_t AliQADataMakerSteer::DoIt(const AliQA::TASKINDEX taskIndex)
+Bool_t AliQADataMakerSteer::DoIt(const AliQA::TASKINDEX taskIndex, const char * mode)
{
// Runs all the QA data Maker for every detector
+
Bool_t rv = kFALSE ;
-
// Fill QA data in event loop
- for (UInt_t iEvent = 0 ; iEvent < fNumberOfEvents ; iEvent++) {
+ for (UInt_t iEvent = 0 ; iEvent < (UInt_t)fMaxEvents ; iEvent++) {
+ fCurrentEvent++ ;
// Get the event
- AliDebug(1, Form("processing event %d", iEvent));
+ if ( iEvent%10 == 0 )
+ AliInfo(Form("processing event %d", iEvent));
if ( taskIndex == AliQA::kRAWS ) {
if ( !fRawReader->NextEvent() )
break ;
}
if (!IsSelected(AliQA::GetDetName(iDet)))
continue ;
- AliQADataMaker * qadm = GetQADataMaker(iDet) ;
+ AliQADataMaker * qadm = GetQADataMaker(iDet, mode) ;
if (!qadm) {
rv = kFALSE ;
} else {
case AliQA::kNTASKINDEX :
break;
} //task switch
- qadm->Increment() ;
+ //qadm->Increment() ;
} //data maker exist
} // detector loop
} // event loop
- // Save QA data for all detectors
- rv = Finish(taskIndex) ;
+// // Save QA data for all detectors
+ rv = Finish(taskIndex, mode) ;
+
return rv ;
}
//_____________________________________________________________________________
-Bool_t AliQADataMakerSteer::Finish(const AliQA::TASKINDEX taskIndex)
+Bool_t AliQADataMakerSteer::Finish(const AliQA::TASKINDEX taskIndex, const char * mode)
{
// write output to file for all detectors
for (UInt_t iDet = 0; iDet < fgkNDetectors ; iDet++) {
if (IsSelected(AliQA::GetDetName(iDet))) {
- AliQADataMaker * qadm = GetQADataMaker(iDet) ;
+ AliQADataMaker * qadm = GetQADataMaker(iDet, mode) ;
if (qadm) {
qadm->EndOfCycle(taskIndex) ;
}
}
//_____________________________________________________________________________
-AliQADataMaker * AliQADataMakerSteer::GetQADataMaker(Int_t iDet)
+AliQADataMaker * AliQADataMakerSteer::GetQADataMaker(const Int_t iDet, const char * mode )
{
// get the quality assurance data maker for a detector
// load the QA data maker object
TPluginManager* pluginManager = gROOT->GetPluginManager() ;
TString detName = AliQA::GetDetName(iDet) ;
- TString qadmName = "Ali" + detName + "QADataMaker" ;
+ TString tmp(mode) ;
+ if (tmp.Contains("sim"))
+ tmp.ReplaceAll("s", "S") ;
+ else if (tmp.Contains("rec"))
+ tmp.ReplaceAll("r", "R") ;
+ TString qadmName = "Ali" + detName + "QADataMaker" + tmp ;
// first check if a plugin is defined for the quality assurance data maker
TPluginHandler* pluginHandler = pluginManager->FindHandler("AliQADataMaker", detName) ;
if (!pluginHandler) {
AliDebug(1, Form("defining plugin for %s", qadmName.Data())) ;
TString libs = gSystem->GetLibraries() ;
- if (libs.Contains("lib" + detName + "base.so") || (gSystem->Load("lib" + detName + "base.so") >= 0)) {
+ if (libs.Contains("lib" + detName + mode + ".so") || (gSystem->Load("lib" + detName + mode + ".so") >= 0)) {
pluginManager->AddHandler("AliQADataMaker", detName, qadmName, detName + "qadm", qadmName + "()") ;
} else {
pluginManager->AddHandler("AliQADataMaker", detName, qadmName, detName, qadmName + "()") ;
}
//_____________________________________________________________________________
-Bool_t AliQADataMakerSteer::Init(const AliQA::TASKINDEX taskIndex, const char * input )
+Bool_t AliQADataMakerSteer::Init(const AliQA::TASKINDEX taskIndex, const char * mode, const char * input )
{
// Initialize the event source and QA data makers
}
if ( ! fRawReader )
return kFALSE ;
+ fRawReaderDelete = kTRUE ;
fRawReader->NextEvent() ;
fRunNumber = fRawReader->GetRunNumber() ;
+ AliCDBManager::Instance()->SetRun(fRunNumber) ;
fRawReader->RewindEvents();
fNumberOfEvents = 999999 ;
- } else if (taskIndex == AliQA::kESDS) {
+ if ( fMaxEvents < 0 )
+ fMaxEvents = fNumberOfEvents ;
+ } else if (taskIndex == AliQA::kESDS) {
if (!gSystem->AccessPathName("AliESDs.root")) { // AliESDs.root exists
TFile * esdFile = TFile::Open("AliESDs.root") ;
fESDTree = dynamic_cast<TTree *> (esdFile->Get("esdTree")) ;
- fESD = new AliESDEvent() ;
- fESD->ReadFromTree(fESDTree) ;
- fESDTree->GetEntry(0) ;
- fRunNumber = fESD->GetRunNumber() ;
- fNumberOfEvents = fESDTree->GetEntries() ;
+ if ( !fESDTree ) {
+ AliError("esdTree not found") ;
+ return kFALSE ;
+ } else {
+ fESD = new AliESDEvent() ;
+ fESD->ReadFromTree(fESDTree) ;
+ fESDTree->GetEntry(0) ;
+ fRunNumber = fESD->GetRunNumber() ;
+ fNumberOfEvents = fESDTree->GetEntries() ;
+ if ( fMaxEvents < 0 )
+ fMaxEvents = fNumberOfEvents ;
+ }
} else {
AliError("AliESDs.root not found") ;
return kFALSE ;
AliWarning("No Run Loader not found") ;
} else {
fNumberOfEvents = fRunLoader->GetNumberOfEvents() ;
+ if ( fMaxEvents < 0 )
+ fMaxEvents = fNumberOfEvents ;
+
}
}
// Initialize all QA data makers for all detectors
for (UInt_t iDet = 0; iDet < fgkNDetectors ; iDet++) {
+
if (IsSelected(AliQA::GetDetName(iDet))) {
- AliQADataMaker * qadm = GetQADataMaker(iDet) ;
+ AliQADataMaker * qadm = GetQADataMaker(iDet, mode) ;
if (!qadm) {
- AliWarning(Form("AliQADataMaker not found for %s", AliQA::GetDetName(iDet))) ;
+ AliError(Form("AliQADataMaker not found for %s", AliQA::GetDetName(iDet))) ;
+ fDetectorsW.ReplaceAll(AliQA::GetDetName(iDet), "") ;
} else {
- AliInfo(Form("Data Maker found for %s", qadm->GetName())) ;
+ AliDebug(1, Form("Data Maker found for %s", qadm->GetName())) ;
qadm->Init(taskIndex, fRunNumber, GetQACycles(iDet)) ;
qadm->StartOfCycle(taskIndex, fCycleSame) ;
}
return kTRUE ;
}
-//_____________________________________________________________________________
-Bool_t AliQADataMakerSteer::IsSelected(const char * det)
-{
- // check whether detName is contained in detectors
- // if yes, it is removed from detectors
-
- const TString detName(det) ;
- // check if all detectors are selected
- if ((fDetectors.CompareTo("ALL") == 0) ||
- fDetectors.BeginsWith("ALL ") ||
- fDetectors.EndsWith(" ALL") ||
- fDetectors.Contains(" ALL ")) {
- fDetectors = "ALL";
- return kTRUE;
- }
-
- // search for the given detector
- Bool_t rv = kFALSE;
- if ((fDetectors.CompareTo(detName) == 0) ||
- fDetectors.BeginsWith(detName+" ") ||
- fDetectors.EndsWith(" "+detName) ||
- fDetectors.Contains(" "+detName+" ")) {
-// fDetectors.ReplaceAll(detName, "");
- rv = kTRUE;
- }
-
- // clean up the detectors string
-// while (fDetectors.Contains(" "))
-// fDetectors.ReplaceAll(" ", " ");
-// while (fDetectors.BeginsWith(" "))
-// fDetectors.Remove(0, 1);
-// while (fDetectors.EndsWith(" "))
-// fDetectors.Remove(fDetectors.Length()-1, 1);
-
- return rv ;
-}
-
//_____________________________________________________________________________
Bool_t AliQADataMakerSteer::InitRunLoader()
{
return kTRUE;
}
+//_____________________________________________________________________________
+Bool_t AliQADataMakerSteer::IsSelected(const char * det)
+{
+ // check whether detName is contained in detectors
+ // if yes, it is removed from detectors
+
+ const TString detName(det) ;
+ // check if all detectors are selected
+ if ((fDetectors.CompareTo("ALL") == 0) ||
+ fDetectors.BeginsWith("ALL ") ||
+ fDetectors.EndsWith(" ALL") ||
+ fDetectors.Contains(" ALL ")) {
+ fDetectors = "ALL";
+ return kTRUE;
+ }
+
+ // search for the given detector
+ Bool_t rv = kFALSE;
+ //AliInfo(Form("SSSSSSSSSSSSS fd = %s det = %s ", fDetectors.Data(), det)) ;
+ if ((fDetectors.CompareTo(detName) == 0) ||
+ fDetectors.BeginsWith(detName+" ") ||
+ fDetectors.EndsWith(" "+detName) ||
+ fDetectors.Contains(" "+detName+" ")) {
+ // fDetectors.ReplaceAll(detName, "");
+ rv = kTRUE;
+ }
+
+ // clean up the detectors string
+ // while (fDetectors.Contains(" "))
+ // fDetectors.ReplaceAll(" ", " ");
+ // while (fDetectors.BeginsWith(" "))
+ // fDetectors.Remove(0, 1);
+ // while (fDetectors.EndsWith(" "))
+ // fDetectors.Remove(fDetectors.Length()-1, 1);
+
+ return rv ;
+}
+
//_____________________________________________________________________________
Bool_t AliQADataMakerSteer::Merge(const Int_t runNumber) const
{
Int_t index = 0 ;
while ( 1 ) {
in >> file[index] ;
+ AliInfo(Form("index = %d file = %s", index, (file[index]).Data())) ;
+ index++ ;
if ( !in.good() )
break ;
- index++ ;
}
if ( index == 0 ) {
return kFALSE ;
}
- Int_t previousRun = -1 ;
- Int_t runIndex = 0 ;
+ Int_t runIndex = 0 ;
+ Int_t runIndexMax = 0 ;
char stmp[10] ;
sprintf(stmp, ".%s.", AliQA::GetQADataFileName()) ;
- for (Int_t ifile = 0 ; ifile < index-1 ; ifile++) {
+ 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() ;
- if (newRun != previousRun) {
+ for (Int_t irun = 0; irun <= runIndexMax; irun++) {
+ if (newRun == run[irun])
+ break ;
run[runIndex] = newRun ;
- previousRun = newRun ;
runIndex++ ;
}
- ttmp = tmp(tmp.Index("."), tmp.Length()) ;
+ runIndexMax = runIndex ;
+ ttmp = tmp(tmp.Index(".")+1, tmp.Length()) ;
Int_t cycle = ttmp.Atoi() ;
- AliInfo(Form("%s : det = %s run = %d cycle = %d \n", file[ifile].Data(), det.Data(), newRun, cycle)) ;
+ AliDebug(1, Form("%s : det = %s run = %d cycle = %d \n", file[ifile].Data(), det.Data(), newRun, cycle)) ;
}
- for (Int_t irun = 0 ; irun < runIndex ; irun++) {
+ for (Int_t irun = 0 ; irun < runIndexMax ; irun++) {
TFileMerger merger ;
char outFileName[20] ;
- sprintf(outFileName, "Merged.%s.%d.root", AliQA::GetQADataFileName(), runIndex-1) ;
+ sprintf(outFileName, "Merged.%s.%d.root", AliQA::GetQADataFileName(), run[irun]) ;
merger.OutputFile(outFileName) ;
for (Int_t ifile = 0 ; ifile < index-1 ; ifile++) {
char pattern[100] ;
- sprintf(pattern, "%s.%d.", AliQA::GetQADataFileName(), runIndex-1) ;
+ sprintf(pattern, "%s.%d.", AliQA::GetQADataFileName(), run[irun]) ;
TString tmp(file[ifile]) ;
- if (tmp.Contains(pattern))
+ if (tmp.Contains(pattern)) {
merger.AddFile(tmp) ;
+ }
}
merger.Merge() ;
}
}
//_____________________________________________________________________________
-void AliQADataMakerSteer::Reset()
+void AliQADataMakerSteer::Reset(const Bool_t sameCycle)
{
// Reset the default data members
for (UInt_t iDet = 0; iDet < fgkNDetectors; iDet++) {
if (IsSelected(AliQA::GetDetName(iDet))) {
fLoader[iDet] = NULL;
if (fQADataMaker[iDet]) {
- (fQADataMaker[iDet])->Reset() ;
+ (fQADataMaker[iDet])->Reset(sameCycle) ;
//delete fQADataMaker[iDet] ;
//fQADataMaker[iDet] = NULL ;
}
fRawReader = NULL ;
}
- fCycleSame = kFALSE ;
+ fCycleSame = sameCycle ;
fESD = NULL ;
fESDTree = NULL ;
fFirst = kTRUE ;
fRawReaderDelete = kFALSE ;
fCycleSame = kTRUE ;
fDetectors = detectors ;
-
+ fRunNumber = fRawReader->GetRunNumber() ;
// Initialize all QA data makers for all detectors
for (UInt_t iDet = 0; iDet < fgkNDetectors ; iDet++) {
if (IsSelected(AliQA::GetDetName(iDet))) {
- AliQADataMaker * qadm = GetQADataMaker(iDet) ;
+ AliQADataMaker * qadm = GetQADataMaker(iDet, "rec") ;
if (!qadm) {
AliWarning(Form("AliQADataMaker not found for %s", AliQA::GetDetName(iDet))) ;
} else {
}
fFirst = kFALSE ;
- return DoIt(AliQA::kRAWS) ;
+ return DoIt(AliQA::kRAWS, "rec") ;
+}
+
+//_____________________________________________________________________________
+TString AliQADataMakerSteer::Run(const char * detectors, const char * fileName)
+{
+ //Runs all the QA data Maker for Raws only
+ //fCycleSame = kTRUE ;
+ fDetectors = detectors ;
+ fDetectorsW = detectors ;
+
+
+ if ( !Init(AliQA::kRAWS, "rec", fileName) )
+ return kFALSE ;
+
+ // Initialize all QA data makers for all detectors
+ //for (UInt_t iDet = 0; iDet < fgkNDetectors ; iDet++) {
+// if (IsSelected(AliQA::GetDetName(iDet))) {
+// AliQADataMaker * qadm = GetQADataMaker(iDet, "rec") ;
+// if (!qadm) {
+// AliWarning(Form("AliQADataMaker not found for %s", AliQA::GetDetName(iDet))) ;
+// } else {
+// AliInfo(Form("Data Maker found for %s", qadm->GetName())) ;
+// qadm->Init(AliQA::kRAWS, fRunNumber, GetQACycles(iDet)) ;
+// qadm->StartOfCycle(AliQA::kRAWS, fCycleSame) ;
+// }
+// }
+// }
+ fFirst = kFALSE ;
+ DoIt(AliQA::kRAWS, "rec") ;
+ return fDetectorsW ;
}
//_____________________________________________________________________________
Bool_t rv = kFALSE ;
fDetectors = detectors ;
-
- if ( !Init(taskIndex, fileName) )
+
+ char * mode ;
+ if ( (taskIndex == AliQA::kHITS) || (taskIndex == AliQA::kSDIGITS) || (taskIndex == AliQA::kDIGITS) )
+ mode = "sim" ;
+ else if ( (taskIndex == AliQA::kRAWS) || (taskIndex == AliQA::kRECPOINTS) || (taskIndex == AliQA::kESDS) )
+ mode = "rec" ;
+ else {
+ AliError(Form("%s not implemented", AliQA::GetTaskName(taskIndex).Data())) ;
+ return rv ;
+ }
+
+ if ( !Init(taskIndex, mode, fileName) )
return kFALSE ;
- rv = DoIt(taskIndex) ;
+ rv = DoIt(taskIndex, mode) ;
return rv ;
man->SetDefaultStorage(AliQA::GetQARefDefaultStorage()) ;
man->SetSpecificStorage(Form("%s/*", AliQA::GetQAOCDBDirName()), AliQA::GetQARefStorage()) ;
}
+ if(man->GetRun() < 0)
+ man->SetRun(runNumber);
+
for ( Int_t detIndex = 0 ; detIndex < AliQA::kNDET ; detIndex++) {
TDirectory * detDir = inputFile->GetDirectory(AliQA::GetDetName(detIndex)) ;
if ( detDir ) {
}
return rv ;
}
+