14#ifndef PARTICLELINE_HPP_
15#define PARTICLELINE_HPP_
36 std::list< ParticleLine const* >& linesToSum );
42 std::list< ParticleLine const* >& linesToSum );
45 std::list< ParticleLine const* >& linesToSum );
48 std::list< ParticleLine const* >& linesToSum );
72 MOTHUP(
int const whichMother = 1 )
const;
78 ICOLUP(
int const whichColorCode = 1 )
const;
90 IPUP(
int const whichComponent )
const;
105 std::vector< ParticleLine* >
const&
121 std::string
const& lineAsString );
207 std::list< ParticleLine const* >& linesToSum )
213 for( std::list< ParticleLine const* >::iterator
214 lineIterator( linesToSum.begin() );
215 linesToSum.end() != lineIterator;
218 lineToBecomeSum.
tMomentum += (*lineIterator)->getEnergy();
219 lineToBecomeSum.
xMomentum += (*lineIterator)->getXMomentum();
220 lineToBecomeSum.
yMomentum += (*lineIterator)->getYMomentum();
221 lineToBecomeSum.
zMomentum += (*lineIterator)->getZMomentum();
223 return lineToBecomeSum;
228 std::list< ParticleLine const* >& linesToSum )
230 double xTotal( 0.0 );
231 double yTotal( 0.0 );
232 for( std::list< ParticleLine const* >::iterator
233 lineIterator( linesToSum.begin() );
234 linesToSum.end() != lineIterator;
237 xTotal += (*lineIterator)->getXMomentum();
238 yTotal += (*lineIterator)->getYMomentum();
240 return ( ( xTotal * xTotal ) + ( yTotal * yTotal ) );
245 std::list< ParticleLine const* >& linesToSum )
252 std::list< ParticleLine const* >& linesToSum )
254 double scalarSum( 0.0 );
255 for( std::list< ParticleLine const* >::iterator
256 lineIterator( linesToSum.begin() );
257 linesToSum.end() != lineIterator;
260 scalarSum += (*lineIterator)->getTransverseMomentum();
311 if( 1 == whichMother )
315 else if( 2 == whichMother )
340 if( 1 == whichColorCode )
344 else if( 2 == whichColorCode )
414 inline std::vector< ParticleLine* >
const&
452 return ( 0.5 * log( ( threeMomentumMagnitude +
getZMomentum() )
static double const notANumber
double getProperLifetime() const
BOL::VectorlikeArray< std::string > lineParser
double getThreeMomentumMagnitude() const
ParticleLine * primaryMotherLinePointer
double getXMomentum() const
static ParticleLine & sumMomentaAsLine(ParticleLine &lineToBecomeSum, std::list< ParticleLine const * > &linesToSum)
void addDaughterLine(ParticleLine *const daughterLinePointer)
double getYMomentum() const
bool recordLine(int const ownLineNumber, std::string const &lineAsString)
double IPUP(int const whichComponent) const
double getZMomentum() const
int initialOrIntermediateOrFinalState
ParticleLine * secondaryMotherLinePointer
int ICOLUP(int const whichColorCode=1) const
double getTransverseMomentumSquared() const
void setMotherLines(ParticleLine *const primaryMotherLinePointer, ParticleLine *const secondaryMotherLinePointer)
double getPseudorapidity() const
ParticleLine const * getPrimaryMotherLinePointer() const
int getParticleCode() const
static ParticleLine * copyParticleLine(ParticleLine const ©Source)
static bool isLowToHighTransverseMomentum(ParticleLine const *firstLine, ParticleLine const *secondLine)
int getSecondaryMotherLineNumber() const
static double scalarSumOfTransverseMomentum(std::list< ParticleLine const * > &linesToSum)
int getInitialOrIntermediateOrFinalState() const
int getAnticolorCode() const
std::vector< ParticleLine * > const & getDaughterLines() const
static double transverseMomentumOfVectorSum(std::list< ParticleLine const * > &linesToSum)
int getOwnLineNumber() const
int getPrimaryMotherLineNumber() const
int secondaryMotherLineNumber
std::vector< ParticleLine * > daughterLines
int primaryMotherLineNumber
int MOTHUP(int const whichMother=1) const
static double transverseMomentumSquaredOfVectorSum(std::list< ParticleLine const * > &linesToSum)
ParticleLine const * getSecondaryMotherLinePointer() const
double getTransverseMomentum() const