@@ -76,10 +76,12 @@ static const std::vector<std::string> tableNames{
7676 " CascToTraRefs" , // .31 (interlink CascCores -> TraCascCores)
7777 " CascToKFRefs" , // .32 (interlink CascCores -> KFCascCores)
7878 " TraToCascRefs" , // .33 (interlink TraCascCores -> CascCores)
79- " KFToCascRefs" // .34 (interlink KFCascCores -> CascCores)
79+ " KFToCascRefs" , // .34 (interlink KFCascCores -> CascCores)
80+ " V0FoundTags" , // .35 (tags found vs findable V0s in findable mode)
81+ " CascFoundTags" // .36 (tags found vs findable Cascades in findable mode)
8082};
8183
82- static constexpr int nTablesConst = 35 ;
84+ static constexpr int nTablesConst = 37 ;
8385
8486static const std::vector<std::string> parameterNames{" enable" };
8587static const int defaultParameters[nTablesConst][nParameters]{
@@ -117,6 +119,8 @@ static const int defaultParameters[nTablesConst][nParameters]{
117119 {-1 },
118120 {-1 },
119121 {-1 },
122+ {-1 },
123+ {-1 },
120124 {-1 }};
121125
122126// use parameters + cov mat non-propagated, aux info + (extension propagated)
@@ -169,6 +173,8 @@ struct StrangenessBuilder {
169173 kCascToKFRefs ,
170174 kTraToCascRefs ,
171175 kKFToCascRefs ,
176+ kV0FoundTags ,
177+ kCascFoundTags ,
172178 nTables };
173179
174180 // __________________________________________________
@@ -234,6 +240,11 @@ struct StrangenessBuilder {
234240 // Produces<aod::TraToCascRefs> traToCascRefs; // tracked -> cascades
235241 // Produces<aod::KFToCascRefs> kfToCascRefs; // KF -> cascades
236242
243+ // __________________________________________________
244+ // Findable tags
245+ Produces<aod::V0FoundTags> v0FoundTag;
246+ Produces<aod::CascFoundTags> cascFoundTag;
247+
237248 Configurable<LabeledArray<int >> enabledTables{" enabledTables" ,
238249 {defaultParameters[0 ], nTables, nParameters, tableNames, parameterNames},
239250 " Produce this table: -1 for autodetect; otherwise, 0/1 is false/true" };
@@ -274,6 +285,7 @@ struct StrangenessBuilder {
274285 Configurable<bool > mc_addGeneratedLambda{" mc_addGeneratedLambda" , true , " add V0MCCore entry for generated, not-recoed Lambda" };
275286 Configurable<bool > mc_addGeneratedAntiLambda{" mc_addGeneratedAntiLambda" , true , " add V0MCCore entry for generated, not-recoed AntiLambda" };
276287 Configurable<bool > mc_addGeneratedGamma{" mc_addGeneratedGamma" , false , " add V0MCCore entry for generated, not-recoed Gamma" };
288+ Configurable<bool > mc_addGeneratedGammaMakeCollinear{" mc_addGeneratedGammaMakeCollinear" , true , " when adding findable gammas, mark them as collinear" };
277289 Configurable<bool > mc_findableDetachedV0{" mc_findableDetachedV0" , false , " if true, generate findable V0s that have collisionId -1. Caution advised." };
278290 } v0BuilderOpts;
279291
@@ -349,6 +361,7 @@ struct StrangenessBuilder {
349361 int pdgCode = 0 ; // undefined if not MC - useful for faster finding
350362 int particleId = -1 ; // de-reference the V0 particle if necessary
351363 bool isCollinearV0 = false ;
364+ bool found = false ;
352365 };
353366 struct cascadeEntry {
354367 int globalId = -1 ;
@@ -357,7 +370,7 @@ struct StrangenessBuilder {
357370 int posTrackId = -1 ;
358371 int negTrackId = -1 ;
359372 int bachTrackId = -1 ;
360- int cascadeType = 0 ; // extra addition (0: standard, 1: findable but not found)
373+ bool found = false ;
361374 };
362375 std::vector<v0Entry> v0List;
363376 std::vector<cascadeEntry> cascadeList;
@@ -709,6 +722,7 @@ struct StrangenessBuilder {
709722 currentV0Entry.pdgCode = 0 ;
710723 currentV0Entry.particleId = -1 ;
711724 currentV0Entry.isCollinearV0 = v0.isCollinearV0 ();
725+ currentV0Entry.found = true ;
712726 v0List.push_back (currentV0Entry);
713727 }
714728 }
@@ -789,6 +803,10 @@ struct StrangenessBuilder {
789803 currentV0Entry.pdgCode = positiveTrackIndex.pdgCode ;
790804 currentV0Entry.particleId = positiveTrackIndex.originId ;
791805 currentV0Entry.isCollinearV0 = false ;
806+ if (v0BuilderOpts.mc_addGeneratedGammaMakeCollinear .value && currentV0Entry.pdgCode == 22 ) {
807+ currentV0Entry.isCollinearV0 = true ;
808+ }
809+ currentV0Entry.found = false ;
792810 if (bestCollisionArray[positiveTrackIndex.mcCollisionId ] < 0 ) {
793811 collisionLessV0s++;
794812 }
@@ -808,6 +826,10 @@ struct StrangenessBuilder {
808826 currentV0Entry.pdgCode = positiveTrackIndex.pdgCode ;
809827 currentV0Entry.particleId = positiveTrackIndex.originId ;
810828 currentV0Entry.isCollinearV0 = false ;
829+ if (v0BuilderOpts.mc_addGeneratedGammaMakeCollinear .value && currentV0Entry.pdgCode == 22 ) {
830+ currentV0Entry.isCollinearV0 = true ;
831+ }
832+ currentV0Entry.found = false ;
811833 for (const auto & v0 : v0s) {
812834 if (v0.posTrackId () == positiveTrackIndex.globalId &&
813835 v0.negTrackId () == negativeTrackIndex.globalId ) {
@@ -816,6 +838,7 @@ struct StrangenessBuilder {
816838 currentV0Entry.globalId = v0.globalIndex ();
817839 currentV0Entry.v0Type = v0.v0Type ();
818840 currentV0Entry.isCollinearV0 = v0.isCollinearV0 ();
841+ currentV0Entry.found = true ;
819842 break ;
820843 }
821844 }
@@ -851,7 +874,7 @@ struct StrangenessBuilder {
851874 currentCascadeEntry.posTrackId = v0.posTrackId ();
852875 currentCascadeEntry.negTrackId = v0.negTrackId ();
853876 currentCascadeEntry.bachTrackId = cascade.bachelorId ();
854- currentCascadeEntry.cascadeType = 0 ; // found
877+ currentCascadeEntry.found = true ;
855878 cascadeList.push_back (currentCascadeEntry);
856879 }
857880 }
@@ -954,7 +977,7 @@ struct StrangenessBuilder {
954977 currentCascadeEntry.posTrackId = v0.posTrackId ;
955978 currentCascadeEntry.negTrackId = v0.negTrackId ;
956979 currentCascadeEntry.bachTrackId = bachelorTrackIndex.globalId ;
957- currentCascadeEntry.cascadeType = 1 ; // findable (but not found)
980+ currentCascadeEntry.found = false ;
958981 cascadeList.push_back (currentCascadeEntry);
959982 if (bestCollisionArray[bachelorTrackIndex.mcCollisionId ] < 0 ) {
960983 collisionLessCascades++;
@@ -974,7 +997,7 @@ struct StrangenessBuilder {
974997 currentCascadeEntry.posTrackId = v0.posTrackId ;
975998 currentCascadeEntry.negTrackId = v0.negTrackId ;
976999 currentCascadeEntry.bachTrackId = bachelorTrackIndex.globalId ;
977- currentCascadeEntry.cascadeType = 1 ; // findable (but not found)
1000+ currentCascadeEntry.found = false ;
9781001 if (bestCollisionArray[bachelorTrackIndex.mcCollisionId ] < 0 ) {
9791002 collisionLessCascades++;
9801003 }
@@ -985,7 +1008,7 @@ struct StrangenessBuilder {
9851008 cascade.bachelorId () == bachelorTrackIndex.globalId ) {
9861009 // this will override type, but not collision index
9871010 // N.B.: collision index checks still desirable!
988- currentCascadeEntry.cascadeType = 0 ;
1011+ currentCascadeEntry.found = true ;
9891012 currentCascadeEntry.globalId = cascade.globalIndex ();
9901013 break ;
9911014 }
@@ -1226,6 +1249,12 @@ struct StrangenessBuilder {
12261249 histos.fill (HIST (" hTableBuildingStatistics" ), kMcV0Labels );
12271250 }
12281251
1252+ // Construct found tag
1253+ if (mEnabledTables [kV0FoundTags ]) {
1254+ v0FoundTag (v0.found );
1255+ histos.fill (HIST (" hTableBuildingStatistics" ), kV0FoundTags );
1256+ }
1257+
12291258 // Mark mcParticle as recoed (no searching necessary afterwards)
12301259 if (thisInfo.label > -1 ) {
12311260 mcParticleIsReco[thisInfo.label ] = true ;
@@ -1582,6 +1611,12 @@ struct StrangenessBuilder {
15821611 histos.fill (HIST (" hTableBuildingStatistics" ), kMcCascLabels );
15831612 }
15841613
1614+ // Construct found tag
1615+ if (mEnabledTables [kCascFoundTags ]) {
1616+ cascFoundTag (cascade.found );
1617+ histos.fill (HIST (" hTableBuildingStatistics" ), kCascFoundTags );
1618+ }
1619+
15851620 // Mark mcParticle as recoed (no searching necessary afterwards)
15861621 if (thisCascInfo.label > -1 ) {
15871622 mcParticleIsReco[thisCascInfo.label ] = true ;
0 commit comments