00001 00002 // 00003 // CLASS QvrtBase : serves as base for vertices. 00004 // 00005 // 00006 // Author : C. Delaere 00007 // 00009 00010 00011 #ifndef _QVRTBASE_H_ 00012 #define _QVRTBASE_H_ 00013 00014 #include "AlObject.h" 00015 #include "AlephCollection.h" 00016 #include "CLHEP/Matrix/SymMatrix.h" 00017 #include "BankClasses.h" 00018 00019 class QvecBase; 00020 00022 class QvrtBase : public AlObject { 00023 00024 public: 00025 00027 QvrtBase(); 00028 00030 QvrtBase(const QvrtBase&); 00031 00033 ~QvrtBase(); 00034 00036 bool operator<(const QvrtBase& other) const; 00037 00039 virtual void setA4V (float x, float y, float z, float e); 00041 virtual void setA4V (HepLorentzVector vec) { _A4V = vec;} 00042 00044 virtual HepLorentzVector A4V() const; 00045 00047 ALEPHTYPE TYPE() const {return OBJECT;} 00048 00050 QvecBase* GetIncomingTrack() const { return inTrack; } 00052 AlephCollection<QvecBase*> GetOutgoingTracks() const { return outTracks; } 00054 void SetIncomingTrack(QvecBase* trk) { inTrack = trk; } 00056 void AddOutgoingTrack(QvecBase* trk) { outTracks.push_back(trk);} 00057 00058 // copies of the ALPHA utility functions 00059 virtual float QX() const; 00060 virtual float QY() const; 00061 virtual float QZ() const; 00062 virtual float QP() const; 00063 virtual float QR() const; 00064 virtual float QE() const; 00065 virtual float QM() const; 00066 virtual float QCT() const; 00067 virtual float QCH() const; 00068 virtual float QPH() const; 00069 virtual int KVN() const; 00070 virtual int KVTYPE() const; 00071 virtual double QVCHIF() const; 00072 virtual HepSymMatrix QVEM() const; 00073 virtual float QVEM(int,int) const; 00074 // functions for a kink vertex only 00075 virtual float PKINK() const; 00076 virtual float PTOUT() const; 00077 virtual float PLOUT() const; 00078 virtual int IHYPK() const; 00079 // functions defined for MC vertices only 00080 virtual float TOF() const; 00081 virtual char* VertexVolumeName() const; 00082 virtual char* VertexMechanisme() const; 00083 00084 // the locking 00085 virtual void Lock(bool recurse = false); 00086 virtual void unLock(bool recurse = false); 00087 virtual int isLocked() const; 00088 00089 protected: 00090 00091 HepLorentzVector _A4V; 00092 int _locked; 00093 AlephCollection<QvecBase*> outTracks; 00094 QvecBase* inTrack; 00095 00096 private: 00097 static int NERR; 00098 }; 00099 00100 #endif