49 const double defaultSlope, std::ostream* stdOut,
OutputDevice* xmlOut)
50 :
SUMOSAXHandler(
""), myComputeA(computeA), myComputeAForward(computeAForward), myAccelZeroCorrection(accelZeroCorrection), myDefaultClass(defaultClass),
51 myDefaultSlope(defaultSlope), myStdOut(stdOut), myXMLOut(xmlOut), myCurrentTime(-1), myStepSize(
TS) {}
78 WRITE_WARNING(
"Unknown actor configuration '" + acId +
"' for vehicle '" +
id +
"'!");
96 WRITE_WARNING(
"Motion state for unknown vehicle '" +
id +
"'!");
120 double& v,
double& a,
double& s) {
137 throw ProcessError(
"Acceleration information is missing; try running with --compute-a.");
155 double& a,
double& s) {
163 const double nextS = s;
168 o << t <<
";" << v <<
";" << a <<
";" << s <<
";" 169 << e.
CO <<
";" << e.
CO2 <<
";" << e.
HC <<
";" << e.
PMx <<
";" 179 double a,
double s) {
202 o <<
"CO:" <<
mySums[id].CO << std::endl
203 <<
"CO2:" <<
mySums[id].CO2 << std::endl
204 <<
"HC:" <<
mySums[id].HC << std::endl
205 <<
"NOx:" <<
mySums[id].NOx << std::endl
206 <<
"PMx:" <<
mySums[id].PMx << std::endl
207 <<
"fuel:" <<
mySums[id].fuel << std::endl
208 <<
"electricity:" <<
mySums[id].electricity << std::endl;
214 o <<
mySums[id].fuel / factor <<
"," 215 <<
mySums[id].electricity / factor <<
"," 216 <<
mySums[id].CO2 / factor <<
"," 217 <<
mySums[id].NOx / factor <<
"," 218 <<
mySums[id].CO / factor <<
"," 219 <<
mySums[id].HC / factor <<
"," 220 <<
mySums[id].PMx / factor << std::endl;
void writeNormedSums(std::ostream &o, const std::string id, const double factor)
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
static Emissions computeAll(const SUMOEmissionClass c, const double v, const double a, const double slope, const std::map< int, double > *param=0)
Returns the amount of all emitted pollutants given the vehicle type and state (in mg/s or ml/s for fu...
TrajectoriesHandler(const bool computeA, const bool computeAForward, const bool accelZeroCorrection, const SUMOEmissionClass defaultClass, const double defaultSlope, std::ostream *stdOut, OutputDevice *xmlOut)
Constructor.
const SUMOEmissionClass myDefaultClass
const bool myAccelZeroCorrection
std::map< std::string, SUMOEmissionClass > myEmissionClassByType
std::string time2string(SUMOTime t)
Storage for collected values of all emission types.
static double getModifiedAccel(const SUMOEmissionClass c, const double v, const double a, const double slope)
Returns the adapted acceleration value, useful for comparing with external PHEMlight references...
const PollutantsInterface::Emissions computeEmissions(const std::string id, const SUMOEmissionClass c, double &v, double &a, double &s)
SAX-handler base for SUMO-files.
virtual bool hasAttribute(int id) const =0
Returns the information whether the named (by its enum-value) attribute is within the current list...
SUMOTime getSUMOTimeReporting(int attr, const char *objectid, bool &ok, bool report=true) const
Tries to read given attribute assuming it is a SUMOTime.
#define WRITE_WARNING(msg)
virtual std::string getString(int id) const =0
Returns the string-value of the named (by its enum-value) attribute.
static const int INVALID_VALUE
Encapsulated SAX-Attributes.
T get(int attr, const char *objectid, bool &ok, bool report=true) const
Tries to read given attribute assuming it is an int.
const double myDefaultSlope
void myStartElement(int element, const SUMOSAXAttributes &attrs)
Called when an opening-tag occurs.
static SUMOEmissionClass getClass(const SUMOEmissionClass base, const std::string &vClass, const std::string &fuel, const std::string &eClass, const double weight)
Returns the emission class fittig the given parameters.
bool writeXMLEmissions(const std::string id, const SUMOEmissionClass c, SUMOTime t, double &v, double a=INVALID_VALUE, double s=INVALID_VALUE)
static std::string getName(const SUMOEmissionClass c)
Checks whether the string describes a known vehicle class.
~TrajectoriesHandler()
Destructor.
std::map< std::string, double > myLastV
std::map< std::string, double > myLastSlope
virtual double getFloat(int id) const =0
Returns the double-value of the named (by its enum-value) attribute.
trigger: the time of the step
T getOpt(int attr, const char *objectid, bool &ok, T defaultValue, bool report=true) const
Tries to read given attribute assuming it is an int.
std::map< std::string, SUMOEmissionClass > myEmissionClassByVehicle
void writeSums(std::ostream &o, const std::string id)
Static storage of an output device and its base (abstract) implementation.
bool closeTag()
Closes the most recently opened tag.
bool writeEmissions(std::ostream &o, const std::string id, const SUMOEmissionClass c, double t, double &v, double &a, double &s)
std::map< std::string, PollutantsInterface::Emissions > mySums
const bool myComputeAForward
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.