3636
3737#include " ALICE3/Core/DelphesO2TrackSmearer.h"
3838
39+ #include " ALICE3/Core/GeometryContainer.h"
40+
3941#include < CommonConstants/PhysicsConstants.h>
4042#include < Framework/Logger.h>
4143
@@ -61,50 +63,21 @@ bool TrackSmearer::loadTable(int pdg, const char* filename, bool forceReload)
6163 LOG (info) << " --- LUT table for PDG " << pdg << " has been already loaded with index " << ipdg << std::endl;
6264 return false ;
6365 }
64- if (strncmp (filename, " ccdb:" , 5 ) == 0 ) { // Check if filename starts with "ccdb:"
65- LOG (info) << " --- LUT file source identified as CCDB." ;
66- std::string path = std::string (filename).substr (5 ); // Remove "ccdb:" prefix
67- const std::string outPath = " /tmp/LUTs/" ;
68- filename = Form (" %s/%s/snapshot.root" , outPath.c_str (), path.c_str ());
69- LOG (info) << " --- Local LUT filename will be: " << filename;
70- std::ifstream checkFile (filename); // Check if file already exists
71- if (!checkFile.is_open ()) { // File does not exist, retrieve from CCDB
72- LOG (info) << " --- CCDB source detected for PDG " << pdg << " : " << path;
73- if (!mCcdbManager ) {
74- LOG (fatal) << " --- CCDB manager not set. Please set it before loading LUT from CCDB." ;
75- }
76- std::map<std::string, std::string> metadata;
77- mCcdbManager ->getCCDBAccessor ().retrieveBlob (path, outPath, metadata, 1 );
78- // Add CCDB handling logic here if needed
79- LOG (info) << " --- Now retrieving LUT file from CCDB to: " << filename;
80- if (mCleanupDownloadedFile ) { // Clean up the downloaded file if needed
81- bool status = loadTable (pdg, filename, forceReload);
82- if (std::remove (filename) != 0 ) {
83- LOG (warn) << " --- Could not remove temporary LUT file: " << filename;
84- } else {
85- LOG (info) << " --- Removed temporary LUT file: " << filename;
86- }
87- return status;
88- }
89- } else { // File exists, proceed to load
90- LOG (info) << " --- LUT file already exists: " << filename << " . Skipping download." ;
91- checkFile.close ();
92- }
93- return loadTable (pdg, filename, forceReload);
94- }
9566
67+ const std::string localFilename = o2::fastsim::GeometryEntry::accessFile (filename, " ./.ALICE3/LUTs/" , mCcdbManager , 10 );
9668 mLUTHeader [ipdg] = new lutHeader_t;
9769
98- std::ifstream lutFile (filename , std::ifstream::binary);
70+ std::ifstream lutFile (localFilename , std::ifstream::binary);
9971 if (!lutFile.is_open ()) {
100- LOG (info) << " --- cannot open covariance matrix file for PDG " << pdg << " : " << filename << std::endl;
72+ LOG (info) << " --- cannot open covariance matrix file for PDG " << pdg << " : " << localFilename << std::endl;
10173 delete mLUTHeader [ipdg];
10274 mLUTHeader [ipdg] = nullptr ;
10375 return false ;
10476 }
10577 lutFile.read (reinterpret_cast <char *>(mLUTHeader [ipdg]), sizeof (lutHeader_t));
10678 if (lutFile.gcount () != sizeof (lutHeader_t)) {
10779 LOG (info) << " --- troubles reading covariance matrix header for PDG " << pdg << " : " << filename << std::endl;
80+ LOG (info) << " --- expected/detected " << sizeof (lutHeader_t) << " /" << lutFile.gcount () << std::endl;
10881 delete mLUTHeader [ipdg];
10982 mLUTHeader [ipdg] = nullptr ;
11083 return false ;
@@ -147,7 +120,8 @@ bool TrackSmearer::loadTable(int pdg, const char* filename, bool forceReload)
147120 mLUTEntry [ipdg][inch][irad][ieta][ipt] = new lutEntry_t;
148121 lutFile.read (reinterpret_cast <char *>(mLUTEntry [ipdg][inch][irad][ieta][ipt]), sizeof (lutEntry_t));
149122 if (lutFile.gcount () != sizeof (lutEntry_t)) {
150- LOG (info) << " --- troubles reading covariance matrix entry for PDG " << pdg << " : " << filename << std::endl;
123+ LOG (info) << " --- troubles reading covariance matrix entry for PDG " << pdg << " : " << localFilename << std::endl;
124+ LOG (info) << " --- expected/detected " << sizeof (lutHeader_t) << " /" << lutFile.gcount () << std::endl;
151125 return false ;
152126 }
153127 }
0 commit comments