CrossSection is used to store the generated cross section.
This type is meant to be used to pass, on an event by event basis,
the current best guess of the total cross section.
It is expected that the final cross section will be stored elsewhere.

Flow represents a particle's flow and keeps track of an arbitrary number of flow patterns within a graph (i.e. color flow, charge flow, lepton number flow,...)

Flow patterns are coded with an integer, in the same manner as in Herwig.
Note: 0 is NOT allowed as code index nor as flow code since it

is used to indicate null.

This class can be used to keep track of flow patterns within

a graph. An example is color flow. If we have two quarks going through
an s-channel gluon to form two more quarks:
\q1 /q3 then we can keep track of the color flow with the
\_______/ HepMC::Flow class as follows:
/ g \.
/q2 \q4
lets say the color flows from q2-->g-->q3 and q1-->g-->q4
the individual colors are unimportant, but the flow pattern is.
We can capture this flow by assigning the first pattern (q2-->g-->q3)
a unique (arbitrary) flow code 678 and the second pattern (q1-->g-->q4)
flow code 269 ( you can ask HepMC::Flow to choose
a unique code for you using Flow::set_unique_icode() ).
these codes with the particles as follows:
q2->flow().set_icode(1,678);
g->flow().set_icode(1,678);
q3->flow().set_icode(1,678);
q1->flow().set_icode(1,269);
g->flow().set_icode(2,269);
q4->flow().set_icode(1,269);
later on if we wish to know the color partner of q1 we can ask for a list
of all particles connected via this code to q1 which do have less than
2 color partners using:
vector<GenParticle*> result=q1->dangling_connected_partners(q1->icode(1),1,2);
this will return a list containing q1 and q4.
vector<GenParticle*> result=q1->connected_partners(q1->icode(1),1,2);
would return a list containing q1, g, and q4.

type HeavyIon struct {
NCollHardint// number of hard scatteringsNPartProjint// number of projectile participantsNPartTargint// number of target participantsNCollint// number of NN (nucleon-nucleon) collisionsNNwCollint// Number of N-Nwounded collisionsNwNCollint// Number of Nwounded-N collisonsNwNwCollint// Number of Nwounded-Nwounded collisionsSpectatorNeutronsint// Number of spectators neutronsSpectatorProtonsint// Number of spectators protonsImpactParameterfloat32// Impact Parameter(fm) of collisionEventPlaneAnglefloat32// Azimuthal angle of event planeEccentricityfloat32// eccentricity of participating nucleons in the transverse plane (as in phobos nucl-ex/0510031)SigmaInelNNfloat32// nucleon-nucleon inelastic (including diffractive) cross-section
}

type Particle struct {
Momentumfmom.PxPyPzE// momentum vectorPdgIDint64// id according to PDG conventionStatusint// status code as defined for HEPEVTFlowFlow// flow of this particlePolarizationPolarization// polarization of this particleProdVertex *Vertex// pointer to production vertex (nil if vacuum or beam)EndVertex *Vertex// pointer to decay vertex (nil if not-decayed)Barcodeint// unique identifier in the eventGeneratedMassfloat64// mass of this particle when it was generated
}

Particle represents a generator particle within an event coming in/out of a vertex