You will find the Raptor implementation here:
https://github.com/opentripplanner/OpenTripPlanner/tree/dev-2.x/src/main/java/org/opentripplanner/transit/raptorSo, the OTP implementation support McRangeRaptor, but only one cost-based-criteria in addition to arrival-time and transfers. It also support reverse-search, witch is used to build heuristics to optimize the McRaptor forward search. The Raptor implementation is quite generic, and allows you to chose between StdRaptor and McRaptor, run a single iteration or multiple iterations (Range Raptor minutes). There is also 3 different state implementations, one for McRaptor, and 2 implementations for the StdRaptor: BestTimes and Standard. The BestTimes don't keep path information, only the best arrival-times. There are also a few optimizations - the most important is the heuristic destination pruning and the ability to ignore wait time. When OTP do ONE planning request (arriveBy=false), then OTP runs 3 Raptor searches: The first is a OneIterationRaptor search to calculate a suitable search-window(this can be omitted if the search-window is passed in), then the second search is a Reverse Raptor search to compute heuristics (minNumberOfTransfers, minTravelTime, minGeneralizedCost for each stop). The last, the third raptor search is a McRangeRaptor search with heuristic destination pruning. I recommend playing with the SpeedTest (
https://github.com/opentripplanner/OpenTripPlanner/blob/dev-2.x/src/test/java/org/opentripplanner/transit/raptor/speed_test/package-info.java) to try out different Raptor configurations/optimizations. The way OTP is using Raptor is limited, the different Raptor configuration options are not exposed by the OTP APIs.