CTrack.h
//-----------------------------------------------------------------------------
// $Header: /asis/offline/ceres/cool/project/RCS/CTrack.h,v 3.5 1997/06/23 13:35:28 messer Exp $
//
// COOL Program Library
// Copyright (C) CERES collaboration, 1996
//
// Declaration of base class CTrack.
//
// All theta units in mrad, phi always in rad.
// Note, that all enums have class scope in order to not waste
// global namespace.
//
//-----------------------------------------------------------------------------
#ifndef CTRACK_H
#define CTRACK_H
#include <iostream.h>
#include "cool.h"
#include "CVertex.h"
#include "CSidcHit.h"
#include "CRichLikeHit.h"
#include "CFittedRing.h"
#include "C4Momentum.h"
class CTrack {
public:
enum CTrackType { Unknown, Electron = 3, Positron = 2, PiPlus = 8, PiMinus = 9};
enum CTrackMask { hasVertex = 01, hasSidc1Match = 02,
hasSidc2Match = 04, hasRich1Match = 010,
hasRich2Match = 020, hasPadCMatch = 040 };
public:
CTrack();
virtual ~CTrack();
int operator== (const CTrack&) const;
inline int operator< (const CTrack&) const; // needed for sorting
inline double operator- (const CTrack&) const; // needed for CSortedList
virtual void printProperties(ostream& = cout);
void _printProperties(ostream&);
public:
CTrackType getType() const {return type;}
void setType(CTrackType val) {type = val;}
unsigned long getTrackMask() const {return trackMask;}
void setTrackMask(unsigned long val) {trackMask = val;}
int getStatusFlag() const {return statusFlag;}
void setStatusFlag(int val) {statusFlag = val;}
const CVertex* getVertex() const {return vertex;}
void setVertex(const CVertex* val) {vertex = val;}
const CSidcHit* getClosestSidc1Hit() const {return closestSidc1Hit;}
void setClosestSidc1Hit(const CSidcHit* val) {closestSidc1Hit = val;}
const CSidcHit* getNextClosestSidc1Hit() const {return nextClosestSidc1Hit;}
void setNextClosestSidc1Hit(const CSidcHit* val) {nextClosestSidc1Hit = val;}
const CSidcHit* getClosestSidc2Hit() const {return closestSidc2Hit;}
void setClosestSidc2Hit(const CSidcHit* val) {closestSidc2Hit = val;}
const CSidcHit* getNextClosestSidc2Hit() const {return nextClosestSidc2Hit;}
void setNextClosestSidc2Hit(const CSidcHit* val) {nextClosestSidc2Hit = val;}
double getThetaSidc() const {return thetaSidc;}
void setThetaSidc(double val) {thetaSidc = val;}
CAngle getPhiSidc() const {return phiSidc;}
void setPhiSidc(CAngle val) {phiSidc = val;}
CAngle getCombinedFitPhiSidc() const {return combinedFitPhiSidc;}
void setCombinedFitPhiSidc(CAngle val) {combinedFitPhiSidc = val;}
double getDeltaRSidc12() const {return deltaRSidc12;}
void setDeltaRSidc12(double val) {deltaRSidc12 = val;}
double getDeltaPhiSidc12() const {return deltaPhiSidc12;}
void setDeltaPhiSidc12(double val) {deltaPhiSidc12 = val;}
const CFittedRing* getClosestRich1Ring() const {return closestRich1Ring;}
void setClosestRich1Ring(const CFittedRing* val) {closestRich1Ring = val;}
const CFittedRing* getNextClosestRich1Ring() const {return nextClosestRich1Ring;}
void setNextClosestRich1Ring(const CFittedRing* val) {nextClosestRich1Ring = val;}
const CFittedRing* getClosestRich2Ring() const {return closestRich2Ring;}
void setClosestRich2Ring(const CFittedRing* val) {closestRich2Ring = val;}
const CFittedRing* getNextClosestRich2Ring() const {return nextClosestRich2Ring;}
void setNextClosestRich2Ring(const CFittedRing* val) {nextClosestRich2Ring = val;}
double getDeltaThetaRich12() const {return deltaThetaRich12;}
void setDeltaThetaRich12(double val) {deltaThetaRich12 = val;}
double getDeltaPhiRich12() const {return deltaPhiRich12;}
void setDeltaPhiRich12(double val) {deltaPhiRich12 = val;}
const CRichLikeHit* getClosestPadCHit() const {return closestPadCHit;}
void setClosestPadCHit(const CRichLikeHit* val) {closestPadCHit = val;}
const CRichLikeHit* getNextClosestPadCHit() const {return nextClosestPadCHit;}
void setNextClosestPadCHit(const CRichLikeHit* val) {nextClosestPadCHit = val;}
double getThetaPadC() const {return thetaPadC;}
void setThetaPadC(double val) {thetaPadC = val;}
double getPhiPadC() const {return phiPadC;}
void setPhiPadC(double val) {phiPadC = val;}
double getDeltaThetaSidcRich() const {return deltaThetaSidcRich;}
void setDeltaThetaSidcRich(double val) {deltaThetaSidcRich = val;}
double getDeltaPhiSidcRich() const {return deltaPhiSidcRich;}
void setDeltaPhiSidcRich(double val) {deltaPhiSidcRich = val;}
double getDeltaThetaSidcPadC() const {return deltaThetaSidcPadC;}
void setDeltaThetaSidcPadC(double val) {deltaThetaSidcPadC = val;}
double getDeltaPhiSidcPadC() const {return deltaPhiSidcPadC;}
void setDeltaPhiSidcPadC(double val) {deltaPhiSidcPadC = val;}
double getDeltaThetaRich2PadC() const {return deltaThetaRich2PadC;}
void setDeltaThetaRich2PadC(double val) {deltaThetaRich2PadC = val;}
double getDeltaPhiRich2PadC() const {return deltaPhiRich2PadC;}
void setDeltaPhiRich2PadC(double val) {deltaPhiRich2PadC = val;}
virtual const C4Momentum& getMomentum() const {return momentum;}
virtual void setMomentum(C4Momentum val) {momentum = val;}
protected:
CTrackType type;
unsigned long trackMask;
int statusFlag;
C4Momentum momentum;
const CVertex *vertex;
const CSidcHit *closestSidc1Hit;
const CSidcHit *nextClosestSidc1Hit;
const CSidcHit *closestSidc2Hit;
const CSidcHit *nextClosestSidc2Hit;
double thetaSidc;
CAngle phiSidc;
CAngle combinedFitPhiSidc;
double deltaRSidc12;
double deltaPhiSidc12;
const CFittedRing *closestRich1Ring;
const CFittedRing *nextClosestRich1Ring;
const CFittedRing *closestRich2Ring;
const CFittedRing *nextClosestRich2Ring;
double deltaThetaRich12;
double deltaPhiRich12;
const CRichLikeHit *closestPadCHit;
const CRichLikeHit *nextClosestPadCHit;
double thetaPadC;
double phiPadC;
double deltaThetaSidcRich;
double deltaPhiSidcRich;
double deltaThetaSidcPadC;
double deltaPhiSidcPadC;
double deltaThetaRich2PadC;
double deltaPhiRich2PadC;
};
inline int CTrack::operator< (const CTrack& track) const
{
return (phiSidc < track.phiSidc);
}
inline double CTrack::operator- (const CTrack& track) const
{
return (phiSidc - track.phiSidc);
}
#endif /* CTRACK_H */