SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MSDetectorControl.h
Go to the documentation of this file.
1 /****************************************************************************/
11 // Detectors container; responsible for string and output generation
12 /****************************************************************************/
13 // SUMO, Simulation of Urban MObility; see http://sumo-sim.org/
14 // Copyright (C) 2001-2014 DLR (http://www.dlr.de/) and contributors
15 /****************************************************************************/
16 //
17 // This file is part of SUMO.
18 // SUMO is free software: you can redistribute it and/or modify
19 // it under the terms of the GNU General Public License as published by
20 // the Free Software Foundation, either version 3 of the License, or
21 // (at your option) any later version.
22 //
23 /****************************************************************************/
24 #ifndef MSDetectorControl_h
25 #define MSDetectorControl_h
26 
27 
28 // ===========================================================================
29 // included modules
30 // ===========================================================================
31 #ifdef _MSC_VER
32 #include <windows_config.h>
33 #else
34 #include <config.h>
35 #endif
36 
37 #include <string>
38 #include <vector>
46 
47 #ifdef HAVE_INTERNAL
48 #include <mesosim/MEInductLoop.h>
49 #endif
50 
51 
52 // ===========================================================================
53 // class declarations
54 // ===========================================================================
55 class MSMeanData;
56 
57 
58 // ===========================================================================
59 // class definitions
60 // ===========================================================================
66 public:
70 
71 
77 
78 
86  void close(SUMOTime step);
87 
88 
105  void add(SumoXMLTag type, MSDetectorFileOutput* d, const std::string& device, int splInterval, SUMOTime begin = -1);
106 
107 
108 
121  void add(SumoXMLTag type, MSDetectorFileOutput* d);
122 
123 
135  void add(MSMeanData* mn, const std::string& device,
136  SUMOTime frequency, SUMOTime begin);
137 
138 
139 
148  OutputDevice* device,
149  SUMOTime interval, SUMOTime begin = -1);
150 
151 
152 
157  const std::vector<SumoXMLTag> getAvailableTypes() const;
158 
159 
166 
167 
176  void updateDetectors(const SUMOTime step);
177 
178 
190  void writeOutput(SUMOTime step, bool closing);
191 
192 
193 protected:
196 
198  typedef std::pair< MSDetectorFileOutput*, OutputDevice* > DetectorFilePair;
199 
201  typedef std::vector< DetectorFilePair > DetectorFileVec;
202 
204  typedef std::pair<SUMOTime, SUMOTime> IntervalsKey;
205 
207  typedef std::map< IntervalsKey, DetectorFileVec > Intervals;
209 
221  struct detectorEquals : public std::binary_function< DetectorFilePair, MSDetectorFileOutput*, bool > {
223  bool operator()(const DetectorFilePair& pair, const MSDetectorFileOutput* det) const {
224  return pair.first == det;
225  }
226  };
227 
228 protected:
230  std::map<SumoXMLTag, NamedObjectCont< MSDetectorFileOutput*> > myDetectors;
231 
232 
235 
237  std::map<IntervalsKey, SUMOTime> myLastCalls;
238 
240  std::vector<MSMeanData*> myMeanData;
241 
244 
245 
246 private:
249 
252 
253 
254 };
255 
256 
257 #endif
258 
259 /****************************************************************************/
260 
std::vector< DetectorFilePair > DetectorFileVec
Container holding DetectorFilePair (with the same interval).
std::pair< MSDetectorFileOutput *, OutputDevice * > DetectorFilePair
A pair of a Detector with it's associated file-stream.
Data collector for edges/lanes.
Definition: MSMeanData.h:66
SumoXMLTag
Numbers representing SUMO-XML - element names.
std::vector< MSMeanData * > myMeanData
List of harmonoise detectors.
std::map< IntervalsKey, SUMOTime > myLastCalls
The map that holds the last call for each sample interval.
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.
Detectors container; responsible for string and output generation.
Returns true if detectors are equal.
const NamedObjectCont< MSDetectorFileOutput * > & getTypedDetectors(SumoXMLTag type) const
Returns the list of detectors of the given type.
NamedObjectCont< MSDetectorFileOutput * > myEmptyContainer
An empty container to return in getTypedDetectors() if no detectors of the asked type exist...
MSDetectorControl & operator=(const MSDetectorControl &)
Invalidated assignment operator.
std::map< IntervalsKey, DetectorFileVec > Intervals
Association of intervals to DetectorFilePair containers.
std::pair< SUMOTime, SUMOTime > IntervalsKey
Definition of the interval key.
bool operator()(const DetectorFilePair &pair, const MSDetectorFileOutput *det) const
Returns true if detectors are equal.
std::map< SumoXMLTag, NamedObjectCont< MSDetectorFileOutput * > > myDetectors
The detectors map, first by detector type, then using NamedObjectCont (.
const std::vector< SumoXMLTag > getAvailableTypes() const
Returns the list of available detector types.
void close(SUMOTime step)
Closes the detector outputs.
~MSDetectorControl()
Destructor.
void add(SumoXMLTag type, MSDetectorFileOutput *d, const std::string &device, int splInterval, SUMOTime begin=-1)
Adds a detector/output combination into the containers.
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:71
MSDetectorControl()
Constructor.
Intervals myIntervals
Map that hold DetectorFileVec for given intervals.
void addDetectorAndInterval(MSDetectorFileOutput *det, OutputDevice *device, SUMOTime interval, SUMOTime begin=-1)
Adds one of the detectors as a new MSDetectorFileOutput.
Base of value-generating classes (detectors)