//calculates the team ball possession data from player ball possession private static Aggregate aggregatorFunction(Aggregate seed, PlayerBallPossession curr, IList <PlayerBallPossession> expList, long count) { double pTimeA = seed.pTimeA, pTimeB = seed.pTimeB; //remove expired possession time from the aggregate team possession time information foreach (var ele in expList) { if (MetaData.PLAYER_TEAM_MAP[ele.player_id].Equals("A")) { pTimeA -= ele.time; } else { pTimeB -= ele.time; } } string team_name = MetaData.PLAYER_TEAM_MAP[curr.player_id]; //if the player for which this PlayerBallPossession information(curr) belongs to Team A //then add possession time of this player to pTimeA else to pTimeB if (team_name.Equals("A")) { pTimeA = seed.pTimeA + curr.time; } else { pTimeB = seed.pTimeB + curr.time; } //return updated team possession time information return(new Aggregate { currTeam = team_name, pTimeA = pTimeA, pTimeB = pTimeB, ts = curr.ts }); }
//calculates the team ball possession data from player ball possession private static Aggregate aggregatorFunction(Aggregate seed, PlayerBallPossession curr, IList<PlayerBallPossession> expList, long count) { double pTimeA = seed.pTimeA, pTimeB = seed.pTimeB; //remove expired possession time from the aggregate team possession time information foreach (var ele in expList) { if (MetaData.PLAYER_TEAM_MAP[ele.player_id].Equals("A")) pTimeA -= ele.time; else pTimeB -= ele.time; } string team_name = MetaData.PLAYER_TEAM_MAP[curr.player_id]; //if the player for which this PlayerBallPossession information(curr) belongs to Team A //then add possession time of this player to pTimeA else to pTimeB if (team_name.Equals("A")) pTimeA = seed.pTimeA + curr.time; else pTimeB = seed.pTimeB + curr.time; //return updated team possession time information return new Aggregate { currTeam = team_name, pTimeA = pTimeA, pTimeB = pTimeB, ts = curr.ts }; }