ROOT logo
Gled » VAR1 » SolarSystem

class SolarSystem: public ZNode, public ODECrawlerMaster, public TimeMakerClient


 Simple simulation of a most unrealistic solar system.

 The integration of the system can be performed in two modes.

 1) ChunkedStorage

    The integrator runs in a separate thread and stores the results
    for given past/future in the storage map (see members mKeepPast
    and mCalcFuture). The time can be selected from outside by
    calling SetTime().

 2) DirectStep

    The calculation is performed on each TimeTick and results are
    put directly back into the CosmicBalls. There is no way to set
    the time otherwise.

 Do NOT change the mode after the processing has started ... or you
 will be sorry. Anyway ... they require a completely different setup
 for an efficient update-render loop.



 Notes for further development


 Collisions are not handled at all. Tried repulsive force on proximity but
 it didn't conserve energy (balls got shot out of the system). This could be
 fixed / hacked, of course.

 One could also change R, M of colliding balls ... and modify the velcoities
 accordingly. Also, fragmentation would be an option. The coolest thing
 would be to have moon formation.
 1. R, M could be intergration variables ... hmmh ... tricky.
 2. Keep some empty ball-slots for collisions / fragmentations.
 3. Big / gas giants could swallow the impactor.

Function Members (Methods)

public:
SolarSystem(const SolarSystem&)
SolarSystem(const Text_t* n = "SolarSystem", const Text_t* t = 0)
virtual~SolarSystem()
static void_gled_catalog_init()
voidTObject::AbstractMethod(const char* method) const
virtual voidZList::Add(ZGlass* lens)
virtual voidAddPlanetoid(CosmicBall* cb)
voidZNode::AddRnrMod(ZGlass* el)
virtual voidAdEnlightenment()
virtual voidTObject::AppendPad(Option_t* option = "")
voidZNode::ApplyScale(ZTrans& t)
virtual AList*AList::AsAList()
ZList*ZList::AssertPath(const Text_t* path, const Text_t* new_el_type = "ZList")
virtual ZGlass*ZList::BackElement()
ZList::iteratorZList::begin()
virtual voidTObject::Browse(TBrowser* b)
static ZTrans*ZNode::BtoA(ZNode* a, ZNode* b, ZNode* top = 0)
voidCalculateEnergy(Double_t x, const Double_t* y, Double_t& kinetic, Double_t& potential)
Bool_tZGlass::CheckBit(ZGlass::Bits_e bit) const
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual voidAList::ClearAllReferences()
voidZGlass::ClearLinks()
virtual voidZList::ClearList()
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidCopyLinkRefs(lppZGlass_t& ref_list)
virtual voidCopyLinkReps(ZGlass::lLinkRep_t& link_rep_list)
virtual voidCopyLinks(lpZGlass_t& glass_list)
virtual TimeStamp_tAList::CopyList(lpZGlass_t& dest, bool copy_zeros = false, bool do_eyerefs = false)
virtual TimeStamp_tAList::CopyListElReps(AList::lElRep_t& dest, bool copy_zeros = false)
Short_tZGlass::DecEyeRefCount()
Short_tZGlass::DecRefCount(ZGlass* from, UShort_t n = 1)
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tZGlass::DetachedThreadNice(const ZMIR* mir) const
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
voidAList::DumpElements(Bool_t dump_zeros = false)
virtual AList::ElType_eZList::el_type()
virtual boolAList::elrep_can_edit_label()
virtual boolAList::elrep_can_hold_zero()
virtual boolZList::elrep_has_id()
virtual boolAList::elrep_has_label()
ZList::iteratorZList::end()
virtual voidTObject::Error(const char* method, const char* msgfmt) 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)
voidExecuteMir(ZMIR& mir)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
static FID_tFID()
voidZNode::FillParentList(list<ZNode*>& plist)
static ZNode*ZNode::FindCommonParent(ZNode* a, ZNode* b)
Int_tZList::FindFirst(ZGlass* lens)
virtual ZGlass*ZGlass::FindLensByPath(const TString& url, bool throwp = false)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual ZGlass*ZList::FrontElement()
Bool_tZGlass::GetAcceptRefs() const
Int_tGetBallHistorySize() const
Double_tGetBallKappa() const
ZVector*GetBalls()
Double_tGetCalcFuture() const
CID_tAList::GetCid() const
ZColorGetColor() const
SolarSystem::CrawlMode_eGetCrawlMode() const
Bool_tGetDesiredRHack() const
Double_tGetDesiredRHackT0() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual ZGlass*AList::GetElementByName(const TString& name)
virtual Int_tAList::GetElementsByName(const TString& name, lpZGlass_t& dest)
UShort_tZGlass::GetFireRefCount() const
UInt_tZGlass::GetGlassBits()
ZMirFilter*ZGlass::GetGuard()
virtual const char*TObject::GetIconName() const
Bool_tZNode::GetKeepParent() const
Double_tGetKeepPast() const
LID_tAList::GetLid() const
virtual ZGlass*ZGlass::GetLinkByName(const TString& link_name)
TimeStamp_tAList::GetListTimeStamp() const
Double_tGetMaxEcc() const
Double_tGetMaxTheta() const
Bool_tZGlass::GetMIRActive() const
Bool_tZNode::GetModElements() const
Bool_tZNode::GetModSelf() const
UShort_tZGlass::GetMoonRefCount() const
virtual const Text_t*ZGlass::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
ODECrawler*GetODECrawler()
Float_tZNode::GetOM() const
virtual Option_t*TObject::GetOption() const
Double_tGetOrbitMaxR() const
Double_tGetOrbitMinR() const
ZNode*ZNode::GetParent()
ZColorGetPlanetColor() const
Double_tGetPlanetMaxR() const
Double_tGetPlanetMinR() const
ZQueen*ZGlass::GetQueen()
UShort_tZGlass::GetRefCount() const
Bool_tZNode::GetRnrElements() const
ZGlass*ZNode::GetRnrMod()
Bool_tZNode::GetRnrSelf() const
Saturn*ZGlass::GetSaturn()
ID_tZGlass::GetSaturnID() const
Int_tAList::GetSize() const
TimeStamp_tZGlass::GetStampReqTring() const
Double_tGetStarMass() const
UShort_tZGlass::GetSunRefCount() const
Float_tZNode::GetSx() const
Float_tZNode::GetSy() const
Float_tZNode::GetSz() const
Double_tGetTime() const
Double_tGetTimeFac() const
Double_tGetTimePerChunk() const
TimeStamp_tZGlass::GetTimeStamp() const
virtual const Text_t*ZGlass::GetTitle() const
ZTransZNode::GetTrans() const
virtual UInt_tTObject::GetUniqueID() const
Bool_tZGlass::GetUseDispList() const
Bool_tZGlass::GetUseNameStack() const
Bool_tZNode::GetUseOM() const
Bool_tZNode::GetUseScale() const
static GledNS::ClassInfo*GlassInfo()
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual Bool_tAList::Has(ZGlass* g)
virtual ULong_tTObject::Hash() const
TStringZGlass::Identify() const
Short_tZGlass::IncEyeRefCount()
Short_tZGlass::IncRefCount(ZGlass* from)
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 voidZList::InsertById(ZGlass* lens, Int_t before_id)
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
Bool_tAList::IsEmpty()
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
boolZGlass::IsSunOrFireSpace()
boolZGlass::IsSunSpace()
Bool_tTObject::IsZombie() const
Int_tZNode::Level()
virtual boolZList::list_deque_ops()
virtual boolZList::list_insert_id_ops()
virtual boolAList::list_insert_label_ops()
virtual boolAList::list_insert_lens_ops()
virtual boolAList::list_set_id_ops()
virtual boolAList::list_set_label_ops()
virtual voidTObject::ls(Option_t* option = "") const
virtual voidMakePlanetoid()
voidZNode::MakeRnrModList(ZGlass* optional_element = 0)
virtual voidMakeStar()
voidZNode::MarkStampReqTrans()
virtual voidZGlass::MarkStampReqTring()
voidTObject::MayNotUse(const char* method) const
static MID_tAList::Mid_Add()
static MID_tZNode::Mid_AddRnrMod()
static MID_tZList::Mid_AssertPath()
static MID_tZList::Mid_BackElement()
static MID_tAList::Mid_ClearList()
static MID_tAList::Mid_DumpElements()
static MID_tZList::Mid_FrontElement()
static MID_tZList::Mid_InsertById()
static MID_tMid_MakePlanetoid()
static MID_tZNode::Mid_MakeRnrModList()
static MID_tMid_MakeStar()
static MID_tZNode::Mid_Move()
static MID_tZNode::Mid_Move3()
static MID_tZNode::Mid_Move3LF()
static MID_tZNode::Mid_Move3PF()
static MID_tZNode::Mid_MoveLF()
static MID_tZNode::Mid_MovePF()
static MID_tZNode::Mid_MultLeft()
static MID_tZNode::Mid_MultRight()
static MID_tZNode::Mid_MultScale()
static MID_tMid_PlotEnergy()
static MID_tZList::Mid_PopBack()
static MID_tZList::Mid_PopFront()
static MID_tZList::Mid_PushBack()
static MID_tZList::Mid_PushFront()
static MID_tZGlass::Mid_RebuildRnrScheme()
static MID_tAList::Mid_RemoveAll()
static MID_tZList::Mid_RemoveById()
static MID_tAList::Mid_RemoveLensesViaQueen()
static MID_tZGlass::Mid_ReTriangulate()
static MID_tZNode::Mid_RnrElmsOffForDaughters()
static MID_tZNode::Mid_RnrElmsOnForDaughters()
static MID_tZNode::Mid_RnrOffForDaughters()
static MID_tZNode::Mid_RnrOnForDaughters()
static MID_tZNode::Mid_Rotate()
static MID_tZNode::Mid_RotateLF()
static MID_tZNode::Mid_RotatePF()
static MID_tZGlass::Mid_SetAcceptRefs()
static MID_tMid_SetBallHistorySize()
static MID_tMid_SetBallKappa()
static MID_tMid_SetBalls()
static MID_tMid_SetCalcFuture()
static MID_tAList::Mid_SetCid()
static MID_tMid_SetColor()
static MID_tMid_SetColorByRef()
static MID_tMid_SetDesiredRHack()
static MID_tMid_SetDesiredRHackT0()
static MID_tAList::Mid_SetElementFID()
static MID_tZGlass::Mid_SetGuard()
static MID_tZNode::Mid_SetKeepParent()
static MID_tMid_SetKeepPast()
static MID_tAList::Mid_SetLid()
static MID_tAList::Mid_SetListTimeStamp()
static MID_tMid_SetMaxEcc()
static MID_tMid_SetMaxTheta()
static MID_tZGlass::Mid_SetMIRActive()
static MID_tZNode::Mid_SetModElements()
static MID_tZNode::Mid_SetModSelf()
static MID_tZGlass::Mid_SetName()
static MID_tMid_SetODECrawler()
static MID_tZNode::Mid_SetOM()
static MID_tZNode::Mid_SetOMofDaughters()
static MID_tMid_SetOrbitMaxR()
static MID_tMid_SetOrbitMinR()
static MID_tZNode::Mid_SetParent()
static MID_tMid_SetPlanetColor()
static MID_tMid_SetPlanetColorByRef()
static MID_tMid_SetPlanetMaxR()
static MID_tMid_SetPlanetMinR()
static MID_tZNode::Mid_SetPos()
static MID_tZNode::Mid_SetRnrElements()
static MID_tZNode::Mid_SetRnrMod()
static MID_tZNode::Mid_SetRnrSelf()
static MID_tZNode::Mid_SetRotByAngles()
static MID_tZNode::Mid_SetRotByAnyAngles()
static MID_tZNode::Mid_SetRotByAnyDegrees()
static MID_tZNode::Mid_SetRotByDegrees()
static MID_tZNode::Mid_SetScale()
static MID_tZNode::Mid_SetScales()
static MID_tZGlass::Mid_SetStampReqTring()
static MID_tMid_SetStarMass()
static MID_tZNode::Mid_SetSx()
static MID_tZNode::Mid_SetSy()
static MID_tZNode::Mid_SetSz()
static MID_tMid_SetTime()
static MID_tMid_SetTimeFac()
static MID_tMid_SetTimePerChunk()
static MID_tZGlass::Mid_SetTimeStamp()
static MID_tZGlass::Mid_SetTitle()
static MID_tZNode::Mid_SetTrans()
static MID_tZGlass::Mid_SetUseDispList()
static MID_tZGlass::Mid_SetUseDLRec()
static MID_tZGlass::Mid_SetUseNameStack()
static MID_tZNode::Mid_SetUseOM()
static MID_tZNode::Mid_SetUseScale()
static MID_tZList::Mid_SortByName()
static MID_tMid_StartChunkIntegratorThread()
static MID_tMid_StartStepIntegratorThread()
static MID_tMid_StopIntegratorThread()
static MID_tZNode::Mid_UnitRot()
static MID_tZNode::Mid_UnitTrans()
static MID_tZGlass::Mid_UpdateAllViews()
static MID_tZGlass::Mid_UpdateGlassView()
ZMIR*AList::MkMir_Add(ZGlass* lens)
ZMIR*AList::MkMir_AddLabel(const TString& label)
ZMIR*AList::MkMir_ChangeLabel(const TString& label, TString new_label)
ZMIR*AList::MkMir_Insert(ZGlass* lens, AList::ElRep& elrep)
ZMIR*AList::MkMir_InsertByLabel(ZGlass* lens, const TString& label, const TString& before)
ZMIR*AList::MkMir_InsertLabel(const TString& label, const TString& before)
ZMIR*AList::MkMir_PopBack()
ZMIR*AList::MkMir_PopFront()
ZMIR*AList::MkMir_PushBack(ZGlass* lens)
ZMIR*AList::MkMir_PushFront(ZGlass* lens)
ZMIR*AList::MkMir_Remove(AList::ElRep& elrep)
ZMIR*AList::MkMir_RemoveAll(ZGlass* lens)
ZMIR*AList::MkMir_RemoveLabel(const TString& label)
ZMIR*AList::MkMir_SetElement(ZGlass* lens, AList::ElRep& elrep)
voidZNode::Move(ZNode* ref, Int_t vi, Double_t amount)
voidZNode::Move3(ZNode* ref, Double_t x, Double_t y, Double_t z)
voidZNode::Move3LF(Double_t x, Double_t y, Double_t z)
voidZNode::Move3PF(Double_t x, Double_t y, Double_t z)
voidZNode::MoveLF(Int_t vi, Double_t amount)
voidZNode::MovePF(Int_t vi, Double_t amount)
voidZNode::MultLeft(const ZTrans& t)
voidZNode::MultRight(const ZTrans& t)
voidZNode::MultScale(Float_t s)
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
virtual voidODEDerivatives(Double_t x, const Double_t* y, Double_t* d)
virtual boolODECrawlerMaster::ODEHasJacobian() const
virtual voidODECrawlerMaster::ODEJacobian(Double_t x, const Double_t* y, Double_t* dfdy, Double_t* dfdt)
virtual Int_tODEOrder()
virtual voidODEStart(Double_t* y, Double_t& x1, Double_t& x2)
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)
SolarSystem&operator=(const SolarSystem&)
virtual voidTObject::Paint(Option_t* option = "")
voidPlotEnergy()
virtual voidTObject::Pop()
virtual ZGlass*ZList::PopBack()
virtual ZGlass*ZList::PopFront()
virtual voidTObject::Print(Option_t* option = "") const
const ZColor*PtrColor() const
const ZColor*PtrPlanetColor() const
const ZTrans*ZNode::PtrTrans() const
virtual voidZList::PushBack(ZGlass* lens)
virtual voidZList::PushFront(ZGlass* lens)
virtual CosmicBall*RandomPlanetoid(const TString& name)
virtual Int_tTObject::Read(const char* name)
voidZGlass::ReadLock() const
voidZGlass::ReadUnlock() const
virtual Int_tAList::RebuildAllRefs(An_ID_Demangler* idd)
virtual Int_tRebuildLinkRefs(An_ID_Demangler* c)
virtual Int_tZList::RebuildListRefs(An_ID_Demangler* idd)
voidZGlass::RebuildRnrScheme()
virtual voidTObject::RecursiveRemove(TObject* obj)
ZTrans&ZNode::ref_trans()
const ZColor&RefColor() const
GMutex&AList::RefListMutex()
const TString&ZGlass::RefName() const
const ZColor&RefPlanetColor() const
const TString&ZGlass::RefTitle() const
const ZTrans&ZNode::RefTrans() const
voidZGlass::register_name_change_cb(ZGlass::NameChangeCB* nccb)
voidZGlass::register_ray_absorber(ZGlass::RayAbsorber* ra)
virtual voidAList::ReleaseListCopyEyeRefs(lpZGlass_t& dest)
virtual Int_tZList::RemoveAll(ZGlass* lens)
virtual voidZList::RemoveById(Int_t id_to_remove)
voidAList::RemoveLensesViaQueen(Bool_t recurse = false)
virtual voidRemovePlanetoid(CosmicBall* cb)
Int_tZGlass::RemoveReferencesTo(ZGlass* lens)
voidTObject::ResetBit(UInt_t f)
voidZGlass::ReTriangulate()
voidZNode::RnrElmsOffForDaughters()
voidZNode::RnrElmsOnForDaughters()
voidZNode::RnrOffForDaughters()
voidZNode::RnrOnForDaughters()
voidZNode::Rotate(ZNode* ref, Int_t ii1, Int_t ii2, Double_t amount)
voidZNode::RotateLF(Int_t i1, Int_t i2, Double_t amount)
voidZNode::RotatePF(Int_t i1, Int_t i2, Double_t amount)
virtual ZMIR*AList::S_Add(ZGlass* lens)
ZMIR*ZNode::S_AddRnrMod(ZGlass* el)
ZMIR*ZList::S_AssertPath(const Text_t* path, const Text_t* new_el_type = "ZList")
virtual ZMIR*ZList::S_BackElement()
virtual ZMIR*AList::S_ClearList()
ZMIR*AList::S_DumpElements(Bool_t dump_zeros = false)
virtual ZMIR*ZList::S_FrontElement()
virtual ZMIR*ZList::S_InsertById(ZGlass* lens, Int_t before_id)
virtual ZMIR*S_MakePlanetoid()
ZMIR*ZNode::S_MakeRnrModList(ZGlass* optional_element = 0)
virtual ZMIR*S_MakeStar()
ZMIR*ZNode::S_Move(ZNode* ref, Int_t vi, Double_t amount)
ZMIR*ZNode::S_Move3(ZNode* ref, Double_t x, Double_t y, Double_t z)
ZMIR*ZNode::S_Move3LF(Double_t x, Double_t y, Double_t z)
ZMIR*ZNode::S_Move3PF(Double_t x, Double_t y, Double_t z)
ZMIR*ZNode::S_MoveLF(Int_t vi, Double_t amount)
ZMIR*ZNode::S_MovePF(Int_t vi, Double_t amount)
ZMIR*ZNode::S_MultLeft(const ZTrans& t)
ZMIR*ZNode::S_MultRight(const ZTrans& t)
ZMIR*ZNode::S_MultScale(Float_t s)
ZMIR*S_PlotEnergy()
virtual ZMIR*ZList::S_PopBack()
virtual ZMIR*ZList::S_PopFront()
virtual ZMIR*ZList::S_PushBack(ZGlass* lens)
virtual ZMIR*ZList::S_PushFront(ZGlass* lens)
ZMIR*ZGlass::S_RebuildRnrScheme()
virtual ZMIR*AList::S_RemoveAll(ZGlass* lens)
virtual ZMIR*ZList::S_RemoveById(Int_t id_to_remove)
ZMIR*AList::S_RemoveLensesViaQueen(Bool_t recurse = false)
ZMIR*ZGlass::S_ReTriangulate()
ZMIR*ZNode::S_RnrElmsOffForDaughters()
ZMIR*ZNode::S_RnrElmsOnForDaughters()
ZMIR*ZNode::S_RnrOffForDaughters()
ZMIR*ZNode::S_RnrOnForDaughters()
ZMIR*ZNode::S_Rotate(ZNode* ref, Int_t ii1, Int_t ii2, Double_t amount)
ZMIR*ZNode::S_RotateLF(Int_t i1, Int_t i2, Double_t amount)
ZMIR*ZNode::S_RotatePF(Int_t i1, Int_t i2, Double_t amount)
ZMIR*ZGlass::S_SetAcceptRefs(Bool_t acceptrefs)
ZMIR*S_SetBallHistorySize(Int_t ballhistorysize)
ZMIR*S_SetBallKappa(Double_t ballkappa)
ZMIR*S_SetBalls(ZVector* balls)
ZMIR*S_SetCalcFuture(Double_t calcfuture)
ZMIR*AList::S_SetCid(CID_t cid)
ZMIR*S_SetColor(Float_t r, Float_t g, Float_t b, Float_t a = 1)
ZMIR*S_SetColorByRef(const ZColor& color)
ZMIR*S_SetDesiredRHack(Bool_t desiredrhack)
ZMIR*S_SetDesiredRHackT0(Double_t desiredrhackt0)
ZMIR*AList::S_SetElementFID(FID_t fid)
ZMIR*ZGlass::S_SetGuard(ZMirFilter* guard)
ZMIR*ZNode::S_SetKeepParent(Bool_t keepparent)
ZMIR*S_SetKeepPast(Double_t keeppast)
ZMIR*AList::S_SetLid(LID_t lid)
ZMIR*AList::S_SetListTimeStamp(TimeStamp_t listtimestamp)
ZMIR*S_SetMaxEcc(Double_t maxecc)
ZMIR*S_SetMaxTheta(Double_t maxtheta)
ZMIR*ZGlass::S_SetMIRActive(Bool_t miractive)
ZMIR*ZNode::S_SetModElements(Bool_t modelements)
ZMIR*ZNode::S_SetModSelf(Bool_t modself)
ZMIR*ZGlass::S_SetName(const Text_t* s)
ZMIR*S_SetODECrawler(ODECrawler* odecrawler)
ZMIR*ZNode::S_SetOM(Float_t om)
ZMIR*ZNode::S_SetOMofDaughters(Float_t om, Bool_t enforce_to_all = false)
ZMIR*S_SetOrbitMaxR(Double_t orbitmaxr)
ZMIR*S_SetOrbitMinR(Double_t orbitminr)
ZMIR*ZNode::S_SetParent(ZNode* parent)
ZMIR*S_SetPlanetColor(Float_t r, Float_t g, Float_t b, Float_t a = 1)
ZMIR*S_SetPlanetColorByRef(const ZColor& planetcolor)
ZMIR*S_SetPlanetMaxR(Double_t planetmaxr)
ZMIR*S_SetPlanetMinR(Double_t planetminr)
ZMIR*ZNode::S_SetPos(Double_t x, Double_t y, Double_t z)
ZMIR*ZNode::S_SetRnrElements(Bool_t rnrelements)
ZMIR*ZNode::S_SetRnrMod(ZGlass* rnrmod)
ZMIR*ZNode::S_SetRnrSelf(Bool_t rnrself)
ZMIR*ZNode::S_SetRotByAngles(Float_t a1, Float_t a2, Float_t a3)
ZMIR*ZNode::S_SetRotByAnyAngles(Float_t a1, Float_t a2, Float_t a3, const Text_t* pat)
ZMIR*ZNode::S_SetRotByAnyDegrees(Float_t a1, Float_t a2, Float_t a3, const Text_t* pat)
ZMIR*ZNode::S_SetRotByDegrees(Float_t a1, Float_t a2, Float_t a3)
ZMIR*ZNode::S_SetScale(Float_t xx)
ZMIR*ZNode::S_SetScales(Float_t x, Float_t y, Float_t z)
ZMIR*ZGlass::S_SetStampReqTring(TimeStamp_t stampreqtring)
ZMIR*S_SetStarMass(Double_t starmass)
ZMIR*ZNode::S_SetSx(Float_t sx)
ZMIR*ZNode::S_SetSy(Float_t sy)
ZMIR*ZNode::S_SetSz(Float_t sz)
ZMIR*S_SetTime(Double_t t)
ZMIR*S_SetTimeFac(Double_t timefac)
ZMIR*S_SetTimePerChunk(Double_t timeperchunk)
ZMIR*ZGlass::S_SetTimeStamp(TimeStamp_t timestamp)
ZMIR*ZGlass::S_SetTitle(const Text_t* s)
ZMIR*ZNode::S_SetTrans(const ZTrans& t)
ZMIR*ZGlass::S_SetUseDispList(Bool_t usedisplist)
ZMIR*ZGlass::S_SetUseDLRec(Bool_t state)
ZMIR*ZGlass::S_SetUseNameStack(Bool_t usenamestack)
ZMIR*ZNode::S_SetUseOM(Bool_t useom)
ZMIR*ZNode::S_SetUseScale(Bool_t usescale)
virtual ZMIR*ZList::S_SortByName()
ZMIR*S_StartChunkIntegratorThread()
ZMIR*S_StartStepIntegratorThread()
ZMIR*S_StopIntegratorThread()
ZMIR*ZNode::S_UnitRot()
ZMIR*ZNode::S_UnitTrans()
ZMIR*ZGlass::S_UpdateAllViews()
ZMIR*ZGlass::S_UpdateGlassView()
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidZGlass::SetAcceptRefs(Bool_t acceptrefs)
voidSetBallHistorySize(Int_t history_size)
voidSetBallKappa(Double_t ballkappa)
voidSetBalls(ZVector* balls)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetCalcFuture(Double_t calcfuture)
voidAList::SetCid(CID_t cid)
voidSetColor(Float_t r, Float_t g, Float_t b, Float_t a = 1)
voidSetColorByRef(const ZColor& color)
voidSetDesiredRHack(Bool_t desiredrhack)
voidSetDesiredRHackT0(Double_t desiredrhackt0)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidAList::SetElementFID(FID_t fid)
voidZGlass::SetGuard(ZMirFilter* guard)
voidZNode::SetKeepParent(Bool_t keepparent)
voidSetKeepPast(Double_t keeppast)
voidAList::SetLid(LID_t lid)
voidAList::SetListTimeStamp(TimeStamp_t listtimestamp)
voidSetMaxEcc(Double_t maxecc)
voidSetMaxTheta(Double_t maxtheta)
voidZGlass::SetMIRActive(Bool_t miractive)
voidZNode::SetModElements(Bool_t modelements)
voidZNode::SetModSelf(Bool_t modself)
voidZGlass::SetName(const Text_t* n)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetODECrawler(ODECrawler* odecrawler)
voidZNode::SetOM(Float_t om)
voidZNode::SetOMofDaughters(Float_t om, Bool_t enforce_to_all = false)
voidSetOrbitMaxR(Double_t orbitmaxr)
voidSetOrbitMinR(Double_t orbitminr)
voidZNode::SetParent(ZNode* parent)
voidSetPlanetColor(Float_t r, Float_t g, Float_t b, Float_t a = 1)
voidSetPlanetColorByRef(const ZColor& planetcolor)
voidSetPlanetMaxR(Double_t planetmaxr)
voidSetPlanetMinR(Double_t planetminr)
voidZNode::SetPos(Double_t x, Double_t y, Double_t z)
voidZNode::SetRnrElements(Bool_t rnrelements)
voidZNode::SetRnrMod(ZGlass* rnrmod)
voidZNode::SetRnrSelf(Bool_t rnrself)
voidZNode::SetRotByAngles(Float_t a1, Float_t a2, Float_t a3)
voidZNode::SetRotByAnyAngles(Float_t a1, Float_t a2, Float_t a3, const Text_t* pat)
voidZNode::SetRotByAnyDegrees(Float_t a1, Float_t a2, Float_t a3, const Text_t* pat)
voidZNode::SetRotByDegrees(Float_t a1, Float_t a2, Float_t a3)
voidZNode::SetScale(Float_t xx)
voidZNode::SetScales(Float_t x, Float_t y, Float_t z)
voidZGlass::SetStampReqTring(TimeStamp_t stampreqtring)
virtual voidZNode::SetStamps(TimeStamp_t s)
voidSetStarMass(Double_t starmass)
voidZNode::SetSx(Float_t sx)
voidZNode::SetSy(Float_t sy)
voidZNode::SetSz(Float_t sz)
voidSetTime(Double_t t)
voidSetTimeFac(Double_t timefac)
voidSetTimePerChunk(Double_t timeperchunk)
voidZGlass::SetTimeStamp(TimeStamp_t timestamp)
voidZGlass::SetTitle(const Text_t* t)
voidZNode::SetTrans(const ZTrans& t)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidZGlass::SetUseDispList(Bool_t usedisplist)
voidZGlass::SetUseDLRec(Bool_t state)
voidZGlass::SetUseNameStack(Bool_t usenamestack)
voidZNode::SetUseOM(Bool_t useom)
voidZNode::SetUseScale(Bool_t usescale)
virtual voidShowMembers(TMemberInspector& insp)
Int_tAList::Size()
virtual voidZList::SortByName()
TimeStamp_tZGlass::Stamp()
virtual TimeStamp_tZGlass::Stamp(FID_t fid, UChar_t eye_bits = 0)
TimeStamp_tZGlass::StampLink()
virtual TimeStamp_tZGlass::StampLink(FID_t fid)
TimeStamp_tZGlass::StampLinkVFID()
virtual TimeStamp_tAList::StampListClear()
virtual TimeStamp_tAList::StampListElementSet(ZGlass* lens, Int_t id)
virtual TimeStamp_tAList::StampListElementSet(ZGlass* lens, const TString& label)
virtual TimeStamp_tAList::StampListInsert(ZGlass* lens, Int_t id, ZGlass* before)
virtual TimeStamp_tAList::StampListInsert(ZGlass* lens, Int_t id, Int_t before_id)
virtual TimeStamp_tAList::StampListInsertLabel(ZGlass* lens, const TString& label, const TString& before)
virtual TimeStamp_tAList::StampListPopBack()
virtual TimeStamp_tAList::StampListPopFront()
virtual TimeStamp_tAList::StampListPushBack(ZGlass* lens, Int_t id = -1)
virtual TimeStamp_tAList::StampListPushFront(ZGlass* lens, Int_t id = -1)
virtual TimeStamp_tAList::StampListRebuild()
virtual TimeStamp_tAList::StampListRemove(ZGlass* lens)
virtual TimeStamp_tAList::StampListRemove(ZGlass* lens, Int_t id)
virtual TimeStamp_tAList::StampListRemoveLabel(ZGlass* lens, const TString& label)
voidZNode::StampReqTrans()
virtual voidZGlass::StampReqTring(FID_t fid = FID_t(0,0))
TimeStamp_tZGlass::StampVFID()
voidStartChunkIntegratorThread()
voidStartStepIntegratorThread()
voidStopIntegratorThread()
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
TStringZGlass::StrName() const
TStringZGlass::StrTitle() const
voidZList::Swallow(const Text_t* path, ZGlass* entry)
voidZList::Swallow(ZGlass* entry, Bool_t replace_p = true, const Text_t* path = "", const Text_t* new_el_type = "ZList")
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTimeTick(Double_t t, Double_t dt)
ZTrans*ZNode::ToMFR(int depth = 0)
ZTrans*ZNode::ToNode(ZNode* top, int depth = 0)
voidZNode::UnitRot()
voidZNode::UnitTrans()
voidZGlass::unregister_name_change_cb(ZGlass::NameChangeCB* nccb)
voidZGlass::unregister_ray_absorber(ZGlass::RayAbsorber* ra)
voidZGlass::UpdateAllViews()
voidZGlass::UpdateGlassView()
virtual voidTObject::UseCurrentStyle()
virtual FID_tVFID() const
virtual GledNS::ClassInfo*VGlassInfo() const
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
voidZGlass::WriteLock()
voidZGlass::WriteUnlock()
protected:
virtual voidZGlass::AdEndarkenment()
virtual voidZGlass::AdUnfoldment()
ZVector*assert_balls(const Exc_t& eh)
ZMIR*ZGlass::assert_MIR_presence(const Exc_t& header, int what = 0)
ODECrawler*assert_odecrawler(const Exc_t& eh)
voidChunkIntegratorThread()
virtual voidZList::clear_list()
voidclear_storage()
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
SolarSystem::mTime2pStorage_ifind_storage_from_time(Double_t t)
ZMIR*ZGlass::get_MIR()
voidhack_desired_r(Double_t dt)
voidTObject::MakeZombie()
virtual voidAList::new_element_check(ZGlass* lens)
virtual voidZNode::on_insert(ZList::iterator it)
virtual voidZList::on_rebuild()
virtual voidZList::on_remove(ZList::iterator iter)
voidZGlass::queen_check_in(ZGlass* l)
virtual voidAList::reference_all()
virtual voidZGlass::reference_links()
virtual voidAList::reference_list_elms()
virtual Int_tZList::remove_references_to(ZGlass* lens)
SolarSystem::Storage*set_current_storage_from_time(Double_t t)
voidZGlass::set_link_or_die(ZGlass*& link, ZGlass* new_val, FID_t fid)
Double_tset_time(Double_t t, Bool_t from_timetick)
voidStepIntegratorThread()
ZMIR*ZGlass::suggest_MIR_presence(const Exc_t& header, int what = 0)
static void*tl_IntegratorThread(SolarSystem* ss)
virtual voidAList::unreference_all()
virtual voidZGlass::unreference_links()
virtual voidAList::unreference_list_elms()
voidZGlass::warn_caller(const TString& warning)
private:
void_init()

Data Members

public:
enum CrawlMode_e { CM_ChunkedStorage
CM_DirectStep
};
enum AList::ElType_e { ET_Nil
ET_Lens
ET_Id
ET_Label
};
enum ZGlass::Bits_e { kFixedNameBit
kDyingBit
};
enum ZGlass::MirComponents_e { MC_Any
MC_IsFlare
MC_IsBeam
MC_HasResultReq
MC_IsDetached
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
Bool_tZGlass::bAcceptRefsX{GS} 7 BoolOut()
Bool_tbDesiredRHackX{GS} 7 Bool();
Bool_tZNode::bKeepParentX{GS} 7 Bool()
Bool_tZGlass::bMIRActiveX{GS} 7 BoolOut(-join=>1)
Bool_tZNode::bModElementsX{GSx} 7 Bool()
Bool_tZNode::bModSelfX{GSx} 7 Bool(-join=>1)
Bool_tZNode::bRnrElementsX{GSx} 7 Bool()
Bool_tZNode::bRnrSelfX{GSx} 7 Bool(-join=>1)
Bool_tZGlass::bUseDispListX{GST} 7 Bool(-join=>1)
Bool_tZGlass::bUseNameStackX{GS} 7 Bool()
Bool_tZNode::bUseOMX{GSt} 7 Bool(-join=>1)
Bool_tZNode::bUseScaleX{GSt} 7 Bool(-join=>1)
Int_tmBallHistorySizeX{GE} 7 Value(-range=>[0,4096, 1])
Double_tmBallKappaX{GS} 7 Value()
GMutexmBallSwitchMutex!
ZLink<ZVector>mBallsX{GS} L{a} RnrBits{0,0,0,0, 0,0,0,5}
list<CosmicBall*>mBallsToAdd!
list<CosmicBall*>mBallsToRemove!
Double_tmCalcFutureX{GS} 7 Value(-range=>[100,1e6, 1])
CID_tAList::mCidX{GS} 7 Value(-width=>4, -join=>1)
ZColormColorX{PRGS} 7 ColorButt()
SolarSystem::CrawlMode_emCrawlModeX{G} 7 PhonyEnum(-const=>1)
map<double,SolarSystem::Storage*,less<double>,allocator<pair<const double,SolarSystem::Storage*> > >::iteratormCurrentStorage!
Double_tmDesiredRHackT0X{GS} 7 Value(-range=>[0,20, 1,100])
list<ZList::element,allocator<ZList::element> >ZList::mElements! Problem during TStreamerElement creation (it's getting created despite manual streamer).
UShort_tZGlass::mEyeRefCount!
UShort_tZGlass::mFireRefCount! X{G} 7 ValOut(-width=>4)
UInt_tZGlass::mGlassBitsX{g}
ZLink<ZMirFilter>ZGlass::mGuardX{E} L{}
GThread*mIntegratorThread!
Double_tmKeepPastX{GS} 7 Value(-range=>[100,1e6, 1])
LID_tAList::mLidX{GS} 7 Value(-width=>4, -join=>1)
GMutexAList::mListMutex! X{r}
TimeStamp_tAList::mListTimeStamp! X{GS}
Double_tmMaxEccX{GS} 7 Value(-range=>[0,1, 1,1000])
Double_tmMaxThetaX{GS} 7 Value(-range=>[0,90, 1,100])
UShort_tZGlass::mMoonRefCount! X{G} 7 ValOut(-width=>4)
TStringZGlass::mNameX{RGE} 7 Textor()
Int_tZList::mNextId
ZLink<ODECrawler>mODECrawlerX{GS} L{a}
Float_tZNode::mOMX{GSt} 7 Value(-range=>[-32, 32, 1,1000])
Double_tmOrbitMaxRX{GS} 7 Value(-range=>[1,10000, 1,10])
Double_tmOrbitMinRX{GS} 7 Value(-range=>[1,10000, 1,10], -join=>1)
ZLink<ZNode>ZNode::mParentX{gS} L{} Structural parent
ZColormPlanetColorX{PRGS} 7 ColorButt()
Double_tmPlanetMaxRX{GS} 7 Value(-range=>[1,100, 1,100])
Double_tmPlanetMinRX{GS} 7 Value(-range=>[1,100, 1,100], -join=>1)
TRandommPlanetRnd
ZQueen*ZGlass::mQueen! X{g}
GMutexZGlass::mReadMutex!
UShort_tZGlass::mRefCount! X{G} 7 ValOut(-width=>4, -join=>1)
ZLink<ZGlass>ZNode::mRnrModX{gS} L{}
Saturn*ZGlass::mSaturn! X{g}
ID_tZGlass::mSaturnIDX{G} 7 ValOut(-range=>[0,MAX_ID,1], -width=>10)
Int_tAList::mSizeX{G} 7 ValOut(-width=>5)
TimeStamp_tZNode::mStampReqTrans! TimeStamp of last change of mTrans
TimeStamp_tZGlass::mStampReqTring! X{GS} TimeStamp of last change that requires retriangulation
Double_tmStarMassX{GS} 7 Value()
GConditionmStorageCond!
map<double,SolarSystem::Storage*,less<double>,allocator<pair<const double,SolarSystem::Storage*> > >mStorageMap!
UShort_tZGlass::mSunRefCount! X{G} 7 ValOut(-width=>4, -join=>1)
Float_tZNode::mSxX{GSt} 7 Value(-range=>[0,1000, 1,1000], -join=>1)
Float_tZNode::mSyX{GSt} 7 Value(-range=>[0,1000, 1,1000], -join=>1)
Float_tZNode::mSzX{GSt} 7 Value(-range=>[0,1000, 1,1000])
Double_tmTimeX{G} 7 Value(-range=>[0,1e9, 1,100])
Double_tmTimeFacX{GS} 7 Value(-range=>[0,1000, 1,10])
Double_tmTimePerChunkX{GS} 7 Value(-range=>[100,1e4, 1,100])
TimeStamp_tZGlass::mTimeStamp! X{GS} TimeStamp of last change
TStringZGlass::mTitleX{RGE} 7 Textor()
ZTransZNode::mTransX{RPG} Transform from parent
set<NameChangeCB*>*ZGlass::pspNameChangeCB!
set<RayAbsorber*>*ZGlass::pspRayAbsorber!
static GledNS::ClassInfo*AList::sap_AList_ci
static GledNS::LinkMemberInfo*sap_Balls_lmi
static GledNS::LinkMemberInfo*ZGlass::sap_Guard_lmi
static GledNS::LinkMemberInfo*sap_ODECrawler_lmi
static GledNS::LinkMemberInfo*ZNode::sap_Parent_lmi
static GledNS::LinkMemberInfo*ZNode::sap_RnrMod_lmi
static GledNS::ClassInfo*sap_SolarSystem_ci
static GledNS::ClassInfo*ZGlass::sap_ZGlass_ci
static GledNS::ClassInfo*ZList::sap_ZList_ci
static GledNS::ClassInfo*ZNode::sap_ZNode_ci
private:
Double_thStepIntegratorDt!
Bool_thWarnTimeOutOfRange!

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

void _init()
SolarSystem(const Text_t* n = "SolarSystem", const Text_t* t = 0)
~SolarSystem()
void AdEnlightenment()
Int_t ODEOrder()
void ODEStart(Double_t* y, Double_t& x1, Double_t& x2)
void ODEDerivatives(Double_t x, const Double_t* y, Double_t* d)
void CalculateEnergy(Double_t x, const Double_t* y, Double_t& kinetic, Double_t& potential)
void TimeTick(Double_t t, Double_t dt)
void clear_storage()
 Wipes storage, resets mCurrentStorage.
 Must be called under storage lock!
Double_t set_time(Double_t t, Bool_t from_timetick)
 Place balls into position for time t.
 Linear extrapolation between two stored points is made.

 When from_timetick is true the history of the balls is updated.
 Otherwise it is reset to 0.
void SetTime(Double_t t)
void SetBallHistorySize(Int_t history_size)
void* tl_IntegratorThread(SolarSystem* ss)
void ChunkIntegratorThread()
void StepIntegratorThread()
void StartChunkIntegratorThread()
 Start the ODE integrator thread.
 Throws an exception if the thread is already running.

 This expects that the CosmicBalls are registered into this object.
 All existing storage is dropped, the time starts at zero.
 ODECrawler is initialized and the first chunk is calculated in the
 calling thread.
 After that, a new thread is spawned with nice value of 10.
void StartStepIntegratorThread()
void StopIntegratorThread()
 not finished
CosmicBall* RandomPlanetoid(const TString& name)
 Generate a random planetoid with given name.
void MakeStar()
 Not cluster safe.
void MakePlanetoid()
 Convenience function to be called from scripts.
 Not cluster safe.
void AddPlanetoid(CosmicBall* cb)
 Add planetoid cb.
 If integrator thread is already running, this is only possible
 in the direct-step mode.
 The ball should be already checked-in. Also, its parent should
 probably be set to this SolarSystem.
void RemovePlanetoid(CosmicBall* cb)
 Remove planetoid cb.
 If integrator thread is already running, this is only possible
 in the direct-step mode.
 If the ball is not referenced from anywhere else it is at risk
 of being auto-destructed.
void hack_desired_r(Double_t dt)
void PlotEnergy()
mTime2pStorage_i find_storage_from_time(Double_t t)
Storage* set_current_storage_from_time(Double_t t)
SolarSystem(const Text_t* n = "SolarSystem", const Text_t* t = 0)