@@ -51,14 +51,14 @@ namespace dqanalysisflags
5151DECLARE_SOA_COLUMN (IsEventSelected, isEventSelected, int );
5252DECLARE_SOA_COLUMN (IsBarrelSelected, isBarrelSelected, int );
5353DECLARE_SOA_COLUMN (IsMuonSelected, isMuonSelected, int );
54- } // namespace reducedevent
54+ } // namespace dqanalysisflags
5555
5656DECLARE_SOA_TABLE (EventCuts, " AOD" , " EVENTCUTS" , dqanalysisflags::IsEventSelected);
5757DECLARE_SOA_TABLE (BarrelTrackCuts, " AOD" , " BARRELTRACKCUTS" , dqanalysisflags::IsBarrelSelected);
5858DECLARE_SOA_TABLE (MuonTrackCuts, " AOD" , " DQANAMUONCUTS" , dqanalysisflags::IsMuonSelected);
5959} // namespace o2::aod
6060
61- // using MyEvents = soa::Join<aod::ReducedEvents, aod::ReducedEventsExtended, aod::ReducedEventsMC>;
61+ // using MyEvents = soa::Join<aod::ReducedEvents, aod::ReducedEventsExtended, aod::ReducedEventsMC>;
6262using MyEvents = soa::Join<aod::ReducedEvents, aod::ReducedEventsExtended, aod::ReducedMCEventLabels>;
6363using MyEventsSelected = soa::Join<aod::ReducedEvents, aod::ReducedEventsExtended, aod::EventCuts, aod::ReducedMCEventLabels>;
6464// TODO: make secondary vertexing optional
@@ -79,7 +79,7 @@ constexpr static uint32_t gkEventFillMap = VarManager::ObjTypes::ReducedEvent |
7979constexpr static uint32_t gkMCEventFillMap = VarManager::ObjTypes::ReducedEventMC;
8080constexpr static uint32_t gkEventFillMapWithCov = VarManager::ObjTypes::ReducedEvent | VarManager::ObjTypes::ReducedEventExtended | VarManager::ObjTypes::ReducedEventVtxCov;
8181constexpr static uint32_t gkTrackFillMap = VarManager::ObjTypes::ReducedTrack | VarManager::ObjTypes::ReducedTrackBarrel | VarManager::ObjTypes::ReducedTrackBarrelPID;
82- // constexpr static uint32_t gkTrackFillMapWithCov = VarManager::ObjTypes::ReducedTrack | VarManager::ObjTypes::ReducedTrackBarrel | VarManager::ObjTypes::ReducedTrackBarrelCov | VarManager::ObjTypes::ReducedTrackBarrelPID;
82+ constexpr static uint32_t gkTrackFillMapWithCov = VarManager::ObjTypes::ReducedTrack | VarManager::ObjTypes::ReducedTrackBarrel | VarManager::ObjTypes::ReducedTrackBarrelCov | VarManager::ObjTypes::ReducedTrackBarrelPID;
8383constexpr static uint32_t gkMuonFillMap = VarManager::ObjTypes::ReducedMuon | VarManager::ObjTypes::ReducedMuonExtra;
8484constexpr static uint32_t gkMuonFillMapWithCov = VarManager::ObjTypes::ReducedMuon | VarManager::ObjTypes::ReducedMuonExtra | VarManager::ObjTypes::ReducedMuonCov;
8585constexpr static uint32_t gkParticleMCFillMap = VarManager::ObjTypes::ParticleMC;
@@ -382,7 +382,7 @@ struct AnalysisMuonSelection {
382382 template <uint32_t TEventFillMap, uint32_t TEventMCFillMap, uint32_t TMuonFillMap, uint32_t TMuonMCFillMap, typename TEvent, typename TMuons, typename TEventsMC, typename TMuonsMC>
383383 void runSelection (TEvent const & event, TMuons const & muons, TEventsMC const & eventsMC, TMuonsMC const & muonsMC)
384384 {
385- // cout << "Event ######################################" << endl;
385+ // cout << "Event ######################################" << endl;
386386 VarManager::ResetValues (0 , VarManager::kNMCParticleVariables );
387387 // fill event information which might be needed in histograms that combine track and event properties
388388 VarManager::FillEvent<TEventFillMap>(event);
@@ -506,9 +506,9 @@ struct AnalysisSameEventPairing {
506506
507507 void init (o2::framework::InitContext& context)
508508 {
509- bool enableBarrelHistos = context.mOptions .get <bool >(" processJpsiToEESkimmed" );
509+ bool enableBarrelHistos = context.mOptions .get <bool >(" processJpsiToEESkimmed" ) || context. mOptions . get < bool >( " processJpsiToEEVertexingSkimmed " ) ;
510510 bool enableMuonHistos = context.mOptions .get <bool >(" processJpsiToMuMuSkimmed" ) || context.mOptions .get <bool >(" processJpsiToMuMuVertexingSkimmed" );
511- // bool enableBarrelMuonHistos = context.mOptions.get<bool>("processElectronMuonSkimmed");
511+ // bool enableBarrelMuonHistos = context.mOptions.get<bool>("processElectronMuonSkimmed");
512512
513513 VarManager::SetDefaultVarNames ();
514514 fHistMan = new HistogramManager (" analysisHistos" , " aa" , VarManager::kNVars );
@@ -566,8 +566,7 @@ struct AnalysisSameEventPairing {
566566 std::vector<TString> names = {
567567 Form (" PairsMuonSEPM_%s" , objArray->At (icut)->GetName ()),
568568 Form (" PairsMuonSEPP_%s" , objArray->At (icut)->GetName ()),
569- Form (" PairsMuonSEMM_%s" , objArray->At (icut)->GetName ())
570- };
569+ Form (" PairsMuonSEMM_%s" , objArray->At (icut)->GetName ())};
571570 histNames += Form (" %s;%s;%s;" , names[0 ].Data (), names[1 ].Data (), names[2 ].Data ());
572571 fMuonHistNames .push_back (names);
573572 std::vector<TString> mcSigClasses;
@@ -579,9 +578,9 @@ struct AnalysisSameEventPairing {
579578 } // end loop over MC signals
580579 }
581580 fMuonHistNamesMCmatched .push_back (mcSigClasses);
582- } // end loop over cuts
583- } // end if(cutNames.IsNull())
584- } // end if processMuon
581+ } // end loop over cuts
582+ } // end if(cutNames.IsNull())
583+ } // end if processMuon
585584
586585 // NOTE: For the electron-muon pairing, the policy is that the user specifies n track and n muon cuts via configurables
587586 // So for each barrel cut there is a corresponding muon cut
@@ -634,7 +633,7 @@ struct AnalysisSameEventPairing {
634633 if (sig->GetNProngs () == 1 ) { // NOTE: 1-prong signals required
635634 fGenMCSignals .push_back (*sig);
636635 histNames += Form (" MCTruthGen_%s;" , sig->GetName ()); // TODO: Add these names to a std::vector to avoid using Form in the process function
637- } else if (sig->GetNProngs () == 2 ) { // NOTE: 2-prong signals required
636+ } else if (sig->GetNProngs () == 2 ) { // NOTE: 2-prong signals required
638637 fGenMCSignals .push_back (*sig);
639638 histNames += Form (" MCTruthGenPair_%s;" , sig->GetName ());
640639 }
@@ -750,7 +749,7 @@ struct AnalysisSameEventPairing {
750749 {
751750 // loop over mc stack and fill histograms for pure MC truth signals
752751 // group all the MC tracks which belong to the MC event corresponding to the current reconstructed event
753- // auto groupedMCTracks = tracksMC.sliceBy(aod::reducedtrackMC::reducedMCeventId, event.reducedMCevent().globalIndex());
752+ // auto groupedMCTracks = tracksMC.sliceBy(aod::reducedtrackMC::reducedMCeventId, event.reducedMCevent().globalIndex());
754753 for (auto & mctrack : groupedMCTracks) {
755754 VarManager::FillTrack<gkParticleMCFillMap>(mctrack);
756755 // NOTE: Signals are checked here mostly based on the skimmed MC stack, so depending on the requested signal, the stack could be incomplete.
@@ -777,7 +776,7 @@ struct AnalysisSameEventPairing {
777776 fHistMan ->FillHistClass (Form (" MCTruthGenPair_%s" , sig.GetName ()), VarManager::fgValues);
778777 }
779778 }
780- } // end of true pairing loop
779+ } // end of true pairing loop
781780 } // end runMCGen
782781
783782 Preslice<ReducedMCTracks> perReducedMcEvent = aod::reducedtrackMC::reducedMCeventId;
@@ -797,6 +796,21 @@ struct AnalysisSameEventPairing {
797796 runMCGen (groupedMCTracks);
798797 }
799798
799+ void processJpsiToEEVertexingSkimmed (soa::Filtered<MyEventsVtxCovSelected>::iterator const & event,
800+ soa::Filtered<MyBarrelTracksSelectedWithCov> const & tracks,
801+ ReducedMCEvents const & eventsMC, ReducedMCTracks const & tracksMC)
802+ {
803+ // Reset the fValues array
804+ VarManager::ResetValues (0 , VarManager::kNVars );
805+ VarManager::FillEvent<gkEventFillMapWithCov>(event);
806+ VarManager::FillEvent<gkMCEventFillMap>(event.reducedMCevent ());
807+
808+ runPairing<VarManager::kJpsiToEE , gkEventFillMapWithCov, gkMCEventFillMap, gkTrackFillMapWithCov>(event, tracks, tracks, eventsMC, tracksMC);
809+ auto groupedMCTracks = tracksMC.sliceBy (perReducedMcEvent, event.reducedMCevent ().globalIndex ());
810+ groupedMCTracks.bindInternalIndicesTo (&tracksMC);
811+ runMCGen (groupedMCTracks);
812+ }
813+
800814 void processJpsiToMuMuSkimmed (soa::Filtered<MyEventsSelected>::iterator const & event,
801815 soa::Filtered<MyMuonTracksSelected> const & muons,
802816 ReducedMCEvents const & eventsMC, ReducedMCTracks const & tracksMC)
@@ -845,9 +859,10 @@ struct AnalysisSameEventPairing {
845859 }
846860
847861 PROCESS_SWITCH (AnalysisSameEventPairing, processJpsiToEESkimmed, " Run barrel barrel pairing on DQ skimmed tracks" , false );
862+ PROCESS_SWITCH (AnalysisSameEventPairing, processJpsiToEEVertexingSkimmed, " Run barrel barrel pairing on DQ skimmed tracks including vertexing" , false );
848863 PROCESS_SWITCH (AnalysisSameEventPairing, processJpsiToMuMuSkimmed, " Run muon muon pairing on DQ skimmed muons" , false );
849864 PROCESS_SWITCH (AnalysisSameEventPairing, processJpsiToMuMuVertexingSkimmed, " Run muon muon pairing on DQ skimmed muons including vertexing" , false );
850- // PROCESS_SWITCH(AnalysisSameEventPairing, processElectronMuonSkimmed, "Run barrel muon pairing on DQ skimmed tracks", false);
865+ // PROCESS_SWITCH(AnalysisSameEventPairing, processElectronMuonSkimmed, "Run barrel muon pairing on DQ skimmed tracks", false);
851866 PROCESS_SWITCH (AnalysisSameEventPairing, processDummy, " Dummy process function" , false );
852867};
853868
@@ -858,8 +873,8 @@ struct AnalysisDileptonTrack {
858873 Configurable<string> fConfigTrackCuts {" cfgLeptonCuts" , " " , " Comma separated list of barrel track cuts" };
859874 Configurable<bool > fConfigFillCandidateTable {" cfgFillCandidateTable" , false , " Produce a single flat tables with all relevant information dilepton-track candidates" };
860875 Filter eventFilter = aod::dqanalysisflags::isEventSelected == 1 ;
861- // Filter dileptonFilter = aod::reducedpair::mass > 2.92f && aod::reducedpair::mass < 3.16f && aod::reducedpair::sign == 0;
862- // Filter dileptonFilter = aod::reducedpair::mass > 2.6f && aod::reducedpair::mass < 3.5f && aod::reducedpair::sign == 0;
876+ // Filter dileptonFilter = aod::reducedpair::mass > 2.92f && aod::reducedpair::mass < 3.16f && aod::reducedpair::sign == 0;
877+ // Filter dileptonFilter = aod::reducedpair::mass > 2.6f && aod::reducedpair::mass < 3.5f && aod::reducedpair::sign == 0;
863878
864879 Configurable<std::string> fConfigMCRecSignals {" cfgBarrelMCRecSignals" , " " , " Comma separated list of MC signals (reconstructed)" };
865880 Configurable<std::string> fConfigMCGenSignals {" cfgBarrelMCGenSignals" , " " , " Comma separated list of MC signals (generated)" };
@@ -899,9 +914,9 @@ struct AnalysisDileptonTrack {
899914 // TODO: Create separate histogram directories for each selection used in the creation of the dileptons
900915 // TODO: Implement possibly multiple selections for the associated track ?
901916 if (context.mOptions .get <bool >(" processDimuonMuonSkimmed" )) {
902- // DefineHistograms(fHistMan, "DileptonsSelected;DileptonTrackInvMass;DileptonsSelected_matchedMC;DileptonTrackInvMass_matchedMC;"); // define all histograms
903- // VarManager::SetUseVars(fHistMan->GetUsedVars());
904- // fOutputList.setObject(fHistMan->GetMainHistogramList());
917+ // DefineHistograms(fHistMan, "DileptonsSelected;DileptonTrackInvMass;DileptonsSelected_matchedMC;DileptonTrackInvMass_matchedMC;"); // define all histograms
918+ // VarManager::SetUseVars(fHistMan->GetUsedVars());
919+ // fOutputList.setObject(fHistMan->GetMainHistogramList());
905920
906921 histNames += " DileptonsSelected;DileptonTrackInvMass;" ;
907922
0 commit comments