#include "AliTaskCDBconnect.h"
#include <TChain.h>
#include <TFile.h>
#include <TGeoGlobalMagField.h>
#include "TGeoManager.h"
#include "AliAnalysisManager.h"
#include "AliGeomManager.h"
#include "AliCDBManager.h"
#include "AliGRPManager.h"
#include "AliVEvent.h"
#include "AliInputEventHandler.h"
#include "AliLog.h"
ClassImp(AliTaskCDBconnect)
AliTaskCDBconnect::AliTaskCDBconnect():
AliAnalysisTask(),
fRun(0),
fGRPManager(NULL)
{
}
AliTaskCDBconnect::AliTaskCDBconnect(const char* name, const char *storage, Int_t run)
:AliAnalysisTask(name, "ESD analysis tender car"),
fRun(run),
fGRPManager(NULL)
{
AliCDBManager *cdb = AliCDBManager::Instance();
cdb->SetDefaultStorage(storage);
DefineInput (0, TChain::Class());
if (run>0) InitGRP();
}
AliTaskCDBconnect::~AliTaskCDBconnect()
{
delete fGRPManager;
}
void AliTaskCDBconnect::InitGRP()
{
AliCDBManager *cdb = AliCDBManager::Instance();
if (!cdb->IsDefaultStorageSet()) cdb->SetDefaultStorage("raw://");
cdb->SetRun(fRun);
if (!fGRPManager) fGRPManager = new AliGRPManager();
AliInfo("AliCDBconnect: #### Loading GRP to init B-field...");
if(!fGRPManager->ReadGRPEntry()) AliFatal("Cannot get GRP entry");
if(!fGRPManager->SetMagField()) AliFatal("Problem with magnetic field setup");
if (!gGeoManager) {
AliInfo("AliCDBconnect: #### Loading geometry...");
AliGeomManager::LoadGeometry("geometry.root");
if(!AliGeomManager::ApplyAlignObjsFromCDB("GRP ITS TPC TRD")) AliWarning("Problem with align objects");
}
}
void AliTaskCDBconnect::CreateOutputObjects()
{
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if (!mgr) AliFatal("No analysis manager");
if ( fRun>0 && !fGRPManager) {
InitGRP();
}
else {
AliInfo("Run number is not available at this stage, InitGRP will be called in the execution loop");
}
}
void AliTaskCDBconnect::Exec(Option_t* )
{
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if (!mgr) AliFatal("No analysis manager");
AliInputEventHandler* inp = (AliInputEventHandler*)mgr->GetInputEventHandler();
if (!inp) AliFatal("No input event handler connected");
AliVEvent* ev = inp->GetEvent();
if (!ev) AliFatal("No event returned");
int run = ev->GetRunNumber();
if (fRun != run) {
fRun = run;
InitGRP();
}
}
void AliTaskCDBconnect::SetSpecificStorage(const char* calibType, const char* dbString)
{
AliCDBManager *cdb = AliCDBManager::Instance();
cdb->SetSpecificStorage(calibType,dbString);
}
AliTaskCDBconnect.cxx:100 AliTaskCDBconnect.cxx:101 AliTaskCDBconnect.cxx:102 AliTaskCDBconnect.cxx:103 AliTaskCDBconnect.cxx:104 AliTaskCDBconnect.cxx:105 AliTaskCDBconnect.cxx:106 AliTaskCDBconnect.cxx:107 AliTaskCDBconnect.cxx:108 AliTaskCDBconnect.cxx:109 AliTaskCDBconnect.cxx:110 AliTaskCDBconnect.cxx:111 AliTaskCDBconnect.cxx:112 AliTaskCDBconnect.cxx:113 AliTaskCDBconnect.cxx:114 AliTaskCDBconnect.cxx:115 AliTaskCDBconnect.cxx:116 AliTaskCDBconnect.cxx:117 AliTaskCDBconnect.cxx:118 AliTaskCDBconnect.cxx:119 AliTaskCDBconnect.cxx:120 AliTaskCDBconnect.cxx:121 AliTaskCDBconnect.cxx:122 AliTaskCDBconnect.cxx:123 AliTaskCDBconnect.cxx:124 AliTaskCDBconnect.cxx:125