@@ -221,6 +221,143 @@ struct strangederivedbuilder {
221221
222222 void init (InitContext&)
223223 {
224+ LOGF (info, " Initializing now: cross-checking correctness..." );
225+ if (doprocessCollisions +
226+ doprocessCollisionsWithUD +
227+ doprocessCollisionsWithMC +
228+ doprocessCollisionsWithUDWithMC > 1
229+ ){
230+ LOGF (fatal, " You have enabled more than one process function associated to collisions. Please check your configuration! Aborting now." );
231+ }
232+ if (doprocessTrackExtrasV0sOnly +
233+ doprocessTrackExtras +
234+ doprocessTrackExtrasNoPID +
235+ doprocessTrackExtrasMC > 1
236+ ){
237+ LOGF (fatal, " You have enabled more than one process function associated to TracksExtra. Please check your configuration! Aborting now." );
238+ }
239+
240+ LOGF (info, " ====] base information processing [===============================" );
241+ if (doprocessDataframeIDs){
242+ LOGF (info, " Process data frame IDs............: yes" );
243+ }else {
244+ LOGF (info, " Process data frame IDs............: no" );
245+ }
246+
247+ // collision processing printout
248+ if (doprocessCollisions){
249+ LOGF (info, " Collision processing type.........: no UD, no MC" );
250+ }
251+ if (doprocessCollisionsWithUD){
252+ LOGF (info, " Collision processing type.........: with UD, no MC" );
253+ }
254+ if (doprocessCollisionsWithMC){
255+ LOGF (info, " Collision processing type.........: with MC, no UD" );
256+ }
257+ if (doprocessCollisionsWithUDWithMC){
258+ LOGF (info, " Collision processing type.........: with MC, with UD" );
259+ }
260+
261+ LOGF (info, " ====] event characterization processing [=========================" );
262+ if (doprocessFT0AQVectors){
263+ LOGF (info, " Process FT0A Q-vectors............: yes" );
264+ }else {
265+ LOGF (info, " Process FT0A Q-vectors............: no" );
266+ }
267+ if (doprocessFT0CQVectors){
268+ LOGF (info, " Process FT0C Q-vectors............: yes" );
269+ }else {
270+ LOGF (info, " Process FT0C Q-vectors............: no" );
271+ }
272+ if (doprocessFT0CQVectorsLF){
273+ LOGF (info, " Process FT0C Q-vectors (LF).......: yes" );
274+ }else {
275+ LOGF (info, " Process FT0C Q-vectors (LF).......: no" );
276+ }
277+ if (doprocessFT0MQVectors){
278+ LOGF (info, " Process FT0M Q-vectors............: yes" );
279+ }else {
280+ LOGF (info, " Process FT0M Q-vectors............: no" );
281+ }
282+ if (doprocessFV0AQVectors){
283+ LOGF (info, " Process FV0A Q-vectors............: yes" );
284+ }else {
285+ LOGF (info, " Process FV0A Q-vectors............: no" );
286+ }
287+ if (doprocessTPCQVectors){
288+ LOGF (info, " Process TPC Q-vectors.............: yes" );
289+ }else {
290+ LOGF (info, " Process TPC Q-vectors.............: no" );
291+ }
292+ if (doprocessTPCQVectorsLF){
293+ LOGF (info, " Process TPC Q-vectors (LF)........: yes" );
294+ }else {
295+ LOGF (info, " Process TPC Q-vectors (LF)........: no" );
296+ }
297+ if (doprocessZDCSP){
298+ LOGF (info, " Process ZPC spectator plane.......: yes" );
299+ }else {
300+ LOGF (info, " Process ZPC spectator plane.......: no" );
301+ }
302+
303+ LOGF (info, " ====] daughter track property processing [========================" );
304+ if (doprocessTrackExtrasV0sOnly){
305+ LOGF (info, " TracksExtra processing type.......: V0s only" );
306+ }
307+ if (doprocessTrackExtras){
308+ LOGF (info, " TracksExtra processing type.......: V0s + cascades" );
309+ }
310+ if (doprocessTrackExtrasNoPID){
311+ LOGF (info, " TracksExtra processing type.......: V0s + cascades, no PID" );
312+ }
313+ if (doprocessTrackExtrasMC){
314+ LOGF (info, " TracksExtra processing type.......: V0s + cascades, Monte Carlo" );
315+ }
316+ LOGF (info, " ====] cascade interlink processing [==============================" );
317+ if (doprocessCascadeInterlinkTracked){
318+ LOGF (info, " Process cascade/tracked interlink.: yes" );
319+ }else {
320+ LOGF (info, " Process cascade/tracked interlink.: no" );
321+ }
322+ if (doprocessCascadeInterlinkKF){
323+ LOGF (info, " Process cascade/KF interlink......: yes" );
324+ }else {
325+ LOGF (info, " Process cascade/KF interlink......: no" );
326+ }
327+ LOGF (info, " ====] simulated information processing [==========================" );
328+ if (doprocessPureSimulation){
329+ LOGF (info, " Process pure simulation info......: yes" );
330+ }else {
331+ LOGF (info, " Process pure simulation info......: no" );
332+ }
333+ if (doprocessReconstructedSimulation){
334+ LOGF (info, " Process reco simulation info......: yes" );
335+ }else {
336+ LOGF (info, " Process reco simulation info......: no" );
337+ }
338+ if (doprocessBinnedGenerated){
339+ LOGF (info, " Process binned simulation info....: yes" );
340+ }else {
341+ LOGF (info, " Process binned simulation info....: no" );
342+ }
343+ if (doprocessStrangeMothers){
344+ LOGF (info, " Process strange mothers...........: yes" );
345+ }else {
346+ LOGF (info, " Process strange mothers...........: no" );
347+ }
348+ LOGF (info, " ====] findable exercise extras [==================================" );
349+ if (doprocessV0FoundTags){
350+ LOGF (info, " Process found V0 tags.............: yes" );
351+ }else {
352+ LOGF (info, " Process found V0 tags.............: no" );
353+ }
354+ if (doprocessCascFoundTags){
355+ LOGF (info, " Process found cascade tags........: yes" );
356+ }else {
357+ LOGF (info, " Process found cascade tags........: no" );
358+ }
359+ LOGF (info, " ==================================================================" );
360+
224361 // setup map for fast checking if enabled
225362 static_for<0 , nSpecies - 1 >([&](auto i) {
226363 constexpr int index = i.value ;
@@ -583,28 +720,33 @@ struct strangederivedbuilder {
583720 tr.tpcNClsFindableMinusFound (),
584721 tr.tpcNClsFindableMinusCrossedRows ());
585722
723+ // _________________________________________
586724 // if the table has MC info
587725 if constexpr (requires { tr.mcParticle (); }) {
588726 // do your thing with the mcParticleIds only in case the table has the MC info
589727 dauTrackMCIds (tr.mcParticleId ()); // joinable with dauTrackExtras
590728 }
591729
592- // round if requested
593- if (roundNSigmaVariables) {
594- dauTrackTPCPIDs (tr.tpcSignal (),
595- roundToPrecision (tr.tpcNSigmaEl (), precisionNSigmas),
596- roundToPrecision (tr.tpcNSigmaPi (), precisionNSigmas),
597- roundToPrecision (tr.tpcNSigmaKa (), precisionNSigmas),
598- roundToPrecision (tr.tpcNSigmaPr (), precisionNSigmas),
599- roundToPrecision (tr.tpcNSigmaHe (), precisionNSigmas));
600- } else {
601- dauTrackTPCPIDs (tr.tpcSignal (), tr.tpcNSigmaEl (),
602- tr.tpcNSigmaPi (), tr.tpcNSigmaKa (),
603- tr.tpcNSigmaPr (), tr.tpcNSigmaHe ());
730+ if constexpr (requires { tr.tpcNSigmaEl (); }) {
731+ if (roundNSigmaVariables) { // round if requested
732+ dauTrackTPCPIDs (tr.tpcSignal (),
733+ roundToPrecision (tr.tpcNSigmaEl (), precisionNSigmas),
734+ roundToPrecision (tr.tpcNSigmaPi (), precisionNSigmas),
735+ roundToPrecision (tr.tpcNSigmaKa (), precisionNSigmas),
736+ roundToPrecision (tr.tpcNSigmaPr (), precisionNSigmas),
737+ roundToPrecision (tr.tpcNSigmaHe (), precisionNSigmas));
738+ } else {
739+ dauTrackTPCPIDs (tr.tpcSignal (), tr.tpcNSigmaEl (),
740+ tr.tpcNSigmaPi (), tr.tpcNSigmaKa (),
741+ tr.tpcNSigmaPr (), tr.tpcNSigmaHe ());
742+ }
743+ // populate daughter-level TOF information
744+ dauTrackTOFPIDs (tr.tofSignal (), tr.tofEvTime (), tr.length ());
745+ }else {
746+ // populate with empty fully-compatible Nsigmas if no corresponding table available
747+ dauTrackTPCPIDs (0 .0f , 0 .0f , 0 .0f , 0 .0f , 0 .0f , 0 .0f );
748+ dauTrackTOFPIDs (0 .0f , 0 .0f , 0 .0f );
604749 }
605-
606- // populate daughter-level TOF information
607- dauTrackTOFPIDs (tr.tofSignal (), tr.tofEvTime (), tr.length ());
608750 }
609751 }
610752 // done!
@@ -613,13 +755,17 @@ struct strangederivedbuilder {
613755 void processTrackExtras (aod::V0Datas const & V0s, aod::CascDatas const & Cascades, aod::KFCascDatas const & KFCascades, aod::TraCascDatas const & TraCascades, soa::Join<aod::TracksIU, aod::TracksExtra, aod::pidTPCFullEl, aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr, aod::pidTPCFullHe, aod::TOFEvTime, aod::TOFSignal> const & tracksExtra, aod::V0s const &)
614756 {
615757 fillTrackExtras (V0s, Cascades, KFCascades, TraCascades, tracksExtra);
616- // done!
758+ }
759+
760+ // no TPC services
761+ void processTrackExtrasNoPID (aod::V0Datas const & V0s, aod::CascDatas const & Cascades, aod::KFCascDatas const & KFCascades, aod::TraCascDatas const & TraCascades, soa::Join<aod::TracksIU, aod::TracksExtra> const & tracksExtra, aod::V0s const &)
762+ {
763+ fillTrackExtras (V0s, Cascades, KFCascades, TraCascades, tracksExtra);
617764 }
618765
619766 void processTrackExtrasMC (aod::V0Datas const & V0s, aod::CascDatas const & Cascades, aod::KFCascDatas const & KFCascades, aod::TraCascDatas const & TraCascades, soa::Join<aod::TracksIU, aod::TracksExtra, aod::McTrackLabels, aod::pidTPCFullEl, aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr, aod::pidTPCFullHe, aod::TOFEvTime, aod::TOFSignal> const & tracksExtra, aod::V0s const &)
620767 {
621768 fillTrackExtras (V0s, Cascades, KFCascades, TraCascades, tracksExtra);
622- // done!
623769 }
624770
625771 void processStrangeMothers (soa::Join<aod::V0Datas, aod::McV0Labels> const & V0s, soa::Join<aod::CascDatas, aod::McCascLabels> const & Cascades, aod::McParticles const & mcParticles)
@@ -905,6 +1051,7 @@ struct strangederivedbuilder {
9051051 // detailed information processing
9061052 PROCESS_SWITCH (strangederivedbuilder, processTrackExtrasV0sOnly, " Produce track extra information (V0s only)" , true );
9071053 PROCESS_SWITCH (strangederivedbuilder, processTrackExtras, " Produce track extra information (V0s + casc)" , true );
1054+ PROCESS_SWITCH (strangederivedbuilder, processTrackExtrasNoPID, " Produce track extra information (V0s + casc), no PID" , false );
9081055 PROCESS_SWITCH (strangederivedbuilder, processTrackExtrasMC, " Produce track extra information (V0s + casc)" , false );
9091056 PROCESS_SWITCH (strangederivedbuilder, processStrangeMothers, " Produce tables with mother info for V0s + casc" , true );
9101057 PROCESS_SWITCH (strangederivedbuilder, processCascadeInterlinkTracked, " Produce tables interconnecting cascades" , false );
0 commit comments