Skip to content

Commit 290f861

Browse files
Merge branch 'AliceO2Group:master' into master
2 parents 14f244d + 12ca099 commit 290f861

7 files changed

Lines changed: 221 additions & 187 deletions

File tree

EventFiltering/Zorro.cxx

Lines changed: 40 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,46 +12,67 @@
1212

1313
#include "Zorro.h"
1414

15+
#include <algorithm>
1516
#include <map>
1617

17-
#include "TList.h"
18-
1918
#include "CCDB/BasicCCDBManager.h"
2019
#include "CommonDataFormat/InteractionRecord.h"
2120

2221
using o2::InteractionRecord;
2322

24-
void Zorro::populateHistRegistry(o2::framework::HistogramRegistry& histRegistry, std::string prefix)
23+
namespace
24+
{
25+
int findBin(TH1* hist, const std::string& label)
26+
{ // Find bin by label, avoiding the axis extention from the native ROOT implementation
27+
for (int iBin{1}; iBin <= hist->GetNbinsX(); ++iBin) {
28+
if (label == hist->GetXaxis()->GetBinLabel(iBin)) {
29+
return iBin;
30+
}
31+
}
32+
return -1;
33+
}
34+
} // namespace
35+
36+
void Zorro::populateHistRegistry(o2::framework::HistogramRegistry& histRegistry, int runNumber, std::string prefix)
2537
{
26-
TList* list = histRegistry.getListOfHistograms();
27-
if (mSelections && list->FindObject((std::to_string(mRunNumber) + "/" + prefix + "Selections").data()) == nullptr) {
28-
mAnalysedTriggers = histRegistry.add<TH1>((std::to_string(mRunNumber) + "/" + prefix + "AnalysedTriggers").data(), "", o2::framework::HistType::kTH1D, {{mSelections->GetNbinsX() - 2, -0.5, mSelections->GetNbinsX() - 2.5}});
38+
if (mRunNumberHistos == runNumber) {
39+
return;
40+
}
41+
mRunNumberHistos = runNumber;
42+
if (mSelections) {
43+
mAnalysedTriggers = histRegistry.add<TH1>((std::to_string(mRunNumberHistos) + "/" + prefix + "AnalysedTriggers").data(), "", o2::framework::HistType::kTH1D, {{mSelections->GetNbinsX() - 2, -0.5, mSelections->GetNbinsX() - 2.5}});
2944
for (int iBin{2}; iBin < mSelections->GetNbinsX(); ++iBin) { // Exclude first and last bins as they are total number of analysed and selected events, respectively
3045
mAnalysedTriggers->GetXaxis()->SetBinLabel(iBin - 1, mSelections->GetXaxis()->GetBinLabel(iBin));
3146
}
32-
std::shared_ptr<TH1> selections = histRegistry.add<TH1>((std::to_string(mRunNumber) + "/" + prefix + "Selections").data(), "", o2::framework::HistType::kTH1D, {{mSelections->GetNbinsX(), -0.5, static_cast<double>(mSelections->GetNbinsX() - 0.5)}});
47+
std::shared_ptr<TH1> selections = histRegistry.add<TH1>((std::to_string(mRunNumberHistos) + "/" + prefix + "Selections").data(), "", o2::framework::HistType::kTH1D, {{mSelections->GetNbinsX(), -0.5, static_cast<double>(mSelections->GetNbinsX() - 0.5)}});
3348
for (int iBin{1}; iBin <= mSelections->GetNbinsX(); ++iBin) {
3449
selections->GetXaxis()->SetBinLabel(iBin, mSelections->GetXaxis()->GetBinLabel(iBin));
3550
selections->SetBinContent(iBin, mSelections->GetBinContent(iBin));
3651
selections->SetBinError(iBin, mSelections->GetBinError(iBin));
3752
}
3853
}
39-
if (mScalers && list->FindObject((std::to_string(mRunNumber) + "/" + prefix + "Scalers").data()) == nullptr) {
40-
std::shared_ptr<TH1> scalers = histRegistry.add<TH1>((std::to_string(mRunNumber) + "/" + prefix + "Scalers").data(), "", o2::framework::HistType::kTH1D, {{mScalers->GetNbinsX(), -0.5, static_cast<double>(mScalers->GetNbinsX() - 0.5)}});
54+
if (mScalers) {
55+
std::shared_ptr<TH1> scalers = histRegistry.add<TH1>((std::to_string(mRunNumberHistos) + "/" + prefix + "Scalers").data(), "", o2::framework::HistType::kTH1D, {{mScalers->GetNbinsX(), -0.5, static_cast<double>(mScalers->GetNbinsX() - 0.5)}});
4156
for (int iBin{1}; iBin <= mScalers->GetNbinsX(); ++iBin) {
4257
scalers->GetXaxis()->SetBinLabel(iBin, mScalers->GetXaxis()->GetBinLabel(iBin));
4358
scalers->SetBinContent(iBin, mScalers->GetBinContent(iBin));
4459
scalers->SetBinError(iBin, mScalers->GetBinError(iBin));
4560
}
4661
}
47-
if (mInspectedTVX && list->FindObject((std::to_string(mRunNumber) + "/" + prefix + "InspectedTVX").data()) == nullptr) {
48-
std::shared_ptr<TH1> inspectedTVX = histRegistry.add<TH1>((std::to_string(mRunNumber) + "/" + prefix + "InspectedTVX").data(), "", o2::framework::HistType::kTH1D, {{mInspectedTVX->GetNbinsX(), -0.5, static_cast<double>(mInspectedTVX->GetNbinsX() - 0.5)}});
62+
if (mInspectedTVX) {
63+
std::shared_ptr<TH1> inspectedTVX = histRegistry.add<TH1>((std::to_string(mRunNumberHistos) + "/" + prefix + "InspectedTVX").data(), "", o2::framework::HistType::kTH1D, {{mInspectedTVX->GetNbinsX(), -0.5, static_cast<double>(mInspectedTVX->GetNbinsX() - 0.5)}});
4964
for (int iBin{1}; iBin <= mInspectedTVX->GetNbinsX(); ++iBin) {
5065
inspectedTVX->GetXaxis()->SetBinLabel(iBin, mInspectedTVX->GetXaxis()->GetBinLabel(iBin));
5166
inspectedTVX->SetBinContent(iBin, mInspectedTVX->GetBinContent(iBin));
5267
inspectedTVX->SetBinError(iBin, mInspectedTVX->GetBinError(iBin));
5368
}
5469
}
70+
if (mTOIs.size()) {
71+
mAnalysedTriggersOfInterest = histRegistry.add<TH1>((std::to_string(mRunNumberHistos) + "/" + prefix + "AnalysedTriggersOfInterest").data(), "", o2::framework::HistType::kTH1D, {{static_cast<int>(mTOIs.size()), -0.5, static_cast<double>(mTOIs.size() - 0.5)}});
72+
for (size_t i{0}; i < mTOIs.size(); ++i) {
73+
mAnalysedTriggersOfInterest->GetXaxis()->SetBinLabel(i + 1, mTOIs[i].data());
74+
}
75+
}
5576
}
5677

5778
std::vector<int> Zorro::initCCDB(o2::ccdb::BasicCCDBManager* ccdb, int runNumber, uint64_t timestamp, std::string tois, int bcRange)
@@ -85,12 +106,16 @@ std::vector<int> Zorro::initCCDB(o2::ccdb::BasicCCDBManager* ccdb, int runNumber
85106
// Trim leading and trailing whitespaces from the token
86107
token.erase(0, token.find_first_not_of(" "));
87108
token.erase(token.find_last_not_of(" ") + 1);
88-
int bin = mScalers->GetXaxis()->FindBin(token.c_str()) - 2;
109+
int bin = findBin(mSelections, token) - 2;
89110
mTOIs.push_back(token);
90111
mTOIidx.push_back(bin);
91112
tois = tois.erase(0, pos + 1);
92113
}
93114
mTOIcounts.resize(mTOIs.size(), 0);
115+
LOGF(info, "Zorro initialized for run %d, triggers of interest:", runNumber);
116+
for (size_t i{0}; i < mTOIs.size(); ++i) {
117+
LOGF(info, ">>> %s : %i", mTOIs[i].data(), mTOIidx[i]);
118+
}
94119
return mTOIidx;
95120
}
96121

@@ -134,6 +159,9 @@ bool Zorro::isSelected(uint64_t bcGlobalId, uint64_t tolerance)
134159
continue;
135160
} else if (mLastResult.test(mTOIidx[i])) {
136161
mTOIcounts[i] += (lastSelectedIdx != mLastSelectedIdx); /// Avoid double counting
162+
if (mAnalysedTriggersOfInterest && lastSelectedIdx != mLastSelectedIdx) {
163+
mAnalysedTriggersOfInterest->Fill(i);
164+
}
137165
return true;
138166
}
139167
}

EventFiltering/Zorro.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#define EVENTFILTERING_ZORRO_H_
1616

1717
#include <bitset>
18+
#include <memory>
1819
#include <string>
1920
#include <vector>
2021

@@ -43,7 +44,7 @@ class Zorro
4344
std::bitset<128> fetch(uint64_t bcGlobalId, uint64_t tolerance = 100);
4445
bool isSelected(uint64_t bcGlobalId, uint64_t tolerance = 100);
4546

46-
void populateHistRegistry(o2::framework::HistogramRegistry& histRegistry, std::string prefix = "");
47+
void populateHistRegistry(o2::framework::HistogramRegistry& histRegistry, int runNumber, std::string prefix = "");
4748

4849
TH1D* getScalers() const { return mScalers; }
4950
TH1D* getSelections() const { return mSelections; }
@@ -58,13 +59,15 @@ class Zorro
5859
private:
5960
std::string mBaseCCDBPath = "Users/m/mpuccio/EventFiltering/OTS/";
6061
int mRunNumber = 0;
62+
int mRunNumberHistos = 0;
6163
int mBCtolerance = 100;
6264
uint64_t mLastBCglobalId = 0;
6365
uint64_t mLastSelectedIdx = 0;
6466
TH1D* mScalers = nullptr;
6567
TH1D* mSelections = nullptr;
6668
TH1D* mInspectedTVX = nullptr;
6769
std::shared_ptr<TH1> mAnalysedTriggers;
70+
std::shared_ptr<TH1> mAnalysedTriggersOfInterest;
6871
std::bitset<128> mLastResult;
6972
std::vector<o2::dataformats::IRFrame> mBCranges;
7073
std::vector<ZorroHelper>* mZorroHelpers = nullptr;

PWGDQ/Core/VarManager.cxx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -837,6 +837,8 @@ void VarManager::SetDefaultVarNames()
837837
fgVariableUnits[kCosThetaCS] = "";
838838
fgVariableNames[kPhiCS] = "#varphi_{CS}";
839839
fgVariableUnits[kPhiCS] = "rad.";
840+
fgVariableNames[kDeltaPhiPair2] = "#Delta#phi";
841+
fgVariableUnits[kDeltaPhiPair2] = "rad.";
840842
fgVariableNames[kPsiPair] = "#Psi_{pair}";
841843
fgVariableUnits[kPsiPair] = "rad.";
842844
fgVariableNames[kDeltaPhiPair] = "#Delta#phi";

PWGDQ/Core/VarManager.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,7 @@ class VarManager : public TObject
569569
kCosThetaCS,
570570
kPhiHE,
571571
kPhiCS,
572+
kDeltaPhiPair2,
572573
kPsiPair,
573574
kDeltaPhiPair,
574575
kOpeningAngle,
@@ -2347,6 +2348,16 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values)
23472348
double Ptot2 = TMath::Sqrt(v2.Px() * v2.Px() + v2.Py() * v2.Py() + v2.Pz() * v2.Pz());
23482349
values[kDeltaPtotTracks] = Ptot1 - Ptot2;
23492350

2351+
if (fgUsedVars[kDeltaPhiPair2]) {
2352+
double phipair2 = v1.Phi() - v2.Phi();
2353+
if (phipair2 > 3 * TMath::Pi() / 2) {
2354+
values[kDeltaPhiPair2] = phipair2 - 2 * TMath::Pi();
2355+
}
2356+
if (phipair2 < -TMath::Pi() / 2) {
2357+
values[kDeltaPhiPair2] = phipair2 + 2 * TMath::Pi();
2358+
}
2359+
}
2360+
23502361
if (fgUsedVars[kPsiPair]) {
23512362
values[kDeltaPhiPair] = (t1.sign() * fgMagField > 0.) ? (v1.Phi() - v2.Phi()) : (v2.Phi() - v1.Phi());
23522363
double xipair = TMath::ACos((v1.Px() * v2.Px() + v1.Py() * v2.Py() + v1.Pz() * v2.Pz()) / v1.P() / v2.P());

PWGDQ/Tasks/tableReader_withAssoc.cxx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,8 @@ struct AnalysisTrackSelection {
342342
Configurable<std::string> grpmagPath{"grpmagPath", "GLO/Config/GRPMagField", "CCDB path of the GRPMagField object"};
343343
Configurable<bool> fConfigDummyRunlist{"cfgDummyRunlist", false, "If true, use dummy runlist"};
344344
Configurable<int> fConfigInitRunNumber{"cfgInitRunNumber", 543215, "Initial run number used in run by run checks"};
345+
// Track related options
346+
Configurable<bool> fPropTrack{"cfgPropTrack", true, "Propgate tracks to associated collision to recalculate DCA and momentum vector"};
345347

346348
Service<o2::ccdb::BasicCCDBManager> fCCDB;
347349

@@ -439,7 +441,9 @@ struct AnalysisTrackSelection {
439441
filterMap = 0;
440442
VarManager::FillTrack<TTrackFillMap>(track);
441443
// compute quantities which depend on the associated collision, such as DCA
442-
VarManager::FillTrackCollision<TTrackFillMap>(track, event);
444+
if (fPropTrack) {
445+
VarManager::FillTrackCollision<TTrackFillMap>(track, event);
446+
}
443447
if (fConfigQA) {
444448
fHistMan->FillHistClass("TrackBarrel_BeforeCuts", VarManager::fgValues);
445449
}

PWGLF/DataModel/LFClusterStudiesTable.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,7 @@ DECLARE_SOA_TABLE(
7575
LFClusterStudiesTables::Eta,
7676
LFClusterStudiesTables::Phi,
7777
LFClusterStudiesTables::ItsClusterSize,
78-
LFClusterStudiesTables::PartID,
79-
LFClusterStudiesTables::IsPositive);
78+
LFClusterStudiesTables::PartID);
8079

8180
DECLARE_SOA_TABLE(
8281
ClStTableMc, "AOD", "CLSTTABLEMC",
@@ -85,7 +84,6 @@ DECLARE_SOA_TABLE(
8584
LFClusterStudiesTables::Phi,
8685
LFClusterStudiesTables::ItsClusterSize,
8786
LFClusterStudiesTables::PartID,
88-
LFClusterStudiesTables::IsPositive,
8987
LFClusterStudiesTables::PartIDMc);
9088

9189
DECLARE_SOA_TABLE(
@@ -95,7 +93,6 @@ DECLARE_SOA_TABLE(
9593
LFClusterStudiesTables::Phi,
9694
LFClusterStudiesTables::ItsClusterSize,
9795
LFClusterStudiesTables::PartID,
98-
LFClusterStudiesTables::IsPositive,
9996
LFClusterStudiesTables::PTPC,
10097
LFClusterStudiesTables::PIDinTrk,
10198
LFClusterStudiesTables::TpcNSigma,
@@ -111,7 +108,6 @@ DECLARE_SOA_TABLE(
111108
LFClusterStudiesTables::Phi,
112109
LFClusterStudiesTables::ItsClusterSize,
113110
LFClusterStudiesTables::PartID,
114-
LFClusterStudiesTables::IsPositive,
115111
LFClusterStudiesTables::PartIDMc,
116112
LFClusterStudiesTables::PTPC,
117113
LFClusterStudiesTables::PIDinTrk,

0 commit comments

Comments
 (0)