class THaOptics::TOpticsPos: public THaOptics::TOpticsDir


    THaOptics

  Read in track X,Y,Theta,Phi in TRCS and fill in any thing else in THaTrack



 Author: Jin Huang <mailto:jinhuang@jlab.org>    Jan 2008
    Modify History:
      Mar 2007    Jin Huang <mailto:jinhuang@jlab.org>
          Modify ApplyOptics to give a central trajectory





THIS IS an abstract class basis for general optics class.
It has following functions:
> handles general optics interface
> managing beam information
> supporting coordinate transformation (see child class TOpticsDir and TOpticsPos).
> supporting some geometry calculation such as CrossingSurfLine3D(...)



TERMINOLOGY used in this class follows conventions of Hall A
Tech Notes JLAB-TN-02-012:
http://hallaweb.jlab.org/publications/Technotes/files/2002/02-012.pdf



DERIVED CLASS should reload function of virtual Int_t ApplyOptics(...).



FOUR DERIVED OPTICS CLASS have been implemented, each with difference algorithm,
but using same interface defined by this class. They are THaOpticsAnalytical,
THaOpticsHRS, THaOpticsNoFeild and THaOpticsAGen.



USAGE: to make a spectrometer support this series of optics classes,
following code have to be included:

0.#include "THaOptics.h"

1.in class definition:
public:
virtual Bool_t   MountOptics(THaOptics *);
protected:
TRef            fOptics;  //pointer to optics calculation class
public:
inline THaOptics *  GetOptics() const
{return (THaOptics *)(fOptics.GetObject());}

2.in destructor:
if (fOptics.IsValid()) delete (THaOptics *)(fOptics.GetObject());

3.anywhere in spectrometer.cxx:
Bool_t THaBigBite::MountOptics(THaOptics *Optics)
{
mount a optics class to the Spectrometer.
return true if successful.
Notice: This function have to be called
before Init() to make sure readdatebase
        is called for the optics class.

if (fOptics.IsValid()) {
DEBUG_WARNING("MountOptics",
"The Optics has already been mounted. Deleting the old one and mounting new.");
delete fOptics.GetObject();
}

fOptics=Optics;

return fOptics.IsValid();
}

4.reload THaSpectrometer::FindVertices(TClonesArray& tracks ) and add:
if (fOptics.IsValid())
{
Int_t n_exist = tracks.GetLast()+1;

for( Int_t t = 0; t < n_exist; t++ ) {
THaTrack* theTrack = static_cast<THaTrack*>( tracks.At(t) );
assert(fOptics.IsValid());
((THaOptics *)(fOptics.GetObject()))-> ApplyOptics (theTrack);
}
}

5.reload THaSpectrometer::Init( const TDatime& run_time ) and add:
THaAnalysisObject::EStatus stat=THaSpectrometer::Init(run_time);
if (stat!=kOK) return stat;

Optics is the last one to be initialized.
So it could use any other variable
if (fOptics.IsValid())
stat=((THaOptics *)(fOptics.GetObject()))->Init(run_time);

6.(optional)in constructor:
Bool_t mr=MountOptics(new <the optics class name>(<name>,<description>,this));

7.(optional)in the code, one can always reassign a difference optics
class to the spectrometer by calling MountOptics(THaOptics *);




Child Class THaOptics::TOpticsDir

a vector class with information of it's Coordinate System
also handles Coordinate transformation. But it only handle
rotation of the vector. It's useful to describe a direction
For example, p vector




Child Class THaOptics::TOpticsPos

a vector class derived from THaOptics::TOpticsDir, specially designed
for position coordinate, ex vertex.


Function Members (Methods)

public:
virtual~TOpticsPos()
voidTObject::AbstractMethod(const char* method) const
Double_tTVector3::Angle(const TVector3&) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
Double_tTVector3::CosTheta() const
TVector3TVector3::Cross(const TVector3& p) const
virtual voidTObject::Delete(Option_t* option = "")
Double_tTVector3::DeltaPhi(const TVector3& v) const
Double_tTVector3::DeltaR(const TVector3&) const
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
Double_tTVector3::Dot(const TVector3& p) const
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() const
virtual TObject*TObject::DrawClone(Option_t* option = "") const
Double_tTVector3::DrEtaPhi(const TVector3& v) const
virtual voidTObject::Dump() const
virtual voidTObject::Error(const char* method, const char* msgfmt) const
Double_tTVector3::Eta() const
TVector2TVector3::EtaPhiVector() const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
THaOptics::TOpticsDir::ECoordSysTHaOptics::TOpticsDir::GetCoordSys() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
THaOptics*THaOptics::TOpticsDir::GetOptics() const
virtual Option_t*TObject::GetOption() const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
TVector3THaOptics::TOpticsDir::GetVector()
voidTVector3::GetXYZ(Double_t* carray) const
voidTVector3::GetXYZ(Float_t* carray) const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() const
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
Double_tTVector3::Mag() const
Double_tTVector3::Mag2() const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
Bool_tTVector3::operator!=(const TVector3& v) const
Double_tTVector3::operator()(int) const
Double_t&TVector3::operator()(int)
TVector3&TVector3::operator*=(Double_t a)
TVector3&TVector3::operator*=(const TRotation&)
THaOptics::TOpticsPos&operator+=(const TVector3& p)
TVector3TVector3::operator-() const
THaOptics::TOpticsPos&operator-=(const TVector3& p)
THaOptics::TOpticsPos&operator=(const THaOptics::TOpticsPos& v)
THaOptics::TOpticsPos&operator=(const THaOptics::TOpticsDir& v)
Bool_tTVector3::operator==(const TVector3& v) const
Double_tTVector3::operator[](int i) const
Double_t&TVector3::operator[](int i)
TVector3TVector3::Orthogonal() const
virtual voidTObject::Paint(Option_t* option = "")
Double_tTVector3::Perp() const
Double_tTVector3::Perp(const TVector3&) const
Double_tTVector3::Perp2() const
Double_tTVector3::Perp2(const TVector3& p) const
Double_tTVector3::Phi() const
virtual voidTObject::Pop()
virtual voidTHaOptics::TOpticsDir::Print(Option_t* opt = "") const
Double_tTVector3::PseudoRapidity() const
Double_tTVector3::Pt() const
Double_tTVector3::Pt(const TVector3& p) const
Double_tTVector3::Px() const
Double_tTVector3::Py() const
Double_tTVector3::Pz() const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
voidTVector3::Rotate(Double_t, const TVector3&)
voidTVector3::RotateUz(const TVector3&)
voidTVector3::RotateX(Double_t)
voidTVector3::RotateY(Double_t)
voidTVector3::RotateZ(Double_t)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") const
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
virtual THaOptics::TOpticsDir&THaOptics::TOpticsDir::SetAll(THaOptics::TOpticsDir::ECoordSys coordsys, THaOptics* optics, Double_t x = 0.0, Double_t y = 0.0, Double_t z = 0.0)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")
static voidTObject::SetDtorOnly(void* obj)
voidTVector3::SetMag(Double_t ma)
voidTVector3::SetMagThetaPhi(Double_t mag, Double_t theta, Double_t phi)
static voidTObject::SetObjectStat(Bool_t stat)
voidTVector3::SetPerp(Double_t r)
voidTVector3::SetPhi(Double_t)
voidTVector3::SetPtEtaPhi(Double_t pt, Double_t eta, Double_t phi)
voidTVector3::SetPtThetaPhi(Double_t pt, Double_t theta, Double_t phi)
voidTVector3::SetTheta(Double_t)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidTVector3::SetX(Double_t x)
voidTVector3::SetXYZ(Double_t x, Double_t y, Double_t z)
voidTVector3::SetY(Double_t y)
voidTVector3::SetZ(Double_t z)
virtual voidShowMembers(TMemberInspector& insp, char* parent)
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
Double_tTVector3::Theta() const
THaOptics::TOpticsDirTHaOptics::TOpticsDir::TOpticsDir(const THaOptics::TOpticsDir& v)
THaOptics::TOpticsDirTHaOptics::TOpticsDir::TOpticsDir(THaOptics::TOpticsDir& v)
THaOptics::TOpticsDirTHaOptics::TOpticsDir::TOpticsDir(THaOptics::TOpticsDir::ECoordSys coordsys, THaOptics* optics, const TVector3& v)
THaOptics::TOpticsDirTHaOptics::TOpticsDir::TOpticsDir(THaOptics::TOpticsDir::ECoordSys coordsys, THaOptics* optics, Double_t x = 0.0, Double_t y = 0.0, Double_t z = 0.0)
THaOptics::TOpticsPosTOpticsPos(const THaOptics::TOpticsPos& v)
THaOptics::TOpticsPosTOpticsPos(const THaOptics::TOpticsDir& v)
THaOptics::TOpticsPosTOpticsPos(THaOptics::TOpticsDir::ECoordSys coordsys, THaOptics* optics, const TVector3& v)
THaOptics::TOpticsPosTOpticsPos(THaOptics::TOpticsDir::ECoordSys coordsys, THaOptics* optics, Double_t x = 0.0, Double_t y = 0.0, Double_t z = 0.0)
virtual THaOptics::TOpticsPos&TransCoordSys(THaOptics::TOpticsDir::ECoordSys coordsys, bool dorecurent = true)
TVector3&TVector3::Transform(const TRotation&)
TVector3TVector3::Unit() const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
Double_tTVector3::x() const
Double_tTVector3::X() const
TVector2TVector3::XYvector() const
Double_tTVector3::y() const
Double_tTVector3::Y() const
Double_tTVector3::z() const
Double_tTVector3::Z() const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
virtual voidTHaOptics::TOpticsDir::FCS2TRCS()
voidTObject::MakeZombie()
virtual voidTHaOptics::TOpticsDir::TRCS2FCS()

Data Members

public:
enum THaOptics::TOpticsDir::ECoordSys { kNA
kHCS
kTCS
kTRCS
kFCS
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
THaOptics::TOpticsDir::ECoordSysTHaOptics::TOpticsDir::fCoordSysspecify which Coordinate System this vector is using
TRefTHaOptics::TOpticsDir::fOpticsthe optics class using this vector ,THaOptics

Class Charts

Inheritance Chart:
TObject
TVector3
THaOptics::TOpticsDir
THaOptics::TOpticsPos

Function documentation

THaOptics::TOpticsPos & TransCoordSys(THaOptics::TOpticsDir::ECoordSys coordsys, bool dorecurent = true)
rotate the vector to the coordinate system specified by coordsys
TOpticsPos(THaOptics::TOpticsDir::ECoordSys coordsys, THaOptics* optics, const TVector3& v)
{}
TOpticsPos(THaOptics::TOpticsDir::ECoordSys coordsys, THaOptics* optics, Double_t x = 0.0, Double_t y = 0.0, Double_t z = 0.0)
{}
TOpticsPos(const THaOptics::TOpticsPos& v)
{}
TOpticsPos(const THaOptics::TOpticsDir& v)
{}
virtual ~TOpticsPos()
{}

Author: Jin Huang Jan 2008
Last update: Tue Jul 7 19:26:17 2009

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.