Collisions or BC first in process function


I have been working on a task for some time and encountered the following problem: For my task I need a timestamp. The CCDB tutorial suggests on having the BCsWithTimestamps table infront of the Collisions table in the parameters in the process function. (The way it also makes sence, because for a given BC there are several collisions so BC should be of “higher order” than Collisions.) However if I have:
void processRec(aod::BCsWithTimestamps const& bcs,
aod::Collisions::iterator const& theCollision,
aod::V0Datas const& theV0s,
tracksAndTPCInfo const& theTracks,
FullTracksExt const& Track_additional)
I get the error:
/misc/alidata120/alice_u/tatsch/alice/sw/ubuntu2004_x86-64/O2/dev-local6/include/Framework/AnalysisTask.h:299:7: error: static assertion failed: Associated arguments of process() should not be iterators
299 | static_assert(((soa::is_soa_iterator_t<std::decay_t>::value == false) && …),

I checked out simular code in O2Physics and several instances I found have the BC and Collisions table in reverse. I tryed it and it worked. But my question is still: Is this right? Do I first iterate over the Collisions and then oder the BC? That seems wrong to me. If this is in fact true the tutorial should be corrected.

with best regards,
Nikita :slight_smile: