#include <TArrayF.h>
#include <TFile.h>
+#include <TList.h>
#include <TSystem.h>
#include <TROOT.h>
#include <TPluginManager.h>
#include "AliAODFmdCluster.h"
#include "AliAODTracklets.h"
-#include "AliQADataMaker.h"
+//#include "AliQADataMaker.h"
+#include "AliQA.h"
+#include "AliQADataMakerSteer.h"
#include "AliSysInfo.h" // memory snapshots
fVertexer(NULL),
fDiamondProfile(NULL),
+ fGRPList(NULL),
+
fAlignObjArray(NULL),
fCDBUri(cdbUri),
fRemoteCDBUri(""),
- fSpecCDBUri()
+ fSpecCDBUri(),
+ fRunQA(kTRUE)
+
{
// create reconstruction object with default parameters
fReconstructor[iDet] = NULL;
fLoader[iDet] = NULL;
fTracker[iDet] = NULL;
- fQADataMaker[iDet] = NULL;
- fQACycles[iDet] = 999999;
+// fQADataMaker[iDet] = NULL;
+// fQACycles[iDet] = 999999;
}
AliPID pid;
}
fVertexer(NULL),
fDiamondProfile(NULL),
+ fGRPList(NULL),
+
fAlignObjArray(rec.fAlignObjArray),
fCDBUri(rec.fCDBUri),
fRemoteCDBUri(rec.fRemoteCDBUri),
- fSpecCDBUri()
+ fSpecCDBUri(),
+ fRunQA(kTRUE)
{
// copy constructor
fReconstructor[iDet] = NULL;
fLoader[iDet] = NULL;
fTracker[iDet] = NULL;
- fQADataMaker[iDet] = NULL;
- fQACycles[iDet] = rec.fQACycles[iDet];
+// fQADataMaker[iDet] = NULL;
+// fQACycles[iDet] = rec.fQACycles[iDet];
}
for (Int_t i = 0; i < rec.fSpecCDBUri.GetEntriesFast(); i++) {
if (rec.fSpecCDBUri[i]) fSpecCDBUri.Add(rec.fSpecCDBUri[i]->Clone());
}
+ // Get the GRP CDB entry
+ AliCDBEntry* entryGRP = AliCDBManager::Instance()->Get("GRP/GRP/Data");
+
+ if(entryGRP) {
+ fGRPList = dynamic_cast<TList*> (entryGRP->GetObject());
+ } else {
+ AliError("No GRP entry found in OCDB!");
+ }
+
// Get the diamond profile from OCDB
AliCDBEntry* entry = AliCDBManager::Instance()
->Get("GRP/Calib/MeanVertex");
}
}
- if (!fFillESD.IsNull())
- RunQA(fFillESD.Data(), esd);
+// if (!fFillESD.IsNull())
+// RunQA(fFillESD.Data(), esd);
// fill Event header information from the RawEventHeader
if (fRawReader){FillRawEventHeaderESD(esd);}
}
detStr = fFillESD ;
- // write quality assurance ESDs data (one entry for all events)
- for (Int_t iDet = 0; iDet < fgkNDetectors; iDet++) {
- if (!IsSelected(fgkDetectorName[iDet], detStr))
- continue;
- AliQADataMaker * qadm = GetQADataMaker(iDet);
- if (!qadm) continue;
- qadm->EndOfCycle(AliQA::kRECPOINTS);
- qadm->EndOfCycle(AliQA::kESDS);
- qadm->Finish(AliQA::kRECPOINTS);
- qadm->Finish(AliQA::kESDS) ;
- }
+// // write quality assurance ESDs data (one entry for all events)
+// for (Int_t iDet = 0; iDet < fgkNDetectors; iDet++) {
+// if (!IsSelected(fgkDetectorName[iDet], detStr))
+// continue;
+// AliQADataMaker * qadm = GetQADataMaker(iDet);
+// if (!qadm) continue;
+// qadm->EndOfCycle(AliQA::kRECPOINTS);
+// qadm->EndOfCycle(AliQA::kESDS);
+// qadm->Finish();
+// }
tree->GetUserInfo()->Add(esd);
hlttree->GetUserInfo()->Add(hltesd);
// Create tags for the events in the ESD tree (the ESD tree is always present)
// In case of empty events the tags will contain dummy values
AliESDTagCreator *esdtagCreator = new AliESDTagCreator();
- esdtagCreator->CreateESDTags(fFirstEvent,fLastEvent);
+ esdtagCreator->CreateESDTags(fFirstEvent,fLastEvent,fGRPList);
if (fWriteAOD) {
AliAODTagCreator *aodtagCreator = new AliAODTagCreator();
- aodtagCreator->CreateAODTags(fFirstEvent,fLastEvent);
+ aodtagCreator->CreateAODTags(fFirstEvent,fLastEvent,fGRPList);
}
+ //QA
+ if ( fRunQA ) {
+ AliQADataMakerSteer qas ;
+ qas.Run(AliQA::kRECPOINTS) ;
+ qas.Reset() ;
+ qas.Run(AliQA::kESDS) ;
+ }
return kTRUE;
}
loader->UnloadDigits();
}
- AliQADataMaker * qadm = GetQADataMaker(iDet);
- if (qadm) {
- AliCodeTimerStart(Form("running quality assurance data maker for %s", fgkDetectorName[iDet]));
- AliInfo(Form("running quality assurance data maker for %s", fgkDetectorName[iDet]));
-
- if (qadm->IsCycleDone() ) {
- qadm->EndOfCycle(AliQA::kRECPOINTS) ;
- qadm->EndOfCycle(AliQA::kESDS) ;
- qadm->StartOfCycle(AliQA::kRECPOINTS) ;
- qadm->StartOfCycle(AliQA::kESDS, "same") ;
- }
- qadm->Exec(AliQA::kRECPOINTS, clustersTree) ;
- AliCodeTimerStop(Form("running quality assurance data maker for %s", fgkDetectorName[iDet]));
- }
+// AliQADataMaker * qadm = GetQADataMaker(iDet);
+// if (qadm) {
+// AliCodeTimerStart(Form("running quality assurance data maker for %s", fgkDetectorName[iDet]));
+// AliInfo(Form("running quality assurance data maker for %s", fgkDetectorName[iDet]));
+//
+// if (qadm->IsCycleDone() ) {
+// qadm->EndOfCycle(AliQA::kRECPOINTS) ;
+// qadm->EndOfCycle(AliQA::kESDS) ;
+// qadm->StartOfCycle(AliQA::kRECPOINTS) ;
+// qadm->StartOfCycle(AliQA::kESDS, "same") ;
+// }
+// qadm->Exec(AliQA::kRECPOINTS, clustersTree) ;
+// AliCodeTimerStop(Form("running quality assurance data maker for %s", fgkDetectorName[iDet]));
+// }
loader->WriteRecPoints("OVERWRITE");
loader->UnloadRecPoints();
fLoader[iDet] = NULL;
delete fTracker[iDet];
fTracker[iDet] = NULL;
- delete fQADataMaker[iDet];
- fQADataMaker[iDet] = NULL;
+// delete fQADataMaker[iDet];
+// fQADataMaker[iDet] = NULL;
}
delete fVertexer;
fVertexer = NULL;
delete fDiamondProfile;
fDiamondProfile = NULL;
+ delete fGRPList;
+ fGRPList = NULL;
+
delete fRunLoader;
fRunLoader = NULL;
delete fRawReader;
// Tracks (primary and orphan)
for (Int_t nTrack = 0; nTrack < nTracks; ++nTrack) {
-
if (usedTrack[nTrack]) continue;
aodTree->GetUserInfo()->Add(aod);
- // close ESD file
- esdFile->Close();
-
// write the tree to the specified file
aodFile = aodTree->GetCurrentFile();
aodFile->cd();
//_____________________________________________________________________________
-AliQADataMaker * AliReconstruction::GetQADataMaker(Int_t iDet)
-{
+//AliQADataMaker * AliReconstruction::GetQADataMaker(Int_t iDet)
+//{
// get the quality assurance data maker object and the loader for a detector
-
- if (fQADataMaker[iDet])
- return fQADataMaker[iDet];
-
- // load the QA data maker object
- TPluginManager* pluginManager = gROOT->GetPluginManager();
- TString detName = fgkDetectorName[iDet];
- TString qadmName = "Ali" + detName + "QADataMaker";
- if (gAlice && !gAlice->GetDetector(detName) && (detName != "HLT"))
- return NULL;
-
- AliQADataMaker * qadm = NULL;
- // first check if a plugin is defined for the quality assurance data maker
- TPluginHandler* pluginHandler = pluginManager->FindHandler("AliQADataMaker", detName);
- // if not, add a plugin for it
- 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)) {
- pluginManager->AddHandler("AliQADataMaker", detName,
- qadmName, detName + "qadm", qadmName + "()");
- } else {
- pluginManager->AddHandler("AliQADataMaker", detName,
- qadmName, detName, qadmName + "()");
- }
- pluginHandler = pluginManager->FindHandler("AliQADataMaker", detName);
- }
- if (pluginHandler && (pluginHandler->LoadPlugin() == 0)) {
- qadm = (AliQADataMaker *) pluginHandler->ExecPlugin(0);
- }
- if (qadm) {
- AliInfo(Form("Initializing quality assurance data maker for %s", fgkDetectorName[iDet]));
- qadm->Init(AliQA::kRECPOINTS, AliCDBManager::Instance()->GetRun(), GetQACycles(fgkDetectorName[iDet]));
- qadm->StartOfCycle(AliQA::kRECPOINTS);
- qadm->Init(AliQA::kESDS, AliCDBManager::Instance()->GetRun());
- qadm->StartOfCycle(AliQA::kESDS, "same") ;
- fQADataMaker[iDet] = qadm;
- }
-
- return qadm;
-}
-
+//
+// if (fQADataMaker[iDet])
+// return fQADataMaker[iDet];
+//
+// // load the QA data maker object
+// TPluginManager* pluginManager = gROOT->GetPluginManager();
+// TString detName = fgkDetectorName[iDet];
+// TString qadmName = "Ali" + detName + "QADataMaker";
+// if (gAlice && !gAlice->GetDetector(detName) && (detName != "HLT"))
+// return NULL;
+//
+// AliQADataMaker * qadm = NULL;
+// // first check if a plugin is defined for the quality assurance data maker
+// TPluginHandler* pluginHandler = pluginManager->FindHandler("AliQADataMaker", detName);
+// // if not, add a plugin for it
+// 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)) {
+// pluginManager->AddHandler("AliQADataMaker", detName,
+// qadmName, detName + "qadm", qadmName + "()");
+// } else {
+// pluginManager->AddHandler("AliQADataMaker", detName,
+// qadmName, detName, qadmName + "()");
+// }
+// pluginHandler = pluginManager->FindHandler("AliQADataMaker", detName);
+// }
+// if (pluginHandler && (pluginHandler->LoadPlugin() == 0)) {
+// qadm = (AliQADataMaker *) pluginHandler->ExecPlugin(0);
+// }
+// if (qadm) {
+// AliInfo(Form("Initializing quality assurance data maker for %s", fgkDetectorName[iDet]));
+// qadm->Init(AliQA::kRECPOINTS, AliCDBManager::Instance()->GetRun(), GetQACycles(fgkDetectorName[iDet]));
+// qadm->StartOfCycle(AliQA::kRECPOINTS);
+// qadm->Init(AliQA::kESDS, AliCDBManager::Instance()->GetRun());
+// qadm->StartOfCycle(AliQA::kESDS, "same") ;
+// fQADataMaker[iDet] = qadm;
+// }
+//
+// return qadm;
+//}
+//
//_____________________________________________________________________________
-Bool_t AliReconstruction::RunQA(const char* detectors, AliESDEvent *& esd)
-{
- // run the Quality Assurance data producer
-
- AliCodeTimerAuto("")
- TString detStr = detectors;
- for (Int_t iDet = 0; iDet < fgkNDetectors; iDet++) {
- if (!IsSelected(fgkDetectorName[iDet], detStr))
- continue;
- AliQADataMaker * qadm = GetQADataMaker(iDet);
- if (!qadm)
- 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() ;
-
- AliCodeTimerStop(Form("running quality assurance data maker for %s", fgkDetectorName[iDet]));
- }
- if ((detStr.CompareTo("ALL") != 0) && !detStr.IsNull()) {
- AliError(Form("the following detectors were not found: %s",
- detStr.Data()));
- if (fStopOnError)
- return kFALSE;
- }
-
- return kTRUE;
-
-}
-
+//Bool_t AliReconstruction::RunQA(const char* detectors, AliESDEvent *& esd)
+//{
+// // run the Quality Assurance data producer
+//
+// AliCodeTimerAuto("")
+// TString detStr = detectors;
+// for (Int_t iDet = 0; iDet < fgkNDetectors; iDet++) {
+// if (!IsSelected(fgkDetectorName[iDet], detStr))
+// continue;
+// AliQADataMaker * qadm = GetQADataMaker(iDet);
+// if (!qadm)
+// 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() ;
+//
+// AliCodeTimerStop(Form("running quality assurance data maker for %s", fgkDetectorName[iDet]));
+// }
+// if ((detStr.CompareTo("ALL") != 0) && !detStr.IsNull()) {
+// AliError(Form("the following detectors were not found: %s",
+// detStr.Data()));
+// if (fStopOnError)
+// return kFALSE;
+// }
+//
+// return kTRUE;
+//
+//}
+//
//_____________________________________________________________________________
void AliReconstruction::CheckQA()