@@ -56,7 +56,7 @@ struct Alice3Multicharm {
5656 static constexpr float ToMicrons = 1e+4 ;
5757
5858 struct : ConfigurableGroup {
59- std::string prefix = " bdt" ; // JSON group name
59+ std::string prefix = " bdt" ;
6060 Configurable<std::string> ccdbUrl{" ccdbUrl" , " http://alice-ccdb.cern.ch" , " url of the ccdb repository" };
6161 Configurable<std::string> localPath{" localPath" , " MCharm_BDTModel.onnx" , " (std::string) Path to the local .onnx file." };
6262 Configurable<std::string> pathCCDB{" pathCCDB" , " Users/j/jekarlss/MLModels" , " Path on CCDB" };
@@ -80,34 +80,72 @@ struct Alice3Multicharm {
8080 ConfigurableAxis axisBDTScoreFine{" axisBDTScoreFine" , {1000 , 0 , 1 }, " BDT Score for 1D histogram" };
8181 ConfigurableAxis axisPt{" axisPt" , {VARIABLE_WIDTH , 0 .0f , 0 .1f , 0 .2f , 0 .3f , 0 .4f , 0 .5f , 0 .6f , 0 .7f , 0 .8f , 0 .9f , 1 .0f , 1 .1f , 1 .2f , 1 .3f , 1 .4f , 1 .5f , 1 .6f , 1 .7f , 1 .8f , 1 .9f , 2 .0f , 2 .2f , 2 .4f , 2 .6f , 2 .8f , 3 .0f , 3 .2f , 3 .4f , 3 .6f , 3 .8f , 4 .0f , 4 .4f , 4 .8f , 5 .2f , 5 .6f , 6 .0f , 6 .5f , 7 .0f , 7 .5f , 8 .0f , 9 .0f , 10 .0f , 11 .0f , 12 .0f , 13 .0f , 14 .0f , 15 .0f , 17 .0f , 19 .0f , 21 .0f , 23 .0f , 25 .0f , 30 .0f , 35 .0f , 40 .0f , 50 .0f }, " pt axis for QA histograms" };
8282
83- Configurable<float > xiMinDCAxy{" xiMinDCAxy" , -1 , " [0] in |DCAxy| > [0]+[1]/pT" };
84- Configurable<float > xiMinDCAz{" xiMinDCAz" , -1 , " [0] in |DCAz| > [0]+[1]/pT" };
85- Configurable<float > xiMinRadius{" xiMinRadius" , -1 , " Minimum R2D for Xic decay (cm)" };
86-
87- Configurable<float > picMinDCAxy{" picMinDCAxy" , -1 , " [0] in |DCAz| > [0]+[1]/pT" };
88- Configurable<float > picMinDCAz{" picMinDCAz" , -1 , " [0] in |DCAxy| > [0]+[1]/pT" };
89- Configurable<float > picMinPt{" picMinPt" , -1 , " Minimum pT for Xic pions" };
90-
91- Configurable<float > piccMinDCAxy{" piccMinDCAxy" , -1 , " [0] in |DCAxy| > [0]+[1]/pT" };
92- Configurable<float > piccMinDCAz{" piccMinDCAz" , -1 , " [0] in |DCAz| > [0]+[1]/pT" };
93- Configurable<float > piccMinPt{" piccMinPt" , -1 , " Minimum pT for Xicc pions" };
94-
95- Configurable<float > xicMaxDauDCA{" xicMaxDauDCA" , 1e+4 , " DCA between Xic daughters (cm)" };
96- Configurable<float > xicMinDCAxy{" xicMinDCAxy" , -1 , " [0] in |DCAz| > [0]+[1]/pT" };
97- Configurable<float > xicMinDCAz{" xicMinDCAz" , -1 , " [0] in |DCAxy| > [0]+[1]/pT" };
98- Configurable<float > xiccMaxDCAxy{" xiccMaxDCAxy" , 1e+4 , " Maximum DCAxy" };
99- Configurable<float > xiccMaxDCAz{" xiccMaxDCAz" , 1e+4 , " Maximum DCAz" };
100- Configurable<float > xicMinRadius{" xicMinRadius" , -1 , " Minimum R2D for Xic decay (cm)" };
101- Configurable<float > xicMinDecayDistanceFromPV{" xicMinDecayDistanceFromPV" , -1 , " Minimum distance for Xic decay from PV (cm)" };
102- Configurable<float > xicMinProperLength{" xicMinProperLength" , -1 , " Minimum proper length for Xic decay (cm)" };
103- Configurable<float > xicMaxProperLength{" xicMaxProperLength" , 1e+4 , " Minimum proper length for Xic decay (cm)" };
104-
105- Configurable<float > xiccMaxDauDCA{" xiccMaxDauDCA" , 1e+4 , " DCA between Xicc daughters (cm)" };
106- Configurable<float > xiccMinRadius{" xiccMinRadius" , -1 , " Minimum R2D for Xicc decay (cm)" };
107- Configurable<float > xiccMinProperLength{" xiccMinProperLength" , -1 , " Minimum proper length for Xicc decay (cm)" };
108- Configurable<float > xiccMaxProperLength{" xiccMaxProperLength" , 1e+4 , " Minimum proper length for Xicc decay (cm)" };
109- Configurable<int > otfConfig{" otfConfig" , 0 , " OTF configuration flag" };
83+ struct : ConfigurableGroup {
84+ std::string prefix = " selVals" ;
85+ Configurable<float > xiMinConstDCAxy{" xiMinConstDCAxy" , -1 , " [0] in |DCAxy| > [0]+[1]/pT" };
86+ Configurable<float > xiMinPtDepDCAxy{" xiMinPtDepDCAxy" , 0 , " [1] in |DCAxy| > [0]+[1]/pT" };
87+ Configurable<float > xiMinConstDCAz{" xiMinConstDCAz" , -1 , " [0] in |DCAz| > [0]+[1]/pT" };
88+ Configurable<float > xiMinPtDepDCAz{" xiMinPtDepDCAz" , 0 , " [1] in |DCAz| > [0]+[1]/pT" };
89+ Configurable<float > xiMinRadius{" xiMinRadius" , -1 , " Minimum R2D for Xi decay (cm)" };
90+
91+ Configurable<float > picMinConstDCAxy{" picMinConstDCAxy" , -1 , " [0] in |DCAz| > [0]+[1]/pT" };
92+ Configurable<float > picMinPtDepDCAxy{" picMinPtDepDCAxy" , 0 , " [1] in |DCAz| > [0]+[1]/pT" };
93+ Configurable<float > picMinConstDCAz{" picMinConstDCAz" , -1 , " [0] in |DCAxy| > [0]+[1]/pT" };
94+ Configurable<float > picMinPtDepDCAz{" picMinPtDepDCAz" , 0 , " [1] in |DCAxy| > [0]+[1]/pT" };
95+ Configurable<float > picMinPt{" picMinPt" , -1 , " Minimum pT for Xic pions" };
96+
97+ Configurable<float > piccMinConstDCAxy{" piccMinConstDCAxy" , -1 , " [0] in |DCAxy| > [0]+[1]/pT" };
98+ Configurable<float > piccMinPtDepDCAxy{" piccMinPtDepDCAxy" , 0 , " [1] in |DCAxy| > [0]+[1]/pT" };
99+ Configurable<float > piccMinConstDCAz{" piccMinConstDCAz" , -1 , " [0] in |DCAz| > [0]+[1]/pT" };
100+ Configurable<float > piccMinPtDepDCAz{" piccMinPtDepDCAz" , 0 , " [1] in |DCAz| > [0]+[1]/pT" };
101+ Configurable<float > piccMinPt{" piccMinPt" , -1 , " Minimum pT for Xicc pions" };
102+
103+ Configurable<float > xicMinConstDCAxy{" xicMinConstDCAxy" , -1 , " [0] in |DCAz| > [0]+[1]/pT" };
104+ Configurable<float > xicMinConstDCAz{" xicMinConstDCAz" , -1 , " [0] in |DCAxy| > [0]+[1]/pT" };
105+ Configurable<float > xicMinPtDepDCAxy{" xicMinPtDepDCAxy" , -1 , " [0] in |DCAz| > [0]+[1]/pT" };
106+ Configurable<float > xicMinPtDepDCAz{" xicMinPtDepDCAz" , -1 , " [0] in |DCAxy| > [0]+[1]/pT" };
107+ Configurable<float > xicMaxDauDCA{" xicMaxDauDCA" , 1e+4 , " DCA between Xic daughters (cm)" };
108+ Configurable<float > xicMinRadius{" xicMinRadius" , -1 , " Minimum R2D for Xic decay (cm)" };
109+ Configurable<float > xicMinDecayDistanceFromPV{" xicMinDecayDistanceFromPV" , -1 , " Minimum distance for Xic decay from PV (cm)" };
110+ Configurable<float > xicMinProperLength{" xicMinProperLength" , -1 , " Minimum proper length for Xic decay (cm)" };
111+ Configurable<float > xicMaxProperLength{" xicMaxProperLength" , 1e+4 , " Minimum proper length for Xic decay (cm)" };
112+
113+ Configurable<float > xiccMaxDCAxy{" xiccMaxDCAxy" , 1e+4 , " Maximum DCAxy" };
114+ Configurable<float > xiccMaxDCAz{" xiccMaxDCAz" , 1e+4 , " Maximum DCAz" };
115+ Configurable<float > xiccMaxDauDCA{" xiccMaxDauDCA" , 1e+4 , " DCA between Xicc daughters (cm)" };
116+ Configurable<float > xiccMinRadius{" xiccMinRadius" , -1 , " Minimum R2D for Xicc decay (cm)" };
117+ Configurable<float > xiccMinProperLength{" xiccMinProperLength" , -1 , " Minimum proper length for Xicc decay (cm)" };
118+ Configurable<float > xiccMaxProperLength{" xiccMaxProperLength" , 1e+4 , " Minimum proper length for Xicc decay (cm)" };
119+ } selVals;
110120
121+ struct : ConfigurableGroup {
122+ std::string prefix = " selVals" ;
123+ Configurable<bool > applyXiMinDCAxy{" applyXiMinDCAxy" , false , " Apply |DCAxy| > [0]+[1]/pT" };
124+ Configurable<bool > applyXiMinDCAz{" applyXiMinDCAz" , false , " Apply |DCAz| > [0]+[1]/pT" };
125+ Configurable<bool > applyXiMinRadius{" applyXiMinRadius" , false , " Apply min radius" };
126+
127+ Configurable<bool > applyPicMinDCAxy{" applyPicMinDCAxy" , false , " Apply |DCAxy| > [0]+[1]/pT" };
128+ Configurable<bool > applyPicMinDCAz{" applyPicMinDCAz" , false , " Apply |DCAz| > [0]+[1]/pT" };
129+ Configurable<bool > applyPiccMinDCAxy{" applyPiccMinDCAxy" , false , " Apply |DCAxy| > [0]+[1]/pT" };
130+ Configurable<bool > applyPiccMinDCAz{" applyPiccMinDCAz" , false , " Apply |DCAz| > [0]+[1]/pT" };
131+
132+ Configurable<bool > applyXicMinDCAxy{" applyXicMinDCAxy" , false , " Apply |DCAxy| > [0]+[1]/pT" };
133+ Configurable<bool > applyXicMinDCAz{" applyXicMinDCAz" , false , " Apply |DCAz| > [0]+[1]/pT" };
134+ Configurable<bool > applyXicMinRadius{" applyXicMinRadius" , false , " Apply min radius" };
135+ Configurable<bool > applyXicMaxDauDCA{" applyXicMaxDauDCA" , false , " Apply max dau dca" };
136+ Configurable<bool > applyXicMinDistanceFromPV{" applyXicMinDistanceFromPV" , false , " Apply min distance from PV (3D)" };
137+ Configurable<bool > applyXicMinProperLength{" applyXicMinProperLength" , false , " Apply min proper length" };
138+ Configurable<bool > applyXicMaxProperLength{" applyXicMaxProperLength" , false , " Apply max proper length" };
139+
140+ Configurable<bool > applyXiccMinDCAxy{" applyXiccMinDCAxy" , false , " Apply |DCAxy| > [0]+[1]/pT" };
141+ Configurable<bool > applyXiccMinDCAz{" applyXiccMinDCAz" , false , " Apply |DCAz| > [0]+[1]/pT" };
142+ Configurable<bool > applyXiccMinRadius{" applyXiccMinRadius" , false , " Apply min radius" };
143+ Configurable<bool > applyXiccMaxDauDCA{" applyXiccMaxDauDCA" , false , " Apply max dau dca" };
144+ Configurable<bool > applyXiccMinProperLength{" applyXiccMinProperLength" , false , " Apply min proper length" };
145+ Configurable<bool > applyXiccMaxProperLength{" applyXiccMaxProperLength" , false , " Apply max proper length" };
146+ } selFlags;
147+
148+ Configurable<int > otfConfig{" otfConfig" , 0 , " OTF configuration flag" };
111149 Filter configFilter = (aod::otfmulticharm::lutConfigId == otfConfig);
112150
113151 void init (InitContext&)
@@ -162,16 +200,16 @@ struct Alice3Multicharm {
162200 hMCharmBuilding->GetXaxis ()->SetBinLabel (1 , " nTotalCandidates" );
163201 hMCharmBuilding->GetXaxis ()->SetBinLabel (2 , " xicMaxDauDCA" );
164202 hMCharmBuilding->GetXaxis ()->SetBinLabel (3 , " xiccMaxDauDCA" );
165- hMCharmBuilding->GetXaxis ()->SetBinLabel (4 , " xiMinDCAxy " );
166- hMCharmBuilding->GetXaxis ()->SetBinLabel (5 , " xiMinDCAz " );
203+ hMCharmBuilding->GetXaxis ()->SetBinLabel (4 , " xiMinConstDCAxy " );
204+ hMCharmBuilding->GetXaxis ()->SetBinLabel (5 , " xiMinConstDCAz " );
167205 hMCharmBuilding->GetXaxis ()->SetBinLabel (6 , " pi1cMinDCAxy" );
168206 hMCharmBuilding->GetXaxis ()->SetBinLabel (7 , " pi1cMinDCAz" );
169207 hMCharmBuilding->GetXaxis ()->SetBinLabel (8 , " pi2cMinDCAxy" );
170208 hMCharmBuilding->GetXaxis ()->SetBinLabel (9 , " pi2cMinDCAz" );
171- hMCharmBuilding->GetXaxis ()->SetBinLabel (10 , " piccMinDCAxy " );
172- hMCharmBuilding->GetXaxis ()->SetBinLabel (11 , " piccMinDCAz " );
173- hMCharmBuilding->GetXaxis ()->SetBinLabel (12 , " xicMinDCAxy " );
174- hMCharmBuilding->GetXaxis ()->SetBinLabel (13 , " xicMinDCAz " );
209+ hMCharmBuilding->GetXaxis ()->SetBinLabel (10 , " piccMinConstDCAxy " );
210+ hMCharmBuilding->GetXaxis ()->SetBinLabel (11 , " piccMinConstDCAz " );
211+ hMCharmBuilding->GetXaxis ()->SetBinLabel (12 , " xicMinConstDCAxy " );
212+ hMCharmBuilding->GetXaxis ()->SetBinLabel (13 , " xicMinConstDCAz " );
175213 hMCharmBuilding->GetXaxis ()->SetBinLabel (14 , " xiccMaxDCAxy" );
176214 hMCharmBuilding->GetXaxis ()->SetBinLabel (15 , " xiccMaxDCAz" );
177215 hMCharmBuilding->GetXaxis ()->SetBinLabel (16 , " xicMinRadius" );
@@ -334,107 +372,107 @@ struct Alice3Multicharm {
334372 }
335373
336374 histos.fill (HIST (" hMCharmBuilding" ), 0 );
337- if (xiccCand.xicDauDCA () > xicMaxDauDCA) {
375+ if (selFlags. applyXicMaxDauDCA && xiccCand.xicDauDCA () > selVals. xicMaxDauDCA ) {
338376 continue ;
339377 }
340378
341379 histos.fill (HIST (" hMCharmBuilding" ), 1 );
342- if (xiccCand.xiccDauDCA () > xiccMaxDauDCA) {
380+ if (selFlags. applyXiccMaxDauDCA && xiccCand.xiccDauDCA () > selVals. xiccMaxDauDCA ) {
343381 continue ;
344382 }
345383
346384 histos.fill (HIST (" hMCharmBuilding" ), 2 );
347- if (std::fabs (xiccCand.xiDCAxy ()) < xiMinDCAxy ) {
385+ if (selFlags. applyXiMinDCAxy && std::fabs (xiccCand.xiDCAxy ()) < selVals. xiMinConstDCAxy + (selVals. xiMinPtDepDCAxy / xiccCand. xiPt ()) ) {
348386 continue ;
349387 }
350388
351389 histos.fill (HIST (" hMCharmBuilding" ), 3 );
352- if (std::fabs (xiccCand.xiDCAz ()) < xiMinDCAz ) {
390+ if (selFlags. applyXiMinDCAz && std::fabs (xiccCand.xiDCAz ()) < selVals. xiMinConstDCAz + (selVals. xiMinPtDepDCAz / xiccCand. xiPt ()) ) {
353391 continue ;
354392 }
355393
356394 histos.fill (HIST (" hMCharmBuilding" ), 4 );
357- if (std::fabs (xiccCand.pi1cDCAxy ()) < picMinDCAxy ) {
395+ if (selFlags. applyPicMinDCAxy && std::fabs (xiccCand.pi1cDCAxy ()) < selVals. picMinConstDCAxy + (selVals. picMinPtDepDCAxy / xiccCand. pi1cPt ()) ) {
358396 continue ;
359397 }
360398
361399 histos.fill (HIST (" hMCharmBuilding" ), 5 );
362- if (std::fabs (xiccCand.pi1cDCAz ()) < picMinDCAz ) {
400+ if (selFlags. applyPicMinDCAz && std::fabs (xiccCand.pi1cDCAz ()) < selVals. picMinConstDCAz + (selVals. picMinPtDepDCAz / xiccCand. pi1cPt ()) ) {
363401 continue ;
364402 }
365403
366404 histos.fill (HIST (" hMCharmBuilding" ), 6 );
367- if (std::fabs (xiccCand.pi2cDCAxy ()) < picMinDCAxy ) {
405+ if (selFlags. applyPicMinDCAxy && std::fabs (xiccCand.pi2cDCAxy ()) < selVals. picMinConstDCAxy + (selVals. picMinPtDepDCAxy / xiccCand. pi2cPt ()) ) {
368406 continue ;
369407 }
370408
371409 histos.fill (HIST (" hMCharmBuilding" ), 7 );
372- if (std::fabs (xiccCand.pi2cDCAz ()) < picMinDCAz ) {
410+ if (selFlags. applyPicMinDCAz && std::fabs (xiccCand.pi2cDCAz ()) < selVals. picMinConstDCAz + (selVals. picMinPtDepDCAz / xiccCand. pi2cPt ()) ) {
373411 continue ;
374412 }
375413
376414 histos.fill (HIST (" hMCharmBuilding" ), 8 );
377- if (std::fabs (xiccCand.piccDCAxy ()) < piccMinDCAxy ) {
415+ if (selFlags. applyPiccMinDCAxy && std::fabs (xiccCand.piccDCAxy ()) < selVals. piccMinConstDCAxy + (selVals. piccMinPtDepDCAxy / xiccCand. piccPt ()) ) {
378416 continue ;
379417 }
380418
381419 histos.fill (HIST (" hMCharmBuilding" ), 9 );
382- if (std::fabs (xiccCand.piccDCAz ()) < piccMinDCAz ) {
420+ if (selFlags. applyPiccMinDCAz && std::fabs (xiccCand.piccDCAz ()) < selVals. piccMinConstDCAz + (selVals. piccMinPtDepDCAz / xiccCand. piccPt ()) ) {
383421 continue ;
384422 }
385423
386424 histos.fill (HIST (" hMCharmBuilding" ), 10 );
387- if (std::fabs (xiccCand.xicDCAxy ()) < xicMinDCAxy ) {
425+ if (selFlags. applyXicMinDCAxy && std::fabs (xiccCand.xicDCAxy ()) < selVals. xicMinConstDCAxy + (selVals. xicMinPtDepDCAxy / xiccCand. xicPt ()) ) {
388426 continue ;
389427 }
390428
391429 histos.fill (HIST (" hMCharmBuilding" ), 11 );
392- if (std::fabs (xiccCand.xicDCAz ()) < xicMinDCAz ) {
430+ if (selFlags. applyXicMinDCAz && std::fabs (xiccCand.xicDCAz ()) < selVals. xicMinConstDCAz + (selVals. xicMinPtDepDCAz / xiccCand. xicPt ()) ) {
393431 continue ;
394432 }
395433
396434 histos.fill (HIST (" hMCharmBuilding" ), 12 );
397- if (std::fabs (xiccCand.xiccDCAxy ()) > xiccMaxDCAxy) {
435+ if (selFlags. applyXiccMinDCAxy && std::fabs (xiccCand.xiccDCAxy ()) > selVals. xiccMaxDCAxy ) {
398436 continue ;
399437 }
400438
401439 histos.fill (HIST (" hMCharmBuilding" ), 13 );
402- if (std::fabs (xiccCand.xiccDCAz ()) > xiccMaxDCAz) {
440+ if (selFlags. applyXiccMinDCAz && std::fabs (xiccCand.xiccDCAz ()) > selVals. xiccMaxDCAz ) {
403441 continue ;
404442 }
405443
406444 histos.fill (HIST (" hMCharmBuilding" ), 14 );
407- if (xiccCand.xicDecayRadius2D () < xicMinRadius) {
445+ if (selFlags. applyXicMinRadius && xiccCand.xicDecayRadius2D () < selVals. xicMinRadius ) {
408446 continue ;
409447 }
410448
411449 histos.fill (HIST (" hMCharmBuilding" ), 15 );
412- if (xiccCand.xiccDecayRadius2D () < xiccMinRadius) {
450+ if (selFlags. applyXiccMinRadius && xiccCand.xiccDecayRadius2D () < selVals. xiccMinRadius ) {
413451 continue ;
414452 }
415453
416454 histos.fill (HIST (" hMCharmBuilding" ), 16 );
417- if (xiccCand.xicProperLength () < xicMinProperLength) {
455+ if (selFlags. applyXicMinProperLength && xiccCand.xicProperLength () < selVals. xicMinProperLength ) {
418456 continue ;
419457 }
420458
421459 histos.fill (HIST (" hMCharmBuilding" ), 17 );
422- if (xiccCand.xicProperLength () > xicMaxProperLength) {
460+ if (selFlags. applyXicMaxProperLength && xiccCand.xicProperLength () > selVals. xicMaxProperLength ) {
423461 continue ;
424462 }
425463
426464 histos.fill (HIST (" hMCharmBuilding" ), 18 );
427- if (xiccCand.xiccProperLength () < xiccMinProperLength) {
465+ if (selFlags. applyXiccMinProperLength && xiccCand.xiccProperLength () < selVals. xiccMinProperLength ) {
428466 continue ;
429467 }
430468
431469 histos.fill (HIST (" hMCharmBuilding" ), 19 );
432- if (xiccCand.xiccProperLength () > xiccMaxProperLength) {
470+ if (selFlags. applyXiccMaxProperLength && xiccCand.xiccProperLength () > selVals. xiccMaxProperLength ) {
433471 continue ;
434472 }
435473
436474 histos.fill (HIST (" hMCharmBuilding" ), 20 );
437- if (xiccCand.xicDistanceFromPV () < xicMinDecayDistanceFromPV) {
475+ if (selFlags. applyXicMinDistanceFromPV && xiccCand.xicDistanceFromPV () < selVals. xicMinDecayDistanceFromPV ) {
438476 continue ;
439477 }
440478
0 commit comments