Eclipse SUMO - Simulation of Urban MObility
|
Detectors container; responsible for string and output generation. More...
#include <MSDetectorControl.h>
Public Member Functions | |
void | add (MSMeanData *mn, const std::string &device, SUMOTime frequency, SUMOTime begin) |
Adds a mean data object. | |
void | add (SumoXMLTag type, MSDetectorFileOutput *d) |
Adds only the detector into the containers. | |
void | add (SumoXMLTag type, MSDetectorFileOutput *d, const std::string &device, SUMOTime interval, SUMOTime begin=-1) |
Adds a detector/output combination into the containers. | |
void | addDetectorAndInterval (MSDetectorFileOutput *det, OutputDevice *device, SUMOTime interval, SUMOTime begin=-1) |
Adds one of the detectors as a new MSDetectorFileOutput. | |
void | clearState (SUMOTime step) |
Remove all vehicles before quick-loading state. | |
void | close (SUMOTime step) |
Closes the detector outputs. | |
const std::vector< SumoXMLTag > | getAvailableTypes () const |
Returns the list of available detector types. | |
const std::map< std::string, std::vector< MSMeanData * > > & | getMeanData () const |
const NamedObjectCont< MSDetectorFileOutput * > & | getTypedDetectors (SumoXMLTag type) const |
Returns the list of detectors of the given type. | |
MSDetectorControl () | |
Constructor. | |
void | updateDetectors (const SUMOTime step) |
Computes detector values. | |
void | writeOutput (SUMOTime step, bool closing) |
Writes the output to be generated within the given time step. | |
~MSDetectorControl () | |
Destructor. | |
Protected Types | |
Structures needed for assigning detectors to intervals | |
typedef std::pair< MSDetectorFileOutput *, OutputDevice * > | DetectorFilePair |
A pair of a Detector with it's associated file-stream. | |
typedef std::vector< DetectorFilePair > | DetectorFileVec |
Container holding DetectorFilePair (with the same interval). | |
typedef std::pair< SUMOTime, SUMOTime > | IntervalsKey |
Definition of the interval key (interval, begin) | |
typedef std::map< IntervalsKey, DetectorFileVec > | Intervals |
Association of intervals to DetectorFilePair containers. | |
Protected Attributes | |
std::map< SumoXMLTag, NamedObjectCont< MSDetectorFileOutput * > > | myDetectors |
The detectors map, first by detector type, then using NamedObjectCont (. | |
NamedObjectCont< MSDetectorFileOutput * > | myEmptyContainer |
An empty container to return in getTypedDetectors() if no detectors of the asked type exist. | |
Intervals | myIntervals |
Map that hold DetectorFileVec for given intervals. | |
std::map< IntervalsKey, SUMOTime > | myLastCalls |
The map that holds the last call for each sample interval. | |
std::map< std::string, std::vector< MSMeanData * > > | myMeanData |
List of meanData detectors. | |
Private Member Functions | |
MSDetectorControl (const MSDetectorControl &) | |
Invalidated copy constructor. | |
MSDetectorControl & | operator= (const MSDetectorControl &) |
Invalidated assignment operator. | |
Detectors container; responsible for string and output generation.
Definition at line 50 of file MSDetectorControl.h.
|
protected |
A pair of a Detector with it's associated file-stream.
Definition at line 188 of file MSDetectorControl.h.
|
protected |
Container holding DetectorFilePair (with the same interval).
Definition at line 191 of file MSDetectorControl.h.
|
protected |
Association of intervals to DetectorFilePair containers.
Definition at line 197 of file MSDetectorControl.h.
|
protected |
Definition of the interval key (interval, begin)
Definition at line 194 of file MSDetectorControl.h.
MSDetectorControl::MSDetectorControl | ( | ) |
Constructor.
Definition at line 39 of file MSDetectorControl.cpp.
MSDetectorControl::~MSDetectorControl | ( | ) |
Destructor.
Deletes all stored detectors.
Definition at line 43 of file MSDetectorControl.cpp.
References myDetectors, and myMeanData.
|
private |
Invalidated copy constructor.
void MSDetectorControl::add | ( | MSMeanData * | mn, |
const std::string & | device, | ||
SUMOTime | frequency, | ||
SUMOTime | begin | ||
) |
Adds a mean data object.
The detector is pushed into the internal list.
Please note, that the detector control gets responsible for the detector.
[in] | mn | The mean data to add |
[in] | device | The output device to use |
[in] | frequency | The frequency for output generation |
[in] | begin | The begin of the first interval |
Definition at line 87 of file MSDetectorControl.cpp.
References addDetectorAndInterval(), OutputDevice::getDevice(), Named::getID(), OptionsCont::getOptions(), MSGlobals::gHaveEmissions, MSMeanData::init(), myMeanData, and string2time().
void MSDetectorControl::add | ( | SumoXMLTag | type, |
MSDetectorFileOutput * | d | ||
) |
Adds only the detector into the containers.
The detector is tried to be added into "myDetectors". If the detector is already known (the id was already used for a similar detector), a ProcessError is thrown.
Please note, that the detector control gets responsible for the detector.
[in] | type | The type of the detector |
[in] | d | The detector to add |
ProcessError | If the detector is already known |
Definition at line 77 of file MSDetectorControl.cpp.
References add(), Named::getID(), myDetectors, and toString().
void MSDetectorControl::add | ( | SumoXMLTag | type, |
MSDetectorFileOutput * | d, | ||
const std::string & | device, | ||
SUMOTime | interval, | ||
SUMOTime | begin = -1 |
||
) |
Adds a detector/output combination into the containers.
The detector is tried to be added into "myDetectors". If the detector is already known (the id was already used for a similar detector), a ProcessError is thrown.
Otherwise, the Detector2File-mechanism is instantiated for the detector.
Please note, that the detector control gets responsible for the detector.
[in] | type | The type of the detector |
[in] | d | The detector to add |
[in] | device | The device the detector uses |
[in] | interval | The sample interval of the detector |
ProcessError | If the detector is already known |
Definition at line 66 of file MSDetectorControl.cpp.
References add(), addDetectorAndInterval(), OutputDevice::getDevice(), Named::getID(), myDetectors, and toString().
Referenced by add(), add(), MSSOTLE2Sensors::buildContinueSensior(), MSSOTLE2Sensors::buildCountSensorForLane(), MSSOTLE2Sensors::buildCountSensorForOutLane(), NLDetectorBuilder::buildE2Detector(), NLDetectorBuilder::buildE2Detector(), NLDetectorBuilder::buildInductLoop(), NLDetectorBuilder::buildInstantInductLoop(), NLDetectorBuilder::buildRouteProbe(), MSSOTLE2Sensors::buildSensorForLane(), MSSOTLE2Sensors::buildSensorForOutLane(), NLDetectorBuilder::createEdgeLaneMeanData(), NLDetectorBuilder::endE3Detector(), MSActuatedTrafficLightLogic::init(), and MSDelayBasedTrafficLightLogic::init().
void MSDetectorControl::addDetectorAndInterval | ( | MSDetectorFileOutput * | det, |
OutputDevice * | device, | ||
SUMOTime | interval, | ||
SUMOTime | begin = -1 |
||
) |
Adds one of the detectors as a new MSDetectorFileOutput.
[in] | det | The generator to add |
[in] | device | The device to use |
[in] | interval | The sample interval to use |
[in] | begin | The start of the first sample interval to use |
Definition at line 151 of file MSDetectorControl.cpp.
References OptionsCont::getOptions(), myIntervals, myLastCalls, string2time(), WRITE_WARNING, and MSDetectorFileOutput::writeXMLDetectorProlog().
Referenced by add(), and add().
void MSDetectorControl::clearState | ( | SUMOTime | step | ) |
Remove all vehicles before quick-loading state.
Definition at line 188 of file MSDetectorControl.cpp.
References getTypedDetectors(), and myDetectors.
Referenced by MSNet::clearState().
void MSDetectorControl::close | ( | SUMOTime | step | ) |
Closes the detector outputs.
Goes through the intervals to write and writes the last step using the current simulation time as end.
[in] | step | The time step (the simulation has ended at) |
Definition at line 57 of file MSDetectorControl.cpp.
References myIntervals, and writeOutput().
Referenced by MSNet::closeSimulation(), and GUINet::flushOutputsAtEnd().
const std::vector< SumoXMLTag > MSDetectorControl::getAvailableTypes | ( | ) | const |
Returns the list of available detector types.
Definition at line 99 of file MSDetectorControl.cpp.
References NamedObjectCont< T >::begin(), and myDetectors.
Referenced by GUINet::initGUIStructures().
|
inline |
Definition at line 152 of file MSDetectorControl.h.
References myMeanData.
Referenced by GUINet::getMeanData(), LIBSUMO_NAMESPACE::MeanData::getMeanData(), GUINet::getMeanDataAttrs(), and GUINet::getMeanDataIDs().
const NamedObjectCont< MSDetectorFileOutput * > & MSDetectorControl::getTypedDetectors | ( | SumoXMLTag | type | ) | const |
Returns the list of detectors of the given type.
[in] | type | The type of detectors to be retrieved |
Definition at line 109 of file MSDetectorControl.cpp.
References myDetectors, and myEmptyContainer.
Referenced by clearState(), LIBSUMO_NAMESPACE::LaneArea::getDetector(), LIBSUMO_NAMESPACE::MultiEntryExit::getDetector(), LIBSUMO_NAMESPACE::InductionLoop::getDetector(), LIBSUMO_NAMESPACE::InductionLoop::getMEDetector(), LIBSUMO_NAMESPACE::RouteProbe::getRouteProbe(), LIBSUMO_NAMESPACE::InductionLoop::getTree(), MSActuatedTrafficLightLogic::init(), MSDelayBasedTrafficLightLogic::init(), NEMALogic::init(), GUINet::initGUIStructures(), NLTriggerBuilder::parseAndBuildCalibrator(), MSActuatedTrafficLightLogic::retrieveDetExpression(), and updateDetectors().
|
private |
Invalidated assignment operator.
void MSDetectorControl::updateDetectors | ( | const SUMOTime | step | ) |
Computes detector values.
Some detectors need to be touched each time step in order to compute values from the vehicles stored in their containers. This method goes through all of these detectors and forces a recomputation of the values.
[in] | step | The current time step |
Definition at line 118 of file MSDetectorControl.cpp.
References getTypedDetectors(), myDetectors, and myMeanData.
Referenced by MSNet::clearState(), and MSNet::writeOutput().
void MSDetectorControl::writeOutput | ( | SUMOTime | step, |
bool | closing | ||
) |
Writes the output to be generated within the given time step.
Goes through the list of intervals. If one interval has ended within the given step or if the closing-flag is set and the output was not written in this step already, the writeXMLOutput method is called for all MSDetectorFileOutputs within this interval.
[in] | step | The current time step |
[in] | closing | Whether the device is closed |
IOError | If an error on writing occurs (!!! not yet implemented) |
Definition at line 133 of file MSDetectorControl.cpp.
References myIntervals, myLastCalls, and MSDetectorFileOutput::writeXMLOutput().
Referenced by MSNet::clearState(), close(), and MSNet::writeOutput().
|
protected |
The detectors map, first by detector type, then using NamedObjectCont (.
Definition at line 202 of file MSDetectorControl.h.
Referenced by add(), add(), clearState(), getAvailableTypes(), getTypedDetectors(), updateDetectors(), and ~MSDetectorControl().
|
protected |
An empty container to return in getTypedDetectors() if no detectors of the asked type exist.
Definition at line 214 of file MSDetectorControl.h.
Referenced by getTypedDetectors().
|
protected |
Map that hold DetectorFileVec for given intervals.
Definition at line 205 of file MSDetectorControl.h.
Referenced by addDetectorAndInterval(), close(), and writeOutput().
|
protected |
The map that holds the last call for each sample interval.
Definition at line 208 of file MSDetectorControl.h.
Referenced by addDetectorAndInterval(), and writeOutput().
|
protected |
List of meanData detectors.
Definition at line 211 of file MSDetectorControl.h.
Referenced by add(), getMeanData(), updateDetectors(), and ~MSDetectorControl().