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()));
254 TGeoManager *geo(
nullptr);
256 if (man->GetRun()!=runno)
258 AliInfo(Form(
"Loading grp data from OCDB for run %d", runno));
259 AliGRPManager GRPManager;
260 GRPManager.ReadGRPEntry();
261 GRPManager.SetMagField();
262 if(!AliGeomManager::GetGeometry() && man){
263 AliInfo(Form(
"Loading geometry from OCDB"));
264 AliGeomManager::LoadGeometry();
265 geo = AliGeomManager::GetGeometry();
267 AliGeomManager::ApplyAlignObjsFromCDB(
fObjs);
270 AliInfo(Form(
"Locking geometry"));
277 geo = AliGeomManager::GetGeometry();
279 TString fname(
gSystem->ExpandPathName(Form(
"%s/geometry_%d.root",
fGeoPath.Data(), year)));
280 if (
gSystem->AccessPathName(fname)==0) {
281 AliInfo(Form(
"Loading geometry from file %s (should be avoided!)", fname.Data()));
282 AliGeomManager::LoadGeometry(fname);
283 geo = AliGeomManager::GetGeometry();
286 AliInfo(Form(
"Locking geometry"));
294 if (!TGeoGlobalMagField::Instance()->GetField()) {
295 InputEvent()->InitMagneticField();
300 AliOADBContainer emcalgeoCont(Form(
"emcal"));
301 emcalgeoCont.InitFromFile(Form(
"%s/EMCALlocal2master.root",
fOadbPath.Data()),
302 Form(
"AliEMCALgeo"));
303 TObjArray *mobj=
dynamic_cast<TObjArray*
>(emcalgeoCont.GetObject(runno,
"EmcalMatrices"));
305 for(Int_t mod=0; mod < (geom->GetEMCGeometry())->GetNumberOfSuperModules(); mod++){
309 geom->SetMisalMatrix((TGeoHMatrix*) mobj->At(mod),mod);
313 AliWarning(Form(
"Set matrix for SM %d from gGeoManager\n",mod));
314 geom->SetMisalMatrix(geom->GetMatrixForSuperModuleFromGeoManager(mod),mod);
318 AliError(Form(
"Matrix for SM %d is not available\n",mod));
334 TString cmd(Form(
"rm -rf %s",
fLocalOcdb.Data()));
Bool_t fIsInit
!=true then already initialized
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
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
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