C++InterfacetoTauola
Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Friends
TauolaParticlePair Class Reference
Collaboration diagram for TauolaParticlePair:
Collaboration graph

Public Member Functions

 TauolaParticlePair (std::vector< TauolaParticle * > &particle_list)
 
void decayTauPair ()
 
bool contains (TauolaParticle *particle)
 
TauolaParticlegetTauPlus (std::vector< TauolaParticle * > particles)
 
TauolaParticlegetTauMinus (std::vector< TauolaParticle * > particles)
 
TauolaParticlegetGrandmotherPlus (std::vector< TauolaParticle * > particles)
 
TauolaParticlegetGrandmotherMinus (std::vector< TauolaParticle * > particles)
 
void print ()
 
void checkMomentumConservation ()
 
 TauolaParticlePair (std::vector< TauolaParticle * > &particle_list)
 
void decayTauPair ()
 
bool contains (TauolaParticle *particle)
 
TauolaParticlegetTauPlus (std::vector< TauolaParticle * > particles)
 
TauolaParticlegetTauMinus (std::vector< TauolaParticle * > particles)
 
TauolaParticlegetGrandmotherPlus (std::vector< TauolaParticle * > particles)
 
TauolaParticlegetGrandmotherMinus (std::vector< TauolaParticle * > particles)
 
void print ()
 
void checkMomentumConservation ()
 

Private Member Functions

 TauolaParticlePair ()
 
void recalculateRij (int incoming_pdg_id, int outgoing_pdg_id, double invariant_mass_squared, double cosTheta)
 
void rotateSystem (vector< TauolaParticle * > grandmothers, vector< TauolaParticle * > taus, double theta, int axis, int axis2=TauolaParticle::Z_AXIS)
 
void boostFromLabToTauPairFrame (double *rotation_angle1, double *rotation_angle2, double *rotation_angle3, TauolaParticle *mother, vector< TauolaParticle * > grandmothers, vector< TauolaParticle * > taus)
 
void boostFromTauPairToLabFrame (double rotation_angle1, double rotation_angle2, double rotation_angle3, TauolaParticle *mother, vector< TauolaParticle * > grandmothers, vector< TauolaParticle * > taus)
 
void initializeDensityMatrix ()
 
TauolaParticlemakeTemporaryMother (vector< TauolaParticle * > taus)
 
double getZPolarization (int *incoming_pdg_id, int *outgoing_pdg_id, double *invMass, double *cosTheta)
 
double getVirtuality (TauolaParticle *p1, TauolaParticle *p2, bool flip)
 
void addToBeam (TauolaParticle *pcle, std::vector< TauolaParticle * > *candidates_same, std::vector< TauolaParticle * > *candidates_opp)
 
 TauolaParticlePair ()
 
void recalculateRij (int incoming_pdg_id, int outgoing_pdg_id, double invariant_mass_squared, double cosTheta)
 
void rotateSystem (vector< TauolaParticle * > grandmothers, vector< TauolaParticle * > taus, double theta, int axis, int axis2=TauolaParticle::Z_AXIS)
 
void boostFromLabToTauPairFrame (double *rotation_angle1, double *rotation_angle2, double *rotation_angle3, TauolaParticle *mother, vector< TauolaParticle * > grandmothers, vector< TauolaParticle * > taus)
 
void boostFromTauPairToLabFrame (double rotation_angle1, double rotation_angle2, double rotation_angle3, TauolaParticle *mother, vector< TauolaParticle * > grandmothers, vector< TauolaParticle * > taus)
 
void initializeDensityMatrix ()
 
TauolaParticlemakeTemporaryMother (vector< TauolaParticle * > taus)
 
double getZPolarization (int *incoming_pdg_id, int *outgoing_pdg_id, double *invMass, double *cosTheta)
 
double getVirtuality (TauolaParticle *p1, TauolaParticle *p2, bool flip)
 
void addToBeam (TauolaParticle *pcle, std::vector< TauolaParticle * > *candidates_same, std::vector< TauolaParticle * > *candidates_opp)
 

Static Private Member Functions

static void setBornKinematics (int incoming_pdg_id, int outgoing_pdg_id, double invariant_mass_squared, double cosTheta)
 
static void setBornKinematics (int incoming_pdg_id, int outgoing_pdg_id, double invariant_mass_squared, double cosTheta)
 

Private Attributes

std::vector< TauolaParticle * > m_final_particles
 
std::vector< TauolaParticle * > m_production_particles
 
TauolaParticlem_mother
 
bool m_mother_exists
 
std::vector< TauolaParticle * > m_grandmothers
 
double m_R [4][4]
 

Friends

double TauSpinner::getLongitudinalPolarization (double, TauSpinner::SimpleParticle &, TauSpinner::SimpleParticle &)
 
double TauSpinner::getLongitudinalPolarization (double, TauSpinner::SimpleParticle &, TauSpinner::SimpleParticle &)
 

Detailed Description

Definition at line 41 of file include/Tauola/TauolaParticlePair.h.

Constructor & Destructor Documentation

TauolaParticlePair ( std::vector< TauolaParticle * > &  particle_list)

This constructor takes the TauolaParticle and traverse the event structure to find the mother, partner tau or tau neutrino and assosiated final and production versions. Once a TauolaParticlePair object has been created in this way it is ready to be decayed via decayTauPairs().

constructor. Get the mothers, grandmothers and siblings of the tau

Definition at line 18 of file TauolaParticlePair.cxx.

References Log::AddDecay(), Log::Fatal(), TauolaParticle::findLastSelf(), TauolaParticle::findProductionMothers(), TauolaParticlePair::initializeDensityMatrix(), Tauola::isUsingDecayOne(), TauolaParticlePair::m_final_particles, TauolaParticlePair::m_grandmothers, TauolaParticlePair::m_mother, TauolaParticlePair::m_mother_exists, TauolaParticlePair::m_production_particles, TauolaParticlePair::makeTemporaryMother(), TauolaParticlePair::setBornKinematics(), TauolaParticle::TAU_ANTINEUTRINO, TauolaParticle::TAU_MINUS, TauolaParticle::TAU_NEUTRINO, and TauolaParticle::TAU_PLUS.

TauolaParticlePair ( )
inlineprivate

Default constructor is private, so that only friend class can use it.

Definition at line 90 of file include/Tauola/TauolaParticlePair.h.

TauolaParticlePair ( std::vector< TauolaParticle * > &  particle_list)

This constructor takes the TauolaParticle and traverse the event structure to find the mother, partner tau or tau neutrino and assosiated final and production versions. Once a TauolaParticlePair object has been created in this way it is ready to be decayed via decayTauPairs().

TauolaParticlePair ( )
inlineprivate

Default constructor is private, so that only friend class can use it.

Definition at line 90 of file src/tauolaCInterfaces/TauolaParticlePair.h.

Member Function Documentation

void addToBeam ( TauolaParticle pcle,
std::vector< TauolaParticle * > *  candidates_same,
std::vector< TauolaParticle * > *  candidates_opp 
)
private

Add particle to beam.

WHERE WE CALCULATE THE EFFECTIVE BEAMS This is where we decide which particle should be added into which beam, add it and change the flavour if necessary. candidates_same are on the same side of the vertex as the particle. This is needed for negative the particle 4-momentum.

Definition at line 469 of file TauolaParticlePair.cxx.

References TauolaParticle::add(), TauolaParticle::getPdgID(), TauolaParticlePair::getVirtuality(), TauolaParticle::setPdgID(), and TauolaParticle::subtract().

void addToBeam ( TauolaParticle pcle,
std::vector< TauolaParticle * > *  candidates_same,
std::vector< TauolaParticle * > *  candidates_opp 
)
private

Add particle to beam.

void boostFromLabToTauPairFrame ( double *  rotation_angle1,
double *  rotation_angle2,
double *  rotation_angle3,
TauolaParticle mother,
vector< TauolaParticle * >  grandmothers,
vector< TauolaParticle * >  taus 
)
private

Boost the outgoing tau and partner and the incoming grandparents of the tau to the mothers rest frame. The mother is not boosted. The axis are rotated so that the particle given by "z_axis_particle" is aligned on the z-axis. If "alignment" is -1 is will be aligned in the negative z direction. otherwise it is aligned in the positive direction. rotaion_angle(1-3) are returned to allow reversal of the transformation (through the method boostFromMotherToLabFrame).

Step 1. (Transformation A). Any modification to this method also requires a modification to the inverse method boostFromTauPairFrameToLab (transformation A^-1).

boost all gradmothers and daughters (taus, neutrinos, etc,) to the mothers rest frame

rotate all particles so taus are on the z axis

Definition at line 684 of file TauolaParticlePair.cxx.

References TauolaParticlePair::getGrandmotherMinus(), TauolaParticlePair::getGrandmotherPlus(), TauolaParticle::getRotationAngle(), TauolaParticlePair::getTauMinus(), TauolaParticlePair::getTauPlus(), TauolaParticlePair::rotateSystem(), TauolaParticle::X_AXIS, and TauolaParticle::Y_AXIS.

void boostFromLabToTauPairFrame ( double *  rotation_angle1,
double *  rotation_angle2,
double *  rotation_angle3,
TauolaParticle mother,
vector< TauolaParticle * >  grandmothers,
vector< TauolaParticle * >  taus 
)
private

Boost the outgoing tau and partner and the incoming grandparents of the tau to the mothers rest frame. The mother is not boosted. The axis are rotated so that the particle given by "z_axis_particle" is aligned on the z-axis. If "alignment" is -1 is will be aligned in the negative z direction. otherwise it is aligned in the positive direction. rotaion_angle(1-3) are returned to allow reversal of the transformation (through the method boostFromMotherToLabFrame).

void boostFromTauPairToLabFrame ( double  rotation_angle1,
double  rotation_angle2,
double  rotation_angle3,
TauolaParticle mother,
vector< TauolaParticle * >  grandmothers,
vector< TauolaParticle * >  taus 
)
private

Reverses the transformation of boostFromLabToMothersFrame.

Reverses boostFromLabtoMotherFrame. The three rotation angle must be provided. Any modification to this would require a modification to boostFromLabToTauPairFrame since this is the inverse transformation (Step 2: A^-1).

Definition at line 739 of file TauolaParticlePair.cxx.

References TauolaParticlePair::rotateSystem(), TauolaParticle::X_AXIS, and TauolaParticle::Y_AXIS.

void boostFromTauPairToLabFrame ( double  rotation_angle1,
double  rotation_angle2,
double  rotation_angle3,
TauolaParticle mother,
vector< TauolaParticle * >  grandmothers,
vector< TauolaParticle * >  taus 
)
private

Reverses the transformation of boostFromLabToMothersFrame.

void checkMomentumConservation ( )
void checkMomentumConservation ( )

Check that the 4 momentum in conserved at the verticle of each decayed tau.

bool contains ( TauolaParticle particle)

Does this pair contain the particle "particle". Note: it only checks the "final" particles.

Definition at line 848 of file TauolaParticlePair.cxx.

References TauolaParticle::getBarcode(), and TauolaParticlePair::m_final_particles.

bool contains ( TauolaParticle particle)

Does this pair contain the particle "particle". Note: it only checks the "final" particles.

void decayTauPair ( )
void decayTauPair ( )

Call the decay method of each 'final' tau. Then calculate the spin correlation weight from the particles polarimetric vectors. Decays are accepted or rejected based on the spin weight. Rejected decays are redecayed.

TauolaParticle* getGrandmotherMinus ( std::vector< TauolaParticle * >  particles)

Return the first grandmother of the tau- which is a quark or lepton.

TauolaParticle * getGrandmotherMinus ( std::vector< TauolaParticle * >  particles)

Return the first grandmother of the tau- which is a quark or lepton.

Definition at line 909 of file TauolaParticlePair.cxx.

References TauolaParticle::ELECTRON, and TauolaParticle::MUON_MINUS.

TauolaParticle * getGrandmotherPlus ( std::vector< TauolaParticle * >  particles)

Return the first grandmother of the tau- which is an anti-quark or anti-lepton.

Definition at line 873 of file TauolaParticlePair.cxx.

References TauolaParticle::MUON_PLUS, and TauolaParticle::POSITRON.

TauolaParticle* getGrandmotherPlus ( std::vector< TauolaParticle * >  particles)

Return the first grandmother of the tau- which is an anti-quark or anti-lepton.

TauolaParticle * getTauMinus ( std::vector< TauolaParticle * >  particles)

Return the tau- particle

Definition at line 857 of file TauolaParticlePair.cxx.

References TauolaParticle::TAU_MINUS.

TauolaParticle* getTauMinus ( std::vector< TauolaParticle * >  particles)

Return the tau- particle

TauolaParticle* getTauPlus ( std::vector< TauolaParticle * >  particles)

Return the tau+ particle

TauolaParticle * getTauPlus ( std::vector< TauolaParticle * >  particles)

Return the tau+ particle

Definition at line 865 of file TauolaParticlePair.cxx.

References TauolaParticle::TAU_PLUS.

double getVirtuality ( TauolaParticle p1,
TauolaParticle p2,
bool  flip 
)
private
double getVirtuality ( TauolaParticle p1,
TauolaParticle p2,
bool  flip 
)
private

Private function, calculates virtuality between two particles.

double getZPolarization ( int *  incoming_pdg_id,
int *  outgoing_pdg_id,
double *  invMass,
double *  cosTheta 
)
private
double getZPolarization ( int *  incoming_pdg_id,
int *  outgoing_pdg_id,
double *  invMass,
double *  cosTheta 
)
private

Needs to be changed Needs to be changed

void initializeDensityMatrix ( )
private

The density matric m_R is filled based on the mothers type and kinematics of the event in the mothers rest frame.

void initializeDensityMatrix ( )
private

The density matric m_R is filled based on the mothers type and kinematics of the event in the mothers rest frame.

The axis is defined by the boosting routine but our standard convention is:

  • Axis 3 is along the direction of the +ve tau,
  • Axis 1 is perpendicular to the reaction plane (sign=??)
  • Axis 2 is defined through the vector product so the system is right handed (?? check). Axis 1,2 and 3 are parrellel for the 1st and second tau.

Definition at line 119 of file TauolaParticlePair.cxx.

References TauolaParticle::GAMMA, Tauola::getDecayOnePolarization(), Tauola::getHiggsScalarPseudoscalarPDG(), TauolaParticle::getMass(), TauolaParticle::getPdgID(), Tauola::getTauMass(), TauolaParticlePair::getZPolarization(), TauolaParticle::HIGGS, TauolaParticle::HIGGS_A, TauolaParticle::HIGGS_MINUS, TauolaParticle::HIGGS_PLUS, Tauola::isUsingDecayOne(), TauolaParticlePair::m_mother, TauolaParticlePair::m_R, TauolaParticlePair::recalculateRij(), TauolaParticle::W_MINUS, TauolaParticle::W_PLUS, and TauolaParticle::Z0.

TauolaParticle * makeTemporaryMother ( vector< TauolaParticle * >  taus)
private

create a particle which m_mother points to. This is based on the daughters 4-momentum and particle type. A Z or W is assumed if the configuration of taus and neutrinos is correct. This particle is not written into the event record, but it used by the fillDenistyMatrix method for spin correlations

Definition at line 786 of file TauolaParticlePair.cxx.

References TauolaParticle::getE(), TauolaParticle::getPdgID(), TauolaParticle::getPx(), TauolaParticle::getPy(), TauolaParticle::getPz(), TauolaParticle::TAU_ANTINEUTRINO, TauolaParticle::TAU_MINUS, TauolaParticle::TAU_NEUTRINO, TauolaParticle::TAU_PLUS, TauolaParticle::W_MINUS, TauolaParticle::W_PLUS, and TauolaParticle::Z0.

TauolaParticle* makeTemporaryMother ( vector< TauolaParticle * >  taus)
private

create a particle which m_mother points to. This is based on the daughters 4-momentum and particle type. A Z or W is assumed if the configuration of taus and neutrinos is correct. This particle is not written into the event record, but it used by the fillDenistyMatrix method for spin correlations

void print ( )
void print ( )

Print information about the mother and tau pair (at production and final).

void recalculateRij ( int  incoming_pdg_id,
int  outgoing_pdg_id,
double  invariant_mass_squared,
double  cosTheta 
)
private

If SANC tables are present, use them to recalculate the matrix Rij.

void recalculateRij ( int  incoming_pdg_id,
int  outgoing_pdg_id,
double  invariant_mass_squared,
double  cosTheta 
)
private

If SANC tables are present, use them to recalculate the matrix Rij.

Definition at line 985 of file TauolaParticlePair.cxx.

References TauolaParticlePair::m_R.

void rotateSystem ( vector< TauolaParticle * >  grandmothers,
vector< TauolaParticle * >  taus,
double  theta,
int  axis,
int  axis2 = TauolaParticle::Z_AXIS 
)
private

Rotate the whole system using the given angle theta.

void rotateSystem ( vector< TauolaParticle * >  grandmothers,
vector< TauolaParticle * >  taus,
double  theta,
int  axis,
int  axis2 = TauolaParticle::Z_AXIS 
)
private

Rotate the whole system using the given angle theta.

Definition at line 770 of file TauolaParticlePair.cxx.

void setBornKinematics ( int  incoming_pdg_id,
int  outgoing_pdg_id,
double  invariant_mass_squared,
double  cosTheta 
)
staticprivate

Store born variables in Tauola class, so the user can retrieve them using Tauola::getBornKinematics.

Definition at line 264 of file TauolaParticlePair.cxx.

static void setBornKinematics ( int  incoming_pdg_id,
int  outgoing_pdg_id,
double  invariant_mass_squared,
double  cosTheta 
)
staticprivate

Store born variables in Tauola class, so the user can retrieve them using Tauola::getBornKinematics.

Field Documentation

std::vector< TauolaParticle * > m_final_particles
private

Pointers to taus (or tau and neutrino) as they are before being decayed.

Definition at line 98 of file include/Tauola/TauolaParticlePair.h.

std::vector< TauolaParticle * > m_grandmothers
private

vector of pointers to the taus grandparents

Definition at line 111 of file include/Tauola/TauolaParticlePair.h.

TauolaParticle * m_mother
private

Pointer to mothers of the tau pair.

Definition at line 105 of file include/Tauola/TauolaParticlePair.h.

bool m_mother_exists
private

Is there an entry in the event record for the tau pair's mother?

Definition at line 108 of file include/Tauola/TauolaParticlePair.h.

std::vector< TauolaParticle * > m_production_particles
private

Pointers to taus (or tau and neutrino) as they are after production.

Definition at line 102 of file include/Tauola/TauolaParticlePair.h.

double m_R
private

frames in which it is defined are fixed by the methods boostFromLabToMotherFrame and boostFromMotherToLabFrame. Modification to m_R and boostFrom/ToMotherFrame must be done coherently.

Definition at line 178 of file include/Tauola/TauolaParticlePair.h.


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