StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Types | Public Member Functions | Protected Member Functions | Friends | List of all members
HepMC::Flow Class Reference

The flow object. More...

#include <Flow.h>

Public Types

typedef std::map< int, int >
::iterator 
iterator
 iterator for flow pattern container
 
typedef std::map< int, int >
::const_iterator 
const_iterator
 const iterator for flow pattern container
 

Public Member Functions

 Flow (GenParticle *particle_owner=0)
 default constructor
 
 Flow (const Flow &)
 copy More...
 
void swap (Flow &other)
 swap
 
Flowoperator= (const Flow &)
 make a copy More...
 
bool operator== (const Flow &a) const
 equality More...
 
bool operator!= (const Flow &a) const
 inequality
 
void print (std::ostream &ostr=std::cout) const
 print Flow information to ostr
 
std::vector< HepMC::GenParticle * > connected_partners (int code, int code_index=1, int num_indices=2) const
 
std::vector< HepMC::GenParticle * > dangling_connected_partners (int code, int code_index=1, int num_indices=2) const
 
const GenParticleparticle_owner () const
 find particle owning this Flow
 
int icode (int code_index=1) const
 flow code
 
Flow set_icode (int code_index, int code)
 set flow code
 
Flow set_unique_icode (int code_index=1)
 set unique flow code More...
 
bool empty () const
 return true if there is no flow container
 
int size () const
 size of flow pattern container
 
void clear ()
 clear flow patterns
 
bool erase (int code_index)
 empty flow pattern container
 
iterator begin ()
 beginning of flow pattern container
 
iterator end ()
 end of flow pattern container
 
const_iterator begin () const
 beginning of flow pattern container
 
const_iterator end () const
 end of flow pattern container
 

Protected Member Functions

void connected_partners (std::vector< HepMC::GenParticle * > *output, int code, int code_index, int num_indices) const
 for internal use only More...
 
void dangling_connected_partners (std::vector< HepMC::GenParticle * > *output, std::vector< HepMC::GenParticle * > *visited_particles, int code, int code_index, int num_indices) const
 for internal use only More...
 

Friends

std::ostream & operator<< (std::ostream &ostr, const Flow &f)
 for printing
 

Detailed Description

The flow object.

The particle's flow object 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.

Definition at line 66 of file Flow.h.

Constructor & Destructor Documentation

Flow::Flow ( const Flow inflow)

copy

copies both the m_icode AND the m_particle_owner

Definition at line 17 of file Flow.cc.

Member Function Documentation

std::vector< GenParticle * > Flow::connected_partners ( int  code,
int  code_index = 1,
int  num_indices = 2 
) const

returns all connected particles which have "code" in any of the num_indices beginning with index code_index.

Returns all flow partners which have "code" in any of the num_indices beginning with index code_index. m_particle_owner is included in the result. Return is by value since the set should never be very big. EXAMPLE: if you want to find all flow partners that have the same code in indices 2,3,4 as particle p has in index 2, you would use: set<GenParticle*> result = p->flow().connected_partners(p->flow().icode(2),2,3);

Definition at line 38 of file Flow.cc.

References icode().

void Flow::connected_partners ( std::vector< HepMC::GenParticle * > *  output,
int  code,
int  code_index,
int  num_indices 
) const
protected
std::vector< GenParticle * > Flow::dangling_connected_partners ( int  code,
int  code_index = 1,
int  num_indices = 2 
) const

same as connected_partners, but returns only those particles which are connected to <=1 other particles (i.e. the flow line "dangles" at these particles)

Definition at line 108 of file Flow.cc.

References icode().

void Flow::dangling_connected_partners ( std::vector< HepMC::GenParticle * > *  output,
std::vector< HepMC::GenParticle * > *  visited_particles,
int  code,
int  code_index,
int  num_indices 
) const
protected
Flow & Flow::operator= ( const Flow inflow)
inline

make a copy

copies only the m_icode ... not the particle_owner this is intuitive behaviour so you can do oneparticle->flow() = otherparticle->flow()

Definition at line 202 of file Flow.h.

bool Flow::operator== ( const Flow a) const
inline

equality

equivalent flows have the same flow codes for all flow_numbers (i.e. their m_icode maps are identical), but they need not have the same m_particle owner

Definition at line 193 of file Flow.h.

Flow Flow::set_unique_icode ( int  code_index = 1)
inline

set unique flow code

use this method if you want to assign a unique flow code, but do not want the burden of choosing it yourself

Definition at line 171 of file Flow.h.

Referenced by HepMC::GenParticle::set_flow().


The documentation for this class was generated from the following files: