Skip to content

Commit 7d37a20

Browse files
authored
Merge f82d575 into sapling-pr-archive-ktf
2 parents b3ad5bc + f82d575 commit 7d37a20

File tree

7 files changed

+210
-112
lines changed

7 files changed

+210
-112
lines changed

Detectors/MUON/MCH/Align/src/AlignmentSpec.cxx

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -159,9 +159,6 @@ class AlignmentTask
159159
}
160160

161161
doReAlign = ic.options().get<bool>("do-realign");
162-
if (doReAlign) {
163-
LOG(info) << "Re-alignment mode";
164-
}
165162

166163
if (mCCDBRequest) {
167164
LOG(info) << "Loading magnetic field and reference geometry from CCDB";
@@ -181,9 +178,9 @@ class AlignmentTask
181178
LOG(fatal) << "No GRP file";
182179
}
183180

184-
auto geoIdealFile = ic.options().get<string>("geo-file-ideal");
185-
if (std::filesystem::exists(geoIdealFile)) {
186-
base::GeometryManager::loadGeometry(geoIdealFile.c_str());
181+
IdealGeoFileName = ic.options().get<string>("geo-file-ideal");
182+
if (std::filesystem::exists(IdealGeoFileName)) {
183+
base::GeometryManager::loadGeometry(IdealGeoFileName.c_str());
187184
transformation = geo::transformationFromTGeoManager(*gGeoManager);
188185
for (int i = 0; i < 156; i++) {
189186
int iDEN = GetDetElemId(i);
@@ -193,9 +190,9 @@ class AlignmentTask
193190
LOG(fatal) << "No ideal geometry";
194191
}
195192

196-
auto geoRefFile = ic.options().get<string>("geo-file-ref");
197-
if (std::filesystem::exists(geoRefFile)) {
198-
base::GeometryManager::loadGeometry(geoRefFile.c_str());
193+
RefGeoFileName = ic.options().get<string>("geo-file-ref");
194+
if (std::filesystem::exists(RefGeoFileName)) {
195+
base::GeometryManager::loadGeometry(RefGeoFileName.c_str());
199196
transformation = geo::transformationFromTGeoManager(*gGeoManager);
200197
for (int i = 0; i < 156; i++) {
201198
int iDEN = GetDetElemId(i);
@@ -204,6 +201,22 @@ class AlignmentTask
204201
} else {
205202
LOG(fatal) << "No reference geometry";
206203
}
204+
205+
if (doReAlign) {
206+
LOG(info) << "Re-alignment mode";
207+
LOG(info) << "Loading re-alignment geometry";
208+
NewGeoFileName = ic.options().get<string>("geo-file-new");
209+
if (std::filesystem::exists(NewGeoFileName)) {
210+
base::GeometryManager::loadGeometry(NewGeoFileName.c_str());
211+
transformation = geo::transformationFromTGeoManager(*gGeoManager);
212+
for (int i = 0; i < 156; i++) {
213+
int iDEN = GetDetElemId(i);
214+
transformNew[iDEN] = transformation(iDEN);
215+
}
216+
} else {
217+
LOG(fatal) << "No re-alignment geometry";
218+
}
219+
}
207220
}
208221

209222
auto doEvaluation = ic.options().get<bool>("do-evaluation");
@@ -387,21 +400,6 @@ class AlignmentTask
387400
}
388401
}
389402

390-
// Load new geometry if we need to do re-align
391-
if (doReAlign) {
392-
if (NewGeoFileName != "") {
393-
LOG(info) << "Loading re-alignment geometry";
394-
base::GeometryManager::loadGeometry(NewGeoFileName.c_str());
395-
transformation = geo::transformationFromTGeoManager(*gGeoManager);
396-
for (int i = 0; i < 156; i++) {
397-
int iDEN = GetDetElemId(i);
398-
transformNew[iDEN] = transformation(iDEN);
399-
}
400-
} else {
401-
LOG(fatal) << "No re-alignment geometry";
402-
}
403-
}
404-
405403
if (!readFromRec) {
406404
// Loading input data
407405
LOG(info) << "Loading MCH tracks";
@@ -875,6 +873,7 @@ class AlignmentTask
875873
const string mchFileName{"mchtracks.root"};
876874
const string muonFileName{"muontracks.root"};
877875
string outFileName{"Alignment"};
876+
string IdealGeoFileName{""};
878877
string RefGeoFileName{""};
879878
string NewGeoFileName{""};
880879
bool doAlign{false};
@@ -918,6 +917,7 @@ o2::framework::DataProcessorSpec getAlignmentSpec(bool disableCCDB)
918917
outputSpecs,
919918
AlgorithmSpec{o2::framework::adaptFromTask<AlignmentTask>(ccdbRequest)},
920919
Options{{"geo-file-ref", VariantType::String, o2::base::NameConf::getAlignedGeomFileName(), {"Name of the reference geometry file"}},
920+
{"geo-file-new", VariantType::String, "", {"Name of the new geometry file"}},
921921
{"geo-file-ideal", VariantType::String, o2::base::NameConf::getGeomFileName(), {"Name of the ideal geometry file"}},
922922
{"grp-file", VariantType::String, o2::base::NameConf::getGRPFileName(), {"Name of the grp file"}},
923923
{"do-align", VariantType::Bool, false, {"Switch for alignment, otherwise only residuals will be stored"}},

Framework/AnalysisSupport/src/AODJAlienReaderHelpers.cxx

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@
1010
// or submit itself to any jurisdiction.
1111

1212
#include "AODJAlienReaderHelpers.h"
13+
#include <memory>
1314
#include "Framework/TableTreeHelpers.h"
1415
#include "Framework/AnalysisHelpers.h"
1516
#include "Framework/DataProcessingStats.h"
1617
#include "Framework/RootTableBuilderHelpers.h"
18+
#include "Framework/RootArrowFilesystem.h"
1719
#include "Framework/AlgorithmSpec.h"
1820
#include "Framework/ConfigParamRegistry.h"
1921
#include "Framework/ControlService.h"
@@ -41,6 +43,8 @@
4143
#include <arrow/io/interfaces.h>
4244
#include <arrow/table.h>
4345
#include <arrow/util/key_value_metadata.h>
46+
#include <arrow/dataset/dataset.h>
47+
#include <arrow/dataset/file_base.h>
4448

4549
using namespace o2;
4650
using namespace o2::aod;
@@ -272,11 +276,13 @@ AlgorithmSpec AODJAlienReaderHelpers::rootFileReaderCallback(ConfigContext const
272276
// Origin file name for derived output map
273277
auto o2 = Output(TFFileNameHeader);
274278
auto fileAndFolder = didir->getFileFolder(dh, fcnt, ntf);
275-
std::string currentFilename(fileAndFolder.file->GetName());
276-
if (strcmp(fileAndFolder.file->GetEndpointUrl()->GetProtocol(), "file") == 0 && fileAndFolder.file->GetEndpointUrl()->GetFile()[0] != '/') {
279+
auto rootFS = std::dynamic_pointer_cast<TFileFileSystem>(fileAndFolder.filesystem());
280+
auto* f = dynamic_cast<TFile*>(rootFS->GetFile());
281+
std::string currentFilename(f->GetFile()->GetName());
282+
if (strcmp(f->GetEndpointUrl()->GetProtocol(), "file") == 0 && f->GetEndpointUrl()->GetFile()[0] != '/') {
277283
// This is not an absolute local path. Make it absolute.
278284
static std::string pwd = gSystem->pwd() + std::string("/");
279-
currentFilename = pwd + std::string(fileAndFolder.file->GetName());
285+
currentFilename = pwd + std::string(f->GetName());
280286
}
281287
outputs.make<std::string>(o2) = currentFilename;
282288
}
@@ -312,7 +318,9 @@ AlgorithmSpec AODJAlienReaderHelpers::rootFileReaderCallback(ConfigContext const
312318
auto concrete = DataSpecUtils::asConcreteDataMatcher(firstRoute.matcher);
313319
auto dh = header::DataHeader(concrete.description, concrete.origin, concrete.subSpec);
314320
auto fileAndFolder = didir->getFileFolder(dh, fcnt, ntf);
315-
if (!fileAndFolder.file) {
321+
322+
// In case the filesource is empty, move to the next one.
323+
if (fileAndFolder.path().empty()) {
316324
fcnt += 1;
317325
ntf = 0;
318326
if (didir->atEnd(fcnt)) {

0 commit comments

Comments
 (0)