ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

#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)
{
// Dummy constructor
}

//______________________________________________________________________________
AliTaskCDBconnect::AliTaskCDBconnect(const char* name, const char *storage, Int_t run)
          :AliAnalysisTask(name, "ESD analysis tender car"),
           fRun(run),
           fGRPManager(NULL)
{
// Default constructor
  AliCDBManager *cdb = AliCDBManager::Instance();
  cdb->SetDefaultStorage(storage);
  DefineInput (0, TChain::Class());
  if (run>0) InitGRP();
}

//______________________________________________________________________________
AliTaskCDBconnect::~AliTaskCDBconnect()
{
  // Destructor
  delete fGRPManager;
}  

//______________________________________________________________________________
void AliTaskCDBconnect::InitGRP()
{
  // 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.
  //
  //  try to init before the analysis set
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) AliFatal("No analysis manager");
  if ( fRun>0 && !fGRPManager) {
    // in the proof or plugin mode the initialization done in the constructor is not available
    InitGRP();
  }
  else {
    AliInfo("Run number is not available at this stage, InitGRP will be called in the execution loop");
  }
  //
}

//______________________________________________________________________________
void AliTaskCDBconnect::Exec(Option_t* /*option*/)
{
//
// Execute all supplied analysis of one event. Notify run change via RunChanged().
  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 != run) {
    fRun = run;
    InitGRP();
  }
}

//______________________________________________________________________________
void AliTaskCDBconnect::SetSpecificStorage(const char* calibType, const char* dbString)
{
    AliCDBManager *cdb = AliCDBManager::Instance();
    cdb->SetSpecificStorage(calibType,dbString);
 }
 AliTaskCDBconnect.cxx:1
 AliTaskCDBconnect.cxx:2
 AliTaskCDBconnect.cxx:3
 AliTaskCDBconnect.cxx:4
 AliTaskCDBconnect.cxx:5
 AliTaskCDBconnect.cxx:6
 AliTaskCDBconnect.cxx:7
 AliTaskCDBconnect.cxx:8
 AliTaskCDBconnect.cxx:9
 AliTaskCDBconnect.cxx:10
 AliTaskCDBconnect.cxx:11
 AliTaskCDBconnect.cxx:12
 AliTaskCDBconnect.cxx:13
 AliTaskCDBconnect.cxx:14
 AliTaskCDBconnect.cxx:15
 AliTaskCDBconnect.cxx:16
 AliTaskCDBconnect.cxx:17
 AliTaskCDBconnect.cxx:18
 AliTaskCDBconnect.cxx:19
 AliTaskCDBconnect.cxx:20
 AliTaskCDBconnect.cxx:21
 AliTaskCDBconnect.cxx:22
 AliTaskCDBconnect.cxx:23
 AliTaskCDBconnect.cxx:24
 AliTaskCDBconnect.cxx:25
 AliTaskCDBconnect.cxx:26
 AliTaskCDBconnect.cxx:27
 AliTaskCDBconnect.cxx:28
 AliTaskCDBconnect.cxx:29
 AliTaskCDBconnect.cxx:30
 AliTaskCDBconnect.cxx:31
 AliTaskCDBconnect.cxx:32
 AliTaskCDBconnect.cxx:33
 AliTaskCDBconnect.cxx:34
 AliTaskCDBconnect.cxx:35
 AliTaskCDBconnect.cxx:36
 AliTaskCDBconnect.cxx:37
 AliTaskCDBconnect.cxx:38
 AliTaskCDBconnect.cxx:39
 AliTaskCDBconnect.cxx:40
 AliTaskCDBconnect.cxx:41
 AliTaskCDBconnect.cxx:42
 AliTaskCDBconnect.cxx:43
 AliTaskCDBconnect.cxx:44
 AliTaskCDBconnect.cxx:45
 AliTaskCDBconnect.cxx:46
 AliTaskCDBconnect.cxx:47
 AliTaskCDBconnect.cxx:48
 AliTaskCDBconnect.cxx:49
 AliTaskCDBconnect.cxx:50
 AliTaskCDBconnect.cxx:51
 AliTaskCDBconnect.cxx:52
 AliTaskCDBconnect.cxx:53
 AliTaskCDBconnect.cxx:54
 AliTaskCDBconnect.cxx:55
 AliTaskCDBconnect.cxx:56
 AliTaskCDBconnect.cxx:57
 AliTaskCDBconnect.cxx:58
 AliTaskCDBconnect.cxx:59
 AliTaskCDBconnect.cxx:60
 AliTaskCDBconnect.cxx:61
 AliTaskCDBconnect.cxx:62
 AliTaskCDBconnect.cxx:63
 AliTaskCDBconnect.cxx:64
 AliTaskCDBconnect.cxx:65
 AliTaskCDBconnect.cxx:66
 AliTaskCDBconnect.cxx:67
 AliTaskCDBconnect.cxx:68
 AliTaskCDBconnect.cxx:69
 AliTaskCDBconnect.cxx:70
 AliTaskCDBconnect.cxx:71
 AliTaskCDBconnect.cxx:72
 AliTaskCDBconnect.cxx:73
 AliTaskCDBconnect.cxx:74
 AliTaskCDBconnect.cxx:75
 AliTaskCDBconnect.cxx:76
 AliTaskCDBconnect.cxx:77
 AliTaskCDBconnect.cxx:78
 AliTaskCDBconnect.cxx:79
 AliTaskCDBconnect.cxx:80
 AliTaskCDBconnect.cxx:81
 AliTaskCDBconnect.cxx:82
 AliTaskCDBconnect.cxx:83
 AliTaskCDBconnect.cxx:84
 AliTaskCDBconnect.cxx:85
 AliTaskCDBconnect.cxx:86
 AliTaskCDBconnect.cxx:87
 AliTaskCDBconnect.cxx:88
 AliTaskCDBconnect.cxx:89
 AliTaskCDBconnect.cxx:90
 AliTaskCDBconnect.cxx:91
 AliTaskCDBconnect.cxx:92
 AliTaskCDBconnect.cxx:93
 AliTaskCDBconnect.cxx:94
 AliTaskCDBconnect.cxx:95
 AliTaskCDBconnect.cxx:96
 AliTaskCDBconnect.cxx:97
 AliTaskCDBconnect.cxx:98
 AliTaskCDBconnect.cxx:99
 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