Fix in the CheckCovariance to not rescale properly the correlation terms
[u/mrichter/AliRoot.git] / PWGPP / AliTaskCDBconnect.cxx
CommitLineData
f902e6f2 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16#include "AliTaskCDBconnect.h"
17
18#include <TChain.h>
19#include <TFile.h>
20#include <TGeoGlobalMagField.h>
125ba988 21#include "TGeoManager.h"
f902e6f2 22
23#include "AliAnalysisManager.h"
24#include "AliGeomManager.h"
25#include "AliCDBManager.h"
26#include "AliGRPManager.h"
f37b73fe 27#include "AliVEvent.h"
28#include "AliInputEventHandler.h"
f902e6f2 29#include "AliLog.h"
30
31ClassImp(AliTaskCDBconnect)
32
33//______________________________________________________________________________
34AliTaskCDBconnect::AliTaskCDBconnect():
35 AliAnalysisTask(),
36 fRun(0),
f902e6f2 37 fGRPManager(NULL)
38{
39// Dummy constructor
40}
41
42//______________________________________________________________________________
2b30638c 43AliTaskCDBconnect::AliTaskCDBconnect(const char* name, const char *storage, Int_t run)
44 :AliAnalysisTask(name, "ESD analysis tender car"),
45 fRun(run),
f902e6f2 46 fGRPManager(NULL)
47{
48// Default constructor
49 AliCDBManager *cdb = AliCDBManager::Instance();
2b30638c 50 cdb->SetDefaultStorage(storage);
51 cdb->SetRun(run);
f902e6f2 52 DefineInput (0, TChain::Class());
f37b73fe 53 if (run>0) InitGRP();
f902e6f2 54}
55
56//______________________________________________________________________________
57AliTaskCDBconnect::~AliTaskCDBconnect()
58{
f37b73fe 59 // Destructor
2b30638c 60 delete fGRPManager;
f902e6f2 61}
62
63//______________________________________________________________________________
f902e6f2 64void AliTaskCDBconnect::InitGRP()
65{
66// Initialize geometry and mag. field
f37b73fe 67 if (!fGRPManager) fGRPManager = new AliGRPManager();
68 AliInfo("AliCDBconnect: #### Loading GRP to init B-field...");
69 if(!fGRPManager->ReadGRPEntry()) AliFatal("Cannot get GRP entry");
70 if(!fGRPManager->SetMagField()) AliFatal("Problem with magnetic field setup");
71 //
72 // geometry
73 if (!gGeoManager) {
74 AliInfo("AliCDBconnect: #### Loading geometry...");
75 AliGeomManager::LoadGeometry("geometry.root");
d67ba96a 76 if(!AliGeomManager::ApplyAlignObjsFromCDB("GRP ITS TPC TRD")) AliWarning("Problem with align objects");
f902e6f2 77 }
78}
79
80//______________________________________________________________________________
81void AliTaskCDBconnect::CreateOutputObjects()
82{
f37b73fe 83 // Init CDB locally if run number is defined.
84 //
85 // try to init before the analysis set
2251e21b 86 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
87 if (!mgr) AliFatal("No analysis manager");
f37b73fe 88 if ( fRun>0 && mgr->IsProofMode() ) {
89 // in the proof mode the initialization done in the constructor is not available
90 InitGRP();
2251e21b 91 }
f37b73fe 92 else {
93 AliInfo("Run number is not available at this stage, InitGRP will be called in the execution loop");
b121056d 94 }
f37b73fe 95 //
f902e6f2 96}
97
98//______________________________________________________________________________
99void AliTaskCDBconnect::Exec(Option_t* /*option*/)
100{
101//
102// Execute all supplied analysis of one event. Notify run change via RunChanged().
f37b73fe 103 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
104 if (!mgr) AliFatal("No analysis manager");
105 AliInputEventHandler* inp = (AliInputEventHandler*)mgr->GetInputEventHandler();
106 if (!inp) AliFatal("No input event handler connected");
107 //
108 AliVEvent* ev = inp->GetEvent();
109 if (!ev) AliFatal("No event returned");
110 int run = ev->GetRunNumber();
f902e6f2 111 // Intercept when the run number changed
f37b73fe 112 if (fRun != run) {
113 fRun = run;
114 AliCDBManager *cdb = AliCDBManager::Instance();
115 cdb->SetRun(run);
116 InitGRP();
f902e6f2 117 }
f902e6f2 118}