@@ -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