X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWGPP%2FAliTaskCDBconnect.cxx;h=9969404d3ce1a851d91432641e98d646804123a4;hb=b8873004a24808054527d8a6d28ea2156fb4d43d;hp=e9ecb47863f714d46e3a3688e230689ae0653aee;hpb=2b30638cdb95243e7d9493f91542927795fede0a;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWGPP/AliTaskCDBconnect.cxx b/PWGPP/AliTaskCDBconnect.cxx index e9ecb47863f..9969404d3ce 100644 --- a/PWGPP/AliTaskCDBconnect.cxx +++ b/PWGPP/AliTaskCDBconnect.cxx @@ -24,8 +24,8 @@ #include "AliGeomManager.h" #include "AliCDBManager.h" #include "AliGRPManager.h" -#include "AliESDEvent.h" -#include "AliESDInputHandler.h" +#include "AliVEvent.h" +#include "AliInputEventHandler.h" #include "AliLog.h" ClassImp(AliTaskCDBconnect) @@ -34,9 +34,6 @@ ClassImp(AliTaskCDBconnect) AliTaskCDBconnect::AliTaskCDBconnect(): AliAnalysisTask(), fRun(0), - fRunChanged(kFALSE), - fESDhandler(NULL), - fESD(NULL), fGRPManager(NULL) { // Dummy constructor @@ -46,114 +43,58 @@ AliTaskCDBconnect::AliTaskCDBconnect(): AliTaskCDBconnect::AliTaskCDBconnect(const char* name, const char *storage, Int_t run) :AliAnalysisTask(name, "ESD analysis tender car"), fRun(run), - fRunChanged(kFALSE), - fESDhandler(NULL), - fESD(NULL), fGRPManager(NULL) { // Default constructor AliCDBManager *cdb = AliCDBManager::Instance(); cdb->SetDefaultStorage(storage); - cdb->SetRun(run); DefineInput (0, TChain::Class()); + if (run>0) InitGRP(); } //______________________________________________________________________________ AliTaskCDBconnect::~AliTaskCDBconnect() { -// Destructor + // Destructor delete fGRPManager; } -//______________________________________________________________________________ -void AliTaskCDBconnect::LocalInit() -{ -// Init CDB locally if run number is defined. -} - -//______________________________________________________________________________ -void AliTaskCDBconnect::ConnectInputData(Option_t* /*option*/) -{ -// Connect the input data, create CDB manager. -} - //______________________________________________________________________________ void AliTaskCDBconnect::InitGRP() { -// Initialize geometry and mag. field - if (!fGRPManager) { - // magnetic field - if (!TGeoGlobalMagField::Instance()->GetField()) { - printf("AliCDBconnect: #### Loading field map...\n"); - fGRPManager = new AliGRPManager(); - if(!fGRPManager->ReadGRPEntry()) { - AliError("Cannot get GRP entry"); - } - if( !fGRPManager->SetMagField() ) { - AliError("Problem with magnetic field setup"); - } - } - - // geometry - if (!gGeoManager) { - printf("AliCDBconnect: #### Loading geometry...\n"); - AliGeomManager::LoadGeometry("geometry.root"); - if( !AliGeomManager::ApplyAlignObjsFromCDB("GRP ITS TPC TRD") ) { - AliError("Problem with align objects"); - } - } + // Initialize geometry and mag. field + 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"); + // + // geometry + 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() { -// Init CDB locally if run number is defined. + // Init CDB locally if run number is defined. + // + // try to init before the analysis set AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); if (!mgr) AliFatal("No analysis manager"); - fESDhandler = dynamic_cast(mgr->GetInputEventHandler()); - - if (!fESDhandler) { - AliFatal("No ESD input event handler connected"); - return; - } - // Try to get event number before the first event is read (this has precedence - // over existing fRun) - Int_t run = mgr->GetRunFromPath(); - if (!run && !fRun) { - AliError("AliTaskCDBconnect: Run not set - no CDB connection"); - return; + if ( fRun>0 && mgr->IsProofMode() ) { + // in the proof mode the initialization done in the constructor is not available + InitGRP(); } - // Create CDB manager - AliCDBManager *cdb = AliCDBManager::Instance(); - // If CDB is already locked, return - if (cdb->GetLock()) return; - // SetDefault storage. Specific storages must be set by TaskCDBconnectSupply::Init() - // cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); -// if (!cdb->GetRaw()) { -// cdb->SetDefaultStorage("raw://"); -// } - if (run && (run != fRun)) { - fRunChanged = kTRUE; - fRun = run; - } else { - fRunChanged = kFALSE; + else { + AliInfo("Run number is not available at this stage, InitGRP will be called in the execution loop"); } - // Set run - if (fRunChanged || !fGRPManager) { - printf("AliCDBconnect: #### Setting run to: %d\n", fRun); - cdb->SetRun(fRun); - // Initialize GRP manager only once - if (fRun) InitGRP(); - } -} - -//______________________________________________________________________________ -Bool_t AliTaskCDBconnect::Notify() -{ -// Init CDB locally if run number is defined. - CreateOutputObjects(); - return kTRUE; + // } //______________________________________________________________________________ @@ -161,18 +102,24 @@ void AliTaskCDBconnect::Exec(Option_t* /*option*/) { // // Execute all supplied analysis of one event. Notify run change via RunChanged(). - fESD = fESDhandler->GetEvent(); + 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(); // Intercept when the run number changed - if (fRun != fESD->GetRunNumber()) { - fRunChanged = kTRUE; - fRun = fESD->GetRunNumber(); - CreateOutputObjects(); + if (fRun != run) { + fRun = run; + InitGRP(); } } //______________________________________________________________________________ -void AliTaskCDBconnect::Terminate(Option_t *) +void AliTaskCDBconnect::SetSpecificStorage(const char* calibType, const char* dbString) { -// Initialize CDB also in Terminate -// CreateOutputObjects(); -} + AliCDBManager *cdb = AliCDBManager::Instance(); + cdb->SetSpecificStorage(calibType,dbString); + }