16 #include <TClonesArray.h>
17 #include <TGeoGlobalMagField.h>
18 #include <TGeoManager.h>
20 #include "AliAODEvent.h"
21 #include "AliAnalysisManager.h"
22 #include "AliCDBManager.h"
23 #include "AliEMCALGeometry.h"
24 #include "AliESDEvent.h"
25 #include "AliGRPManager.h"
26 #include "AliGeomManager.h"
28 #include "AliOADBContainer.h"
29 #include "AliTender.h"
44 fOcdbPath("uselocal"),
45 fOadbPath("$ALICE_PHYSICS/OADB/EMCAL"),
46 fGeoPath("$ALICE_PHYSICS/OADB/EMCAL"),
47 fObjs("GRP ITS TPC TRD EMCAL"),
64 AliAnalysisTaskSE(name),
65 fOcdbPath(
"uselocal"),
66 fOadbPath(
"$ALICE_PHYSICS/OADB/EMCAL"),
67 fGeoPath(
"$ALICE_PHYSICS/OADB/EMCAL"),
68 fObjs(
"GRP ITS TPC TRD EMCAL"),
74 fBranchNames =
"ESD:AliESDHeader.,AliESDRun.";
92 AliAnalysisTaskSE::ConnectInputData(option);
97 AliCDBManager *man = AliCDBManager::Instance();
98 if (man->IsDefaultStorageSet())
104 AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
108 TObjArray *tasks = am->GetTasks();
112 AliTender *tender = 0;
113 for (Int_t i=0; i<tasks->GetEntries(); ++i) {
114 tender =
dynamic_cast<AliTender*
>(tasks->At(i));
127 Int_t runno = AliAnalysisManager::GetAnalysisManager()->GetRunFromPath();
129 AliWarning(Form(
"Disabling tender, ignore possible message from tender below"));
130 tender->SetDefaultCDBStorage(
"donotuse");
134 AliWarning(Form(
"Intercepting tender for run %d, ignore possible message from tender below", runno));
150 AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
152 AliError(
"Manager zero, returning");
156 am->LoadBranch(
"AliESDRun.");
157 am->LoadBranch(
"AliESDHeader.");
159 Int_t runno = InputEvent()->GetRunNumber();
177 AliEMCALGeometry *geom = AliEMCALGeometry::GetInstanceFromRunNumber(runno);
180 AliFatal(
"Can not create geometry!");
186 if (runno>0 && runno<=139517) {
188 }
else if ((runno > 139517) && (runno <= 170593)) {
190 }
else if ((runno > 170593) && (runno <= 193766)) {
192 }
else if ((runno > 193766) && (runno <= 199161)) {
194 }
else if ( runno > 199161) {
199 AliCDBManager *man = 0;
201 man = AliCDBManager::Instance();
203 AliFatal(Form(
"Did not get pointer to CDB manager"));
205 if (man->IsDefaultStorageSet()) {
206 AliInfo(Form(
"Default OCDB storage already set"));
211 AliInfo(Form(
"Setting up OCDB to point to %s",
fOcdbPath.Data()));
214 TString tmpdir=
gSystem->WorkingDirectory();
215 if (
gSystem->AccessPathName(tmpdir))
231 AliFatal(Form(
"Could not create local directory for OCDB at %s",tmpdir.Data()));
235 TString filename(Form(
"$ALICE_PHYSICS/PWG/EMCAL/data/%d.dat",year));
236 TString cmd(Form(
"cd %s && tar -xf %s",
fLocalOcdb.Data(),filename.Data()));
237 Int_t ret =
gSystem->Exec(cmd);
239 TString locdb(
"local://");
243 AliInfo(Form(
"Setting up local OCDB at %s",locdb.Data()));
244 man->SetDefaultStorage(locdb);
247 AliFatal(Form(
"Could not set up local OCDB at %s",
fLocalOcdb.Data()));
255 if (man->GetRun()!=runno)
257 AliInfo(Form(
"Loading grp data from OCDB for run %d", runno));
258 AliGRPManager GRPManager;
259 GRPManager.ReadGRPEntry();
260 GRPManager.SetMagField();
261 AliInfo(Form(
"Loading geometry from OCDB"));
262 AliGeomManager::LoadGeometry();
264 AliGeomManager::ApplyAlignObjsFromCDB(
fObjs);
268 TGeoManager *geo = AliGeomManager::GetGeometry();
270 TString fname(
gSystem->ExpandPathName(Form(
"%s/geometry_%d.root",
fGeoPath.Data(), year)));
271 if (
gSystem->AccessPathName(fname)==0) {
272 AliInfo(Form(
"Loading geometry from file %s (should be avoided!)", fname.Data()));
273 AliGeomManager::LoadGeometry(fname);
274 geo = AliGeomManager::GetGeometry();
280 AliInfo(Form(
"Locking geometry"));
285 if (!TGeoGlobalMagField::Instance()->GetField()) {
286 InputEvent()->InitMagneticField();
291 AliOADBContainer emcalgeoCont(Form(
"emcal"));
292 emcalgeoCont.InitFromFile(Form(
"%s/EMCALlocal2master.root",
fOadbPath.Data()),
293 Form(
"AliEMCALgeo"));
294 TObjArray *mobj=
dynamic_cast<TObjArray*
>(emcalgeoCont.GetObject(runno,
"EmcalMatrices"));
296 for(Int_t mod=0; mod < (geom->GetEMCGeometry())->GetNumberOfSuperModules(); mod++){
300 geom->SetMisalMatrix((TGeoHMatrix*) mobj->At(mod),mod);
304 AliWarning(Form(
"Set matrix for SM %d from gGeoManager\n",mod));
305 geom->SetMisalMatrix(geom->GetMatrixForSuperModuleFromGeoManager(mod),mod);
309 AliError(Form(
"Matrix for SM %d is not available\n",mod));
325 TString cmd(Form(
"rm -rf %s",
fLocalOcdb.Data()));
Bool_t fIsInit
!=true then already initialized
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
TString fObjs
string of objects for alignment to apply
TString fGeoPath
path to geometry
Declaration of the EMCAL setup task.
TString fOcdbPath
path to ocdb (def=uselocal)
TString fLocalOcdbStor
!storage path to local ocdb
void ConnectInputData(Option_t *option="")
virtual ~AliEmcalSetupTask()
void Terminate(Option_t *option)
Bool_t fNoOCDB
if true then do not mess with OCDB
TString fOadbPath
path to oadb
Simple task setting up connections to databases for the EMCAL train.
void UserExec(Option_t *option)
TString fLocalOcdb
!directory path to local ocdb