@@ -1300,6 +1300,7 @@ struct AnalysisSameEventPairing {
13001300 Produces<aod::JPsieeCandidates> PromptNonPromptSepTable;
13011301 Produces<aod::DileptonPolarization> dileptonPolarList;
13021302 Produces<aod::DileptonsEventInfo> dileptonEventInfoList;
1303+ Produces<aod::DileptonsMiniTree> dileptonMiniTree;
13031304
13041305 o2::base::MatLayerCylSet* fLUT = nullptr ;
13051306 int fCurrentRun ; // needed to detect if the run changed and trigger update of calibrations etc.
@@ -1362,6 +1363,11 @@ struct AnalysisSameEventPairing {
13621363 Configurable<int64_t > timestampCCDB{" timestampCCDB" , -1 , " timestamp of the ONNX file for ML model used to query in CCDB" };
13631364 Configurable<bool > loadModelsFromCCDB{" loadModelsFromCCDB" , false , " Flag to enable or disable the loading of models from CCDB" };
13641365 } fConfigML ;
1366+ struct : ConfigurableGroup {
1367+ Configurable<bool > fConfigMiniTree {" useMiniTree.cfgMiniTree" , false , " Produce a single flat table with minimal information for analysis" };
1368+ Configurable<float > fConfigMiniTreeMinMass {" useMiniTree.cfgMiniTreeMinMass" , 2 , " Min. mass cut for minitree" };
1369+ Configurable<float > fConfigMiniTreeMaxMass {" useMiniTree.cfgMiniTreeMaxMass" , 5 , " Max. mass cut for minitree" };
1370+ } useMiniTree;
13651371
13661372 Service<o2::ccdb::BasicCCDBManager> fCCDB ;
13671373 o2::ccdb::CcdbApi fCCDBApi ;
@@ -1886,6 +1892,9 @@ struct AnalysisSameEventPairing {
18861892 dileptonPolarList.reserve (reserveSize);
18871893 dileptonEventInfoList.reserve (reserveSize);
18881894 }
1895+ if (useMiniTree.fConfigMiniTree ) {
1896+ dileptonMiniTree.reserve (reserveSize);
1897+ }
18891898
18901899 fAmbiguousPairs .clear ();
18911900 constexpr bool eventHasQvector = ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0 );
@@ -2180,6 +2189,25 @@ struct AnalysisSameEventPairing {
21802189 isAmbiInBunch, isAmbiOutOfBunch, VarManager::fgValues[VarManager::kMultFT0A ], VarManager::fgValues[VarManager::kMultFT0C ], VarManager::fgValues[VarManager::kCentFT0M ], VarManager::fgValues[VarManager::kVtxNcontribReal ]);
21812190 if constexpr (TPairType == VarManager::kDecayToMuMu ) {
21822191 fHistMan ->FillHistClass (histNames[icut][0 ].Data (), VarManager::fgValues);
2192+ if (useMiniTree.fConfigMiniTree ) {
2193+ auto t1 = a1.template reducedmuon_as <TTracks>();
2194+ auto t2 = a2.template reducedmuon_as <TTracks>();
2195+
2196+ // By default (kPt1, kEta1, kPhi1) are for the positive charge
2197+ float dileptonMass = VarManager::fgValues[VarManager::kMass ];
2198+ if (dileptonMass > useMiniTree.fConfigMiniTreeMinMass && dileptonMass < useMiniTree.fConfigMiniTreeMaxMass ) {
2199+ // In the miniTree the positive daughter is positioned as first
2200+ if (t1.sign () > 0 ) {
2201+ dileptonMiniTree (VarManager::fgValues[VarManager::kMass ], VarManager::fgValues[VarManager::kPt ], VarManager::fgValues[VarManager::kRap ],
2202+ VarManager::fgValues[VarManager::kCentFT0C ], VarManager::fgValues[VarManager::kCos2DeltaPhi ],
2203+ t1.pt (), t1.eta (), t1.phi (), t2.pt (), t2.eta (), t2.phi ());
2204+ } else {
2205+ dileptonMiniTree (VarManager::fgValues[VarManager::kMass ], VarManager::fgValues[VarManager::kPt ], VarManager::fgValues[VarManager::kRap ],
2206+ VarManager::fgValues[VarManager::kCentFT0C ], VarManager::fgValues[VarManager::kCos2DeltaPhi ],
2207+ t2.pt (), t2.eta (), t2.phi (), t1.pt (), t1.eta (), t1.phi ());
2208+ }
2209+ }
2210+ }
21832211 if (fConfigAmbiguousMuonHistograms ) {
21842212 if (isAmbiInBunch) {
21852213 fHistMan ->FillHistClass (histNames[icut][3 + histIdxOffset].Data (), VarManager::fgValues);
0 commit comments