Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 22 additions & 14 deletions PWGCF/Femto/Core/cascadeHistManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,8 @@ constexpr char PrefixLambdaCascade[] = "LambdaCascadeQa/";
constexpr std::string_view AnalysisDir = "Kinematics/";
constexpr std::string_view QaDir = "QA/";

constexpr int AbsChargeDaughters = 1;

/// \class FemtoDreamEventHisto
/// \brief Class for histogramming event properties
// template <femtomodes::Mode mode>
Expand All @@ -179,9 +181,9 @@ class CascadeHistManager
std::map<trackhistmanager::TrackHist, std::vector<o2::framework::AxisSpec>> const& NegDauSpecs)
{
mHistogramRegistry = registry;
mBachelorManager.template init<mode>(registry, BachelorSpecs);
mPosDauManager.template init<mode>(registry, PosDauSpecs);
mNegDauManager.template init<mode>(registry, NegDauSpecs);
mBachelorManager.template init<mode>(registry, BachelorSpecs, AbsChargeDaughters);
mPosDauManager.template init<mode>(registry, PosDauSpecs, AbsChargeDaughters);
mNegDauManager.template init<mode>(registry, NegDauSpecs, AbsChargeDaughters);
if constexpr (modes::isFlagSet(mode, modes::Mode::kAnalysis)) {
initAnalysis(cascadeSpecs);
}
Expand All @@ -190,15 +192,6 @@ class CascadeHistManager
}
}

template <typename T1, typename T2, typename T3, typename T4>
void enableOptionalHistograms(T1 const& CascadeConfBinningQa, T2 const& BachelorConfBinningQa, T3 const& PosDauConfBinningQa, T4 const& NegDauConfBinningQa)
{
mBachelorManager.enableOptionalHistograms(BachelorConfBinningQa);
mPosDauManager.enableOptionalHistograms(PosDauConfBinningQa);
mNegDauManager.enableOptionalHistograms(NegDauConfBinningQa);
mPlot2d = CascadeConfBinningQa.plot2d.value;
}

template <modes::Mode mode, typename T1, typename T2, typename T3, typename T4>
void init(o2::framework::HistogramRegistry* registry,
std::map<CascadeHist, std::vector<o2::framework::AxisSpec>> const& cascadeSpecs,
Expand All @@ -210,8 +203,17 @@ class CascadeHistManager
std::map<trackhistmanager::TrackHist, std::vector<o2::framework::AxisSpec>> const& NegDauSpecs,
T4 const& NegDauConfBinningQa)
{
enableOptionalHistograms(CascadeConfBinningQa, BachelorConfBinningQa, PosDauConfBinningQa, NegDauConfBinningQa);
this->template init<mode>(registry, cascadeSpecs, BachelorSpecs, PosDauSpecs, NegDauSpecs);
mHistogramRegistry = registry;
mBachelorManager.template init<mode>(registry, BachelorSpecs, BachelorConfBinningQa, AbsChargeDaughters);
mPosDauManager.template init<mode>(registry, PosDauSpecs, PosDauConfBinningQa, AbsChargeDaughters);
mNegDauManager.template init<mode>(registry, NegDauSpecs, NegDauConfBinningQa, AbsChargeDaughters);
this->enableOptionalHistograms(CascadeConfBinningQa);
if constexpr (modes::isFlagSet(mode, modes::Mode::kAnalysis)) {
initAnalysis(cascadeSpecs);
}
if constexpr (modes::isFlagSet(mode, modes::Mode::kQa)) {
initQa(cascadeSpecs);
}
}

template <modes::Mode mode, typename T1, typename T2>
Expand All @@ -237,6 +239,12 @@ class CascadeHistManager
}

private:
template <typename T>
void enableOptionalHistograms(T const& CascadeConfBinningQa)
{
mPlot2d = CascadeConfBinningQa.plot2d.value;
}

void initAnalysis(std::map<CascadeHist, std::vector<o2::framework::AxisSpec>> const& cascadeSpecs)
{
std::string analysisDir = std::string(cascadePrefix) + std::string(AnalysisDir);
Expand Down
8 changes: 2 additions & 6 deletions PWGCF/Femto/Core/collisionBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ struct ConfCollisionBits : o2::framework::ConfigurableGroup {
struct ConfCcdb : o2::framework::ConfigurableGroup {
std::string prefix = std::string("ConfCcdb");
o2::framework::Configurable<std::string> ccdbUrl{"ccdbUrl", "http://alice-ccdb.cern.ch", "URL to ccdb"};
o2::framework::Configurable<std::string> grpPath{"grpPath", "GLO/Config/GRPMagField", "Path to GRP object (Run3 -> GLO/Config/GRPMagField/Run2 -> GLO/GRP/GRP"};
o2::framework::Configurable<std::string> grpPath{"grpPath", "GLO/Config/GRPMagField", "Path to GRP object (Run3 -> GLO/Config/GRPMagField, Run2 -> GLO/GRP/GRP"};
o2::framework::Configurable<std::string> triggerPath{"triggerPath", "EventFiltering/Zorro/", "CCDB path for trigger information"};
};

Expand Down Expand Up @@ -525,11 +525,7 @@ class CollisionBuilder
mcBuilder.template fillMcCollisionWithLabel<system>(mcProducts, col, mcCols);
}

void
reset()
{
mCollisionAlreadyFilled = false;
}
void reset() { mCollisionAlreadyFilled = false; }

private:
CollisionSelection<HistName> mCollisionSelection;
Expand Down
2 changes: 1 addition & 1 deletion PWGCF/Femto/Core/femtoUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ using HasSign = decltype(std::declval<T&>().sign());
template <typename T>
inline int signum(T x)
{
return (T(0) < x) - (x < T(0)); // works for floats too
return (T(0) < x) - (x < T(0));
}

}; // namespace utils
Expand Down
7 changes: 7 additions & 0 deletions PWGCF/Femto/Core/histManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,13 @@ namespace o2::analysis::femto
namespace histmanager
{

// plot level for secondaries during mc processing
enum SecondaryPlotLevel {
kSecondaryPlotLevel1 = 1,
kSecondaryPlotLevel2 = 2,
kSecondaryPlotLevel3 = 3
};

template <typename Hist>
struct HistInfo {
Hist hist;
Expand Down
49 changes: 45 additions & 4 deletions PWGCF/Femto/Core/kinkBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
#include "Common/Core/RecoDecay.h"

#include "CommonConstants/MathConstants.h"
#include "CommonConstants/PhysicsConstants.h"
#include "Framework/AnalysisHelpers.h"
#include "Framework/Configurable.h"

Expand Down Expand Up @@ -435,7 +434,6 @@ class KinkBuilder
int64_t daughterIndex = 0;

for (const auto& kink : kinks) {

// compute mother kinematics before checking filters
mKinkSelection.computeKinkMotherKinematics(kink);
if (!mKinkSelection.checkFilters(kink)) {
Expand All @@ -444,15 +442,15 @@ class KinkBuilder
// compute qa variables before applying selections
mKinkSelection.computeQaVariables(kink, tracks);
mKinkSelection.applySelections(kink, tracks);

if (!mKinkSelection.passesAllRequiredSelections()) {
continue;
}

collisionBuilder.template fillCollision<system>(collisionProducts, col);
// cleaner, but without ITS pid: auto daughter = kink.template trackDaug_as<T7>();
int64_t idx = kink.trackDaugId() - tracksWithItsPid.offset();
if (idx < 0 || idx > static_cast<int64_t>(tracksWithItsPid.size())) {
// check for valid index
if (idx < 0 || idx >= static_cast<int64_t>(tracksWithItsPid.size())) {
return;
}
auto daughter = tracksWithItsPid.iteratorAt(idx);
Expand All @@ -466,6 +464,49 @@ class KinkBuilder
}
}

template <modes::System system, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13>
void fillMcKinks(T1 const& col, T2& collisionBuilder, T3& collisionProducts, T4 const& mcCols, T5& trackProducts, T6& kinkProducts, T7 const& kinks, T8 const& tracks, T9 const& tracksWithItsPid, T10& trackBuilder, T11 const& mcParticles, T12& mcBuilder, T13& mcProducts)
{

if (!mFillAnyTable) {
return;
}
int64_t daughterIndex = 0;
for (const auto& kink : kinks) {
// compute mother kinematics before checking filters
mKinkSelection.computeKinkMotherKinematics(kink);
if (!mKinkSelection.checkFilters(kink)) {
continue;
}
// compute qa variables before applying selections
mKinkSelection.computeQaVariables(kink, tracks);
mKinkSelection.applySelections(kink, tracks);
if (!mKinkSelection.passesAllRequiredSelections()) {
continue;
}

collisionBuilder.template fillMcCollision<system>(collisionProducts, col, mcCols, mcProducts, mcBuilder);

int64_t idx = kink.trackDaugId() - tracks.offset();
// check for valid index
if (idx < 0 || idx >= static_cast<int64_t>(tracks.size())) {
return;
}
auto daughter = tracks.iteratorAt(idx);
auto daughterWithItsPid = tracksWithItsPid.iteratorAt(idx);
daughterIndex = trackBuilder.template getDaughterIndex<system, modes::Track::kKinkDaughter>(col, collisionProducts, mcCols, daughter, daughterWithItsPid, trackProducts, mcParticles, mcBuilder, mcProducts);

if constexpr (modes::isEqual(kinkType, modes::Kink::kSigma)) {
fillSigma(collisionProducts, kinkProducts, kink, daughterIndex);
mcBuilder.template fillMcSigmaWithLabel<system>(col, mcCols, kink, daughter, mcParticles, mcProducts);
}
if constexpr (modes::isEqual(kinkType, modes::Kink::kSigmaPlus)) {
fillSigmaPlus(collisionProducts, kinkProducts, kink, daughterIndex);
mcBuilder.template fillMcSigmaPlusWithLabel<system>(col, mcCols, kink, daughter, mcParticles, mcProducts);
}
}
}

template <typename T1, typename T2, typename T3>
void fillSigma(T1& collisionProducts, T2& kinkProducts, T3 const& kink, int64_t daughterIndex)
{
Expand Down
Loading
Loading