#include <GUILane.h>

An extended MSLane. A mechanism to avoid concurrent visualisation and simulation what may cause problems when vehicles disappear is implemented using a mutex.
Definition at line 61 of file GUILane.h.
interaction with MSMoveReminder | |
| virtual void | addMoveReminder (MSMoveReminder *rem) throw () |
| Add a move-reminder to move-reminder container. | |
| const MoveReminderCont & | getMoveReminders () const throw () |
| Return the list of this lane's move reminders. | |
| typedef std::vector < MSMoveReminder * > | MoveReminderCont |
| Definition of a container for move reminder. | |
Public Types | |
| typedef std::deque< MSVehicle * > | VehCont |
| Container for vehicles. | |
Public Member Functions | |
| void | addIncomingLane (MSLane *lane, MSLink *viaLink) |
| bool | allowsVehicleClass (SUMOVehicleClass vclass) const |
| virtual bool | appropriate (const MSVehicle *veh) |
| GUILaneWrapper * | buildLaneWrapper (GUIGlObjectStorage &idStorage) |
| void | detectCollisions (SUMOTime timestep) |
| Check if vehicles are too close. | |
| bool | empty () const |
| Returns true if there is not a single vehicle on the lane. | |
| void | enteredByLaneChange (MSVehicle *v) |
| MSEdge & | getEdge () const throw () |
| Returns the lane's edge. | |
| virtual const MSVehicle *const | getFirstVehicle () const |
| std::pair< MSVehicle *const, SUMOReal > | getFollowerOnConsecutive (SUMOReal dist, SUMOReal seen, SUMOReal leaderSpeed, SUMOReal backOffset) const |
| const std::vector < IncomingLaneInfo > & | getIncomingLanes () const |
| virtual MSVehicle *const | getLastVehicle () const |
| returns the last vehicle | |
| std::pair< MSVehicle *const, SUMOReal > | getLeaderOnConsecutive (SUMOReal dist, SUMOReal seen, SUMOReal leaderSpeed, const MSVehicle &veh, const std::vector< MSLane * > &bestLaneConts) const |
| MSLane *const | getLeftLane () const |
| const MSLinkCont & | getLinkCont () const |
| returns the container with all links !!! | |
| MSLane *const | getRightLane () const |
| GUILane (const std::string &id, SUMOReal maxSpeed, SUMOReal length, MSEdge *const edge, unsigned int numericalID, const Position2DVector &shape, const std::vector< SUMOVehicleClass > &allowed, const std::vector< SUMOVehicleClass > &disallowed) throw () | |
| Constructor. | |
| void | init (MSEdgeControl &, std::vector< MSLane * >::const_iterator firstNeigh, std::vector< MSLane * >::const_iterator lastNeigh) |
| bool | isLinkEnd (MSLinkCont::iterator &i) |
| bool | isLinkEnd (MSLinkCont::const_iterator &i) const |
| void | leftByLaneChange (MSVehicle *v) |
| MSVehicle * | removeFirstVehicle () |
| MSVehicle * | removeVehicle (MSVehicle *remVehicle) |
| void | setAllowedClasses (const std::vector< SUMOVehicleClass > &classes) throw () |
| void | setLength (SUMOReal val) throw () |
| void | setMaxSpeed (SUMOReal val) throw () |
| void | setNotAllowedClasses (const std::vector< SUMOVehicleClass > &classes) throw () |
| virtual MSLinkCont::const_iterator | succLinkSec (const SUMOVehicle &veh, unsigned int nRouteSuccs, const MSLane &succLinkSource, const std::vector< MSLane * > &conts) const |
| ~GUILane () throw () | |
| Destructor. | |
Vehicle emission | |
| bool | emit (MSVehicle &v) throw (ProcessError) |
| Tries to emit the given vehicle. | |
| bool | freeEmit (MSVehicle &veh, SUMOReal speed) throw () |
| Tries to emit the given vehicle on any place. | |
Atomar value getter | |
| const std::vector < SUMOVehicleClass > & | getAllowedClasses () const throw () |
| Returns vehicle classes explicitely allowed on this lane. | |
| const std::string & | getID () const throw () |
| Returns this lane's id. | |
| SUMOReal | getLength () const throw () |
| Returns the lane's length. | |
| SUMOReal | getMaxSpeed () const throw () |
| Returns the lane's maximum speed. | |
| const std::vector < SUMOVehicleClass > & | getNotAllowedClasses () const throw () |
| Returns vehicle classes explicitely disallowed on this lane. | |
| size_t | getNumericalID () const throw () |
| Returns this lane's numerical id. | |
| const Position2DVector & | getShape () const throw () |
| Returns this lane's shape. | |
Current state retrieval | |
| SUMOReal | getHarmonoise_NoiseEmissions () const throw () |
| Returns the sum of last step noise emissions. | |
| SUMOReal | getHBEFA_CO2Emissions () const throw () |
| Returns the sum of last step CO2 emissions. | |
| SUMOReal | getHBEFA_COEmissions () const throw () |
| Returns the sum of last step CO emissions. | |
| SUMOReal | getHBEFA_FuelConsumption () const throw () |
| Returns the sum of last step fuel consumption. | |
| SUMOReal | getHBEFA_HCEmissions () const throw () |
| Returns the sum of last step HC emissions. | |
| SUMOReal | getHBEFA_NOxEmissions () const throw () |
| Returns the sum of last step NOx emissions. | |
| SUMOReal | getHBEFA_PMxEmissions () const throw () |
| Returns the sum of last step PMx emissions. | |
| SUMOReal | getMeanSpeed () const throw () |
| Returns the mean speed on this lane. | |
| SUMOReal | getOccupancy () const throw () |
| Returns the occupancy of this lane during the last step. | |
| SUMOReal | getVehLenSum () const throw () |
| Returns the sum of lengths of vehicles which were on the lane during the last step. | |
Handling vehicles lapping into lanes | |
| std::pair< MSVehicle *, SUMOReal > | getLastVehicleInformation () const throw () |
| Returns the last vehicle which is still on the lane. | |
| MSVehicle * | getPartialOccupator () const throw () |
| Returns the vehicle which laps into this lane. | |
| SUMOReal | getPartialOccupatorEnd () const throw () |
| Returns the position of the in-lapping vehicle's end. | |
| void | resetPartialOccupation (MSVehicle *v) throw () |
| Removes the information about a vehicle lapping into this lane. | |
| SUMOReal | setPartialOccupation (MSVehicle *v, SUMOReal leftVehicleLength) throw () |
| Sets the information about a vehicle lapping into this lane. | |
Access to vehicles | |
| unsigned int | getVehicleNumber () const throw () |
| Returns the number of vehicles on this lane. | |
Access to vehicles | |
| const VehCont & | getVehiclesSecure () const throw () |
| Returns the vehicles container; locks it for microsimulation. | |
| void | releaseVehicles () const throw () |
| Allows to use the container for microsimulation again. | |
Additional initialisation | |
| void | initialize (MSLinkCont *succs) |
| Delayed initialization. | |
Vehicle movement (longitudinal) | |
| bool | integrateNewVehicle (SUMOTime t) |
| bool | moveCritical (SUMOTime t) |
| bool | setCritical (SUMOTime t, std::vector< MSLane * > &into) |
Vehicle emission | |
| virtual bool | isEmissionSuccess (MSVehicle *vehicle, SUMOReal speed, SUMOReal pos, bool recheckNextLanes) throw (ProcessError) |
| Tries to emit the given vehicle with the given state (speed and pos). | |
Static Public Member Functions | |
| static void | clear () |
| static MSLane * | dictionary (std::string id) |
| Returns the MSEdgeControl associated to the key id if exists Otherwise returns 0. | |
| static bool | dictionary (std::string id, MSLane *lane) |
| Inserts a MSLane into the static dictionary Returns true if the key id isn't already in the dictionary. Otherwise returns false. | |
| static size_t | dictSize () |
| static void | insertIDs (std::vector< std::string > &into) throw () |
Data Fields | |
| Position2DVector | myShape |
| The shape of the lane. | |
Protected Types | |
| typedef std::map< std::string, MSLane * > | DictType |
| definition of the tatic dictionary type | |
Protected Member Functions | |
| MSVehicle * | pop (SUMOTime t) |
| bool | push (MSVehicle *veh) |
| void | swapAfterLaneChange (SUMOTime t) |
| moves myTmpVehicles int myVehicles after a lane change procedure | |
Protected Attributes | |
| std::vector< SUMOVehicleClass > | myAllowedClasses |
| The list of allowed vehicle classes. | |
| SUMOReal | myBackDistance |
| MSEdge * | myEdge |
| The lane's edge, for routing only. | |
| std::vector< MSLane * > ::const_iterator | myFirstNeigh |
| The lane left to the described lane (==lastNeigh if none). | |
| std::string | myID |
| Unique ID. | |
| std::vector< IncomingLaneInfo > | myIncomingLanes |
| MSVehicle * | myInlappingVehicle |
| The vehicle which laps into this lane. | |
| SUMOReal | myInlappingVehicleEnd |
| End position of a vehicle which laps into this lane. | |
| std::vector< MSLane * > ::const_iterator | myLastNeigh |
| The end of this lane's edge's lane container. | |
| SUMOReal | myLeftVehLength |
| Not yet seen vehicle lengths. | |
| SUMOReal | myLength |
| Lane length [m]. | |
| MSLinkCont | myLinks |
| SUMOReal | myMaxSpeed |
| Lane-wide speedlimit [m/s]. | |
| std::vector< SUMOVehicleClass > | myNotAllowedClasses |
| The list of disallowed vehicle classes. | |
| size_t | myNumericalID |
| Unique numerical ID (set on reading by netload). | |
| VehCont | myTmpVehicles |
| std::vector< MSVehicle * > | myVehBuffer |
| SUMOReal | myVehicleLengthSum |
| The current length of all vehicles on this lane. | |
| VehCont | myVehicles |
| The lane's vehicles. The entering vehicles are inserted at the front of this container and the leaving ones leave from the back, e.g. the vehicle in front of the junction (often called first) is myVehicles.back() (if it exists). And if it is an iterator at a vehicle, ++it points to the vehicle in front. This is the interaction vehicle. | |
Static Protected Attributes | |
| static DictType | myDict |
| Static dictionary to associate string-ids with objects. | |
Private Attributes | |
| MFXMutex | myLock |
| The mutex used to avoid concurrent updates of the vehicle buffer. | |
Friends | |
| class | GUILaneWrapper |
| class | MSLaneChanger |
| needs access to myTmpVehicles (this maybe should be done via SUMOReal-buffering!!!) | |
| class | MSXMLRawOut |
typedef std::map< std::string, MSLane* > MSLane::DictType [protected, inherited] |
typedef std::vector< MSMoveReminder* > MSLane::MoveReminderCont [inherited] |
typedef std::deque< MSVehicle* > MSLane::VehCont [inherited] |
| GUILane::GUILane | ( | const std::string & | id, | |
| SUMOReal | maxSpeed, | |||
| SUMOReal | length, | |||
| MSEdge *const | edge, | |||
| unsigned int | numericalID, | |||
| const Position2DVector & | shape, | |||
| const std::vector< SUMOVehicleClass > & | allowed, | |||
| const std::vector< SUMOVehicleClass > & | disallowed | |||
| ) | throw () |
Constructor.
| [in] | id | The lane's id |
| [in] | maxSpeed | The speed allowed on this lane |
| [in] | length | The lane's length |
| [in] | edge | The edge this lane belongs to |
| [in] | numericalID | The numerical id of the lane |
| [in] | allowed | Vehicle classes that explicitely may drive on this lane |
| [in] | disallowed | Vehicle classes that are explicitaly forbidden on this lane |
Definition at line 51 of file GUILane.cpp.
00056 : MSLane(id, maxSpeed, length, edge, numericalID, shape, allowed, disallowed) {}
| GUILane::~GUILane | ( | ) | throw () |
Destructor.
Definition at line 59 of file GUILane.cpp.
References MFXMutex::locked(), myLock, and MFXMutex::unlock().
00059 { 00060 // just to quit cleanly on a failure 00061 if (myLock.locked()) { 00062 myLock.unlock(); 00063 } 00064 }
Definition at line 891 of file MSLane.cpp.
References MSLane::getLength(), MSLane::IncomingLaneInfo::lane, MSLane::IncomingLaneInfo::length, MSLane::myIncomingLanes, and MSLane::IncomingLaneInfo::viaLink.
Referenced by NLSucceedingLaneBuilder::addSuccLane().
00891 { 00892 IncomingLaneInfo ili; 00893 ili.lane = lane; 00894 ili.viaLink = viaLink; 00895 ili.length = lane->getLength(); 00896 myIncomingLanes.push_back(ili); 00897 }
| void MSLane::addMoveReminder | ( | MSMoveReminder * | rem | ) | throw () [virtual, inherited] |
Add a move-reminder to move-reminder container.
The move reminder will not be deleted by the lane.
| [in] | rem | The move reminder to add |
Definition at line 98 of file MSLane.cpp.
References MSLane::myMoveReminders.
00098 { 00099 myMoveReminders.push_back(rem); 00100 }
| bool MSLane::allowsVehicleClass | ( | SUMOVehicleClass | vclass | ) | const [inherited] |
Definition at line 870 of file MSLane.cpp.
References MSLane::myAllowedClasses, MSLane::myNotAllowedClasses, and SVC_UNKNOWN.
Referenced by MSEdge::getDepartLane().
00870 { 00871 if (vclass==SVC_UNKNOWN) { 00872 return true; 00873 } 00874 if (myAllowedClasses.size()==0&&myNotAllowedClasses.size()==0) { 00875 return true; 00876 } 00877 if (find(myAllowedClasses.begin(), myAllowedClasses.end(), vclass)!=myAllowedClasses.end()) { 00878 return true; 00879 } 00880 if (myAllowedClasses.size()!=0) { 00881 return false; 00882 } 00883 if (find(myNotAllowedClasses.begin(), myNotAllowedClasses.end(), vclass)!=myNotAllowedClasses.end()) { 00884 return false; 00885 } 00886 return true; 00887 }
Returns the information whether this lane may be used to continue the current route
Definition at line 686 of file MSLane.cpp.
References MSEdge::EDGEFUNCTION_INTERNAL, MSVehicle::getBestLanesContinuation(), MSEdge::getPurpose(), MSLane::myEdge, MSLane::myLinks, and MSLane::succLinkSec().
Referenced by MSVehicle::moveRegardingCritical().
00686 { 00687 if (myEdge->getPurpose()==MSEdge::EDGEFUNCTION_INTERNAL) { 00688 return true; 00689 } 00690 MSLinkCont::const_iterator link = succLinkSec(*veh, 1, *this, veh->getBestLanesContinuation()); 00691 return (link != myLinks.end()); 00692 }
| GUILaneWrapper * GUILane::buildLaneWrapper | ( | GUIGlObjectStorage & | idStorage | ) | [virtual] |
Reimplemented from MSLane.
Definition at line 190 of file GUILane.cpp.
References MSLane::GUILaneWrapper, and MSLane::myShape.
00190 { 00191 return new GUILaneWrapper(idStorage, *this, myShape); 00192 }
| void MSLane::clear | ( | ) | [static, inherited] |
Clears the dictionary
Definition at line 636 of file MSLane.cpp.
References MSLane::myDict.
Referenced by MSNet::clearAll().
00636 { 00637 for (DictType::iterator i=myDict.begin(); i!=myDict.end(); ++i) { 00638 delete(*i).second; 00639 } 00640 myDict.clear(); 00641 }
| void GUILane::detectCollisions | ( | SUMOTime | timestep | ) | [virtual] |
Check if vehicles are too close.
Reimplemented from MSLane.
Definition at line 196 of file GUILane.cpp.
References MSLane::detectCollisions(), MFXMutex::lock(), myLock, and MFXMutex::unlock().
00196 { 00197 myLock.lock(); 00198 try { 00199 MSLane::detectCollisions(timestep); 00200 myLock.unlock(); 00201 } catch (ProcessError &) { 00202 myLock.unlock(); 00203 throw; 00204 } 00205 }
| MSLane * MSLane::dictionary | ( | std::string | id | ) | [static, inherited] |
Returns the MSEdgeControl associated to the key id if exists Otherwise returns 0.
Definition at line 625 of file MSLane.cpp.
References MSLane::myDict.
00625 { 00626 DictType::iterator it = myDict.find(id); 00627 if (it == myDict.end()) { 00628 // id not in myDict. 00629 return 0; 00630 } 00631 return it->second; 00632 }
Inserts a MSLane into the static dictionary Returns true if the key id isn't already in the dictionary. Otherwise returns false.
Definition at line 613 of file MSLane.cpp.
References MSLane::myDict.
Referenced by NLHandler::addIncomingLanes(), MSVehicle::addStop(), NLSucceedingLaneBuilder::addSuccLane(), NLHandler::closeLane(), NLSucceedingLaneBuilder::closeSuccLane(), traci::TraCIServer::commandAddVehicle(), NLTriggerBuilder::getLane(), NLDetectorBuilder::getLaneChecking(), NLGeomShapeBuilder::getPointPosition(), GUISelectionLoader::loadSelection(), MSRouteHandler::myStartElement(), NLTriggerBuilder::parseAndBuildLaneSpeedTrigger(), TraCIServerAPI_Lane::processGet(), and TraCIServerAPI_Lane::processSet().
00613 { 00614 DictType::iterator it = myDict.find(id); 00615 if (it == myDict.end()) { 00616 // id not in myDict. 00617 myDict.insert(DictType::value_type(id, ptr)); 00618 return true; 00619 } 00620 return false; 00621 }
| static size_t MSLane::dictSize | ( | ) | [inline, static, inherited] |
Definition at line 415 of file MSLane.h.
References MSLane::myDict.
00415 { 00416 return myDict.size(); 00417 }
| bool MSLane::emit | ( | MSVehicle & | v | ) | throw (ProcessError) [inherited] |
Tries to emit the given vehicle.
The emission position and speed are determined in dependence to the vehicle's departure definition, first. If "isReinsertion" is set, meaning the vehicle tries to end a teleportation, then the values for the fastest emission are used (speed=max, pos=free).
Then, the vehicle is tried to be inserted into the lane using these values by a call to "isEmissionSuccess". The result of "isEmissionSuccess" is returned.
| [in] | v | The vehicle to emit |
MSVehicle::getDepartureDefinition
MSVehicle::DepartArrivalDefinition
Definition at line 171 of file MSLane.cpp.
References DEPART_POS_DEFAULT, DEPART_POS_FREE, DEPART_POS_GIVEN, DEPART_POS_RANDOM, DEPART_POS_RANDOM_FREE, DEPART_SPEED_DEFAULT, DEPART_SPEED_GIVEN, DEPART_SPEED_MAX, DEPART_SPEED_RANDOM, SUMOVehicleParameter::departPos, SUMOVehicleParameter::departPosProcedure, SUMOVehicleParameter::departSpeed, SUMOVehicleParameter::departSpeedProcedure, MSLane::freeEmit(), MSLane::getLength(), MSLane::getMaxSpeed(), MSLane::isEmissionSuccess(), MIN2(), RandHelper::rand(), and SUMOReal.
Referenced by MSEdge::emit().
00171 { 00172 SUMOReal pos = 0; 00173 SUMOReal speed = 0; 00174 bool patchSpeed = true; // whether the speed shall be adapted to infrastructure/traffic in front 00175 00176 // determine the speed 00177 const SUMOVehicleParameter &pars = veh.getParameter(); 00178 switch (pars.departSpeedProcedure) { 00179 case DEPART_SPEED_GIVEN: 00180 speed = pars.departSpeed; 00181 patchSpeed = false; 00182 break; 00183 case DEPART_SPEED_RANDOM: 00184 speed = RandHelper::rand(MIN2(veh.getMaxSpeed(), getMaxSpeed())); 00185 patchSpeed = true; // !!!(?) 00186 break; 00187 case DEPART_SPEED_MAX: 00188 speed = MIN2(veh.getMaxSpeed(), getMaxSpeed()); 00189 patchSpeed = true; // !!!(?) 00190 break; 00191 case DEPART_SPEED_DEFAULT: 00192 default: 00193 // speed = 0 was set before 00194 patchSpeed = false; // !!!(?) 00195 break; 00196 } 00197 00198 // determine the position 00199 switch (pars.departPosProcedure) { 00200 case DEPART_POS_GIVEN: 00201 if (pars.departPos >= 0.) { 00202 pos = pars.departPos; 00203 } else { 00204 pos = pars.departPos + getLength(); 00205 } 00206 break; 00207 case DEPART_POS_RANDOM: 00208 pos = RandHelper::rand(getLength()); 00209 break; 00210 case DEPART_POS_RANDOM_FREE: { 00211 for (unsigned int i=0; i < 10; i++) { 00212 // we will try some random positions ... 00213 pos = RandHelper::rand(getLength()); 00214 if (isEmissionSuccess(&veh, speed, pos, patchSpeed)) { 00215 return true; 00216 } 00217 } 00218 // ... and if that doesn't work, we put the vehicle to the free position 00219 return freeEmit(veh, speed); 00220 } 00221 break; 00222 case DEPART_POS_FREE: 00223 return freeEmit(veh, speed); 00224 case DEPART_POS_DEFAULT: 00225 default: 00226 // pos = 0 was set before 00227 break; 00228 } 00229 00230 // try to emit 00231 return isEmissionSuccess(&veh, speed, pos, patchSpeed); 00232 }
| bool MSLane::empty | ( | ) | const [inline, inherited] |
Returns true if there is not a single vehicle on the lane.
Definition at line 382 of file MSLane.h.
References MSLane::myVehBuffer, and MSLane::myVehicles.
00382 { 00383 assert(myVehBuffer.size()==0); 00384 return myVehicles.empty(); 00385 }
| void MSLane::enteredByLaneChange | ( | MSVehicle * | v | ) | [inherited] |
Definition at line 1021 of file MSLane.cpp.
References MSVehicleType::getLength(), MSVehicle::getVehicleType(), and MSLane::myVehicleLengthSum.
01021 { 01022 myVehicleLengthSum += v->getVehicleType().getLength(); 01023 }
Tries to emit the given vehicle on any place.
| [in] | veh | The vehicle to emit |
| [in] | speed | The maximum emission speed |
Definition at line 106 of file MSLane.cpp.
References MSVehicle::getCarFollowModel(), MSLane::getLength(), MSVehicleType::getLength(), MSLane::getPartialOccupator(), MSLane::getPartialOccupatorEnd(), MSVehicle::getPositionOnLane(), MSCFModel::getSecureGap(), MSVehicle::getSpeed(), MSCFModel::getSpeedAfterMaxDecel(), MSVehicle::getVehicleType(), MSLane::isEmissionSuccess(), MIN2(), MSLane::myVehicles, POSITION_EPS, and SUMOReal.
Referenced by MSVehicleTransfer::checkEmissions(), and MSLane::emit().
00106 { 00107 bool adaptableSpeed = true; 00108 if (myVehicles.size()==0) { 00109 if (isEmissionSuccess(&veh, mspeed, 0, adaptableSpeed)) { 00110 return true; 00111 } 00112 } else { 00113 // check whether the vehicle can be put behind the last one if there is such 00114 MSVehicle *leader = *myVehicles.begin(); 00115 SUMOReal leaderPos = leader->getPositionOnLane() - leader->getVehicleType().getLength(); 00116 SUMOReal speed = mspeed; 00117 if (adaptableSpeed) { 00118 speed = leader->getSpeed(); 00119 } 00120 SUMOReal frontGapNeeded = veh.getCarFollowModel().getSecureGap(speed, leader->getCarFollowModel().getSpeedAfterMaxDecel(leader->getSpeed())); 00121 if (leaderPos-frontGapNeeded>=0) { 00122 SUMOReal tspeed = MIN2(veh.getCarFollowModel().ffeV(&veh, mspeed, frontGapNeeded, leader->getSpeed()), mspeed); 00123 // check whether we can emit in behind the last vehicle on the lane 00124 if (isEmissionSuccess(&veh, tspeed, 0, adaptableSpeed)) { 00125 return true; 00126 } 00127 } 00128 } 00129 // go through the lane, look for free positions (starting after the last vehicle) 00130 MSLane::VehCont::iterator predIt = myVehicles.begin(); 00131 while (predIt!=myVehicles.end()) { 00132 // get leader (may be zero) and follower 00133 const MSVehicle *leader = predIt!=myVehicles.end()-1 ? *(predIt+1) : getPartialOccupator(); 00134 const MSVehicle *follower = *predIt; 00135 00136 // patch speed if allowed 00137 SUMOReal speed = mspeed; 00138 if (adaptableSpeed&&leader!=0) { 00139 speed = MIN2(leader->getSpeed(), mspeed); 00140 } 00141 00142 // compute the space needed to not collide with leader 00143 SUMOReal frontMax = getLength(); 00144 if (leader!=0) { 00145 SUMOReal leaderRearPos = leader->getPositionOnLane() - leader->getVehicleType().getLength(); 00146 if (leader == getPartialOccupator()) { 00147 leaderRearPos = getPartialOccupatorEnd(); 00148 } 00149 frontMax = leaderRearPos - veh.getCarFollowModel().getSecureGap(speed, leader->getCarFollowModel().getSpeedAfterMaxDecel(leader->getSpeed())); 00150 } 00151 // compute the space needed to not let the follower collide 00152 const SUMOReal followPos = follower->getPositionOnLane(); 00153 const SUMOReal backGapNeeded = follower->getCarFollowModel().getSecureGap(follower->getSpeed(), veh.getCarFollowModel().getSpeedAfterMaxDecel(speed)); 00154 const SUMOReal backMin = followPos + backGapNeeded + veh.getVehicleType().getLength(); 00155 00156 // check whether there is enough room (given some extra space for rounding errors) 00157 if (frontMax>0 && backMin+POSITION_EPS<frontMax) { 00158 // try emit vehicle (should be always ok) 00159 if (isEmissionSuccess(&veh, speed, backMin+POSITION_EPS, adaptableSpeed)) { 00160 return true; 00161 } 00162 } 00163 ++predIt; 00164 } 00165 // first check at lane's begin 00166 return false; 00167 }
| const std::vector<SUMOVehicleClass>& MSLane::getAllowedClasses | ( | ) | const throw () [inline, inherited] |
Returns vehicle classes explicitely allowed on this lane.
Definition at line 338 of file MSLane.h.
References MSLane::myAllowedClasses.
Referenced by GUILaneWrapper::Colorer::getColorValue(), and TraCIServerAPI_Lane::processGet().
00338 { 00339 return myAllowedClasses; 00340 }
| MSEdge& MSLane::getEdge | ( | ) | const throw () [inline, inherited] |
Returns the lane's edge.
Definition at line 399 of file MSLane.h.
References MSLane::myEdge.
Referenced by MSVehicle::addStop(), NLDetectorBuilder::buildInductLoop(), MSVehicle::checkRewindLinkLanes(), MSEmitter::childCheckEmit(), MSCalibrator::childCheckEmit(), MSEdge::closeBuilding(), MSVehicle::enterLaneAtMove(), MS_E2_ZS_CollectorOverLanes::extendTo(), MSVehicle::getBestLanes(), MSVehicle::getBestLanesContinuation(), MSVehicle::getDistanceToPosition(), GUILaneWrapper::getEdgeLaneNumber(), GUINet::initDetectors(), MSTriggeredRerouter::Setter::isStillActive(), GUISelectionLoader::loadSelection(), GUI_E2_ZS_CollectorOverLanes::MyWrapper::MyWrapper(), MSTriggeredRerouter::Setter::notifyEnter(), NLTriggerBuilder::parseAndBuildCalibrator(), MSLCM_DK2004::patchSpeed(), traci::TraCIServer::postProcessSimulationStep(), TraCIServerAPI_Vehicle::processGet(), TraCIServerAPI_Lane::processGet(), MSVehicle::processNextStop(), TraCIServerAPI_Lane::processSet(), MSVehicle::rebuildContinuationsFor(), and MSVehicle::vsafeCriticalCont().
00399 { 00400 return *myEdge; 00401 }
| const MSVehicle *const MSLane::getFirstVehicle | ( | ) | const [virtual, inherited] |
Definition at line 731 of file MSLane.cpp.
References MSLane::myVehicles.
Referenced by MSLane::getFollowerOnConsecutive(), and MSVehicle::vsafeCriticalCont().
00731 { 00732 if (myVehicles.size()==0) { 00733 return 0; 00734 } 00735 return *(myVehicles.end()-1); 00736 }
| std::pair< MSVehicle *const, SUMOReal > MSLane::getFollowerOnConsecutive | ( | SUMOReal | dist, | |
| SUMOReal | seen, | |||
| SUMOReal | leaderSpeed, | |||
| SUMOReal | backOffset | |||
| ) | const [inherited] |
Definition at line 907 of file MSLane.cpp.
References MSVehicle::getCarFollowModel(), MSLane::getFirstVehicle(), MSLane::getIncomingLanes(), MSVehicle::getLane(), MSLane::getMaxSpeed(), MSVehicle::getPositionOnLane(), MSVehicle::getSpeed(), MSCFModel::hasSafeGap(), MSLane::IncomingLaneInfo::lane, MSLane::IncomingLaneInfo::length, MSLink::LINKSTATE_TL_RED, MSCFModel::maxNextSpeed(), MSLane::myIncomingLanes, SUMOReal, and MSLane::IncomingLaneInfo::viaLink.
Referenced by MSLane::isEmissionSuccess().
00907 { 00908 // ok, a vehicle has not noticed the lane about itself; 00909 // iterate as long as necessary to search for an approaching one 00910 std::set<MSLane*> visited; 00911 std::vector<std::pair<MSVehicle *, SUMOReal> > possible; 00912 std::vector<MSLane::IncomingLaneInfo> newFound; 00913 std::vector<MSLane::IncomingLaneInfo> toExamine = myIncomingLanes; 00914 while (toExamine.size()!=0) { 00915 for (std::vector<MSLane::IncomingLaneInfo>::iterator i=toExamine.begin(); i!=toExamine.end(); ++i) { 00916 if ((*i).viaLink->getState()==MSLink::LINKSTATE_TL_RED) { 00917 continue; 00918 } 00919 MSLane *next = (*i).lane; 00920 if (next->getFirstVehicle()!=0) { 00921 MSVehicle * v = (MSVehicle*) next->getFirstVehicle(); 00922 SUMOReal agap = (*i).length - v->getPositionOnLane() + backOffset; 00923 if (!v->getCarFollowModel().hasSafeGap(v->getCarFollowModel().maxNextSpeed(v->getSpeed()), agap, leaderSpeed, v->getLane().getMaxSpeed())) { 00924 possible.push_back(std::make_pair(v, (*i).length-v->getPositionOnLane()+seen)); 00925 } 00926 } else { 00927 if ((*i).length+seen<dist) { 00928 const std::vector<MSLane::IncomingLaneInfo> &followers = next->getIncomingLanes(); 00929 for (std::vector<MSLane::IncomingLaneInfo>::const_iterator j=followers.begin(); j!=followers.end(); ++j) { 00930 if (visited.find((*j).lane)==visited.end()) { 00931 visited.insert((*j).lane); 00932 MSLane::IncomingLaneInfo ili; 00933 ili.lane = (*j).lane; 00934 ili.length = (*j).length + (*i).length; 00935 ili.viaLink = (*j).viaLink; 00936 newFound.push_back(ili); 00937 } 00938 } 00939 } 00940 } 00941 } 00942 toExamine.clear(); 00943 swap(newFound, toExamine); 00944 } 00945 if (possible.size()==0) { 00946 return std::pair<MSVehicle * const, SUMOReal>(0, -1); 00947 } 00948 sort(possible.begin(), possible.end(), by_second_sorter()); 00949 return *(possible.begin()); 00950 }
| SUMOReal MSLane::getHarmonoise_NoiseEmissions | ( | ) | const throw () [inherited] |
Returns the sum of last step noise emissions.
Definition at line 1128 of file MSLane.cpp.
References MSLane::getVehiclesSecure(), MSLane::releaseVehicles(), HelpersHarmonoise::sum(), and SUMOReal.
Referenced by GUILaneWrapper::Colorer::getColorValue(), and TraCIServerAPI_Lane::processGet().
01128 { 01129 SUMOReal ret = 0; 01130 const MSLane::VehCont &vehs = getVehiclesSecure(); 01131 if (vehs.size()==0) { 01132 releaseVehicles(); 01133 return 0; 01134 } 01135 for (MSLane::VehCont::const_iterator i=vehs.begin(); i!=vehs.end(); ++i) { 01136 SUMOReal sv = (*i)->getHarmonoise_NoiseEmissions(); 01137 ret += (SUMOReal) pow(10., (sv/10.)); 01138 } 01139 releaseVehicles(); 01140 return HelpersHarmonoise::sum(ret); 01141 }
| SUMOReal MSLane::getHBEFA_CO2Emissions | ( | ) | const throw () [inherited] |
Returns the sum of last step CO2 emissions.
Definition at line 1056 of file MSLane.cpp.
References MSLane::getVehiclesSecure(), MSLane::releaseVehicles(), and SUMOReal.
Referenced by GUILaneWrapper::getNormedHBEFA_CO2Emissions(), and TraCIServerAPI_Lane::processGet().
01056 { 01057 SUMOReal ret = 0; 01058 const MSLane::VehCont &vehs = getVehiclesSecure(); 01059 for (MSLane::VehCont::const_iterator i=vehs.begin(); i!=vehs.end(); ++i) { 01060 ret += (*i)->getHBEFA_CO2Emissions(); 01061 } 01062 releaseVehicles(); 01063 return ret; 01064 }
| SUMOReal MSLane::getHBEFA_COEmissions | ( | ) | const throw () [inherited] |
Returns the sum of last step CO emissions.
Definition at line 1068 of file MSLane.cpp.
References MSLane::getVehiclesSecure(), MSLane::releaseVehicles(), and SUMOReal.
Referenced by GUILaneWrapper::getNormedHBEFA_COEmissions(), and TraCIServerAPI_Lane::processGet().
01068 { 01069 SUMOReal ret = 0; 01070 const MSLane::VehCont &vehs = getVehiclesSecure(); 01071 for (MSLane::VehCont::const_iterator i=vehs.begin(); i!=vehs.end(); ++i) { 01072 ret += (*i)->getHBEFA_COEmissions(); 01073 } 01074 releaseVehicles(); 01075 return ret; 01076 }
| SUMOReal MSLane::getHBEFA_FuelConsumption | ( | ) | const throw () [inherited] |
Returns the sum of last step fuel consumption.
Definition at line 1116 of file MSLane.cpp.
References MSLane::getVehiclesSecure(), MSLane::releaseVehicles(), and SUMOReal.
Referenced by GUILaneWrapper::getNormedHBEFA_FuelConsumption(), and TraCIServerAPI_Lane::processGet().
01116 { 01117 SUMOReal ret = 0; 01118 const MSLane::VehCont &vehs = getVehiclesSecure(); 01119 for (MSLane::VehCont::const_iterator i=vehs.begin(); i!=vehs.end(); ++i) { 01120 ret += (*i)->getHBEFA_FuelConsumption(); 01121 } 01122 releaseVehicles(); 01123 return ret; 01124 }
| SUMOReal MSLane::getHBEFA_HCEmissions | ( | ) | const throw () [inherited] |
Returns the sum of last step HC emissions.
Definition at line 1104 of file MSLane.cpp.
References MSLane::getVehiclesSecure(), MSLane::releaseVehicles(), and SUMOReal.
Referenced by GUILaneWrapper::getNormedHBEFA_HCEmissions(), and TraCIServerAPI_Lane::processGet().
01104 { 01105 SUMOReal ret = 0; 01106 const MSLane::VehCont &vehs = getVehiclesSecure(); 01107 for (MSLane::VehCont::const_iterator i=vehs.begin(); i!=vehs.end(); ++i) { 01108 ret += (*i)->getHBEFA_HCEmissions(); 01109 } 01110 releaseVehicles(); 01111 return ret; 01112 }
| SUMOReal MSLane::getHBEFA_NOxEmissions | ( | ) | const throw () [inherited] |
Returns the sum of last step NOx emissions.
Definition at line 1092 of file MSLane.cpp.
References MSLane::getVehiclesSecure(), MSLane::releaseVehicles(), and SUMOReal.
Referenced by GUILaneWrapper::getNormedHBEFA_NOxEmissions(), and TraCIServerAPI_Lane::processGet().
01092 { 01093 SUMOReal ret = 0; 01094 const MSLane::VehCont &vehs = getVehiclesSecure(); 01095 for (MSLane::VehCont::const_iterator i=vehs.begin(); i!=vehs.end(); ++i) { 01096 ret += (*i)->getHBEFA_NOxEmissions(); 01097 } 01098 releaseVehicles(); 01099 return ret; 01100 }
| SUMOReal MSLane::getHBEFA_PMxEmissions | ( | ) | const throw () [inherited] |
Returns the sum of last step PMx emissions.
Definition at line 1080 of file MSLane.cpp.
References MSLane::getVehiclesSecure(), MSLane::releaseVehicles(), and SUMOReal.
Referenced by GUILaneWrapper::getNormedHBEFA_PMxEmissions(), and TraCIServerAPI_Lane::processGet().
01080 { 01081 SUMOReal ret = 0; 01082 const MSLane::VehCont &vehs = getVehiclesSecure(); 01083 for (MSLane::VehCont::const_iterator i=vehs.begin(); i!=vehs.end(); ++i) { 01084 ret += (*i)->getHBEFA_PMxEmissions(); 01085 } 01086 releaseVehicles(); 01087 return ret; 01088 }
| const std::string& MSLane::getID | ( | ) | const throw () [inline, inherited] |
Returns this lane's id.
Definition at line 298 of file MSLane.h.
References MSLane::myID.
Referenced by MSVehicle::addTraciStop(), traci::TraCIServer::commandStopNode(), NLDetectorBuilder::convUncontE2PosLength(), MSLane::detectCollisions(), MSVTypeProbe::execute(), Command_SaveTLSSwitches::execute(), GUILaneWrapper::getMicrosimID(), GUIInductLoop::MyWrapper::getParameterWindow(), GUI_E2_ZS_Collector::MyWrapper::getParameterWindow(), MSUnboundActuatedTrafficLightLogic::init(), MSAgentbasedTrafficLightLogic::init(), MSActuatedTrafficLightLogic::init(), MSLane::moveCritical(), MSCalibrator::MSCalibrator(), MSRouteHandler::myStartElement(), TraCIServerAPI_Vehicle::processGet(), TraCIServerAPI_TLS::processGet(), TraCIServerAPI_Lane::processGet(), MSVehicleControl::scheduleVehicleRemoval(), MSLane::setCritical(), and MSMeanData::writeEdge().
00298 { 00299 return myID; 00300 }
| const std::vector<IncomingLaneInfo>& MSLane::getIncomingLanes | ( | ) | const [inline, inherited] |
Definition at line 488 of file MSLane.h.
References MSLane::myIncomingLanes.
Referenced by MSVehicle::enterLaneAtEmit(), MSVehicle::enterLaneAtLaneChange(), and MSLane::getFollowerOnConsecutive().
00488 { 00489 return myIncomingLanes; 00490 }
| MSVehicle *const MSLane::getLastVehicle | ( | ) | const [virtual, inherited] |
returns the last vehicle
Definition at line 722 of file MSLane.cpp.
References MSLane::myVehicles.
Referenced by MSVehicle::checkRewindLinkLanes(), MSLane::getLeaderOnConsecutive(), MSLaneChanger::getRealThisLeader(), and MSLane::isEmissionSuccess().
00722 { 00723 if (myVehicles.size()==0) { 00724 return 0; 00725 } 00726 return *myVehicles.begin(); 00727 }
| std::pair< MSVehicle *, SUMOReal > MSLane::getLastVehicleInformation | ( | ) | const throw () [inherited] |
Returns the last vehicle which is still on the lane.
The information about the last vehicle in this lane's que is returned. If there is no such vehicle, the information about the vehicle which laps into this lane is returned. If there is no such vehicle, the first returned member is 0.
Definition at line 448 of file MSLane.cpp.
References MSVehicleType::getLength(), MSVehicle::getPositionOnLane(), MSVehicle::getVehicleType(), MAX2(), MSLane::myInlappingVehicle, MSLane::myInlappingVehicleEnd, MSLane::myVehicles, and SUMOReal.
Referenced by MSVehicle::vsafeCriticalCont().
00448 { 00449 if (myVehicles.size()!=0) { 00450 // the last vehicle is the one in scheduled by this lane 00451 MSVehicle *last = *myVehicles.begin(); 00452 SUMOReal pos = MAX2(SUMOReal(0), last->getPositionOnLane()-last->getVehicleType().getLength()); 00453 return std::make_pair(last, pos); 00454 } 00455 if (myInlappingVehicle!=0) { 00456 // the last one is a vehicle extending into this lane 00457 return std::make_pair(myInlappingVehicle, myInlappingVehicleEnd); 00458 } 00459 return std::make_pair<MSVehicle*, SUMOReal>(0, 0); 00460 }
| std::pair< MSVehicle *const, SUMOReal > MSLane::getLeaderOnConsecutive | ( | SUMOReal | dist, | |
| SUMOReal | seen, | |||
| SUMOReal | leaderSpeed, | |||
| const MSVehicle & | veh, | |||
| const std::vector< MSLane * > & | bestLaneConts | |||
| ) | const [inherited] |
Definition at line 954 of file MSLane.cpp.
References MSCFModel::brakeGap(), MSVehicle::getCarFollowModel(), MSLane::getLastVehicle(), MSLane::getLength(), MSLane::getMaxSpeed(), MSLane::getPartialOccupator(), MSLane::getPartialOccupatorEnd(), MSVehicle::getPositionOnLane(), MSLane::isLinkEnd(), MSLink::LINKSTATE_TL_RED, and MSLane::succLinkSec().
00955 { 00956 if (seen>dist) { 00957 return std::pair<MSVehicle * const, SUMOReal>(0, -1); 00958 } 00959 unsigned int view = 1; 00960 // loop over following lanes 00961 const MSLane * targetLane = this; 00962 MSVehicle *leader = targetLane->getPartialOccupator(); 00963 if (leader!=0) { 00964 return std::pair<MSVehicle * const, SUMOReal>(leader, seen-targetLane->getPartialOccupatorEnd()); 00965 } 00966 const MSLane * nextLane = targetLane; 00967 while (true) { 00968 // get the next link used 00969 MSLinkCont::const_iterator link = targetLane->succLinkSec(veh, view, *nextLane, bestLaneConts); 00970 if (nextLane->isLinkEnd(link) || !(*link)->havePriority() || (*link)->getState()==MSLink::LINKSTATE_TL_RED) { 00971 return std::pair<MSVehicle * const, SUMOReal>(0, -1); 00972 } 00973 #ifdef HAVE_INTERNAL_LANES 00974 bool nextInternal = false; 00975 nextLane = (*link)->getViaLane(); 00976 if (nextLane==0) { 00977 nextLane = (*link)->getLane(); 00978 } else { 00979 nextInternal = true; 00980 } 00981 #else 00982 nextLane = (*link)->getLane(); 00983 #endif 00984 if (nextLane==0) { 00985 return std::pair<MSVehicle * const, SUMOReal>(0, -1); 00986 } 00987 MSVehicle * leader = nextLane->getLastVehicle(); 00988 if (leader!=0) { 00989 return std::pair<MSVehicle * const, SUMOReal>(leader, seen+leader->getPositionOnLane()-leader->getVehicleType().getLength()); 00990 } else { 00991 leader = nextLane->getPartialOccupator(); 00992 if (leader!=0) { 00993 return std::pair<MSVehicle * const, SUMOReal>(leader, seen+nextLane->getPartialOccupatorEnd()); 00994 } 00995 } 00996 if (nextLane->getMaxSpeed()<speed) { 00997 dist = veh.getCarFollowModel().brakeGap(nextLane->getMaxSpeed()); 00998 } 00999 seen += nextLane->getLength(); 01000 if (seen>dist) { 01001 return std::pair<MSVehicle * const, SUMOReal>(0, -1); 01002 } 01003 #ifdef HAVE_INTERNAL_LANES 01004 if (!nextInternal) { 01005 view++; 01006 } 01007 #else 01008 view++; 01009 #endif 01010 } 01011 }
| MSLane *const MSLane::getLeftLane | ( | ) | const [inherited] |
| SUMOReal MSLane::getLength | ( | ) | const throw () [inline, inherited] |
Returns the lane's length.
Definition at line 330 of file MSLane.h.
References MSLane::myLength.
Referenced by MSVehicle::adaptLaneEntering2MoveReminder(), MSLane::addIncomingLane(), NLSucceedingLaneBuilder::addSuccLane(), NLDetectorBuilder::buildInductLoop(), MSVehicleTransfer::checkEmissions(), MSVehicle::checkRewindLinkLanes(), NLDetectorBuilder::convUncontE2PosLength(), MSLane::emit(), MS_E2_ZS_CollectorOverLanes::extendTo(), MSLane::freeEmit(), MSVehicle::getBestLanes(), MSVehicle::getDistanceToPosition(), TraCIDijkstraRouter< E >::getEffort(), MSLane::getLeaderOnConsecutive(), getMaxSpeedRegardingNextLanes(), GUILaneWrapper::getNormedHBEFA_CO2Emissions(), GUILaneWrapper::getNormedHBEFA_COEmissions(), GUILaneWrapper::getNormedHBEFA_FuelConsumption(), GUILaneWrapper::getNormedHBEFA_HCEmissions(), GUILaneWrapper::getNormedHBEFA_NOxEmissions(), GUILaneWrapper::getNormedHBEFA_PMxEmissions(), GUILaneWrapper::getParameterWindow(), NLGeomShapeBuilder::getPointPosition(), MSNet::EdgeWeightsProxi::getTravelTime(), MSActuatedTrafficLightLogic::init(), MSLane::isEmissionSuccess(), MSMeanData_Net::MSLaneMeanDataValues::isStillActive(), MSMeanData_HBEFA::MSLaneMeanDataValues::isStillActive(), MSMeanData_Harmonoise::MSLaneMeanDataValues::isStillActive(), MSVehicle::moveFirstChecked(), MSVehicle::moveRegardingCritical(), NLTriggerBuilder::parseAndBuildBusStop(), TraCIServerAPI_Lane::processGet(), MSVehicle::rebuildContinuationsFor(), MSVehicleControl::scheduleVehicleRemoval(), GUIVehicle::setBlinkerInformation(), MSLane::setCritical(), MSVehicle::vsafeCriticalCont(), MSLCM_DK2004::wantsChangeToLeft(), MSLCM_DK2004::wantsChangeToRight(), and MSMeanData::writeEdge().
00330 { 00331 return myLength; 00332 }
| const MSLinkCont & MSLane::getLinkCont | ( | ) | const [inherited] |
returns the container with all links !!!
Definition at line 806 of file MSLane.cpp.
References MSLane::myLinks.
Referenced by MSLinkContHelper::getConnectingLink(), GUILaneWrapper::getLinkDirection(), GUILaneWrapper::getLinkLane(), GUILaneWrapper::getLinkNumber(), GUILaneWrapper::getLinkRespondIndex(), GUILaneWrapper::getLinkState(), GUILaneWrapper::getLinkTLID(), GUILaneWrapper::getLinkTLIndex(), TraCIServerAPI_Lane::processGet(), MSVehicle::rebuildContinuationsFor(), GUIVehicle::setBlinkerInformation(), and MSVehicle::vsafeCriticalCont().
00806 { 00807 return myLinks; 00808 }
| SUMOReal MSLane::getMaxSpeed | ( | ) | const throw () [inline, inherited] |
Returns the lane's maximum speed.
Definition at line 322 of file MSLane.h.
References MSLane::myMaxSpeed.
Referenced by MSVehicleTransfer::checkEmissions(), MSEmitter::childCheckEmit(), MSCalibrator::childCheckEmit(), traci::TraCIServer::commandAddVehicle(), MSAbstractLaneChangeModel::congested(), MSCFModel_IDM::desiredSpeed(), MSLane::emit(), GUILaneWrapper::Colorer::getColorValue(), TraCIDijkstraRouter< E >::getEffort(), MSLane::getFollowerOnConsecutive(), MSLane::getLeaderOnConsecutive(), getMaxSpeedRegardingNextLanes(), GUILaneWrapper::getParameterWindow(), MSNet::EdgeWeightsProxi::getTravelTime(), traci::TraCIServer::handleVehicleDomain(), MSLCM_DK2004::informBlocker(), MSActuatedTrafficLightLogic::init(), MSLane::isEmissionSuccess(), MSVehicle::moveRegardingCritical(), TraCIServerAPI_Lane::processGet(), GUIVehicle::setBlinkerInformation(), MSLaneChanger::setIsSafeChange(), MSVehicle::vsafeCriticalCont(), MSLCM_DK2004::wantsChangeToLeft(), and MSLCM_DK2004::wantsChangeToRight().
00322 { 00323 return myMaxSpeed; 00324 }
| SUMOReal MSLane::getMeanSpeed | ( | ) | const throw () [inherited] |
Returns the mean speed on this lane.
Definition at line 1040 of file MSLane.cpp.
References MSLane::getVehiclesSecure(), MSLane::myMaxSpeed, MSLane::myVehicles, MSLane::releaseVehicles(), and SUMOReal.
Referenced by TraCIServerAPI_Lane::processGet().
01040 { 01041 if (myVehicles.size()==0) { 01042 return myMaxSpeed; 01043 } 01044 SUMOReal v = 0; 01045 const MSLane::VehCont &vehs = getVehiclesSecure(); 01046 for (VehCont::const_iterator i=vehs.begin(); i!=vehs.end(); ++i) { 01047 v += (*i)->getSpeed(); 01048 } 01049 SUMOReal ret = v / (SUMOReal) myVehicles.size(); 01050 releaseVehicles(); 01051 return ret; 01052 }
| const MoveReminderCont& MSLane::getMoveReminders | ( | ) | const throw () [inline, inherited] |
Return the list of this lane's move reminders.
Definition at line 148 of file MSLane.h.
References MSLane::myMoveReminders.
Referenced by MSVehicle::enterLaneAtEmit(), and MSVehicle::enterLaneAtLaneChange().
00148 { 00149 return myMoveReminders; 00150 }
| const std::vector<SUMOVehicleClass>& MSLane::getNotAllowedClasses | ( | ) | const throw () [inline, inherited] |
Returns vehicle classes explicitely disallowed on this lane.
Definition at line 346 of file MSLane.h.
References MSLane::myNotAllowedClasses.
Referenced by GUILaneWrapper::Colorer::getColorValue(), and TraCIServerAPI_Lane::processGet().
00346 { 00347 return myNotAllowedClasses; 00348 }
| size_t MSLane::getNumericalID | ( | ) | const throw () [inline, inherited] |
Returns this lane's numerical id.
Definition at line 306 of file MSLane.h.
References MSLane::myNumericalID.
00306 { 00307 return myNumericalID; 00308 }
| SUMOReal MSLane::getOccupancy | ( | ) | const throw () [inherited] |
Returns the occupancy of this lane during the last step.
Definition at line 1028 of file MSLane.cpp.
References MSLane::myLength, and MSLane::myVehicleLengthSum.
Referenced by GUILaneWrapper::Colorer::getColorValue(), and TraCIServerAPI_Lane::processGet().
01028 { 01029 return myVehicleLengthSum / myLength; 01030 }
| MSVehicle* MSLane::getPartialOccupator | ( | ) | const throw () [inline, inherited] |
Returns the vehicle which laps into this lane.
Definition at line 237 of file MSLane.h.
References MSLane::myInlappingVehicle.
Referenced by MSLane::freeEmit(), MSLane::getLeaderOnConsecutive(), MSLaneChanger::getRealLeader(), MSLaneChanger::getRealThisLeader(), MSLane::isEmissionSuccess(), and MSVehicle::moveRegardingCritical().
00237 { 00238 return myInlappingVehicle; 00239 }
| SUMOReal MSLane::getPartialOccupatorEnd | ( | ) | const throw () [inline, inherited] |
Returns the position of the in-lapping vehicle's end.
Definition at line 245 of file MSLane.h.
References MSLane::myInlappingVehicleEnd.
Referenced by MSLane::freeEmit(), MSLane::getLeaderOnConsecutive(), MSLaneChanger::getRealLeader(), MSLaneChanger::getRealThisLeader(), MSLane::isEmissionSuccess(), and MSVehicle::moveRegardingCritical().
00245 { 00246 return myInlappingVehicleEnd; 00247 }
| MSLane *const MSLane::getRightLane | ( | ) | const [inherited] |
Definition at line 864 of file MSLane.cpp.
References MSLane::myEdge, and MSEdge::rightLane().
Referenced by MSVehicle::checkForLaneChanges(), traci::TraCIServer::convertCartesianToRoadMap(), traci::TraCIServer::handleVehicleDomain(), and traci::TraCIServer::postProcessSimulationStep().
| const Position2DVector& MSLane::getShape | ( | ) | const throw () [inline, inherited] |
Returns this lane's shape.
Definition at line 314 of file MSLane.h.
References MSLane::myShape.
Referenced by NLSucceedingLaneBuilder::addSuccLane(), GUIE3Collector::MyWrapper::buildDefinition(), GUIVehicle::drawGL(), NLGeomShapeBuilder::getPointPosition(), MSVehicle::getPosition(), TraCIServerAPI_Vehicle::processGet(), TraCIServerAPI_Lane::processGet(), and ROWdrawAction_drawLane2LaneConnections().
00314 { 00315 return myShape; 00316 }
| unsigned int MSLane::getVehicleNumber | ( | ) | const throw () [inline, inherited] |
Returns the number of vehicles on this lane.
Definition at line 269 of file MSLane.h.
References MSLane::myVehicles.
Referenced by MSVehicle::checkRewindLinkLanes(), MSCalibrator::execute(), MSEdge::getFreeLane(), and TraCIServerAPI_Lane::processGet().
00269 { 00270 return (unsigned int) myVehicles.size(); 00271 }
| const MSLane::VehCont & GUILane::getVehiclesSecure | ( | ) | const throw () [virtual] |
Returns the vehicles container; locks it for microsimulation.
Locks "myLock" preventing usage by microsimulation.
Please note that it is necessary to release the vehicles container afterwards using "releaseVehicles".
Reimplemented from MSLane.
Definition at line 80 of file GUILane.cpp.
References MFXMutex::lock(), myLock, and MSLane::myVehicles.
00080 { 00081 myLock.lock(); 00082 return myVehicles; 00083 }
| SUMOReal MSLane::getVehLenSum | ( | ) | const throw () [inherited] |
Returns the sum of lengths of vehicles which were on the lane during the last step.
Definition at line 1034 of file MSLane.cpp.
References MSLane::myVehicleLengthSum.
Referenced by MSVehicle::checkRewindLinkLanes(), MSVehicle::getBestLanes(), and MSVehicle::rebuildContinuationsFor().
01034 { 01035 return myVehicleLengthSum; 01036 }
| void MSLane::init | ( | MSEdgeControl & | , | |
| std::vector< MSLane * >::const_iterator | firstNeigh, | |||
| std::vector< MSLane * >::const_iterator | lastNeigh | |||
| ) | [inherited] |
Definition at line 827 of file MSLane.cpp.
References MSLane::myFirstNeigh, and MSLane::myLastNeigh.
00827 { 00828 myFirstNeigh = firstNeigh; 00829 myLastNeigh = lastNeigh; 00830 }
| void MSLane::initialize | ( | MSLinkCont * | succs | ) | [inherited] |
Delayed initialization.
Not all lane-members are known at the time the lane is born, above all the pointers to other lanes, so we have to initialize later.
| [in] | succs | The list of (outgoing) links |
Definition at line 90 of file MSLane.cpp.
References MSLane::myLinks.
Referenced by NLSucceedingLaneBuilder::closeSuccLane().
00090 { 00091 myLinks = *links; 00092 delete links; 00093 }
| void MSLane::insertIDs | ( | std::vector< std::string > & | into | ) | throw () [static, inherited] |
Definition at line 645 of file MSLane.cpp.
References MSLane::myDict.
Referenced by TraCIServerAPI_Lane::processGet().
00645 { 00646 for (DictType::iterator i=myDict.begin(); i!=myDict.end(); ++i) { 00647 into.push_back((*i).first); 00648 } 00649 }
the same as in MSLane, but locks the access for the visualisation first; the access will be granted at the end of this method
Reimplemented from MSLane.
Definition at line 176 of file GUILane.cpp.
References MSLane::integrateNewVehicle(), MFXMutex::lock(), myLock, and MFXMutex::unlock().
00176 { 00177 myLock.lock(); 00178 try { 00179 bool ret = MSLane::integrateNewVehicle(t); 00180 myLock.unlock(); 00181 return ret; 00182 } catch (ProcessError &) { 00183 myLock.unlock(); 00184 throw; 00185 } 00186 }
| bool GUILane::isEmissionSuccess | ( | MSVehicle * | vehicle, | |
| SUMOReal | speed, | |||
| SUMOReal | pos, | |||
| bool | recheckNextLanes | |||
| ) | throw (ProcessError) [virtual] |
Tries to emit the given vehicle with the given state (speed and pos).
Locks the lock, calls MSLane::isEmissionSuccess keeping the result, unlocks the lock and returns the result.
| [in] | vehicle | The vehicle to emit |
| [in] | speed | The speed with which it shall be emitted |
| [in] | pos | The position at which it shall be emitted |
| [in] | recheckNextLanes | Forces patching the speed for not being too fast on next lanes |
Reimplemented from MSLane.
Definition at line 69 of file GUILane.cpp.
References MSLane::isEmissionSuccess(), MFXMutex::lock(), myLock, and MFXMutex::unlock().
00070 { 00071 myLock.lock(); 00072 bool ret = MSLane::isEmissionSuccess(aVehicle, speed, pos, recheckNextLanes); 00073 myLock.unlock(); 00074 return ret; 00075 }
| bool MSLane::isLinkEnd | ( | MSLinkCont::iterator & | i | ) | [inherited] |
Returns the information whether the given link shows at the end of the list of links (is not valid)
Definition at line 716 of file MSLane.cpp.
References MSLane::myLinks.
00716 { 00717 return i==myLinks.end(); 00718 }
| bool MSLane::isLinkEnd | ( | MSLinkCont::const_iterator & | i | ) | const [inherited] |
Returns the information whether the given link shows at the end of the list of links (is not valid)
Definition at line 710 of file MSLane.cpp.
References MSLane::myLinks.
Referenced by MSLane::getLeaderOnConsecutive(), MSLaneChanger::getRealThisLeader(), MSLane::isEmissionSuccess(), and MSVehicle::vsafeCriticalCont().
00710 { 00711 return i==myLinks.end(); 00712 }
| void MSLane::leftByLaneChange | ( | MSVehicle * | v | ) | [inherited] |
Definition at line 1015 of file MSLane.cpp.
References MSVehicleType::getLength(), MSVehicle::getVehicleType(), and MSLane::myVehicleLengthSum.
01015 { 01016 myVehicleLengthSum -= v->getVehicleType().getLength(); 01017 }
the same as in MSLane, but locks the access for the visualisation first; the access will be granted at the end of this method
Reimplemented from MSLane.
Definition at line 93 of file GUILane.cpp.
References MFXMutex::lock(), MSLane::moveCritical(), myLock, and MFXMutex::unlock().
00093 { 00094 myLock.lock(); 00095 try { 00096 bool ret = MSLane::moveCritical(t); 00097 myLock.unlock(); 00098 return ret; 00099 } catch (ProcessError &) { 00100 myLock.unlock(); 00101 throw; 00102 } 00103 }
Returns the first/front vehicle of the lane and removing it from the lane.
Reimplemented from MSLane.
Definition at line 209 of file GUILane.cpp.
References MFXMutex::lock(), myLock, MSLane::pop(), and MFXMutex::unlock().
00209 { 00210 myLock.lock(); 00211 try { 00212 MSVehicle *ret = MSLane::pop(t); 00213 myLock.unlock(); 00214 return ret; 00215 } catch (ProcessError &) { 00216 myLock.unlock(); 00217 throw; 00218 } 00219 }
the same as in MSLane, but locks the access for the visualisation first; the access will be granted at the end of this method
Reimplemented from MSLane.
Definition at line 121 of file GUILane.cpp.
References MFXMutex::lock(), myLock, MSLane::push(), and MFXMutex::unlock().
00121 { 00122 myLock.lock(); 00123 try { 00124 bool result = MSLane::push(veh); 00125 myLock.unlock(); 00126 return result; 00127 } catch (ProcessError &) { 00128 myLock.unlock(); 00129 throw; 00130 } 00131 }
| void GUILane::releaseVehicles | ( | ) | const throw () [virtual] |
Allows to use the container for microsimulation again.
Unlocks "myLock" preventing usage by microsimulation.
Reimplemented from MSLane.
Definition at line 87 of file GUILane.cpp.
References myLock, and MFXMutex::unlock().
| MSVehicle * GUILane::removeFirstVehicle | ( | ) | [virtual] |
Reimplemented from MSLane.
Definition at line 135 of file GUILane.cpp.
References MFXMutex::lock(), myLock, MSLane::removeFirstVehicle(), and MFXMutex::unlock().
00135 { 00136 myLock.lock(); 00137 try { 00138 MSVehicle *ret = MSLane::removeFirstVehicle(); 00139 myLock.unlock(); 00140 return ret; 00141 } catch (ProcessError &) { 00142 myLock.unlock(); 00143 throw; 00144 } 00145 }
Reimplemented from MSLane.
Definition at line 149 of file GUILane.cpp.
References MFXMutex::lock(), myLock, MSLane::removeVehicle(), and MFXMutex::unlock().
00149 { 00150 myLock.lock(); 00151 try { 00152 MSVehicle *ret = MSLane::removeVehicle(remVehicle); 00153 myLock.unlock(); 00154 return ret; 00155 } catch (ProcessError &) { 00156 myLock.unlock(); 00157 throw; 00158 } 00159 }
| void MSLane::resetPartialOccupation | ( | MSVehicle * | v | ) | throw () [inherited] |
Removes the information about a vehicle lapping into this lane.
| [in] | v | The vehicle which laps into this lane |
Definition at line 439 of file MSLane.cpp.
References MSLane::myInlappingVehicle, and MSLane::myInlappingVehicleEnd.
Referenced by MSVehicle::moveFirstChecked().
00439 { 00440 if (v==myInlappingVehicle) { 00441 myInlappingVehicleEnd = 10000; 00442 } 00443 myInlappingVehicle = 0; 00444 }
| void MSLane::setAllowedClasses | ( | const std::vector< SUMOVehicleClass > & | classes | ) | throw () [inline, inherited] |
Definition at line 468 of file MSLane.h.
References MSLane::myAllowedClasses.
Referenced by TraCIServerAPI_Lane::processSet().
00468 { 00469 myAllowedClasses = classes; 00470 }
the same as in MSLane, but locks the access for the visualisation first; the access will be granted at the end of this method
Reimplemented from MSLane.
Definition at line 107 of file GUILane.cpp.
References MFXMutex::lock(), myLock, MSLane::setCritical(), and MFXMutex::unlock().
00107 { 00108 myLock.lock(); 00109 try { 00110 bool ret = MSLane::setCritical(t, into); 00111 myLock.unlock(); 00112 return ret; 00113 } catch (ProcessError &) { 00114 myLock.unlock(); 00115 throw; 00116 } 00117 }
| void MSLane::setLength | ( | SUMOReal | val | ) | throw () [inline, inherited] |
Definition at line 391 of file MSLane.h.
References MSLane::myLength.
Referenced by TraCIServerAPI_Lane::processSet().
00391 { 00392 myLength = val; 00393 }
| void MSLane::setMaxSpeed | ( | SUMOReal | val | ) | throw () [inline, inherited] |
Definition at line 387 of file MSLane.h.
References MSLane::myMaxSpeed.
Referenced by TraCIServerAPI_Lane::processSet().
00387 { 00388 myMaxSpeed = val; 00389 }
| void MSLane::setNotAllowedClasses | ( | const std::vector< SUMOVehicleClass > & | classes | ) | throw () [inline, inherited] |
Definition at line 473 of file MSLane.h.
References MSLane::myNotAllowedClasses.
Referenced by TraCIServerAPI_Lane::processSet().
00473 { 00474 myNotAllowedClasses = classes; 00475 }
| SUMOReal MSLane::setPartialOccupation | ( | MSVehicle * | v, | |
| SUMOReal | leftVehicleLength | |||
| ) | throw () [inherited] |
Sets the information about a vehicle lapping into this lane.
The given left length of vehicle which laps into this lane is used to determine the vehicle's end position in regard to this lane's length. This information is set into myInlappingVehicleState; additionally, the vehicle pointer is stored in myInlappingVehicle; Returns this lane's length for subtracting it from the left vehicle length.
| [in] | v | The vehicle which laps into this lane |
| [in] | leftVehicleLength | The distance the vehicle laps into this lane |
Definition at line 427 of file MSLane.cpp.
References MSLane::myInlappingVehicle, MSLane::myInlappingVehicleEnd, and MSLane::myLength.
00427 { 00428 myInlappingVehicle = v; 00429 if (leftVehicleLength>myLength) { 00430 myInlappingVehicleEnd = 0; 00431 } else { 00432 myInlappingVehicleEnd = myLength-leftVehicleLength; 00433 } 00434 return myLength; 00435 }
| MSLinkCont::const_iterator MSLane::succLinkSec | ( | const SUMOVehicle & | veh, | |
| unsigned int | nRouteSuccs, | |||
| const MSLane & | succLinkSource, | |||
| const std::vector< MSLane * > & | conts | |||
| ) | const [virtual, inherited] |
Same as succLink, but does not throw any assertions when the succeeding link could not be found; Returns the myLinks.end() instead; Further, the number of edges to look forward may be given
Definition at line 740 of file MSLane.cpp.
References MSEdge::allowedLanes(), MSVehicleType::getVehicleClass(), SUMOVehicle::getVehicleType(), MSLane::myLinks, and SUMOVehicle::succEdge().
Referenced by MSLane::appropriate(), MSLane::getLeaderOnConsecutive(), MSLaneChanger::getRealThisLeader(), MSLane::isEmissionSuccess(), GUIVehicle::setBlinkerInformation(), and MSVehicle::vsafeCriticalCont().
00741 { 00742 const MSEdge* nRouteEdge = veh.succEdge(nRouteSuccs); 00743 // check whether the vehicle tried to look beyond its route 00744 if (nRouteEdge==0) { 00745 // return end (no succeeding link) if so 00746 return succLinkSource.myLinks.end(); 00747 } 00748 // a link may be used if 00749 // 1) there is a destination lane ((*link)->getLane()!=0) 00750 // 2) the destination lane belongs to the next edge in route ((*link)->getLane()->myEdge == nRouteEdge) 00751 // 3) the destination lane allows the vehicle's class ((*link)->getLane()->allowsVehicleClass(veh.getVehicleClass())) 00752 00753 // at first, we'll assume we have the continuations of our route in "conts" (built in "getBestLanes") 00754 // "conts" stores the best continuations of our current lane 00755 MSLinkCont::const_iterator link; 00756 if (nRouteSuccs>0&&conts.size()>=nRouteSuccs&&nRouteSuccs>0) { 00757 // we go through the links in our list and return the matching one 00758 for (link=succLinkSource.myLinks.begin(); link!=succLinkSource.myLinks.end() ; ++link) { 00759 if ((*link)->getLane()!=0 && (*link)->getLane()->myEdge == nRouteEdge && (*link)->getLane()->allowsVehicleClass(veh.getVehicleType().getVehicleClass())) { 00760 // we should use the link if it connects us to the best lane 00761 if ((*link)->getLane()==conts[nRouteSuccs-1]) { 00762 return link; 00763 } 00764 } 00765 } 00766 } 00767 00768 // ok, we were not able to use the conts for any reason 00769 // we will now collect allowed links, at first 00770 // collect allowed links 00771 std::vector<MSLinkCont::const_iterator> valid; 00772 for (link=succLinkSource.myLinks.begin(); link!=succLinkSource.myLinks.end() ; ++link) { 00773 if ((*link)->getLane()!=0 && (*link)->getLane()->myEdge == nRouteEdge && (*link)->getLane()->allowsVehicleClass(veh.getVehicleType().getVehicleClass())) { 00774 valid.push_back(link); 00775 } 00776 } 00777 // if no valid link was found... 00778 if (valid.size()==0) { 00779 // ... return end (no succeeding link) 00780 return succLinkSource.myLinks.end(); 00781 } 00782 // if there is only one valid link, let's use it... 00783 if (valid.size()==1) { 00784 return *(valid.begin()); 00785 } 00786 // if the next edge is the route end, then we may return an arbitary link 00787 // also, if there is no allowed lane on the edge following the current one (recheck?) 00788 const MSEdge* nRouteEdge2 = veh.succEdge(nRouteSuccs+1); 00789 const std::vector<MSLane*> *next_allowed = nRouteEdge->allowedLanes(*nRouteEdge2, veh.getVehicleType().getVehicleClass()); 00790 if (nRouteEdge2==0||next_allowed==0) { 00791 return *(valid.begin()); 00792 } 00793 // now let's determine which link is the best 00794 // in fact, we do not know it, here... 00795 for (std::vector<MSLinkCont::const_iterator>::iterator i=valid.begin(); i!=valid.end(); ++i) { 00796 if (find(next_allowed->begin(), next_allowed->end(), (**i)->getLane())!=next_allowed->end()) { 00797 return *i; 00798 } 00799 } 00800 return *(valid.begin()); 00801 }
| void GUILane::swapAfterLaneChange | ( | SUMOTime | t | ) | [protected, virtual] |
moves myTmpVehicles int myVehicles after a lane change procedure
Reimplemented from MSLane.
Definition at line 163 of file GUILane.cpp.
References MFXMutex::lock(), myLock, MSLane::swapAfterLaneChange(), and MFXMutex::unlock().
00163 { 00164 myLock.lock(); 00165 try { 00166 MSLane::swapAfterLaneChange(t); 00167 myLock.unlock(); 00168 } catch (ProcessError &) { 00169 myLock.unlock(); 00170 throw; 00171 } 00172 }
friend class GUILaneWrapper [friend, inherited] |
Definition at line 75 of file MSLane.h.
Referenced by buildLaneWrapper(), and GUIInternalLane::buildLaneWrapper().
friend class MSLaneChanger [friend, inherited] |
friend class MSXMLRawOut [friend, inherited] |
std::vector<SUMOVehicleClass> MSLane::myAllowedClasses [protected, inherited] |
The list of allowed vehicle classes.
Definition at line 616 of file MSLane.h.
Referenced by MSLane::allowsVehicleClass(), MSLane::getAllowedClasses(), and MSLane::setAllowedClasses().
SUMOReal MSLane::myBackDistance [protected, inherited] |
MSLane::DictType MSLane::myDict [static, protected, inherited] |
Static dictionary to associate string-ids with objects.
Definition at line 650 of file MSLane.h.
Referenced by MSLane::clear(), MSLane::dictionary(), MSLane::dictSize(), and MSLane::insertIDs().
MSEdge* MSLane::myEdge [protected, inherited] |
The lane's edge, for routing only.
Definition at line 597 of file MSLane.h.
Referenced by MSLane::appropriate(), MSLane::getEdge(), MSLane::getLeftLane(), GUILaneWrapper::getPurpose(), MSLane::getRightLane(), and MSLane::push().
std::vector<MSLane*>::const_iterator MSLane::myFirstNeigh [protected, inherited] |
The lane left to the described lane (==lastNeigh if none).
Definition at line 634 of file MSLane.h.
Referenced by MSLane::init().
std::string MSLane::myID [protected, inherited] |
std::vector<IncomingLaneInfo> MSLane::myIncomingLanes [protected, inherited] |
Definition at line 621 of file MSLane.h.
Referenced by MSLane::addIncomingLane(), MSLane::getFollowerOnConsecutive(), and MSLane::getIncomingLanes().
MSVehicle* MSLane::myInlappingVehicle [protected, inherited] |
The vehicle which laps into this lane.
Definition at line 630 of file MSLane.h.
Referenced by MSLane::getLastVehicleInformation(), MSLane::getPartialOccupator(), MSLane::resetPartialOccupation(), and MSLane::setPartialOccupation().
SUMOReal MSLane::myInlappingVehicleEnd [protected, inherited] |
End position of a vehicle which laps into this lane.
Definition at line 627 of file MSLane.h.
Referenced by MSLane::getLastVehicleInformation(), MSLane::getPartialOccupatorEnd(), MSLane::resetPartialOccupation(), and MSLane::setPartialOccupation().
std::vector<MSLane*>::const_iterator MSLane::myLastNeigh [protected, inherited] |
The end of this lane's edge's lane container.
Definition at line 637 of file MSLane.h.
Referenced by MSLane::init().
SUMOReal MSLane::myLeftVehLength [protected, inherited] |
Not yet seen vehicle lengths.
Definition at line 640 of file MSLane.h.
Referenced by MSLane::moveCritical().
SUMOReal MSLane::myLength [protected, inherited] |
Lane length [m].
Definition at line 594 of file MSLane.h.
Referenced by MSLane::getLength(), MSLane::getOccupancy(), MSLane::moveCritical(), MSLane::setLength(), and MSLane::setPartialOccupation().
MSLinkCont MSLane::myLinks [protected, inherited] |
The lane's Links to it's succeeding lanes and the default right-of-way rule, i.e. blocked or not blocked.
Definition at line 644 of file MSLane.h.
Referenced by MSLane::appropriate(), MSLane::getLinkCont(), MSLane::initialize(), MSLane::isLinkEnd(), MSLane::succLinkSec(), and MSLane::~MSLane().
MFXMutex GUILane::myLock [mutable, private] |
The mutex used to avoid concurrent updates of the vehicle buffer.
Definition at line 170 of file GUILane.h.
Referenced by detectCollisions(), getVehiclesSecure(), integrateNewVehicle(), isEmissionSuccess(), moveCritical(), pop(), push(), releaseVehicles(), removeFirstVehicle(), removeVehicle(), setCritical(), swapAfterLaneChange(), and ~GUILane().
SUMOReal MSLane::myMaxSpeed [protected, inherited] |
Lane-wide speedlimit [m/s].
Definition at line 600 of file MSLane.h.
Referenced by MSLane::getMaxSpeed(), MSLane::getMeanSpeed(), and MSLane::setMaxSpeed().
std::vector<SUMOVehicleClass> MSLane::myNotAllowedClasses [protected, inherited] |
The list of disallowed vehicle classes.
Definition at line 619 of file MSLane.h.
Referenced by MSLane::allowsVehicleClass(), MSLane::getNotAllowedClasses(), and MSLane::setNotAllowedClasses().
size_t MSLane::myNumericalID [protected, inherited] |
Unique numerical ID (set on reading by netload).
Definition at line 582 of file MSLane.h.
Referenced by MSLane::getNumericalID().
Position2DVector MSLane::myShape [inherited] |
The shape of the lane.
Definition at line 457 of file MSLane.h.
Referenced by buildLaneWrapper(), GUIInternalLane::buildLaneWrapper(), and MSLane::getShape().
VehCont MSLane::myTmpVehicles [protected, inherited] |
Container for lane-changing vehicles. After completion of lane-change- process, the two containers will be swapped.
Definition at line 604 of file MSLane.h.
Referenced by MSLane::swapAfterLaneChange().
std::vector<MSVehicle*> MSLane::myVehBuffer [protected, inherited] |
Vehicle-buffer for vehicle that was put onto this lane by a junction. The buffer is necessary, because of competing push- and pop-operations on myVehicles during Junction::moveFirst()
Definition at line 613 of file MSLane.h.
Referenced by MSLane::empty(), MSLane::integrateNewVehicle(), and MSLane::push().
SUMOReal MSLane::myVehicleLengthSum [protected, inherited] |
The current length of all vehicles on this lane.
Definition at line 624 of file MSLane.h.
Referenced by MSLane::detectCollisions(), MSLane::enteredByLaneChange(), MSLane::getOccupancy(), MSLane::getVehLenSum(), MSLane::integrateNewVehicle(), MSLane::isEmissionSuccess(), MSLane::leftByLaneChange(), MSLane::moveCritical(), MSLane::pop(), MSLane::removeFirstVehicle(), MSLane::removeVehicle(), and MSLane::setCritical().
VehCont MSLane::myVehicles [protected, inherited] |
The lane's vehicles. The entering vehicles are inserted at the front of this container and the leaving ones leave from the back, e.g. the vehicle in front of the junction (often called first) is myVehicles.back() (if it exists). And if it is an iterator at a vehicle, ++it points to the vehicle in front. This is the interaction vehicle.
Definition at line 591 of file MSLane.h.
Referenced by MSLane::detectCollisions(), MSLane::empty(), GUILaneWrapper::firstWaitingTime(), MSLane::freeEmit(), MSLane::getFirstVehicle(), MSLane::getLastVehicle(), MSLane::getLastVehicleInformation(), MSLane::getMeanSpeed(), MSLane::getVehicleNumber(), MSLane::getVehiclesSecure(), getVehiclesSecure(), GUIInternalLane::getVehiclesSecure(), MSLane::integrateNewVehicle(), MSLane::isEmissionSuccess(), MSLane::moveCritical(), MSInternalLane::moveCritical(), MSLane::pop(), MSLane::removeFirstVehicle(), MSLane::removeVehicle(), MSLane::setCritical(), and MSLane::swapAfterLaneChange().
1.5.6