43 const double defaultSlope, std::ostream* stdOut,
OutputDevice* xmlOut)
44 :
SUMOSAXHandler(
""), myComputeA(computeA), myComputeAForward(computeAForward), myAccelZeroCorrection(accelZeroCorrection), myDefaultClass(defaultClass),
45 myDefaultSlope(defaultSlope), myStdOut(stdOut), myXMLOut(xmlOut), myCurrentTime(-1), myStepSize(
TS) {}
72 WRITE_WARNING(
"Unknown actor configuration '" + acId +
"' for vehicle '" +
id +
"'!");
90 WRITE_WARNING(
"Motion state for unknown vehicle '" +
id +
"'!");
114 double& v,
double& a,
double& s) {
131 throw ProcessError(
"Acceleration information is missing; try running with --compute-a.");
149 double& a,
double& s) {
157 const double nextS = s;
162 o << t <<
";" << v <<
";" << a <<
";" << s <<
";" 163 << e.
CO <<
";" << e.
CO2 <<
";" << e.
HC <<
";" << e.
PMx <<
";" 173 double a,
double s) {
196 o <<
"CO:" <<
mySums[id].CO << std::endl
197 <<
"CO2:" <<
mySums[id].CO2 << std::endl
198 <<
"HC:" <<
mySums[id].HC << std::endl
199 <<
"NOx:" <<
mySums[id].NOx << std::endl
200 <<
"PMx:" <<
mySums[id].PMx << std::endl
201 <<
"fuel:" <<
mySums[id].fuel << std::endl
202 <<
"electricity:" <<
mySums[id].electricity << std::endl;
208 o <<
mySums[id].fuel / factor <<
"," 209 <<
mySums[id].electricity / factor <<
"," 210 <<
mySums[id].CO2 / factor <<
"," 211 <<
mySums[id].NOx / factor <<
"," 212 <<
mySums[id].CO / factor <<
"," 213 <<
mySums[id].HC / factor <<
"," 214 <<
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(const std::string &comment="")
Closes the most recently opened tag and optionally adds a comment.
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.