Skip to content
Merged
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
55 changes: 35 additions & 20 deletions PWGDQ/Tasks/dqEfficiency.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,14 @@ namespace dqanalysisflags
DECLARE_SOA_COLUMN(IsEventSelected, isEventSelected, int);
DECLARE_SOA_COLUMN(IsBarrelSelected, isBarrelSelected, int);
DECLARE_SOA_COLUMN(IsMuonSelected, isMuonSelected, int);
} // namespace reducedevent
} // namespace dqanalysisflags

DECLARE_SOA_TABLE(EventCuts, "AOD", "EVENTCUTS", dqanalysisflags::IsEventSelected);
DECLARE_SOA_TABLE(BarrelTrackCuts, "AOD", "BARRELTRACKCUTS", dqanalysisflags::IsBarrelSelected);
DECLARE_SOA_TABLE(MuonTrackCuts, "AOD", "DQANAMUONCUTS", dqanalysisflags::IsMuonSelected);
} // namespace o2::aod

//using MyEvents = soa::Join<aod::ReducedEvents, aod::ReducedEventsExtended, aod::ReducedEventsMC>;
// using MyEvents = soa::Join<aod::ReducedEvents, aod::ReducedEventsExtended, aod::ReducedEventsMC>;
using MyEvents = soa::Join<aod::ReducedEvents, aod::ReducedEventsExtended, aod::ReducedMCEventLabels>;
using MyEventsSelected = soa::Join<aod::ReducedEvents, aod::ReducedEventsExtended, aod::EventCuts, aod::ReducedMCEventLabels>;
// TODO: make secondary vertexing optional
Expand All @@ -79,7 +79,7 @@ constexpr static uint32_t gkEventFillMap = VarManager::ObjTypes::ReducedEvent |
constexpr static uint32_t gkMCEventFillMap = VarManager::ObjTypes::ReducedEventMC;
constexpr static uint32_t gkEventFillMapWithCov = VarManager::ObjTypes::ReducedEvent | VarManager::ObjTypes::ReducedEventExtended | VarManager::ObjTypes::ReducedEventVtxCov;
constexpr static uint32_t gkTrackFillMap = VarManager::ObjTypes::ReducedTrack | VarManager::ObjTypes::ReducedTrackBarrel | VarManager::ObjTypes::ReducedTrackBarrelPID;
//constexpr static uint32_t gkTrackFillMapWithCov = VarManager::ObjTypes::ReducedTrack | VarManager::ObjTypes::ReducedTrackBarrel | VarManager::ObjTypes::ReducedTrackBarrelCov | VarManager::ObjTypes::ReducedTrackBarrelPID;
constexpr static uint32_t gkTrackFillMapWithCov = VarManager::ObjTypes::ReducedTrack | VarManager::ObjTypes::ReducedTrackBarrel | VarManager::ObjTypes::ReducedTrackBarrelCov | VarManager::ObjTypes::ReducedTrackBarrelPID;
constexpr static uint32_t gkMuonFillMap = VarManager::ObjTypes::ReducedMuon | VarManager::ObjTypes::ReducedMuonExtra;
constexpr static uint32_t gkMuonFillMapWithCov = VarManager::ObjTypes::ReducedMuon | VarManager::ObjTypes::ReducedMuonExtra | VarManager::ObjTypes::ReducedMuonCov;
constexpr static uint32_t gkParticleMCFillMap = VarManager::ObjTypes::ParticleMC;
Expand Down Expand Up @@ -382,7 +382,7 @@ struct AnalysisMuonSelection {
template <uint32_t TEventFillMap, uint32_t TEventMCFillMap, uint32_t TMuonFillMap, uint32_t TMuonMCFillMap, typename TEvent, typename TMuons, typename TEventsMC, typename TMuonsMC>
void runSelection(TEvent const& event, TMuons const& muons, TEventsMC const& eventsMC, TMuonsMC const& muonsMC)
{
//cout << "Event ######################################" << endl;
// cout << "Event ######################################" << endl;
VarManager::ResetValues(0, VarManager::kNMCParticleVariables);
// fill event information which might be needed in histograms that combine track and event properties
VarManager::FillEvent<TEventFillMap>(event);
Expand Down Expand Up @@ -506,9 +506,9 @@ struct AnalysisSameEventPairing {

void init(o2::framework::InitContext& context)
{
bool enableBarrelHistos = context.mOptions.get<bool>("processJpsiToEESkimmed");
bool enableBarrelHistos = context.mOptions.get<bool>("processJpsiToEESkimmed") || context.mOptions.get<bool>("processJpsiToEEVertexingSkimmed");
bool enableMuonHistos = context.mOptions.get<bool>("processJpsiToMuMuSkimmed") || context.mOptions.get<bool>("processJpsiToMuMuVertexingSkimmed");
//bool enableBarrelMuonHistos = context.mOptions.get<bool>("processElectronMuonSkimmed");
// bool enableBarrelMuonHistos = context.mOptions.get<bool>("processElectronMuonSkimmed");

VarManager::SetDefaultVarNames();
fHistMan = new HistogramManager("analysisHistos", "aa", VarManager::kNVars);
Expand Down Expand Up @@ -566,8 +566,7 @@ struct AnalysisSameEventPairing {
std::vector<TString> names = {
Form("PairsMuonSEPM_%s", objArray->At(icut)->GetName()),
Form("PairsMuonSEPP_%s", objArray->At(icut)->GetName()),
Form("PairsMuonSEMM_%s", objArray->At(icut)->GetName())
};
Form("PairsMuonSEMM_%s", objArray->At(icut)->GetName())};
histNames += Form("%s;%s;%s;", names[0].Data(), names[1].Data(), names[2].Data());
fMuonHistNames.push_back(names);
std::vector<TString> mcSigClasses;
Expand All @@ -579,9 +578,9 @@ struct AnalysisSameEventPairing {
} // end loop over MC signals
}
fMuonHistNamesMCmatched.push_back(mcSigClasses);
} // end loop over cuts
} // end if(cutNames.IsNull())
} // end if processMuon
} // end loop over cuts
} // end if(cutNames.IsNull())
} // end if processMuon

// NOTE: For the electron-muon pairing, the policy is that the user specifies n track and n muon cuts via configurables
// So for each barrel cut there is a corresponding muon cut
Expand Down Expand Up @@ -634,7 +633,7 @@ struct AnalysisSameEventPairing {
if (sig->GetNProngs() == 1) { // NOTE: 1-prong signals required
fGenMCSignals.push_back(*sig);
histNames += Form("MCTruthGen_%s;", sig->GetName()); // TODO: Add these names to a std::vector to avoid using Form in the process function
} else if (sig->GetNProngs() == 2) { // NOTE: 2-prong signals required
} else if (sig->GetNProngs() == 2) { // NOTE: 2-prong signals required
fGenMCSignals.push_back(*sig);
histNames += Form("MCTruthGenPair_%s;", sig->GetName());
}
Expand Down Expand Up @@ -750,7 +749,7 @@ struct AnalysisSameEventPairing {
{
// loop over mc stack and fill histograms for pure MC truth signals
// group all the MC tracks which belong to the MC event corresponding to the current reconstructed event
//auto groupedMCTracks = tracksMC.sliceBy(aod::reducedtrackMC::reducedMCeventId, event.reducedMCevent().globalIndex());
// auto groupedMCTracks = tracksMC.sliceBy(aod::reducedtrackMC::reducedMCeventId, event.reducedMCevent().globalIndex());
for (auto& mctrack : groupedMCTracks) {
VarManager::FillTrack<gkParticleMCFillMap>(mctrack);
// NOTE: Signals are checked here mostly based on the skimmed MC stack, so depending on the requested signal, the stack could be incomplete.
Expand All @@ -777,7 +776,7 @@ struct AnalysisSameEventPairing {
fHistMan->FillHistClass(Form("MCTruthGenPair_%s", sig.GetName()), VarManager::fgValues);
}
}
} //end of true pairing loop
} // end of true pairing loop
} // end runMCGen

Preslice<ReducedMCTracks> perReducedMcEvent = aod::reducedtrackMC::reducedMCeventId;
Expand All @@ -797,6 +796,21 @@ struct AnalysisSameEventPairing {
runMCGen(groupedMCTracks);
}

void processJpsiToEEVertexingSkimmed(soa::Filtered<MyEventsVtxCovSelected>::iterator const& event,
soa::Filtered<MyBarrelTracksSelectedWithCov> const& tracks,
ReducedMCEvents const& eventsMC, ReducedMCTracks const& tracksMC)
{
// Reset the fValues array
VarManager::ResetValues(0, VarManager::kNVars);
VarManager::FillEvent<gkEventFillMapWithCov>(event);
VarManager::FillEvent<gkMCEventFillMap>(event.reducedMCevent());

runPairing<VarManager::kJpsiToEE, gkEventFillMapWithCov, gkMCEventFillMap, gkTrackFillMapWithCov>(event, tracks, tracks, eventsMC, tracksMC);
auto groupedMCTracks = tracksMC.sliceBy(perReducedMcEvent, event.reducedMCevent().globalIndex());
groupedMCTracks.bindInternalIndicesTo(&tracksMC);
runMCGen(groupedMCTracks);
}

void processJpsiToMuMuSkimmed(soa::Filtered<MyEventsSelected>::iterator const& event,
soa::Filtered<MyMuonTracksSelected> const& muons,
ReducedMCEvents const& eventsMC, ReducedMCTracks const& tracksMC)
Expand Down Expand Up @@ -845,9 +859,10 @@ struct AnalysisSameEventPairing {
}

PROCESS_SWITCH(AnalysisSameEventPairing, processJpsiToEESkimmed, "Run barrel barrel pairing on DQ skimmed tracks", false);
PROCESS_SWITCH(AnalysisSameEventPairing, processJpsiToEEVertexingSkimmed, "Run barrel barrel pairing on DQ skimmed tracks including vertexing", false);
PROCESS_SWITCH(AnalysisSameEventPairing, processJpsiToMuMuSkimmed, "Run muon muon pairing on DQ skimmed muons", false);
PROCESS_SWITCH(AnalysisSameEventPairing, processJpsiToMuMuVertexingSkimmed, "Run muon muon pairing on DQ skimmed muons including vertexing", false);
//PROCESS_SWITCH(AnalysisSameEventPairing, processElectronMuonSkimmed, "Run barrel muon pairing on DQ skimmed tracks", false);
// PROCESS_SWITCH(AnalysisSameEventPairing, processElectronMuonSkimmed, "Run barrel muon pairing on DQ skimmed tracks", false);
PROCESS_SWITCH(AnalysisSameEventPairing, processDummy, "Dummy process function", false);
};

Expand All @@ -858,8 +873,8 @@ struct AnalysisDileptonTrack {
Configurable<string> fConfigTrackCuts{"cfgLeptonCuts", "", "Comma separated list of barrel track cuts"};
Configurable<bool> fConfigFillCandidateTable{"cfgFillCandidateTable", false, "Produce a single flat tables with all relevant information dilepton-track candidates"};
Filter eventFilter = aod::dqanalysisflags::isEventSelected == 1;
//Filter dileptonFilter = aod::reducedpair::mass > 2.92f && aod::reducedpair::mass < 3.16f && aod::reducedpair::sign == 0;
//Filter dileptonFilter = aod::reducedpair::mass > 2.6f && aod::reducedpair::mass < 3.5f && aod::reducedpair::sign == 0;
// Filter dileptonFilter = aod::reducedpair::mass > 2.92f && aod::reducedpair::mass < 3.16f && aod::reducedpair::sign == 0;
// Filter dileptonFilter = aod::reducedpair::mass > 2.6f && aod::reducedpair::mass < 3.5f && aod::reducedpair::sign == 0;

Configurable<std::string> fConfigMCRecSignals{"cfgBarrelMCRecSignals", "", "Comma separated list of MC signals (reconstructed)"};
Configurable<std::string> fConfigMCGenSignals{"cfgBarrelMCGenSignals", "", "Comma separated list of MC signals (generated)"};
Expand Down Expand Up @@ -899,9 +914,9 @@ struct AnalysisDileptonTrack {
// TODO: Create separate histogram directories for each selection used in the creation of the dileptons
// TODO: Implement possibly multiple selections for the associated track ?
if (context.mOptions.get<bool>("processDimuonMuonSkimmed")) {
//DefineHistograms(fHistMan, "DileptonsSelected;DileptonTrackInvMass;DileptonsSelected_matchedMC;DileptonTrackInvMass_matchedMC;"); // define all histograms
//VarManager::SetUseVars(fHistMan->GetUsedVars());
//fOutputList.setObject(fHistMan->GetMainHistogramList());
// DefineHistograms(fHistMan, "DileptonsSelected;DileptonTrackInvMass;DileptonsSelected_matchedMC;DileptonTrackInvMass_matchedMC;"); // define all histograms
// VarManager::SetUseVars(fHistMan->GetUsedVars());
// fOutputList.setObject(fHistMan->GetMainHistogramList());

histNames += "DileptonsSelected;DileptonTrackInvMass;";

Expand Down