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
44 changes: 24 additions & 20 deletions Analysis/Core/include/Analysis/VarManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,12 @@ class VarManager : public TObject
Pair = BIT(11)
};

enum PairCandidateType {
kJpsiToEE, // J/psi -> e+ e-
kJpsiToMuMu, // J/psi -> mu+ mu-
kNMaxCandidateTypes
};

public:
enum Variables {
kNothing = -1,
Expand Down Expand Up @@ -209,13 +215,21 @@ class VarManager : public TObject
}

static void SetRunNumbers(int n, int* runs);
static int GetNRuns()
{
return fgRunMap.size();
}
static TString GetRunStr()
{
return fgRunStr;
}

template <uint32_t fillMap, typename T>
static void FillEvent(T const& event, float* values = nullptr);
template <uint32_t fillMap, typename T>
static void FillTrack(T const& track, float* values = nullptr);
template <typename T>
static void FillPair(T const& t1, T const& t2, float* values = nullptr);
static void FillPair(T const& t1, T const& t2, float* values = nullptr, PairCandidateType pairType = kJpsiToEE);
template <typename T1, typename T2>
static void FillDileptonHadron(T1 const& dilepton, T2 const& hadron, float* values = nullptr, float hadronMass = 0.0f);

Expand All @@ -231,6 +245,7 @@ class VarManager : public TObject
static void SetVariableDependencies(); // toggle those variables on which other used variables might depend

static std::map<int, int> fgRunMap; // map of runs to be used in histogram axes
static TString fgRunStr; // semi-colon separated list of runs, to be used for histogram axis labels

static void FillEventDerived(float* values = nullptr);
static void FillTrackDerived(float* values = nullptr);
Expand Down Expand Up @@ -454,32 +469,21 @@ void VarManager::FillTrack(T const& track, float* values)
}

template <typename T>
void VarManager::FillPair(T const& t1, T const& t2, float* values)
void VarManager::FillPair(T const& t1, T const& t2, float* values, PairCandidateType pairType)
{
if (!values) {
values = fgValues;
}

float mass1 = fgkElectronMass;
float mass2 = fgkElectronMass;

bool isMuon1 = t1.filteringFlags() & (1 << 0);
bool isMuon2 = t2.filteringFlags() & (1 << 0);

if (isMuon1) {
mass1 = fgkMuonMass;
} else {
mass1 = fgkElectronMass;
}

if (isMuon2) {
mass2 = fgkMuonMass;
} else {
mass2 = fgkElectronMass;
float m1 = fgkElectronMass;
float m2 = fgkElectronMass;
if (pairType == kJpsiToMuMu) {
m1 = fgkMuonMass;
m2 = fgkMuonMass;
}

ROOT::Math::PtEtaPhiMVector v1(t1.pt(), t1.eta(), t1.phi(), mass1);
ROOT::Math::PtEtaPhiMVector v2(t2.pt(), t2.eta(), t2.phi(), mass2);
ROOT::Math::PtEtaPhiMVector v1(t1.pt(), t1.eta(), t1.phi(), m1);
ROOT::Math::PtEtaPhiMVector v2(t2.pt(), t2.eta(), t2.phi(), m2);
ROOT::Math::PtEtaPhiMVector v12 = v1 + v2;
values[kMass] = v12.M();
values[kPt] = v12.Pt();
Expand Down
2 changes: 2 additions & 0 deletions Analysis/Core/src/VarManager.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ TString VarManager::fgVariableUnits[VarManager::kNVars] = {""};
bool VarManager::fgUsedVars[VarManager::kNVars] = {kFALSE};
float VarManager::fgValues[VarManager::kNVars] = {0.0};
std::map<int, int> VarManager::fgRunMap;
TString VarManager::fgRunStr = "";

//__________________________________________________________________
VarManager::VarManager() : TObject()
Expand Down Expand Up @@ -66,6 +67,7 @@ void VarManager::SetRunNumbers(int n, int* runs)
//
for (int i = 0; i < n; ++i) {
fgRunMap[runs[i]] = i + 1;
fgRunStr += Form("%d;", runs[i]);
}
}

Expand Down
8 changes: 8 additions & 0 deletions Analysis/DataModel/include/Analysis/ReducedInfoTables.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,14 @@

namespace o2::aod
{

namespace dqppfilter
{
DECLARE_SOA_COLUMN(EventFilter, eventFilter, uint64_t);
}
// Table to be used for storing event-level decisions (DQ high level triggers)
DECLARE_SOA_TABLE(DQEventFilter, "AOD", "EVENTFILTER", dqppfilter::EventFilter);

namespace reducedevent
{

Expand Down
15 changes: 14 additions & 1 deletion Analysis/Tasks/PWGDQ/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
o2_add_library(PWGDQCore
SOURCES
PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisCore)

o2_target_root_dictionary(PWGDQCore
HEADERS CutsLibrary.h HistogramsLibrary.h
LINKDEF PWGDQCoreLinkDef.h)

o2_add_dpl_workflow(table-maker
SOURCES tableMaker.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::DetectorsBase O2::AnalysisCore
Expand All @@ -22,7 +30,12 @@ o2_add_dpl_workflow(table-maker-pp
SOURCES tableMaker_pp.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::DetectorsBase O2::AnalysisCore
COMPONENT_NAME Analysis)


o2_add_dpl_workflow(dq-filter-pp
SOURCES filterPP.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::DetectorsBase O2::AnalysisCore
COMPONENT_NAME Analysis)

o2_add_dpl_workflow(table-maker-muon-pp
SOURCES tableMakerMuon_pp.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::DetectorsBase O2::AnalysisCore
Expand Down
194 changes: 194 additions & 0 deletions Analysis/Tasks/PWGDQ/CutsLibrary.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
// Copyright CERN and copyright holders of ALICE O2. This software is
// distributed under the terms of the GNU General Public License v3 (GPL
// Version 3), copied verbatim in the file "COPYING".
//
// See http://alice-o2.web.cern.ch/license for full licensing information.
//
// In applying this license CERN does not waive the privileges and immunities
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.
//
// Contact: iarsene@cern.ch, i.c.arsene@fys.uio.no
//
#include "Analysis/AnalysisCut.h"
#include "Analysis/AnalysisCompositeCut.h"
#include "Analysis/VarManager.h"

namespace o2::aod
{
namespace dqcuts
{
AnalysisCompositeCut* GetCompositeCut(const char* cutName);
AnalysisCut* GetAnalysisCut(const char* cutName);
} // namespace dqcuts
} // namespace o2::aod

AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName)
{
//
// define composie cuts, typically combinations of all the ingredients needed for a full cut
//
// TODO: Agree on some conventions for the naming
// Possibly think of possible customization of the predefined cuts

AnalysisCompositeCut* cut = new AnalysisCompositeCut(cutName, cutName);
std::string nameStr = cutName;

if (!nameStr.compare("jpsiKineAndQuality")) {
cut->AddCut(GetAnalysisCut("jpsiStandardKine"));
cut->AddCut(GetAnalysisCut("electronStandardQuality"));
cut->AddCut(GetAnalysisCut("standardPrimaryTrack"));
return cut;
}

if (!nameStr.compare("jpsiPID1")) {
cut->AddCut(GetAnalysisCut("jpsiStandardKine"));
cut->AddCut(GetAnalysisCut("electronStandardQuality"));
cut->AddCut(GetAnalysisCut("standardPrimaryTrack"));
cut->AddCut(GetAnalysisCut("electronPID1"));
return cut;
}

if (!nameStr.compare("jpsiPID2")) {
cut->AddCut(GetAnalysisCut("jpsiStandardKine"));
cut->AddCut(GetAnalysisCut("electronStandardQuality"));
cut->AddCut(GetAnalysisCut("standardPrimaryTrack"));
cut->AddCut(GetAnalysisCut("electronPID2"));
return cut;
}

if (!nameStr.compare("pairNoCut")) {
cut->AddCut(GetAnalysisCut("pairNoCut"));
return cut;
}

if (!nameStr.compare("pairMassLow")) {
cut->AddCut(GetAnalysisCut("pairMassLow"));
return cut;
}

if (!nameStr.compare("pairJpsi")) {
cut->AddCut(GetAnalysisCut("pairJpsi"));
return cut;
}

if (!nameStr.compare("pairPsi2S")) {
cut->AddCut(GetAnalysisCut("pairPsi2S"));
return cut;
}

if (!nameStr.compare("pairUpsilon")) {
cut->AddCut(GetAnalysisCut("pairUpsilon"));
return cut;
}

if (!nameStr.compare("pairJpsiLowPt1")) {
cut->AddCut(GetAnalysisCut("pairJpsi"));
cut->AddCut(GetAnalysisCut("pairPtLow1"));
return cut;
}

if (!nameStr.compare("pairJpsiLowPt2")) {
cut->AddCut(GetAnalysisCut("pairJpsi"));
cut->AddCut(GetAnalysisCut("pairPtLow2"));
return cut;
}

delete cut;
return nullptr;
}

AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName)
{
//
// define here cuts which are likely to be used often
//
AnalysisCut* cut = new AnalysisCut(cutName, cutName);
std::string nameStr = cutName;

if (!nameStr.compare("eventStandard")) {
cut->AddCut(VarManager::kVtxZ, -10.0, 10.0);
cut->AddCut(VarManager::kIsINT7, 0.5, 1.5);
return cut;
}

if (!nameStr.compare("int7vtxZ5")) {
cut->AddCut(VarManager::kVtxZ, -5.0, 5.0);
cut->AddCut(VarManager::kIsINT7, 0.5, 1.5);
return cut;
}

if (!nameStr.compare("jpsiStandardKine")) {
cut->AddCut(VarManager::kPt, 1.0, 1000.0);
cut->AddCut(VarManager::kEta, -0.9, 0.9);
return cut;
}

if (!nameStr.compare("electronStandardQuality")) {
cut->AddCut(VarManager::kIsSPDany, 0.5, 1.5);
cut->AddCut(VarManager::kIsITSrefit, 0.5, 1.5);
cut->AddCut(VarManager::kIsTPCrefit, 0.5, 1.5);
cut->AddCut(VarManager::kTPCchi2, 0.0, 4.0);
cut->AddCut(VarManager::kITSchi2, 0.1, 36.0);
cut->AddCut(VarManager::kTPCncls, 100.0, 161.);
return cut;
}

if (!nameStr.compare("standardPrimaryTrack")) {
cut->AddCut(VarManager::kTrackDCAxy, -1.0, 1.0);
cut->AddCut(VarManager::kTrackDCAz, -3.0, 3.0);
return cut;
}

TF1* cutLow1 = new TF1("cutLow1", "pol1", 0., 10.);
cutLow1->SetParameters(130., -40.0);
if (!nameStr.compare("electronPID1")) {
cut->AddCut(VarManager::kTPCsignal, 70., 100.);
cut->AddCut(VarManager::kTPCsignal, cutLow1, 100.0, false, VarManager::kPin, 0.5, 3.0);
return cut;
}

if (!nameStr.compare("electronPID2")) {
cut->AddCut(VarManager::kTPCsignal, 73., 100.);
cut->AddCut(VarManager::kTPCsignal, cutLow1, 100.0, false, VarManager::kPin, 0.5, 3.0);
return cut;
}

if (!nameStr.compare("pairNoCut")) {
cut->AddCut(VarManager::kMass, 0.0, 1000.0);
return cut;
}

if (!nameStr.compare("pairMassLow")) {
cut->AddCut(VarManager::kMass, 2.5, 1000.0);
return cut;
}

if (!nameStr.compare("pairJpsi")) {
cut->AddCut(VarManager::kMass, 2.8, 3.3);
return cut;
}

if (!nameStr.compare("pairPsi2S")) {
cut->AddCut(VarManager::kMass, 3.4, 3.9);
return cut;
}

if (!nameStr.compare("pairUpsilon")) {
cut->AddCut(VarManager::kMass, 8.0, 11.0);
return cut;
}

if (!nameStr.compare("pairPtLow1")) {
cut->AddCut(VarManager::kPt, 2.0, 1000.0);
return cut;
}

if (!nameStr.compare("pairPtLow2")) {
cut->AddCut(VarManager::kPt, 5.0, 1000.0);
return cut;
}

delete cut;
return nullptr;
}
Loading