@@ -21,12 +21,40 @@ using namespace o2::framework;
2121// converts DauTrackTOFPIDs_000 to _001
2222struct stradautrackstofpidconverter2 {
2323 Produces<aod::DauTrackTOFPIDs_001> dautracktofpids;
24+ Produces<aod::StraEvTimes> straEvTimes;
2425
25- void process(aod::DauTrackTOFPIDs_000 const& dauTrackTOFPIDs )
26+ void process(aod::StraCollisions const& collisions, soa::Join<aod::DauTrackExtras, aod:: DauTrackTOFPIDs_000> const& dauTracks, soa::Join<aod::V0CollRefs, aod::V0Cores, aod::V0Extras> const& v0s )
2627 {
27- for (int ii = 0; ii < dauTrackTOFPIDs.size(); ii++) {
28- auto dauTrackTOFPID = dauTrackTOFPIDs.rawIteratorAt(ii);
29- dautracktofpids(-1, -1, dauTrackTOFPID.tofSignal(), dauTrackTOFPID.tofEvTime(), dauTrackTOFPID.length(), 0.0f);
28+ // create new TOFPIDs
29+ for (int ii = 0; ii < dauTracks.size(); ii++) {
30+ auto dauTrack = dauTracks.rawIteratorAt(ii);
31+ dautracktofpids(-1, -1, dauTrack.tofSignal(), dauTrack.tofEvTime(), dauTrack.length(), 0.0f);
32+ }
33+
34+ // fill EvTimes (created simultaneously, so done in the same converter)
35+ // recover as much as possible from the previous format
36+ std::vector<double> collisionEventTime(collisions.size(), 0.0);
37+ std::vector<int> collisionNtracks(collisions.size(), 0);
38+
39+ for (const auto& v0 : v0s) {
40+ auto posTrackTOF = dauTracks.rawIteratorAt(v0.posTrackExtraId());
41+ auto negTrackTOF = dauTracks.rawIteratorAt(v0.negTrackExtraId());
42+ if(posTrackTOF.hasTOF()){
43+ collisionEventTime[v0.straCollisionId()] += posTrackTOF.tofEvTime();
44+ collisionNtracks[v0.straCollisionId()] ++;
45+ }
46+ if(negTrackTOF.hasTOF()){
47+ collisionEventTime[v0.straCollisionId()] += negTrackTOF.tofEvTime();
48+ collisionNtracks[v0.straCollisionId()] ++;
49+ }
50+ }
51+ for (const auto& collision: collisions){
52+ if(collisionNtracks[collision.globalIndex()] > 0){
53+ collisionEventTime[collision.globalIndex()] /= static_cast<double>(collisionNtracks[collision.globalIndex()]);
54+ }else{
55+ collisionEventTime[collision.globalIndex()] = -1e+6; // undefined
56+ }
57+ straEvTimes(collisionEventTime[collision.globalIndex()]);
3058 }
3159 }
3260};
0 commit comments