diff --git a/ALICE3/TableProducer/alice3-dq-table-maker.cxx b/ALICE3/TableProducer/alice3-dq-table-maker.cxx index 02277f1c8c1..79eaea35ec2 100644 --- a/ALICE3/TableProducer/alice3-dq-table-maker.cxx +++ b/ALICE3/TableProducer/alice3-dq-table-maker.cxx @@ -14,13 +14,6 @@ /// \file alice3-dq-table-maker.cxx /// \brief DQ table maker for ALICE 3 -#include -#include -#include -#include -#include -#include - #include "PWGDQ/Core/AnalysisCompositeCut.h" #include "PWGDQ/Core/AnalysisCut.h" #include "PWGDQ/Core/CutsLibrary.h" @@ -33,12 +26,11 @@ #include "PWGDQ/DataModel/ReducedInfoTables.h" #include "PWGDQ/DataModel/ReducedTablesAlice3.h" -#include "ALICE3/DataModel/OTFTOF.h" -#include "ALICE3/DataModel/OTFRICH.h" #include "ALICE3/DataModel/OTFPIDTrk.h" +#include "ALICE3/DataModel/OTFRICH.h" +#include "ALICE3/DataModel/OTFTOF.h" #include "ALICE3/DataModel/collisionAlice3.h" #include "ALICE3/DataModel/tracksAlice3.h" - #include "Common/CCDB/TriggerAliases.h" #include "Common/DataModel/Centrality.h" #include "Common/DataModel/CollisionAssociationTables.h" @@ -67,18 +59,25 @@ #include "ReconstructionDataFormats/VtxTrackIndex.h" #include "ReconstructionDataFormats/VtxTrackRef.h" -#include "TList.h" #include "THashList.h" +#include "TList.h" + +#include +#include +#include +#include +#include +#include using namespace o2; using namespace o2::framework; using namespace o2::framework::expressions; using namespace o2::aod; -using MyBarrelTracks = soa::Join; using MyEvents = soa::Join; @@ -90,7 +89,7 @@ constexpr static uint32_t gkEventMcFillMap = VarManager::ObjTypes::CollisionMC; constexpr static uint32_t gkTrackFillMapWithCov = VarManager::ObjTypes::Track | VarManager::ObjTypes::TrackExtra | VarManager::ObjTypes::TrackDCA | VarManager::ObjTypes::TrackSelection | VarManager::ObjTypes::TrackCov | VarManager::ObjTypes::TrackPID; struct Alice3DQTableMaker { - + Produces eventMC; Produces trackMC; @@ -105,12 +104,11 @@ struct Alice3DQTableMaker { Produces trackBarrelCov; Produces trackBarrelAssoc; Produces trackBarrelLabels; - + Produces trackPIDTOF; Produces trackPIDRich; Produces trackPIDRichSig; Produces trackPIDOT; - OutputObj fOutputList{"output"}; OutputObj fStatsList{"Statistics"}; //! skimming statistics @@ -150,16 +148,16 @@ struct Alice3DQTableMaker { std::map fLabelsMap; std::map fLabelsMapReversed; std::map fMCFlags; - std::map fCollIndexMap; // key: old collision index, value: skimmed collision index - std::map fTrackIndexMap; // key: old track global index, value: new track global index + std::map fCollIndexMap; // key: old collision index, value: skimmed collision index + std::map fTrackIndexMap; // key: old track global index, value: new track global index void init(InitContext& context) { bool isProcessSkimmingEnabled = context.mOptions.get("processSkimming"); - if(!isProcessSkimmingEnabled) + if (!isProcessSkimmingEnabled) LOG(fatal) << "No process function was enabled ALICE 3 TableMaker"; - + VarManager::SetDefaultVarNames(); // Important that this is called before DefineCuts() !!! DefineCuts(); @@ -177,17 +175,17 @@ struct Alice3DQTableMaker { if (fDoDetailedQA) { histClasses += "Event_BeforeCuts;"; } - + if (fConfigHistOutput.fConfigQA) { histClasses += "Event_AfterCuts;"; histClasses += "Event_MCTruth;"; } - if(isProcessSkimmingEnabled) { + if (isProcessSkimmingEnabled) { if (fDoDetailedQA) { histClasses += "TrackBarrel_BeforeCuts;"; } - + if (fConfigHistOutput.fConfigQA) { for (auto& cut : fTrackCuts) { histClasses += Form("TrackBarrel_%s;", cut->GetName()); @@ -219,7 +217,7 @@ struct Alice3DQTableMaker { } } - for(auto& mcIt : fMCSignals) { + for (auto& mcIt : fMCSignals) { if (fConfigHistOutput.fConfigQA) { histClasses += Form("MCTruth_%s;", mcIt->GetName()); } @@ -233,10 +231,9 @@ struct Alice3DQTableMaker { } DefineHistograms(histClasses); - + TString addHistsStr = fConfigHistOutput.fConfigAddJSONHistograms.value; - if (fConfigHistOutput.fConfigQA && addHistsStr != "") - { + if (fConfigHistOutput.fConfigQA && addHistsStr != "") { dqhistograms::AddHistogramsFromJSON(fHistMan, addHistsStr.Data()); } @@ -434,7 +431,7 @@ struct Alice3DQTableMaker { // Loop over collisions for (const auto& collision : collisions) { - + (reinterpret_cast(fStatsList->At(0)))->Fill(1.0, static_cast(o2::aod::evsel::kNsel)); VarManager::ResetValues(0, VarManager::kNEventWiseVariables); @@ -444,7 +441,7 @@ struct Alice3DQTableMaker { auto mcCollision = collision.template mcCollision_as(); VarManager::FillEventAlice3(mcCollision); } - + if (fDoDetailedQA) { fHistMan->FillHistClass("Event_BeforeCuts", VarManager::fgValues); } @@ -459,9 +456,9 @@ struct Alice3DQTableMaker { // Fill historams after event cuts fHistMan->FillHistClass("Event_AfterCuts", VarManager::fgValues); - event(collision.posX(), collision.posY(), collision.posZ(), collision.numContrib(), + event(collision.posX(), collision.posY(), collision.posZ(), collision.numContrib(), collision.collisionTime(), collision.collisionTimeRes(), collision.multDensity()); - + eventVtxCov(collision.covXX(), collision.covXY(), collision.covXZ(), collision.covYY(), collision.covYZ(), collision.covZZ(), collision.chi2()); eventMClabels(collision.mcCollisionId(), collision.mcMask()); eventInfo(collision.globalIndex()); @@ -489,7 +486,7 @@ struct Alice3DQTableMaker { for (const auto& assoc : assocs) { auto track = assoc.template track_as(); - + if (fCollIndexMap.find(track.collisionId()) == fCollIndexMap.end()) { continue; } @@ -534,12 +531,12 @@ struct Alice3DQTableMaker { // NOTE: trackBarrelInfo stores the index of the collision as in AO2D (for use in some cases where the analysis on skims is done // in workflows where the original AO2Ds are also present) - //trackBarrelInfo(track.collisionId(), collision.posX(), collision.posY(), collision.posZ(), track.globalIndex()); + // trackBarrelInfo(track.collisionId(), collision.posX(), collision.posY(), collision.posZ(), track.globalIndex()); trackBasic(reducedEventIdx, trackFilteringTag, track.pt(), track.eta(), track.phi(), track.sign(), 0); trackBarrel(track.x(), track.alpha(), track.y(), track.z(), track.snp(), track.tgl(), track.signed1Pt(), track.flags(), track.itsClusterMap(), track.itsChi2NCl(), - track.isReconstructed(), track.nSiliconHits(), track.nTPCHits(), track.length(), track.dcaXY(), + track.isReconstructed(), track.nSiliconHits(), track.nTPCHits(), track.length(), track.dcaXY(), track.dcaZ()); if constexpr (static_cast(gkTrackFillMapWithCov & VarManager::ObjTypes::TrackCov)) { @@ -549,26 +546,26 @@ struct Alice3DQTableMaker { } if constexpr (static_cast(gkTrackFillMapWithCov & VarManager::ObjTypes::TrackPID)) { - + trackPIDTOF(track.tofEventTime(), track.tofEventTimeErr(), track.nSigmaElectronInnerTOF(), track.nSigmaMuonInnerTOF(), track.nSigmaPionInnerTOF(), - track.nSigmaKaonInnerTOF(), track.nSigmaProtonInnerTOF(), track.nSigmaDeuteronInnerTOF(), + track.nSigmaKaonInnerTOF(), track.nSigmaProtonInnerTOF(), track.nSigmaDeuteronInnerTOF(), track.nSigmaTritonInnerTOF(), track.nSigmaHelium3InnerTOF(), track.nSigmaAlphaInnerTOF(), track.innerTOFTrackTimeReco(), track.innerTOFTrackLengthReco(), track.nSigmaElectronOuterTOF(), track.nSigmaMuonOuterTOF(), track.nSigmaPionOuterTOF(), - track.nSigmaKaonOuterTOF(), track.nSigmaProtonOuterTOF(), track.nSigmaDeuteronOuterTOF(), + track.nSigmaKaonOuterTOF(), track.nSigmaProtonOuterTOF(), track.nSigmaDeuteronOuterTOF(), track.nSigmaTritonOuterTOF(), track.nSigmaHelium3OuterTOF(), track.nSigmaAlphaOuterTOF(), track.outerTOFTrackTimeReco(), track.outerTOFTrackLengthReco()); trackPIDRich(track.nSigmaElectronRich(), track.nSigmaMuonRich(), track.nSigmaPionRich(), track.nSigmaKaonRich(), track.nSigmaProtonRich(), track.nSigmaDeuteronRich(), track.nSigmaTritonRich(), track.nSigmaHelium3Rich(), track.nSigmaAlphaRich()); - - trackPIDRichSig(track.hasSig(), track.hasSigInGas(), + + trackPIDRichSig(track.hasSig(), track.hasSigInGas(), track.hasSigEl(), track.hasSigMu(), track.hasSigPi(), track.hasSigKa(), track.hasSigPr(), track.hasSigDe(), track.hasSigTr(), track.hasSigHe3(), track.hasSigAl()); - + trackPIDOT(track.timeOverThresholdBarrel(), track.nSigmaTrkEl(), track.nSigmaTrkMu(), track.nSigmaTrkPi(), track.nSigmaTrkKa(), track.nSigmaTrkPr(), track.nSigmaTrkDe(), @@ -626,7 +623,7 @@ struct Alice3DQTableMaker { Preslice perCollisionTracks = aod::track::collisionId; void fullSkimming(MyEvents const& collisions, - MyBarrelTracks const& tracksBarrel, aod::TrackAssoc const& trackAssocs, + MyBarrelTracks const& tracksBarrel, aod::TrackAssoc const& trackAssocs, MyEventsMC const& mcCollisions, aod::McParticles const& mcParticles) { eventMC.reserve(mcCollisions.size()); @@ -637,10 +634,10 @@ struct Alice3DQTableMaker { eventVtxCov.reserve(collisions.size()); eventMClabels.reserve(collisions.size()); eventInfo.reserve(collisions.size()); - + skimCollisions(collisions); - if (fCollIndexMap.size() == 0) + if (fCollIndexMap.size() == 0) return; skimMCParticles(mcParticles, mcCollisions); @@ -660,8 +657,7 @@ struct Alice3DQTableMaker { if (fCollIndexMap.size() > 0) { - for (auto const& [origIdx, skimIdx] : fCollIndexMap) - { + for (auto const& [origIdx, skimIdx] : fCollIndexMap) { auto collision = collisions.rawIteratorAt(origIdx); if constexpr (static_cast(gkTrackFillMapWithCov)) { @@ -732,7 +728,7 @@ struct Alice3DQTableMaker { } void processSkimming(MyEvents const& collisions, - MyBarrelTracks const& tracksBarrel, aod::TrackAssoc const& trackAssocs, + MyBarrelTracks const& tracksBarrel, aod::TrackAssoc const& trackAssocs, MyEventsMC const& mcCollisions, aod::McParticles const& mcParticles) { fullSkimming(collisions, tracksBarrel, trackAssocs, mcCollisions, mcParticles); @@ -744,6 +740,6 @@ struct Alice3DQTableMaker { WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { return WorkflowSpec{ - adaptAnalysisTask(cfgc) - }; -} \ No newline at end of file + adaptAnalysisTask(cfgc)}; +} + \ No newline at end of file diff --git a/ALICE3/Tasks/alice3-dq-efficiency.cxx b/ALICE3/Tasks/alice3-dq-efficiency.cxx index 441da6778dd..49f68655797 100644 --- a/ALICE3/Tasks/alice3-dq-efficiency.cxx +++ b/ALICE3/Tasks/alice3-dq-efficiency.cxx @@ -26,12 +26,11 @@ #include "PWGDQ/DataModel/ReducedInfoTables.h" #include "PWGDQ/DataModel/ReducedTablesAlice3.h" -#include "ALICE3/DataModel/OTFTOF.h" -#include "ALICE3/DataModel/OTFRICH.h" #include "ALICE3/DataModel/OTFPIDTrk.h" +#include "ALICE3/DataModel/OTFRICH.h" +#include "ALICE3/DataModel/OTFTOF.h" #include "ALICE3/DataModel/collisionAlice3.h" #include "ALICE3/DataModel/tracksAlice3.h" - #include "Common/Core/TableHelper.h" #include "DataFormatsParameters/GRPMagField.h" @@ -111,7 +110,7 @@ DECLARE_SOA_TABLE(EventCuts, "AOD", "DQANAEVCUTS", dqanalysisflags::IsEventSelec DECLARE_SOA_TABLE(MixingHashes, "AOD", "DQANAMIXHASHA", dqanalysisflags::MixingHash); //! joinable to ReducedEvents DECLARE_SOA_TABLE(BarrelTrackCuts, "AOD", "DQANATRKCUTS", dqanalysisflags::IsBarrelSelected); //! joinable to ReducedA3TracksAssoc DECLARE_SOA_TABLE(BarrelAmbiguities, "AOD", "DQBARRELAMB", dqanalysisflags::BarrelAmbiguityInBunch, dqanalysisflags::BarrelAmbiguityOutOfBunch); //! joinable to ReducedBarrelTracks -DECLARE_SOA_TABLE(Prefilter, "AOD", "DQPREFILTER", dqanalysisflags::IsBarrelSelectedPrefilter);//! joinable to ReducedA3TracksAssoc +DECLARE_SOA_TABLE(Prefilter, "AOD", "DQPREFILTER", dqanalysisflags::IsBarrelSelectedPrefilter); //! joinable to ReducedA3TracksAssoc DECLARE_SOA_TABLE(JPsieeCandidates, "AOD", "DQPSEUDOPROPER", dqanalysisflags::Massee, dqanalysisflags::Ptee, dqanalysisflags::Etaee, dqanalysisflags::Rapee, dqanalysisflags::Phiee, dqanalysisflags::Lxyee, dqanalysisflags::LxyeePoleMass, dqanalysisflags::Lzee, dqanalysisflags::AmbiguousInBunchPairs, dqanalysisflags::AmbiguousOutOfBunchPairs, dqanalysisflags::Corrassoc, dqanalysisflags::MultiplicityFT0A, dqanalysisflags::MultiplicityFT0C, dqanalysisflags::PercentileFT0M, dqanalysisflags::MultiplicityNContrib); DECLARE_SOA_TABLE(OniaMCTruth, "AOD", "MCTRUTHONIA", dqanalysisflags::OniaPt, dqanalysisflags::OniaEta, dqanalysisflags::OniaY, dqanalysisflags::OniaPhi, dqanalysisflags::OniaVz, dqanalysisflags::OniaVtxZ, dqanalysisflags::MultiplicityFT0A, dqanalysisflags::MultiplicityFT0C, dqanalysisflags::PercentileFT0M, dqanalysisflags::MultiplicityNContrib); @@ -128,16 +127,16 @@ using MyEventsVtxCovSelected = soa::Join; using MyBarrelAssocsPrefilter = soa::Join; -using MyBarrelTracks = soa::Join; -using MyBarrelTracksWithCov = soa::Join; using MyBarrelTracksWithCovWithAmbiguities = soa::Join; constexpr static uint32_t gkEventFillMap = VarManager::ObjTypes::ReducedEvent; @@ -167,7 +166,7 @@ struct AnalysisEventSelection { AnalysisCompositeCut* fEventCut; - std::map fSelMap; // key: reduced event global index, value: event selection decision + std::map fSelMap; // key: reduced event global index, value: event selection decision void init(o2::framework::InitContext& context) { @@ -964,7 +963,7 @@ struct AnalysisSameEventPairing { } } } - + // Add histogram classes for each specified MCsignal at the generator level // TODO: create a std::vector of hist classes to be used at Fill time, to avoid using Form in the process function TString sigGenNamesStr = fConfigMC.genSignals.value; @@ -1034,7 +1033,7 @@ struct AnalysisSameEventPairing { bool isCorrectAssoc_leg2 = false; dielectronList.reserve(1); dielectronsExtraList.reserve(1); - + if (fConfigOptions.flatTables.value) { dielectronAllList.reserve(1); } @@ -1109,8 +1108,8 @@ struct AnalysisSameEventPairing { }*/ if (!fConfigMC.skimSignalOnly || (fConfigMC.skimSignalOnly && mcDecision > 0)) { dielectronList(event.globalIndex(), VarManager::fgValues[VarManager::kMass], - VarManager::fgValues[VarManager::kPt], VarManager::fgValues[VarManager::kEta], VarManager::fgValues[VarManager::kPhi], - t1.sign() + t2.sign(), twoTrackFilter, mcDecision); + VarManager::fgValues[VarManager::kPt], VarManager::fgValues[VarManager::kEta], VarManager::fgValues[VarManager::kPhi], + t1.sign() + t2.sign(), twoTrackFilter, mcDecision); } // Fill histograms @@ -1641,7 +1640,7 @@ struct AnalysisAsymmetricPairing { Filter eventFilter = aod::dqanalysisflags::isEventSelected > static_cast(0); PresliceUnsorted trackAssocsPerCollision = aod::reducedA3track_association::reducedA3eventId; - //PresliceUnsorted trackAssocsPerCollision = aod::reducedA3track_association::reducedA3eventId; + // PresliceUnsorted trackAssocsPerCollision = aod::reducedA3track_association::reducedA3eventId; // Partitions for triplets and asymmetric pairs Partition legACandidateAssocs = (o2::aod::dqanalysisflags::isBarrelSelected & fConfigLegAFilterMask) > static_cast(0); @@ -2497,8 +2496,7 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) adaptAnalysisTask(cfgc), adaptAnalysisTask(cfgc), adaptAnalysisTask(cfgc), - adaptAnalysisTask(cfgc) - }; + adaptAnalysisTask(cfgc)}; } void DefineHistograms(HistogramManager* histMan, TString histClasses, const char* histGroups) @@ -2523,7 +2521,6 @@ void DefineHistograms(HistogramManager* histMan, TString histClasses, const char dqhistograms::DefineHistograms(histMan, objArray->At(iclass)->GetName(), "two-collisions", histName); } - // TODO: CHANGE TO PROPER PID if ((classStr.Contains("Track") || classStr.Contains("Assoc")) && !classStr.Contains("Pairs")) { diff --git a/PWGDQ/Core/CutsLibrary.cxx b/PWGDQ/Core/CutsLibrary.cxx index 244315d075a..108755c66d0 100644 --- a/PWGDQ/Core/CutsLibrary.cxx +++ b/PWGDQ/Core/CutsLibrary.cxx @@ -3703,24 +3703,23 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName) return cut; } - //--------------------------------------------------------------- // ALICE 3 studies composite cuts if (!nameStr.compare("alice3StandardKine")) { cut->AddCut(GetAnalysisCut("alice3StandardKine")); return cut; - } + } if (!nameStr.compare("alice3KineSkim")) { cut->AddCut(GetAnalysisCut("alice3KineSkim")); return cut; - } + } if (!nameStr.compare("alice3TrackQuality")) { cut->AddCut(GetAnalysisCut("alice3TrackQuality")); return cut; - } + } if (!nameStr.compare("alice3iTOFPIDEl")) { cut->AddCut(GetAnalysisCut("alice3iTOFPIDEl")); @@ -3730,17 +3729,17 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName) if (!nameStr.compare("alice3iTOFPIDPi")) { cut->AddCut(GetAnalysisCut("alice3iTOFPIDPi")); return cut; - } + } if (!nameStr.compare("alice3iTOFPIDKa")) { cut->AddCut(GetAnalysisCut("alice3iTOFPIDKa")); return cut; - } + } if (!nameStr.compare("alice3iTOFPIDPr")) { cut->AddCut(GetAnalysisCut("alice3iTOFPIDPr")); return cut; - } + } if (!nameStr.compare("alice3oTOFPIDEl")) { cut->AddCut(GetAnalysisCut("alice3oTOFPIDEl")); @@ -3750,37 +3749,37 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName) if (!nameStr.compare("alice3oTOFPIDPi")) { cut->AddCut(GetAnalysisCut("alice3oTOFPIDPi")); return cut; - } + } if (!nameStr.compare("alice3oTOFPIDKa")) { cut->AddCut(GetAnalysisCut("alice3oTOFPIDKa")); return cut; - } + } if (!nameStr.compare("alice3oTOFPIDPr")) { cut->AddCut(GetAnalysisCut("alice3oTOFPIDPr")); return cut; - } + } if (!nameStr.compare("alice3RICHPIDEl")) { cut->AddCut(GetAnalysisCut("alice3RICHPIDEl")); return cut; - } + } if (!nameStr.compare("alice3RICHPIDPi")) { cut->AddCut(GetAnalysisCut("alice3RICHPIDPi")); return cut; - } + } if (!nameStr.compare("alice3RICHPIDKa")) { cut->AddCut(GetAnalysisCut("alice3RICHPIDKa")); return cut; - } + } if (!nameStr.compare("alice3RICHPIDPr")) { cut->AddCut(GetAnalysisCut("alice3RICHPIDPr")); return cut; - } + } if (!nameStr.compare("alice3DielectronPID")) { cut->AddCut(GetAnalysisCut("alice3StandardKine")); @@ -6803,8 +6802,8 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName) cut->AddCut(VarManager::kEta, -1.75, 1.75); // Value taken from LoI return cut; } - - if(!nameStr.compare("alice3TrackQuality")) { + + if (!nameStr.compare("alice3TrackQuality")) { cut->AddCut(VarManager::kTrackDCAxy, -1.0, 1.0); cut->AddCut(VarManager::kTrackDCAz, -1.0, 1.0); return cut; diff --git a/PWGDQ/Core/VarManager.cxx b/PWGDQ/Core/VarManager.cxx index 337d7fb369c..c3b52d2e3c4 100644 --- a/PWGDQ/Core/VarManager.cxx +++ b/PWGDQ/Core/VarManager.cxx @@ -1410,7 +1410,7 @@ void VarManager::SetDefaultVarNames() fgVariableUnits[kBBFDDCpf] = ""; fgVariableNames[kBGFDDCpf] = "FDDC BG pileup flag"; fgVariableUnits[kBGFDDCpf] = ""; -fgVariableNames[kMultDensity] = "dNdeta ALICE3"; + fgVariableNames[kMultDensity] = "dNdeta ALICE3"; fgVariableUnits[kMultDensity] = ""; fgVariableNames[kMultMCNParticlesEta40] = "Multiplicity_eta40"; fgVariableUnits[kMultMCNParticlesEta40] = ""; @@ -2226,8 +2226,8 @@ fgVariableNames[kMultDensity] = "dNdeta ALICE3"; fgVarNamesMap["kOTnSigmaTr"] = kOTnSigmaTr; fgVarNamesMap["kOTnSigmaHe3"] = kOTnSigmaHe3; fgVarNamesMap["kOTnSigmaAl"] = kOTnSigmaAl; - fgVarNamesMap["kHasRICHSig"] = kHasRICHSig; - fgVarNamesMap["kHasRICHSigInGas"] = kHasRICHSigInGas; + fgVarNamesMap["kHasRICHSig"] = kHasRICHSig; + fgVarNamesMap["kHasRICHSigInGas"] = kHasRICHSigInGas; fgVarNamesMap["kHasRICHSigEl"] = kHasRICHSigEl; fgVarNamesMap["kHasRICHSigMu"] = kHasRICHSigMu; fgVarNamesMap["kHasRICHSigPi"] = kHasRICHSigPi; diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index e2b34a552a9..189f7750d57 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -1322,8 +1322,8 @@ class VarManager : public TObject template static void FillEventAlice3(T const& event, float* values = nullptr); template - static void FillTrackAlice3(T const& track, float* values = nullptr); - + static void FillTrackAlice3(T const& track, float* values = nullptr); + static void SetCalibrationObject(CalibObjects calib, TObject* obj) { fgCalibs[calib] = obj; @@ -6077,7 +6077,6 @@ void VarManager::FillFIT(T1 const& bc, T2 const& bcs, T3 const& ft0s, T4 const& values[kBGFDDCpf] = static_cast(fitInfo.BGFDDCpf); } - template void VarManager::FillEventAlice3(T const& event, float* values) { @@ -6241,18 +6240,18 @@ void VarManager::FillTrackAlice3(T const& track, float* values) } if constexpr ((fillMap & TrackPID) > 0 || (fillMap & ReducedTrackBarrelPID) > 0) { - + values[kOTTOTSignal] = track.timeOverThresholdBarrel(); - values[kOTnSigmaEl] = track.nSigmaTrkEl(); - values[kOTnSigmaMu] = track.nSigmaTrkMu(); - values[kOTnSigmaPi] = track.nSigmaTrkPi(); - values[kOTnSigmaKa] = track.nSigmaTrkKa(); - values[kOTnSigmaPr] = track.nSigmaTrkPr(); - values[kOTnSigmaDe] = track.nSigmaTrkDe(); - values[kOTnSigmaTr] = track.nSigmaTrkTr(); + values[kOTnSigmaEl] = track.nSigmaTrkEl(); + values[kOTnSigmaMu] = track.nSigmaTrkMu(); + values[kOTnSigmaPi] = track.nSigmaTrkPi(); + values[kOTnSigmaKa] = track.nSigmaTrkKa(); + values[kOTnSigmaPr] = track.nSigmaTrkPr(); + values[kOTnSigmaDe] = track.nSigmaTrkDe(); + values[kOTnSigmaTr] = track.nSigmaTrkTr(); values[kOTnSigmaHe3] = track.nSigmaTrkHe(); - values[kOTnSigmaAl] = track.nSigmaTrkAl(); - values[kHasRICHSig] = track.hasSig(); + values[kOTnSigmaAl] = track.nSigmaTrkAl(); + values[kHasRICHSig] = track.hasSig(); values[kHasRICHSigInGas] = track.hasSigInGas(); values[kHasRICHSigEl] = track.hasSigEl(); values[kHasRICHSigMu] = track.hasSigMu(); @@ -6263,35 +6262,35 @@ void VarManager::FillTrackAlice3(T const& track, float* values) values[kHasRICHSigTr] = track.hasSigTr(); values[kHasRICHSigHe3] = track.hasSigHe3(); values[kHasRICHSigAl] = track.hasSigAl(); - values[kRICHnSigmaEl] = track.nSigmaElectronRich(); - values[kRICHnSigmaMu] = track.nSigmaMuonRich(); - values[kRICHnSigmaPi] = track.nSigmaPionRich(); - values[kRICHnSigmaKa] = track.nSigmaKaonRich(); - values[kRICHnSigmaPr] = track.nSigmaProtonRich(); - values[kRICHnSigmaDe] = track.nSigmaDeuteronRich(); - values[kRICHnSigmaTr] = track.nSigmaTritonRich(); + values[kRICHnSigmaEl] = track.nSigmaElectronRich(); + values[kRICHnSigmaMu] = track.nSigmaMuonRich(); + values[kRICHnSigmaPi] = track.nSigmaPionRich(); + values[kRICHnSigmaKa] = track.nSigmaKaonRich(); + values[kRICHnSigmaPr] = track.nSigmaProtonRich(); + values[kRICHnSigmaDe] = track.nSigmaDeuteronRich(); + values[kRICHnSigmaTr] = track.nSigmaTritonRich(); values[kRICHnSigmaHe3] = track.nSigmaHelium3Rich(); - values[kRICHnSigmaAl] = track.nSigmaAlphaRich(); - values[kTOFEventTime] = track.tofEventTime(); + values[kRICHnSigmaAl] = track.nSigmaAlphaRich(); + values[kTOFEventTime] = track.tofEventTime(); values[kTOFEventTimeErr] = track.tofEventTimeErr(); - values[kOuterTOFnSigmaEl] = track.nSigmaElectronOuterTOF(); - values[kOuterTOFnSigmaMu] = track.nSigmaMuonOuterTOF(); - values[kOuterTOFnSigmaPi] = track.nSigmaPionOuterTOF(); - values[kOuterTOFnSigmaKa] = track.nSigmaKaonOuterTOF(); - values[kOuterTOFnSigmaPr] = track.nSigmaProtonOuterTOF(); - values[kOuterTOFnSigmaDe] = track.nSigmaDeuteronOuterTOF(); - values[kOuterTOFnSigmaTr] = track.nSigmaTritonOuterTOF(); + values[kOuterTOFnSigmaEl] = track.nSigmaElectronOuterTOF(); + values[kOuterTOFnSigmaMu] = track.nSigmaMuonOuterTOF(); + values[kOuterTOFnSigmaPi] = track.nSigmaPionOuterTOF(); + values[kOuterTOFnSigmaKa] = track.nSigmaKaonOuterTOF(); + values[kOuterTOFnSigmaPr] = track.nSigmaProtonOuterTOF(); + values[kOuterTOFnSigmaDe] = track.nSigmaDeuteronOuterTOF(); + values[kOuterTOFnSigmaTr] = track.nSigmaTritonOuterTOF(); values[kOuterTOFnSigmaHe3] = track.nSigmaHelium3OuterTOF(); - values[kOuterTOFnSigmaAl] = track.nSigmaAlphaOuterTOF(); - values[kInnerTOFnSigmaEl] = track.nSigmaElectronInnerTOF(); - values[kInnerTOFnSigmaMu] = track.nSigmaMuonInnerTOF(); - values[kInnerTOFnSigmaPi] = track.nSigmaPionInnerTOF(); - values[kInnerTOFnSigmaKa] = track.nSigmaKaonInnerTOF(); - values[kInnerTOFnSigmaPr] = track.nSigmaProtonInnerTOF(); - values[kInnerTOFnSigmaDe] = track.nSigmaDeuteronInnerTOF(); - values[kInnerTOFnSigmaTr] = track.nSigmaTritonInnerTOF(); + values[kOuterTOFnSigmaAl] = track.nSigmaAlphaOuterTOF(); + values[kInnerTOFnSigmaEl] = track.nSigmaElectronInnerTOF(); + values[kInnerTOFnSigmaMu] = track.nSigmaMuonInnerTOF(); + values[kInnerTOFnSigmaPi] = track.nSigmaPionInnerTOF(); + values[kInnerTOFnSigmaKa] = track.nSigmaKaonInnerTOF(); + values[kInnerTOFnSigmaPr] = track.nSigmaProtonInnerTOF(); + values[kInnerTOFnSigmaDe] = track.nSigmaDeuteronInnerTOF(); + values[kInnerTOFnSigmaTr] = track.nSigmaTritonInnerTOF(); values[kInnerTOFnSigmaHe3] = track.nSigmaHelium3InnerTOF(); - values[kInnerTOFnSigmaAl] = track.nSigmaAlphaInnerTOF(); + values[kInnerTOFnSigmaAl] = track.nSigmaAlphaInnerTOF(); } // Quantities based on the pair table(s) @@ -6305,7 +6304,6 @@ void VarManager::FillTrackAlice3(T const& track, float* values) FillTrackDerived(values); } - template void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values) { diff --git a/PWGDQ/DataModel/ReducedTablesAlice3.h b/PWGDQ/DataModel/ReducedTablesAlice3.h index ceab6342501..e1cad38495b 100644 --- a/PWGDQ/DataModel/ReducedTablesAlice3.h +++ b/PWGDQ/DataModel/ReducedTablesAlice3.h @@ -18,314 +18,314 @@ #ifndef PWGDQ_DATAMODEL_REDUCEDTABLESALICE3_H_ #define PWGDQ_DATAMODEL_REDUCEDTABLESALICE3_H_ -#include "Framework/ASoA.h" -#include "Framework/AnalysisDataModel.h" +#include "PWGDQ/DataModel/ReducedInfoTables.h" -#include "ALICE3/DataModel/OTFTOF.h" -#include "ALICE3/DataModel/OTFRICH.h" #include "ALICE3/DataModel/OTFPIDTrk.h" -#include "PWGDQ/DataModel/ReducedInfoTables.h" +#include "ALICE3/DataModel/OTFRICH.h" +#include "ALICE3/DataModel/OTFTOF.h" + +#include "Framework/ASoA.h" +#include "Framework/AnalysisDataModel.h" namespace o2::aod { - namespace reducedeventalice3 - { - DECLARE_SOA_COLUMN(MultDensity, multDensity, float); - DECLARE_SOA_COLUMN(MCPosX, mcPosX, float); //! MC event position X - DECLARE_SOA_COLUMN(MCPosY, mcPosY, float); //! MC event position Y - DECLARE_SOA_COLUMN(MCPosZ, mcPosZ, float); //! MC event position Z - } - - namespace reducedeventmcalice3 - { - DECLARE_SOA_COLUMN(MultMCNParticlesEta05, multMCNParticlesEta05, float); - DECLARE_SOA_COLUMN(MultMCNParticlesEta08, multMCNParticlesEta08, float); - DECLARE_SOA_COLUMN(MultMCNParticlesEta10, multMCNParticlesEta10, float); - DECLARE_SOA_COLUMN(MultMCNParticlesEta20, multMCNParticlesEta20, float); - DECLARE_SOA_COLUMN(MultMCNParticlesEta40, multMCNParticlesEta40, float); - } - - - DECLARE_SOA_TABLE_STAGED(ReducedA3Events, "REA3EVENTS", //! Main event information table +namespace reducedeventalice3 +{ +DECLARE_SOA_COLUMN(MultDensity, multDensity, float); +DECLARE_SOA_COLUMN(MCPosX, mcPosX, float); //! MC event position X +DECLARE_SOA_COLUMN(MCPosY, mcPosY, float); //! MC event position Y +DECLARE_SOA_COLUMN(MCPosZ, mcPosZ, float); //! MC event position Z +} // namespace reducedeventalice3 + +namespace reducedeventmcalice3 +{ +DECLARE_SOA_COLUMN(MultMCNParticlesEta05, multMCNParticlesEta05, float); +DECLARE_SOA_COLUMN(MultMCNParticlesEta08, multMCNParticlesEta08, float); +DECLARE_SOA_COLUMN(MultMCNParticlesEta10, multMCNParticlesEta10, float); +DECLARE_SOA_COLUMN(MultMCNParticlesEta20, multMCNParticlesEta20, float); +DECLARE_SOA_COLUMN(MultMCNParticlesEta40, multMCNParticlesEta40, float); +} // namespace reducedeventmcalice3 + +DECLARE_SOA_TABLE_STAGED(ReducedA3Events, "REA3EVENTS", //! Main event information table o2::soa::Index<>, collision::PosX, collision::PosY, collision::PosZ, collision::NumContrib, collision::CollisionTime, collision::CollisionTimeRes, reducedeventalice3::MultDensity); - DECLARE_SOA_TABLE(ReducedA3EventsVtxCov, "AOD", "REA3VTXCOV", //! Event vertex covariance matrix - collision::CovXX, collision::CovXY, collision::CovXZ, - collision::CovYY, collision::CovYZ, collision::CovZZ, collision::Chi2); - - DECLARE_SOA_TABLE(ReducedA3EventsInfo, "AOD", "REA3EVENTINFO", //! Main event index table - reducedevent::CollisionId); - - DECLARE_SOA_TABLE(ReducedA3MCEvents, "AOD", "REA3MCEVTS", //! Event level MC truth information - o2::soa::Index<>, - mccollision::GeneratorsID, reducedeventalice3::MCPosX, reducedeventalice3::MCPosY, reducedeventalice3::MCPosZ, - mccollision::T, mccollision::Weight, mccollision::ImpactParameter); - - using ReducedA3MCEvent = ReducedA3MCEvents::iterator; - using ReducedA3Event = ReducedA3Events::iterator; - - namespace reducedtrackalice3 - { - // basic track information - DECLARE_SOA_INDEX_COLUMN(ReducedA3Event, reduceda3event); //! - DECLARE_SOA_INDEX_COLUMN(Track, track); //! - // ---- flags reserved for storing various information during filtering - DECLARE_SOA_BITMAP_COLUMN(FilteringFlags, filteringFlags, 64); //! - // ----------------------------------------------------- - - DECLARE_SOA_COLUMN(IsReconstructed, isReconstructed, bool); - DECLARE_SOA_COLUMN(NSiliconHits, nSiliconHits, int); - DECLARE_SOA_COLUMN(NTPCHits, nTPCHits, int); - - DECLARE_SOA_COLUMN(Pt, pt, float); //! - DECLARE_SOA_COLUMN(Eta, eta, float); //! - DECLARE_SOA_COLUMN(Phi, phi, float); //! - DECLARE_SOA_COLUMN(Sign, sign, int); //! - DECLARE_SOA_COLUMN(IsAmbiguous, isAmbiguous, int); //! - DECLARE_SOA_COLUMN(DcaXY, dcaXY, float); //! - DECLARE_SOA_COLUMN(DcaZ, dcaZ, float); //! - DECLARE_SOA_COLUMN(DetectorMap, detectorMap, uint8_t); //! Detector map: see enum DetectorMapEnum - DECLARE_SOA_INDEX_COLUMN(Collision, collision); //! - DECLARE_SOA_DYNAMIC_COLUMN(HasITS, hasITS, //! Flag to check if track has a ITS match - [](uint8_t detectorMap) -> bool { return detectorMap & o2::aod::track::ITS; }); - DECLARE_SOA_DYNAMIC_COLUMN(HasTPC, hasTPC, //! Flag to check if track has a TPC match - [](uint8_t detectorMap) -> bool { return detectorMap & o2::aod::track::TPC; }); - DECLARE_SOA_DYNAMIC_COLUMN(HasTRD, hasTRD, //! Flag to check if track has a TRD match - [](uint8_t detectorMap) -> bool { return detectorMap & o2::aod::track::TRD; }); - DECLARE_SOA_DYNAMIC_COLUMN(HasTOF, hasTOF, //! Flag to check if track has a TOF measurement - [](uint8_t detectorMap) -> bool { return detectorMap & o2::aod::track::TOF; }); - DECLARE_SOA_DYNAMIC_COLUMN(Px, px, //! - [](float pt, float phi) -> float { return pt * std::cos(phi); }); - DECLARE_SOA_DYNAMIC_COLUMN(Py, py, //! - [](float pt, float phi) -> float { return pt * std::sin(phi); }); - DECLARE_SOA_DYNAMIC_COLUMN(Pz, pz, //! - [](float pt, float eta) -> float { return pt * std::sinh(eta); }); - DECLARE_SOA_DYNAMIC_COLUMN(P, p, //! - [](float pt, float eta) -> float { return pt * std::cosh(eta); }); - } // namespace reducedtrack - - // basic track information - DECLARE_SOA_TABLE(ReducedA3Tracks, "AOD", "REA3TRACK", //! - o2::soa::Index<>, reducedtrackalice3::ReducedA3EventId, reducedtrackalice3::FilteringFlags, - reducedtrackalice3::Pt, reducedtrackalice3::Eta, reducedtrackalice3::Phi, reducedtrackalice3::Sign, reducedtrackalice3::IsAmbiguous, - reducedtrackalice3::Px, - reducedtrackalice3::Py, - reducedtrackalice3::Pz, - reducedtrackalice3::P); - - DECLARE_SOA_TABLE(ReducedA3TracksBarrelCov, "AOD", "REA3BARRELCOV", //! +DECLARE_SOA_TABLE(ReducedA3EventsVtxCov, "AOD", "REA3VTXCOV", //! Event vertex covariance matrix + collision::CovXX, collision::CovXY, collision::CovXZ, + collision::CovYY, collision::CovYZ, collision::CovZZ, collision::Chi2); + +DECLARE_SOA_TABLE(ReducedA3EventsInfo, "AOD", "REA3EVENTINFO", //! Main event index table + reducedevent::CollisionId); + +DECLARE_SOA_TABLE(ReducedA3MCEvents, "AOD", "REA3MCEVTS", //! Event level MC truth information + o2::soa::Index<>, + mccollision::GeneratorsID, reducedeventalice3::MCPosX, reducedeventalice3::MCPosY, reducedeventalice3::MCPosZ, + mccollision::T, mccollision::Weight, mccollision::ImpactParameter); + +using ReducedA3MCEvent = ReducedA3MCEvents::iterator; +using ReducedA3Event = ReducedA3Events::iterator; + +namespace reducedtrackalice3 +{ +// basic track information +DECLARE_SOA_INDEX_COLUMN(ReducedA3Event, reduceda3event); //! +DECLARE_SOA_INDEX_COLUMN(Track, track); //! +// ---- flags reserved for storing various information during filtering +DECLARE_SOA_BITMAP_COLUMN(FilteringFlags, filteringFlags, 64); //! +// ----------------------------------------------------- + +DECLARE_SOA_COLUMN(IsReconstructed, isReconstructed, bool); +DECLARE_SOA_COLUMN(NSiliconHits, nSiliconHits, int); +DECLARE_SOA_COLUMN(NTPCHits, nTPCHits, int); + +DECLARE_SOA_COLUMN(Pt, pt, float); //! +DECLARE_SOA_COLUMN(Eta, eta, float); //! +DECLARE_SOA_COLUMN(Phi, phi, float); //! +DECLARE_SOA_COLUMN(Sign, sign, int); //! +DECLARE_SOA_COLUMN(IsAmbiguous, isAmbiguous, int); //! +DECLARE_SOA_COLUMN(DcaXY, dcaXY, float); //! +DECLARE_SOA_COLUMN(DcaZ, dcaZ, float); //! +DECLARE_SOA_COLUMN(DetectorMap, detectorMap, uint8_t); //! Detector map: see enum DetectorMapEnum +DECLARE_SOA_INDEX_COLUMN(Collision, collision); //! +DECLARE_SOA_DYNAMIC_COLUMN(HasITS, hasITS, //! Flag to check if track has a ITS match + [](uint8_t detectorMap) -> bool { return detectorMap & o2::aod::track::ITS; }); +DECLARE_SOA_DYNAMIC_COLUMN(HasTPC, hasTPC, //! Flag to check if track has a TPC match + [](uint8_t detectorMap) -> bool { return detectorMap & o2::aod::track::TPC; }); +DECLARE_SOA_DYNAMIC_COLUMN(HasTRD, hasTRD, //! Flag to check if track has a TRD match + [](uint8_t detectorMap) -> bool { return detectorMap & o2::aod::track::TRD; }); +DECLARE_SOA_DYNAMIC_COLUMN(HasTOF, hasTOF, //! Flag to check if track has a TOF measurement + [](uint8_t detectorMap) -> bool { return detectorMap & o2::aod::track::TOF; }); +DECLARE_SOA_DYNAMIC_COLUMN(Px, px, //! + [](float pt, float phi) -> float { return pt * std::cos(phi); }); +DECLARE_SOA_DYNAMIC_COLUMN(Py, py, //! + [](float pt, float phi) -> float { return pt * std::sin(phi); }); +DECLARE_SOA_DYNAMIC_COLUMN(Pz, pz, //! + [](float pt, float eta) -> float { return pt * std::sinh(eta); }); +DECLARE_SOA_DYNAMIC_COLUMN(P, p, //! + [](float pt, float eta) -> float { return pt * std::cosh(eta); }); +} // namespace reducedtrackalice3 + +// basic track information +DECLARE_SOA_TABLE(ReducedA3Tracks, "AOD", "REA3TRACK", //! + o2::soa::Index<>, reducedtrackalice3::ReducedA3EventId, reducedtrackalice3::FilteringFlags, + reducedtrackalice3::Pt, reducedtrackalice3::Eta, reducedtrackalice3::Phi, reducedtrackalice3::Sign, reducedtrackalice3::IsAmbiguous, + reducedtrackalice3::Px, + reducedtrackalice3::Py, + reducedtrackalice3::Pz, + reducedtrackalice3::P); + +DECLARE_SOA_TABLE(ReducedA3TracksBarrelCov, "AOD", "REA3BARRELCOV", //! track::CYY, track::CZY, track::CZZ, track::CSnpY, track::CSnpZ, track::CSnpSnp, track::CTglY, track::CTglZ, track::CTglSnp, track::CTglTgl, track::C1PtY, track::C1PtZ, track::C1PtSnp, track::C1PtTgl, track::C1Pt21Pt2); - namespace reducedA3trackMC - { - DECLARE_SOA_INDEX_COLUMN(ReducedA3MCEvent, reducedA3MCEvent); //! - DECLARE_SOA_COLUMN(McReducedFlags, mcReducedFlags, uint16_t); //! Flags to hold compressed MC selection information - DECLARE_SOA_SELF_INDEX_COLUMN_FULL(Mother0, mother0, int, "ReducedA3MCTracks_Mother0"); //! Track index of the first mother - DECLARE_SOA_SELF_INDEX_COLUMN_FULL(Mother1, mother1, int, "ReducedA3MCTracks_Mother1"); //! Track index of the last mother - DECLARE_SOA_SELF_INDEX_COLUMN_FULL(Daughter0, daughter0, int, "ReducedA3MCTracks_Daughter0"); //! Track index of the first daughter - DECLARE_SOA_SELF_INDEX_COLUMN_FULL(Daughter1, daughter1, int, "ReducedA3MCTracks_Daughter1"); //! Track index of the last daughter - DECLARE_SOA_SELF_ARRAY_INDEX_COLUMN(Mothers, mothers); //! Mother tracks (possible empty) array. Iterate over mcParticle.mothers_as()) - DECLARE_SOA_SELF_SLICE_INDEX_COLUMN(Daughters, daughters); //! Daughter tracks (possibly empty) slice. Check for non-zero with mcParticle.has_daughters(). Iterate over mcParticle.daughters_as()) - DECLARE_SOA_COLUMN(Pt, pt, float); //! - DECLARE_SOA_COLUMN(Eta, eta, float); //! - DECLARE_SOA_COLUMN(Phi, phi, float); //! - DECLARE_SOA_COLUMN(E, e, float); //! - DECLARE_SOA_DYNAMIC_COLUMN(Px, px, //! - [](float pt, float phi) -> float { return pt * std::cos(phi); }); - DECLARE_SOA_DYNAMIC_COLUMN(Py, py, //! - [](float pt, float phi) -> float { return pt * std::sin(phi); }); - DECLARE_SOA_DYNAMIC_COLUMN(Pz, pz, //! - [](float pt, float eta) -> float { return pt * std::sinh(eta); }); - DECLARE_SOA_DYNAMIC_COLUMN(P, p, //! - [](float pt, float eta) -> float { return pt * std::cosh(eta); }); - DECLARE_SOA_DYNAMIC_COLUMN(Y, y, //! Particle rapidity - [](float pt, float eta, float e) -> float { - float pz = pt * std::sinh(eta); - if ((e - pz) > static_cast(1e-7)) { - return 0.5f * std::log((e + pz) / (e - pz)); - } else { - return -999.0f; - } - }); - } // namespace reducedA3trackMC - - // NOTE: This table is nearly identical to the one from Framework (except that it points to the event ID, not the BC id) - // This table contains all MC truth tracks (both barrel and muon) - DECLARE_SOA_TABLE(ReducedA3MCTracks, "AOD", "REA3MCTRACK", //! MC track information (on disk) - o2::soa::Index<>, reducedA3trackMC::ReducedA3MCEventId, - mcparticle::PdgCode, mcparticle::StatusCode, mcparticle::Flags, - reducedA3trackMC::MothersIds, reducedA3trackMC::DaughtersIdSlice, - mcparticle::Weight, - reducedA3trackMC::Pt, reducedA3trackMC::Eta, reducedA3trackMC::Phi, reducedA3trackMC::E, - mcparticle::Vx, mcparticle::Vy, mcparticle::Vz, mcparticle::Vt, - reducedA3trackMC::McReducedFlags, - reducedA3trackMC::Px, - reducedA3trackMC::Py, - reducedA3trackMC::Pz, - reducedA3trackMC::P, - reducedA3trackMC::Y, - mcparticle::ProducedByGenerator, - mcparticle::FromBackgroundEvent, - mcparticle::GetGenStatusCode, - mcparticle::GetProcess, - mcparticle::GetHepMCStatusCode, - mcparticle::IsPhysicalPrimary); - - using ReducedA3MCTrack = ReducedA3MCTracks::iterator; - - namespace reduceda3barreltracklabel - { - DECLARE_SOA_INDEX_COLUMN(ReducedA3MCTrack, reducedA3MCTrack); //! - DECLARE_SOA_COLUMN(McMask, mcMask, uint16_t); - } // namespace reduceda3barreltracklabel - - // NOTE: MC labels. This table has one entry for each reconstructed track (joinable with the track tables) - // The McParticleId points to the position of the MC truth track from the ReducedTracksMC table - DECLARE_SOA_TABLE(ReducedA3TracksBarrelLabels, "AOD", "REA3BARLA", //! - reduceda3barreltracklabel::ReducedA3MCTrackId, reduceda3barreltracklabel::McMask, reducedA3trackMC::McReducedFlags); - - using ReducedA3TrackBarrelLabel = ReducedA3TracksBarrelLabels::iterator; - - DECLARE_SOA_TABLE(ReducedA3TracksBarrel, "AOD", "REA3BARREL", - track::X, track::Alpha, track::IsWithinBeamPipe, - track::Y, track::Z, track::Snp, track::Tgl, track::Signed1Pt, - track::Flags, track::ITSClusterMap, track::ITSChi2NCl, - reducedtrackalice3::IsReconstructed, reducedtrackalice3::NSiliconHits, - reducedtrackalice3::NTPCHits, track::Length, reducedtrack::DcaXY, reducedtrack::DcaZ, - track::IsPVContributor); - - // barrel collision information (joined with ReducedTracks) allowing to connect different tables (cross PWGs) - DECLARE_SOA_TABLE(ReducedA3TracksBarrelInfo, "AOD", "REA3BARRELINFO", - reducedtrackalice3::CollisionId, collision::PosX, collision::PosY, collision::PosZ, reducedtrackalice3::TrackId); - - using ReducedA3Track = ReducedA3Tracks::iterator; - using ReducedA3TrackBarrel = ReducedA3TracksBarrel::iterator; - using ReducedA3TrackBarrelCov = ReducedA3TracksBarrelCov::iterator; - using ReducedA3TrackBarrelInfo = ReducedA3TracksBarrelInfo::iterator; - - namespace reducedeventlabela3 - { - DECLARE_SOA_INDEX_COLUMN(ReducedA3MCEvent, reducedA3MCEvent); //! MC collision - DECLARE_SOA_COLUMN(McMask, mcMask, uint16_t); //! Bit mask to indicate collision mismatches (bit ON means mismatch). Bit 15: indicates negative label - } // namespace reducedeventlabela3 - - DECLARE_SOA_TABLE(ReducedA3MCEventLabels, "AOD", "REA3MCCOLLBL", //! Table joined to the ReducedEvents table containing the MC index - reducedeventlabela3::ReducedA3MCEventId, reducedeventlabela3::McMask); - - using ReducedA3MCEventLabel = ReducedA3MCEventLabels::iterator; - - namespace reducedA3track_association - { - DECLARE_SOA_INDEX_COLUMN(ReducedA3Event, reducedA3event); //! ReducedEvent index - DECLARE_SOA_INDEX_COLUMN(ReducedA3Track, reducedA3track); //! ReducedTrack index - } // namespace reducedA3track_association - - DECLARE_SOA_TABLE(ReducedA3TracksAssoc, "AOD", "REA3ASSOC", //! Table for reducedtrack-to-reducedcollision association - reducedA3track_association::ReducedA3EventId, - reducedA3track_association::ReducedA3TrackId); - - DECLARE_SOA_TABLE(ReducedA3PIDTOF, "AOD", "REA3PIDTOF", - upgrade_tof::TOFEventTime, - upgrade_tof::TOFEventTimeErr, - upgrade_tof::NSigmaElectronInnerTOF, - upgrade_tof::NSigmaMuonInnerTOF, - upgrade_tof::NSigmaPionInnerTOF, - upgrade_tof::NSigmaKaonInnerTOF, - upgrade_tof::NSigmaProtonInnerTOF, - upgrade_tof::NSigmaDeuteronInnerTOF, - upgrade_tof::NSigmaTritonInnerTOF, - upgrade_tof::NSigmaHelium3InnerTOF, - upgrade_tof::NSigmaAlphaInnerTOF, - upgrade_tof::InnerTOFTrackTimeReco, - upgrade_tof::InnerTOFTrackLengthReco, - upgrade_tof::NSigmaElectronOuterTOF, - upgrade_tof::NSigmaMuonOuterTOF, - upgrade_tof::NSigmaPionOuterTOF, - upgrade_tof::NSigmaKaonOuterTOF, - upgrade_tof::NSigmaProtonOuterTOF, - upgrade_tof::NSigmaDeuteronOuterTOF, - upgrade_tof::NSigmaTritonOuterTOF, - upgrade_tof::NSigmaHelium3OuterTOF, - upgrade_tof::NSigmaAlphaOuterTOF, - upgrade_tof::OuterTOFTrackTimeReco, - upgrade_tof::OuterTOFTrackLengthReco, - upgrade_tof::NSigmaInnerTOF, - upgrade_tof::NSigmaOuterTOF); - - DECLARE_SOA_TABLE(ReducedA3PIDRich, "AOD", "REA3PIDRICH", - upgrade_rich::NSigmaElectronRich, - upgrade_rich::NSigmaMuonRich, - upgrade_rich::NSigmaPionRich, - upgrade_rich::NSigmaKaonRich, - upgrade_rich::NSigmaProtonRich, - upgrade_rich::NSigmaDeuteronRich, - upgrade_rich::NSigmaTritonRich, - upgrade_rich::NSigmaHelium3Rich, - upgrade_rich::NSigmaAlphaRich, - upgrade_rich::NSigmaRich); - - DECLARE_SOA_TABLE(ReducedA3PIDRichSignals, "AOD", "REA3PIDRICHSIG", - upgrade_rich::HasSig, - upgrade_rich::HasSigInGas, - upgrade_rich::HasSigEl, - upgrade_rich::HasSigMu, - upgrade_rich::HasSigPi, - upgrade_rich::HasSigKa, - upgrade_rich::HasSigPr, - upgrade_rich::HasSigDe, - upgrade_rich::HasSigTr, - upgrade_rich::HasSigHe3, - upgrade_rich::HasSigAl); - - DECLARE_SOA_TABLE(ReducedA3PIDOT, "AOD", "REA3PIDOT", - upgrade::trk::TimeOverThresholdBarrel, - upgrade::trk::NSigmaTrkEl, - upgrade::trk::NSigmaTrkMu, - upgrade::trk::NSigmaTrkPi, - upgrade::trk::NSigmaTrkKa, - upgrade::trk::NSigmaTrkPr, - upgrade::trk::NSigmaTrkDe, - upgrade::trk::NSigmaTrkTr, - upgrade::trk::NSigmaTrkHe, - upgrade::trk::NSigmaTrkAl, - upgrade::trk::NSigmaTrk); - -} - -#endif // PWGDQ_DATAMODEL_REDUCEDTABLESALICE3_H_ \ No newline at end of file +namespace reducedA3trackMC +{ +DECLARE_SOA_INDEX_COLUMN(ReducedA3MCEvent, reducedA3MCEvent); //! +DECLARE_SOA_COLUMN(McReducedFlags, mcReducedFlags, uint16_t); //! Flags to hold compressed MC selection information +DECLARE_SOA_SELF_INDEX_COLUMN_FULL(Mother0, mother0, int, "ReducedA3MCTracks_Mother0"); //! Track index of the first mother +DECLARE_SOA_SELF_INDEX_COLUMN_FULL(Mother1, mother1, int, "ReducedA3MCTracks_Mother1"); //! Track index of the last mother +DECLARE_SOA_SELF_INDEX_COLUMN_FULL(Daughter0, daughter0, int, "ReducedA3MCTracks_Daughter0"); //! Track index of the first daughter +DECLARE_SOA_SELF_INDEX_COLUMN_FULL(Daughter1, daughter1, int, "ReducedA3MCTracks_Daughter1"); //! Track index of the last daughter +DECLARE_SOA_SELF_ARRAY_INDEX_COLUMN(Mothers, mothers); //! Mother tracks (possible empty) array. Iterate over mcParticle.mothers_as()) +DECLARE_SOA_SELF_SLICE_INDEX_COLUMN(Daughters, daughters); //! Daughter tracks (possibly empty) slice. Check for non-zero with mcParticle.has_daughters(). Iterate over mcParticle.daughters_as()) +DECLARE_SOA_COLUMN(Pt, pt, float); //! +DECLARE_SOA_COLUMN(Eta, eta, float); //! +DECLARE_SOA_COLUMN(Phi, phi, float); //! +DECLARE_SOA_COLUMN(E, e, float); //! +DECLARE_SOA_DYNAMIC_COLUMN(Px, px, //! + [](float pt, float phi) -> float { return pt * std::cos(phi); }); +DECLARE_SOA_DYNAMIC_COLUMN(Py, py, //! + [](float pt, float phi) -> float { return pt * std::sin(phi); }); +DECLARE_SOA_DYNAMIC_COLUMN(Pz, pz, //! + [](float pt, float eta) -> float { return pt * std::sinh(eta); }); +DECLARE_SOA_DYNAMIC_COLUMN(P, p, //! + [](float pt, float eta) -> float { return pt * std::cosh(eta); }); +DECLARE_SOA_DYNAMIC_COLUMN(Y, y, //! Particle rapidity + [](float pt, float eta, float e) -> float { + float pz = pt * std::sinh(eta); + if ((e - pz) > static_cast(1e-7)) { + return 0.5f * std::log((e + pz) / (e - pz)); + } else { + return -999.0f; + } + }); +} // namespace reducedA3trackMC + +// NOTE: This table is nearly identical to the one from Framework (except that it points to the event ID, not the BC id) +// This table contains all MC truth tracks (both barrel and muon) +DECLARE_SOA_TABLE(ReducedA3MCTracks, "AOD", "REA3MCTRACK", //! MC track information (on disk) + o2::soa::Index<>, reducedA3trackMC::ReducedA3MCEventId, + mcparticle::PdgCode, mcparticle::StatusCode, mcparticle::Flags, + reducedA3trackMC::MothersIds, reducedA3trackMC::DaughtersIdSlice, + mcparticle::Weight, + reducedA3trackMC::Pt, reducedA3trackMC::Eta, reducedA3trackMC::Phi, reducedA3trackMC::E, + mcparticle::Vx, mcparticle::Vy, mcparticle::Vz, mcparticle::Vt, + reducedA3trackMC::McReducedFlags, + reducedA3trackMC::Px, + reducedA3trackMC::Py, + reducedA3trackMC::Pz, + reducedA3trackMC::P, + reducedA3trackMC::Y, + mcparticle::ProducedByGenerator, + mcparticle::FromBackgroundEvent, + mcparticle::GetGenStatusCode, + mcparticle::GetProcess, + mcparticle::GetHepMCStatusCode, + mcparticle::IsPhysicalPrimary); + +using ReducedA3MCTrack = ReducedA3MCTracks::iterator; + +namespace reduceda3barreltracklabel +{ +DECLARE_SOA_INDEX_COLUMN(ReducedA3MCTrack, reducedA3MCTrack); //! +DECLARE_SOA_COLUMN(McMask, mcMask, uint16_t); +} // namespace reduceda3barreltracklabel + +// NOTE: MC labels. This table has one entry for each reconstructed track (joinable with the track tables) +// The McParticleId points to the position of the MC truth track from the ReducedTracksMC table +DECLARE_SOA_TABLE(ReducedA3TracksBarrelLabels, "AOD", "REA3BARLA", //! + reduceda3barreltracklabel::ReducedA3MCTrackId, reduceda3barreltracklabel::McMask, reducedA3trackMC::McReducedFlags); + +using ReducedA3TrackBarrelLabel = ReducedA3TracksBarrelLabels::iterator; + +DECLARE_SOA_TABLE(ReducedA3TracksBarrel, "AOD", "REA3BARREL", + track::X, track::Alpha, track::IsWithinBeamPipe, + track::Y, track::Z, track::Snp, track::Tgl, track::Signed1Pt, + track::Flags, track::ITSClusterMap, track::ITSChi2NCl, + reducedtrackalice3::IsReconstructed, reducedtrackalice3::NSiliconHits, + reducedtrackalice3::NTPCHits, track::Length, reducedtrack::DcaXY, reducedtrack::DcaZ, + track::IsPVContributor); + +// barrel collision information (joined with ReducedTracks) allowing to connect different tables (cross PWGs) +DECLARE_SOA_TABLE(ReducedA3TracksBarrelInfo, "AOD", "REA3BARRELINFO", + reducedtrackalice3::CollisionId, collision::PosX, collision::PosY, collision::PosZ, reducedtrackalice3::TrackId); + +using ReducedA3Track = ReducedA3Tracks::iterator; +using ReducedA3TrackBarrel = ReducedA3TracksBarrel::iterator; +using ReducedA3TrackBarrelCov = ReducedA3TracksBarrelCov::iterator; +using ReducedA3TrackBarrelInfo = ReducedA3TracksBarrelInfo::iterator; + +namespace reducedeventlabela3 +{ +DECLARE_SOA_INDEX_COLUMN(ReducedA3MCEvent, reducedA3MCEvent); //! MC collision +DECLARE_SOA_COLUMN(McMask, mcMask, uint16_t); //! Bit mask to indicate collision mismatches (bit ON means mismatch). Bit 15: indicates negative label +} // namespace reducedeventlabela3 + +DECLARE_SOA_TABLE(ReducedA3MCEventLabels, "AOD", "REA3MCCOLLBL", //! Table joined to the ReducedEvents table containing the MC index + reducedeventlabela3::ReducedA3MCEventId, reducedeventlabela3::McMask); + +using ReducedA3MCEventLabel = ReducedA3MCEventLabels::iterator; + +namespace reducedA3track_association +{ +DECLARE_SOA_INDEX_COLUMN(ReducedA3Event, reducedA3event); //! ReducedEvent index +DECLARE_SOA_INDEX_COLUMN(ReducedA3Track, reducedA3track); //! ReducedTrack index +} // namespace reducedA3track_association + +DECLARE_SOA_TABLE(ReducedA3TracksAssoc, "AOD", "REA3ASSOC", //! Table for reducedtrack-to-reducedcollision association + reducedA3track_association::ReducedA3EventId, + reducedA3track_association::ReducedA3TrackId); + +DECLARE_SOA_TABLE(ReducedA3PIDTOF, "AOD", "REA3PIDTOF", + upgrade_tof::TOFEventTime, + upgrade_tof::TOFEventTimeErr, + upgrade_tof::NSigmaElectronInnerTOF, + upgrade_tof::NSigmaMuonInnerTOF, + upgrade_tof::NSigmaPionInnerTOF, + upgrade_tof::NSigmaKaonInnerTOF, + upgrade_tof::NSigmaProtonInnerTOF, + upgrade_tof::NSigmaDeuteronInnerTOF, + upgrade_tof::NSigmaTritonInnerTOF, + upgrade_tof::NSigmaHelium3InnerTOF, + upgrade_tof::NSigmaAlphaInnerTOF, + upgrade_tof::InnerTOFTrackTimeReco, + upgrade_tof::InnerTOFTrackLengthReco, + upgrade_tof::NSigmaElectronOuterTOF, + upgrade_tof::NSigmaMuonOuterTOF, + upgrade_tof::NSigmaPionOuterTOF, + upgrade_tof::NSigmaKaonOuterTOF, + upgrade_tof::NSigmaProtonOuterTOF, + upgrade_tof::NSigmaDeuteronOuterTOF, + upgrade_tof::NSigmaTritonOuterTOF, + upgrade_tof::NSigmaHelium3OuterTOF, + upgrade_tof::NSigmaAlphaOuterTOF, + upgrade_tof::OuterTOFTrackTimeReco, + upgrade_tof::OuterTOFTrackLengthReco, + upgrade_tof::NSigmaInnerTOF, + upgrade_tof::NSigmaOuterTOF); + +DECLARE_SOA_TABLE(ReducedA3PIDRich, "AOD", "REA3PIDRICH", + upgrade_rich::NSigmaElectronRich, + upgrade_rich::NSigmaMuonRich, + upgrade_rich::NSigmaPionRich, + upgrade_rich::NSigmaKaonRich, + upgrade_rich::NSigmaProtonRich, + upgrade_rich::NSigmaDeuteronRich, + upgrade_rich::NSigmaTritonRich, + upgrade_rich::NSigmaHelium3Rich, + upgrade_rich::NSigmaAlphaRich, + upgrade_rich::NSigmaRich); + +DECLARE_SOA_TABLE(ReducedA3PIDRichSignals, "AOD", "REA3PIDRICHSIG", + upgrade_rich::HasSig, + upgrade_rich::HasSigInGas, + upgrade_rich::HasSigEl, + upgrade_rich::HasSigMu, + upgrade_rich::HasSigPi, + upgrade_rich::HasSigKa, + upgrade_rich::HasSigPr, + upgrade_rich::HasSigDe, + upgrade_rich::HasSigTr, + upgrade_rich::HasSigHe3, + upgrade_rich::HasSigAl); + +DECLARE_SOA_TABLE(ReducedA3PIDOT, "AOD", "REA3PIDOT", + upgrade::trk::TimeOverThresholdBarrel, + upgrade::trk::NSigmaTrkEl, + upgrade::trk::NSigmaTrkMu, + upgrade::trk::NSigmaTrkPi, + upgrade::trk::NSigmaTrkKa, + upgrade::trk::NSigmaTrkPr, + upgrade::trk::NSigmaTrkDe, + upgrade::trk::NSigmaTrkTr, + upgrade::trk::NSigmaTrkHe, + upgrade::trk::NSigmaTrkAl, + upgrade::trk::NSigmaTrk); + +} // namespace o2::aod + +#endif // PWGDQ_DATAMODEL_REDUCEDTABLESALICE3_H_