CPair.C
//-----------------------------------------------------------------------------
// $Header: /tmp_mnt/asis/offline/ceres/cool/project/RCS/CPair.C,v 2.1 1996/10/04 08:45:51 voigt Exp $
//
// COOL Program Library
// Copyright (C) CERES collaboration, 1996
//
// Implementation of class CPair.
//
//-----------------------------------------------------------------------------
#include "CPair.h"
#include "CElectronTrack.h"
#include "C4Momentum.h"
CPair::CPair(CElectronTrack& leg1, CElectronTrack& leg2) : firstTrack(leg1), secondTrack(leg2)
{
statusFlag = 0;
}
CPair::~CPair() {}
int CPair::getType() const
{
if (firstTrack.getType() == secondTrack.getType()) {
if (firstTrack.getType() == CTrack::Electron)
return MinusMinus;
else
return PlusPlus;
}
else
return PlusMinus;
}
CBoolean CPair::isVPair() const
{
return (firstTrack.getClosestRich1Ring() == secondTrack.getClosestRich1Ring());
}
double CPair::getMass() const
{
return abs(firstTrack.getMomentum()+secondTrack.getMomentum());
}
C4Momentum CPair::get4Momentum() const
{
return (firstTrack.getMomentum()+secondTrack.getMomentum());
}
double CPair::getOpeningAngle() const
{
double arg = firstTrack.getMomentum().getP()*
secondTrack.getMomentum().getP()/
firstTrack.getMomentum().getP().getAbs()/
secondTrack.getMomentum().getP().getAbs();
return acos(arg)*1000.;
}
int CPair::operator== (const CPair& pair) const
{
return ( (firstTrack == pair.firstTrack && secondTrack == pair.secondTrack) ||
(firstTrack == pair.secondTrack && secondTrack == pair.firstTrack));
}
void CPair::printProperties(ostream& ost)
{
CString chtype;
switch (getType()) {
case MinusMinus:
chtype = "MinusMinus";
break;
case PlusMinus:
chtype = "PlusMinus";
break;
case PlusPlus:
chtype = "PlusPlus";
break;
default:
chtype = "unknown";
break;
}
ost << "type: " << chtype << endl;
ost << "V-pair: " << isVPair() << endl;
ost << "momentum: " << get4Momentum() << endl;
ost << "mass: " << getMass() << " GeV/c2" << endl;
ost << "opening angle: " << getOpeningAngle() << " mrad" << endl;
ost << "status flag: " << getStatusFlag() << endl;
}