Skip to content

Commit 3732d52

Browse files
committed
Merge remote-tracking branch 'upstream/master' into spincorr154
2 parents 558d87b + 1a8b54e commit 3732d52

File tree

71 files changed

+5615
-2044
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+5615
-2044
lines changed

ALICE3/Core/FastTracker.cxx

Lines changed: 44 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,12 @@
1717
#include "TMatrixD.h"
1818
#include "TMatrixDSymEigen.h"
1919
#include "TRandom.h"
20+
#include <TEnv.h>
21+
#include <THashList.h>
22+
#include <TObject.h>
2023

24+
#include <fstream>
25+
#include <map>
2126
#include <string>
2227
#include <vector>
2328

@@ -180,7 +185,7 @@ void FastTracker::AddSiliconALICE3(float scaleX0VD, std::vector<float> pixelReso
180185
AddLayer("B03", 7., 250, x0OT, xrhoOT, resRPhiOT, resZOT, eff, 1);
181186
AddLayer("B04", 9., 250, x0OT, xrhoOT, resRPhiOT, resZOT, eff, 1);
182187
AddLayer("B05", 12., 250, x0OT, xrhoOT, resRPhiOT, resZOT, eff, 1);
183-
AddLayer("iTOF", 19, 250, x0iTOF, xrhoiTOF, resRPhiOT, resZOT, eff, 0);
188+
AddLayer("iTOF", 19, 250, x0iTOF, xrhoiTOF, resRPhiOT, resZOT, 0.0f, 0);
184189
AddLayer("B06", 20., 250, x0OT, xrhoOT, resRPhiOT, resZOT, eff, 1);
185190
AddLayer("B07", 30., 250, x0OT, xrhoOT, resRPhiOT, resZOT, eff, 1);
186191
AddLayer("B08", 45., 250, x0OT, xrhoOT, resRPhiOT, resZOT, eff, 1);
@@ -260,27 +265,47 @@ void FastTracker::AddGenericDetector(std::string filename, o2::ccdb::BasicCCDBMa
260265
return;
261266
}
262267

263-
std::ifstream infile(filename);
264-
if (!infile.is_open()) {
265-
LOG(fatal) << "Could not open detector configuration file: " << filename;
266-
return;
267-
}
268-
269-
std::string line;
270-
while (std::getline(infile, line)) {
271-
if (line.empty() || line[0] == '#')
272-
continue; // skip comments and empty lines
273-
std::istringstream iss(line);
274-
std::string name;
275-
float r, z, x0, xrho, resRPhi, resZ, eff;
276-
int type;
277-
if (!(iss >> name >> r >> z >> x0 >> xrho >> resRPhi >> resZ >> eff >> type)) {
278-
LOG(error) << "Malformed line in detector config: " << line;
268+
TEnv env(filename.c_str());
269+
THashList* table = env.GetTable();
270+
std::vector<std::string> layers;
271+
for (int i = 0; i < table->GetEntries(); ++i) {
272+
const std::string key = table->At(i)->GetName();
273+
// key should contain exactly one dot
274+
if (key.find('.') == std::string::npos || key.find('.') != key.rfind('.')) {
275+
LOG(fatal) << "Key " << key << " does not contain exactly one dot";
279276
continue;
280277
}
281-
AddLayer(name.c_str(), r, z, x0, xrho, resRPhi, resZ, eff, type);
278+
const std::string firstPart = key.substr(0, key.find('.'));
279+
if (std::find(layers.begin(), layers.end(), firstPart) == layers.end()) {
280+
layers.push_back(firstPart);
281+
}
282+
}
283+
// env.Print();
284+
// Layers
285+
for (const auto& layer : layers) {
286+
LOG(info) << " Reading layer " << layer;
287+
288+
auto getKey = [&layer, &env](const std::string& name) {
289+
std::string key = layer + "." + name;
290+
if (!env.Defined(key.c_str())) {
291+
LOG(warning) << "Key " << key << " not defined in configuration file, getting the default value";
292+
}
293+
LOG(info) << " Getting key " << key;
294+
return key;
295+
};
296+
const float r = env.GetValue(getKey("r").c_str(), -1.0f);
297+
LOG(info) << " Layer " << layer << " has radius " << r;
298+
const float z = env.GetValue(getKey("z").c_str(), -1.0f);
299+
const float x0 = env.GetValue(getKey("x0").c_str(), 0.0f);
300+
const float xrho = env.GetValue(getKey("xrho").c_str(), 0.0f);
301+
const float resRPhi = env.GetValue(getKey("resRPhi").c_str(), 0.0f);
302+
const float resZ = env.GetValue(getKey("resZ").c_str(), 0.0f);
303+
const float eff = env.GetValue(getKey("eff").c_str(), 0.0f);
304+
const int type = env.GetValue(getKey("type").c_str(), 0);
305+
306+
// void AddLayer(TString name, float r, float z, float x0, float xrho, float resRPhi = 0.0f, float resZ = 0.0f, float eff = 0.0f, int type = 0);
307+
AddLayer(layer.c_str(), r, z, x0, xrho, resRPhi, resZ, eff, type);
282308
}
283-
infile.close();
284309
}
285310

286311
float FastTracker::Dist(float z, float r)

ALICE3/TableProducer/OTF/onTheFlyTracker.cxx

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ struct OnTheFlyTracker {
138138
Configurable<int> minSiliconHits{"minSiliconHits", 6, "minimum number of silicon hits to accept track"};
139139
Configurable<int> minSiliconHitsIfTPCUsed{"minSiliconHitsIfTPCUsed", 2, "minimum number of silicon hits to accept track in case TPC info is present"};
140140
Configurable<int> minTPCClusters{"minTPCClusters", 70, "minimum number of TPC hits necessary to consider minSiliconHitsIfTPCUsed"};
141-
Configurable<int> alice3detector{"alice3detector", 2, "0: ALICE 3 v1, 1: ALICE 3 v4, 2: ALICE 3 Sep 2025"};
141+
Configurable<std::string> alice3geo{"alice3geo", "2", "0: ALICE 3 v1, 1: ALICE 3 v4, 2: ALICE 3 Sep 2025, or path to ccdb with a3 geo"};
142142
Configurable<bool> applyZacceptance{"applyZacceptance", false, "apply z limits to detector layers or not"};
143143
Configurable<bool> applyMSCorrection{"applyMSCorrection", true, "apply ms corrections for secondaries or not"};
144144
Configurable<bool> applyElossCorrection{"applyElossCorrection", true, "apply eloss corrections for secondaries or not"};
@@ -408,31 +408,26 @@ struct OnTheFlyTracker {
408408
rand.SetSeed(seed);
409409

410410
// configure FastTracker
411-
fastTracker.SetMagneticField(magneticField);
412-
fastTracker.SetApplyZacceptance(fastTrackerSettings.applyZacceptance);
413-
fastTracker.SetApplyMSCorrection(fastTrackerSettings.applyMSCorrection);
414-
fastTracker.SetApplyElossCorrection(fastTrackerSettings.applyElossCorrection);
411+
if (enableSecondarySmearing) {
412+
fastTracker.SetMagneticField(magneticField);
413+
fastTracker.SetApplyZacceptance(fastTrackerSettings.applyZacceptance);
414+
fastTracker.SetApplyMSCorrection(fastTrackerSettings.applyMSCorrection);
415+
fastTracker.SetApplyElossCorrection(fastTrackerSettings.applyElossCorrection);
415416

416-
switch (fastTrackerSettings.alice3detector) {
417-
case 0:
417+
if (fastTrackerSettings.alice3geo.value == "0") {
418418
fastTracker.AddSiliconALICE3v2(fastTrackerSettings.pixelRes);
419-
break;
420-
421-
case 1:
419+
} else if (fastTrackerSettings.alice3geo.value == "1") {
422420
fastTracker.AddSiliconALICE3v4(fastTrackerSettings.pixelRes);
423421
fastTracker.AddTPC(0.1, 0.1);
424-
break;
425-
426-
case 2:
422+
} else if (fastTrackerSettings.alice3geo.value == "2") {
427423
fastTracker.AddSiliconALICE3(fastTrackerSettings.scaleVD, fastTrackerSettings.pixelRes);
428-
break;
424+
} else {
425+
fastTracker.AddGenericDetector(fastTrackerSettings.alice3geo, ccdb.operator->());
426+
}
429427

430-
default:
431-
break;
428+
// print fastTracker settings
429+
fastTracker.Print();
432430
}
433-
434-
// print fastTracker settings
435-
fastTracker.Print();
436431
}
437432

438433
/// Function to decay the xi

ALICE3/macros/testFastTracker.cxx

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2+
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3+
// All rights not expressly granted are reserved.
4+
//
5+
// This software is distributed under the terms of the GNU General Public
6+
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7+
//
8+
// In applying this license CERN does not waive the privileges and immunities
9+
// granted to it by virtue of its status as an Intergovernmental Organization
10+
// or submit itself to any jurisdiction.
11+
12+
/// \file testFastTracker.C
13+
/// \author Nicolò Jacazio nicolo.jacazio@cern.ch
14+
/// \brief Test the FastTracker functionality
15+
16+
#include "ALICE3/Core/FastTracker.h"
17+
18+
#include "CCDB/BasicCCDBManager.h"
19+
#include "DataFormatsParameters/GRPLHCIFData.h"
20+
21+
void testFastTracker(std::string geometryFile = "a3geo.ini")
22+
{
23+
24+
// auto& ccdb = o2::ccdb::BasicCCDBManager::instance();
25+
// ccdb.setURL("http://alice-ccdb.cern.ch");
26+
o2::fastsim::FastTracker fastTracker;
27+
fastTracker.AddGenericDetector(geometryFile);
28+
// fastTracker.AddGenericDetector(geometryFile, &ccdb);
29+
fastTracker.Print();
30+
}

DPG/Tasks/AOTEvent/eventSelectionQa.cxx

Lines changed: 49 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -14,30 +14,46 @@
1414
///
1515
/// \author Evgeny Kryshen <evgeny.kryshen@cern.ch> and Igor Altsybeev <Igor.Altsybeev@cern.ch>
1616

17+
#include "Common/CCDB/EventSelectionParams.h"
18+
#include "Common/CCDB/TriggerAliases.h"
19+
#include "Common/DataModel/EventSelection.h"
20+
21+
#include <CCDB/BasicCCDBManager.h>
22+
#include <CommonConstants/LHCConstants.h>
23+
#include <CommonDataFormat/BunchFilling.h>
24+
#include <CommonDataFormat/TimeStamp.h>
25+
#include <DataFormatsITSMFT/TimeDeadMap.h>
26+
#include <DataFormatsParameters/AggregatedRunInfo.h>
27+
#include <DataFormatsParameters/GRPLHCIFData.h>
28+
#include <Framework/AnalysisDataModel.h>
29+
#include <Framework/AnalysisHelpers.h>
30+
#include <Framework/AnalysisTask.h>
31+
#include <Framework/Configurable.h>
32+
#include <Framework/DataTypes.h>
33+
#include <Framework/HistogramRegistry.h>
34+
#include <Framework/HistogramSpec.h>
35+
#include <Framework/InitContext.h>
36+
#include <Framework/OutputObjHeader.h>
37+
#include <Framework/runDataProcessing.h>
38+
#include <ITSMFTBase/DPLAlpideParam.h>
39+
#include <ITSMFTReconstruction/ChipMappingITS.h>
40+
#include <ReconstructionDataFormats/Vertex.h>
41+
42+
#include <TH1.h>
43+
#include <TMath.h>
44+
#include <TString.h>
45+
46+
#include <sys/types.h>
47+
48+
#include <bitset>
49+
#include <cmath>
50+
#include <cstddef>
51+
#include <cstdint>
52+
#include <cstdlib>
1753
#include <map>
18-
#include <vector>
1954
#include <string>
2055
#include <unordered_map>
21-
22-
#include "Framework/runDataProcessing.h"
23-
#include "Framework/AnalysisTask.h"
24-
#include "Framework/AnalysisDataModel.h"
25-
#include "Common/DataModel/EventSelection.h"
26-
#include "Common/CCDB/EventSelectionParams.h"
27-
#include "CCDB/BasicCCDBManager.h"
28-
#include "Framework/HistogramRegistry.h"
29-
#include "CommonDataFormat/BunchFilling.h"
30-
#include "DataFormatsParameters/GRPLHCIFData.h"
31-
#include "DataFormatsParameters/GRPECSObject.h"
32-
#include "DataFormatsParameters/AggregatedRunInfo.h"
33-
#include "DataFormatsITSMFT/NoiseMap.h" // missing include in TimeDeadMap.h
34-
#include "DataFormatsITSMFT/TimeDeadMap.h"
35-
#include "DataFormatsITSMFT/ROFRecord.h"
36-
#include "ReconstructionDataFormats/Vertex.h"
37-
#include "ITSMFTBase/DPLAlpideParam.h"
38-
#include "ITSMFTReconstruction/ChipMappingITS.h"
39-
#include "TH1F.h"
40-
#include "TH2F.h"
56+
#include <vector>
4157

4258
using namespace o2::framework;
4359
using namespace o2;
@@ -984,17 +1000,19 @@ struct EventSelectionQaTask {
9841000
auto mapAmbTrIdsIt = mapAmbTrIds.find(track.globalIndex());
9851001
int ambTrId = mapAmbTrIdsIt == mapAmbTrIds.end() ? -1 : mapAmbTrIdsIt->second;
9861002
int indexBc = ambTrId < 0 ? track.collision_as<ColEvSels>().bc_as<BCsRun3>().globalIndex() : ambTracks.iteratorAt(ambTrId).bc_as<BCsRun3>().begin().globalIndex();
987-
auto bc = bcs.iteratorAt(indexBc);
988-
int64_t globalBC = bc.globalBC() + floor(track.trackTime() / o2::constants::lhc::LHCBunchSpacingNS);
1003+
if (ambTrId < 0) { // temprorary limitation, to avoid crashes, in particular, on MC Pb-Pb datasets
1004+
auto bc = bcs.iteratorAt(indexBc);
1005+
int64_t globalBC = bc.globalBC() + floor(track.trackTime() / o2::constants::lhc::LHCBunchSpacingNS);
9891006

990-
int32_t indexClosestTVX = findClosest(globalBC, mapGlobalBcWithTVX);
991-
int bcDiff = static_cast<int>(globalBC - vGlobalBCs[indexClosestTVX]);
992-
if (track.hasTOF() || track.hasTRD() || !track.hasITS() || !track.hasTPC() || track.pt() < 1)
993-
continue;
994-
histos.fill(HIST("hTrackBcDiffVsEtaAll"), track.eta(), bcDiff);
995-
if (track.eta() < -0.2 || track.eta() > 0.2)
996-
continue;
997-
histos.fill(HIST("hSecondsTVXvsBcDifAll"), bc.timestamp() / 1000., bcDiff);
1007+
int32_t indexClosestTVX = findClosest(globalBC, mapGlobalBcWithTVX);
1008+
int bcDiff = static_cast<int>(globalBC - vGlobalBCs[indexClosestTVX]);
1009+
if (track.hasTOF() || track.hasTRD() || !track.hasITS() || !track.hasTPC() || track.pt() < 1)
1010+
continue;
1011+
histos.fill(HIST("hTrackBcDiffVsEtaAll"), track.eta(), bcDiff);
1012+
if (track.eta() < -0.2 || track.eta() > 0.2)
1013+
continue;
1014+
histos.fill(HIST("hSecondsTVXvsBcDifAll"), bc.timestamp() / 1000., bcDiff);
1015+
}
9981016
}
9991017

10001018
// collision-based event selection qa

DPG/Tasks/AOTEvent/rofBorderQa.cxx

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,29 +12,40 @@
1212
/// \brief QA task to study ROF border effect for different event, track and particle selection parameters
1313
/// \author Igor Altsybeev, Igor.Altsybeev@cern.ch
1414

15-
#include <iostream>
16-
#include <string>
17-
18-
#include "Framework/runDataProcessing.h"
19-
#include "Framework/AnalysisTask.h"
20-
#include "Common/Core/TrackSelection.h"
21-
#include "Common/Core/TrackSelectionDefaults.h"
22-
#include "Common/DataModel/PIDResponse.h"
23-
#include "Common/DataModel/Centrality.h"
15+
#include "Common/CCDB/EventSelectionParams.h"
16+
#include "Common/CCDB/TriggerAliases.h"
17+
#include "Common/DataModel/EventSelection.h"
18+
#include "Common/DataModel/FT0Corrected.h"
2419
#include "Common/DataModel/Multiplicity.h"
20+
#include "Common/DataModel/PIDResponseTOF.h"
21+
#include "Common/DataModel/PIDResponseTPC.h"
2522
#include "Common/DataModel/TrackSelectionTables.h"
26-
#include "Common/DataModel/EventSelection.h"
27-
#include "Common/CCDB/EventSelectionParams.h"
28-
29-
#include "CCDB/BasicCCDBManager.h"
30-
#include "DataFormatsParameters/GRPObject.h"
31-
#include "DataFormatsParameters/GRPECSObject.h"
32-
#include "DataFormatsParameters/GRPMagField.h"
3323

34-
#include "Common/DataModel/FT0Corrected.h"
35-
#include "DataFormatsFT0/Digit.h"
24+
#include <CCDB/BasicCCDBManager.h>
25+
#include <CommonConstants/LHCConstants.h>
26+
#include <DataFormatsParameters/GRPECSObject.h>
27+
#include <Framework/ASoA.h>
28+
#include <Framework/AnalysisDataModel.h>
29+
#include <Framework/AnalysisHelpers.h>
30+
#include <Framework/AnalysisTask.h>
31+
#include <Framework/Configurable.h>
32+
#include <Framework/HistogramRegistry.h>
33+
#include <Framework/HistogramSpec.h>
34+
#include <Framework/InitContext.h>
35+
#include <Framework/OutputObjHeader.h>
36+
#include <Framework/runDataProcessing.h>
37+
38+
#include <TMathBase.h>
39+
#include <TString.h>
40+
41+
#include <RtypesCore.h>
42+
43+
#include <cmath>
44+
#include <cstdint>
45+
#include <map>
46+
#include <string>
47+
#include <vector>
3648

37-
using namespace std;
3849
using namespace o2;
3950
using namespace o2::framework;
4051
using namespace o2::framework::expressions;

DPG/Tasks/AOTEvent/timeDependentQa.cxx

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,40 @@
1414
///
1515
/// \author Evgeny Kryshen <evgeny.kryshen@cern.ch> and Igor Altsybeev <Igor.Altsybeev@cern.ch>
1616

17-
#include <map>
18-
#include <vector>
19-
#include <string>
20-
21-
#include "Framework/runDataProcessing.h"
22-
#include "Framework/AnalysisTask.h"
23-
#include "Framework/AnalysisDataModel.h"
24-
#include "Framework/HistogramRegistry.h"
25-
#include "CCDB/BasicCCDBManager.h"
26-
#include "Common/DataModel/EventSelection.h"
2717
#include "Common/CCDB/EventSelectionParams.h"
28-
#include "Common/DataModel/TrackSelectionTables.h"
18+
#include "Common/CCDB/RCTSelectionFlags.h"
2919
#include "Common/CCDB/ctpRateFetcher.h"
20+
#include "Common/DataModel/EventSelection.h"
3021
#include "Common/DataModel/Multiplicity.h"
31-
#include "TPCCalibration/TPCMShapeCorrection.h"
32-
#include "DataFormatsParameters/AggregatedRunInfo.h"
33-
#include "DataFormatsITSMFT/ROFRecord.h"
34-
#include "ReconstructionDataFormats/Vertex.h"
22+
#include "Common/DataModel/TrackSelectionTables.h"
3523

36-
#include "TTree.h"
24+
#include <CCDB/BasicCCDBManager.h>
25+
#include <CommonConstants/LHCConstants.h>
26+
#include <CommonDataFormat/TimeStamp.h>
27+
#include <DataFormatsParameters/AggregatedRunInfo.h>
28+
#include <Framework/AnalysisDataModel.h>
29+
#include <Framework/AnalysisHelpers.h>
30+
#include <Framework/AnalysisTask.h>
31+
#include <Framework/Configurable.h>
32+
#include <Framework/HistogramRegistry.h>
33+
#include <Framework/HistogramSpec.h>
34+
#include <Framework/InitContext.h>
35+
#include <Framework/OutputObjHeader.h>
36+
#include <Framework/runDataProcessing.h>
37+
#include <ReconstructionDataFormats/Vertex.h>
38+
#include <TPCCalibration/TPCMShapeCorrection.h>
39+
40+
#include <TAxis.h>
41+
#include <TH2.h>
42+
#include <TMath.h>
43+
#include <TTree.h>
44+
45+
#include <sys/types.h>
46+
47+
#include <cmath>
48+
#include <cstdint>
49+
#include <string>
50+
#include <vector>
3751

3852
using namespace o2;
3953
using namespace o2::framework;

0 commit comments

Comments
 (0)