@Override
  public void handleEvent(LinkEnterEvent event) {
    try {
      if (ptVehicles.keySet().contains(event.getVehicleId())) {
        PTVehicle ptVehicle = ptVehicles.get(event.getVehicleId());
        ptVehicle.in = true;
        ptVehicle.setLinkEnterTime(event.getTime());
      } else {
        chains
            .get(driverIdFromVehicleId.get(event.getVehicleId()))
            .setLinkEnterTime(event.getTime());
      }

    } catch (Exception e) {
      System.err.println(e.getStackTrace());
      System.err.println(event.toString());
    }
  }
  @Override
  public void handleEvent(LinkLeaveEvent event) {
    try {
      if (ptVehicles.keySet().contains(event.getVehicleId())) {
        PTVehicle vehicle = ptVehicles.get(event.getVehicleId());
        if (vehicle.in) vehicle.in = false;
        vehicle.incDistance(network.getLinks().get(event.getLinkId()).getLength());

      } else {
        TravellerChain chain = chains.get(driverIdFromVehicleId.get(event.getVehicleId()));
        if (chain.inCar) {
          Journey journey = chain.getJourneys().getLast();
          journey.incrementCarDistance(network.getLinks().get(event.getLinkId()).getLength());
        }
      }
    } catch (Exception e) {
      System.err.println(e.getStackTrace());
      System.err.println(event.toString());
    }
  }
  @Override
  public void handleEvent(PersonLeavesVehicleEvent event) {
    if (transitDriverIds.contains(event.getPersonId())) return;
    try {
      if (ptVehicles.keySet().contains(event.getVehicleId())) {
        TravellerChain chain = chains.get(event.getPersonId());
        chain.traveledVehicle = true;
        PTVehicle vehicle = ptVehicles.get(event.getVehicleId());
        double stageDistance = vehicle.removePassenger(event.getPersonId());
        Trip trip = chain.getJourneys().getLast().getTrips().getLast();
        trip.setDistance(stageDistance);
        trip.setAlightingStop(vehicle.lastStop);
      } else {
        driverIdFromVehicleId.remove(event.getVehicleId());
      }

    } catch (Exception e) {
      System.err.println(e.getStackTrace());
      System.err.println(event.toString());
    }
  }