ROOT logo
Gled » NUMERICA » ODECrawler

class ODECrawler: public ZGlass


 ODE integrator built upon adaptive step 4th order runge-kutta.
 X corresponds to time (scalar).
 Y corresponds to state vector at a given time.
 Final state can be obtained from mY.
 Works in double precision.

 No good way for permanent storage or broadcasting of results yet.

 Trajectory is stored in ODEstorage object with at least mStoreDx
 between consequtive points.
 Maximum of mStoreMax intermediate points are stored.
 If mStoreMax = 0 no results are stored.
 If mStoreMax < 0 all points are stored (default).

 Example glass Moonraker. Macro moonraker.C.

Function Members (Methods)

public:
ODECrawler(const ODECrawler&)
ODECrawler(const Text_t* n = "ODECrawler", const Text_t* t = 0)
virtual~ODECrawler()
static void_gled_catalog_init()
voidTObject::AbstractMethod(const char* method) const
voidAdvanceXLimits(Double_t delta_x = 0)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
voidChangeOrderInPlace(Int_t order)
Bool_tZGlass::CheckBit(ZGlass::Bits_e bit) const
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual voidZGlass::ClearAllReferences()
voidZGlass::ClearLinks()
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)
voidCrawl(Bool_t call_ode_start = true)
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
voidDetachStorage()
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
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()
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
Double_tGetAcc()
Bool_tZGlass::GetAcceptRefs() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
UShort_tZGlass::GetFireRefCount() const
UInt_tZGlass::GetGlassBits()
ZMirFilter*ZGlass::GetGuard()
Int_tGetGuessesBad()
Int_tGetGuessesOK()
Double_tGetH1()
Double_tGetHmin()
virtual const char*TObject::GetIconName() const
virtual ZGlass*ZGlass::GetLinkByName(const TString& link_name)
Int_tGetMaxSteps()
Bool_tZGlass::GetMIRActive() const
UShort_tZGlass::GetMoonRefCount() const
Int_tGetN()
virtual const Text_t*ZGlass::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
ZGlass*GetODEMaster()
virtual Option_t*TObject::GetOption() const
ZQueen*ZGlass::GetQueen()
UShort_tZGlass::GetRefCount() const
Saturn*ZGlass::GetSaturn()
ID_tZGlass::GetSaturnID() const
TimeStamp_tZGlass::GetStampReqTring() const
ODEStorage*GetStorage()
Int_tGetStored()
Double_tGetStoreDx()
Int_tGetStoreMax()
UShort_tZGlass::GetSunRefCount() const
TimeStamp_tZGlass::GetTimeStamp() const
virtual const Text_t*ZGlass::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
Bool_tZGlass::GetUseDispList() const
Bool_tZGlass::GetUseNameStack() const
Double_tGetX1()
Double_tGetX2()
static GledNS::ClassInfo*GlassInfo()
virtual Bool_tTObject::HandleTimer(TTimer* timer)
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 voidTObject::Inspect() constMENU
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
boolZGlass::IsSunOrFireSpace()
boolZGlass::IsSunSpace()
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
virtual voidZGlass::MarkStampReqTring()
voidTObject::MayNotUse(const char* method) const
static MID_tMid_Crawl()
static MID_tZGlass::Mid_RebuildRnrScheme()
static MID_tZGlass::Mid_ReTriangulate()
static MID_tMid_SetAcc()
static MID_tZGlass::Mid_SetAcceptRefs()
static MID_tZGlass::Mid_SetGuard()
static MID_tMid_SetH1()
static MID_tMid_SetHmin()
static MID_tMid_SetMaxSteps()
static MID_tZGlass::Mid_SetMIRActive()
static MID_tZGlass::Mid_SetName()
static MID_tMid_SetODEMaster()
static MID_tZGlass::Mid_SetStampReqTring()
static MID_tMid_SetStoreDx()
static MID_tMid_SetStoreMax()
static MID_tZGlass::Mid_SetTimeStamp()
static MID_tZGlass::Mid_SetTitle()
static MID_tZGlass::Mid_SetUseDispList()
static MID_tZGlass::Mid_SetUseDLRec()
static MID_tZGlass::Mid_SetUseNameStack()
static MID_tMid_SetX1()
static MID_tMid_SetX2()
static MID_tZGlass::Mid_UpdateAllViews()
static MID_tZGlass::Mid_UpdateGlassView()
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)
ODECrawler&operator=(const ODECrawler&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
Double_t*RawYArray()
virtual Int_tTObject::Read(const char* name)
voidZGlass::ReadLock() const
voidZGlass::ReadUnlock() const
virtual Int_tZGlass::RebuildAllRefs(An_ID_Demangler* idd)
virtual Int_tRebuildLinkRefs(An_ID_Demangler* c)
voidZGlass::RebuildRnrScheme()
virtual voidTObject::RecursiveRemove(TObject* obj)
const TString&ZGlass::RefName() const
const TString&ZGlass::RefTitle() const
TVectorD&RefY()
voidZGlass::register_name_change_cb(ZGlass::NameChangeCB* nccb)
voidZGlass::register_ray_absorber(ZGlass::RayAbsorber* ra)
Int_tZGlass::RemoveReferencesTo(ZGlass* lens)
voidTObject::ResetBit(UInt_t f)
voidZGlass::ReTriangulate()
ZMIR*S_Crawl(Bool_t call_ode_start = true)
ZMIR*ZGlass::S_RebuildRnrScheme()
ZMIR*ZGlass::S_ReTriangulate()
ZMIR*S_SetAcc(Double_t acc)
ZMIR*ZGlass::S_SetAcceptRefs(Bool_t acceptrefs)
ZMIR*ZGlass::S_SetGuard(ZMirFilter* guard)
ZMIR*S_SetH1(Double_t h1)
ZMIR*S_SetHmin(Double_t hmin)
ZMIR*S_SetMaxSteps(Int_t maxsteps)
ZMIR*ZGlass::S_SetMIRActive(Bool_t miractive)
ZMIR*ZGlass::S_SetName(const Text_t* s)
ZMIR*S_SetODEMaster(ZGlass* odemaster)
ZMIR*ZGlass::S_SetStampReqTring(TimeStamp_t stampreqtring)
ZMIR*S_SetStoreDx(Double_t storedx)
ZMIR*S_SetStoreMax(Int_t storemax)
ZMIR*ZGlass::S_SetTimeStamp(TimeStamp_t timestamp)
ZMIR*ZGlass::S_SetTitle(const Text_t* s)
ZMIR*ZGlass::S_SetUseDispList(Bool_t usedisplist)
ZMIR*ZGlass::S_SetUseDLRec(Bool_t state)
ZMIR*ZGlass::S_SetUseNameStack(Bool_t usenamestack)
ZMIR*S_SetX1(Double_t x1)
ZMIR*S_SetX2(Double_t x2)
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 = "")
voidSetAcc(Double_t acc)
voidZGlass::SetAcceptRefs(Bool_t acceptrefs)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidZGlass::SetGuard(ZMirFilter* guard)
voidSetH1(Double_t h1)
voidSetHmin(Double_t hmin)
voidSetMaxSteps(Int_t maxsteps)
voidZGlass::SetMIRActive(Bool_t miractive)
voidZGlass::SetName(const Text_t* n)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetODEMaster(ZGlass* odemaster)
voidZGlass::SetStampReqTring(TimeStamp_t stampreqtring)
virtual voidZGlass::SetStamps(TimeStamp_t s)
voidSetStorage(ODEStorage* s)
voidSetStoreDx(Double_t storedx)
voidSetStoreMax(Int_t storemax)
voidZGlass::SetTimeStamp(TimeStamp_t timestamp)
voidZGlass::SetTitle(const Text_t* t)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidZGlass::SetUseDispList(Bool_t usedisplist)
voidZGlass::SetUseDLRec(Bool_t state)
voidZGlass::SetUseNameStack(Bool_t usenamestack)
voidSetX1(Double_t x1)
voidSetX2(Double_t x2)
virtual voidShowMembers(TMemberInspector& insp, char* parent)
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 voidZGlass::StampReqTring(FID_t fid = FID_t(0,0))
TimeStamp_tZGlass::StampVFID()
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
TStringZGlass::StrName() const
TStringZGlass::StrTitle() const
ODEStorage*SwapStorage(ODEStorage* s)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
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::AdEnlightenment()
virtual voidZGlass::AdUnfoldment()
ZMIR*ZGlass::assert_MIR_presence(const Exc_t& header, int what = 0)
ZGlass*assert_odemaster(const Exc_t& eh)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
ZMIR*ZGlass::get_MIR()
voidinit_integration(Bool_t call_ode_start)
voidIntegrate()
voidTObject::MakeZombie()
voidZGlass::queen_check_in(ZGlass* l)
virtual voidZGlass::reference_all()
virtual voidZGlass::reference_links()
virtual Int_tZGlass::remove_references_to(ZGlass* lens)
voidRkck(TVectorD& y, TVectorD& dydx, Double_t x, Double_t h, TVectorD& yout, TVectorD& yerr)
Int_tRkqs(TVectorD& y, TVectorD& dydx, Double_t& x, Double_t htry, TVectorD& yscal, Double_t& h_last, Double_t& h_next)
voidZGlass::set_link_or_die(ZGlass*& link, ZGlass* new_val, FID_t fid)
ZMIR*ZGlass::suggest_MIR_presence(const Exc_t& header, int what = 0)
virtual voidZGlass::unreference_all()
virtual voidZGlass::unreference_links()
voidZGlass::warn_caller(const TString& warning)
private:
void_init()

Data Members

protected:
Bool_tZGlass::bAcceptRefsX{GS} 7 BoolOut()
Bool_tZGlass::bMIRActiveX{GS} 7 BoolOut(-join=>1)
Bool_tZGlass::bUseDispListX{GST} 7 Bool(-join=>1)
Bool_tZGlass::bUseNameStackX{GS} 7 Bool()
Double_tmAccX{gS} 7 Value(-range=>[0,1])
UShort_tZGlass::mEyeRefCount!
UShort_tZGlass::mFireRefCount! X{G} 7 ValOut(-width=>4)
UInt_tZGlass::mGlassBitsX{g}
ZLink<ZMirFilter>ZGlass::mGuardX{E} L{}
Int_tmGuessesBad! X{g} 7 ValOut()
Int_tmGuessesOK! X{g} 7 ValOut(-join=>1)
Double_tmH1X{gS} 7 Value(-join=>1)
Double_tmHminX{gS} 7 Value()
Int_tmMaxStepsX{gS} 7 Value()
UShort_tZGlass::mMoonRefCount! X{G} 7 ValOut(-width=>4)
Int_tmNX{g} 7 ValOut(-join=>1)
TStringZGlass::mNameX{RGE} 7 Textor()
ZLink<ZGlass>mODEMasterX{GS} L{a}
ZQueen*ZGlass::mQueen! X{g}
GMutexZGlass::mReadMutex!
UShort_tZGlass::mRefCount! X{G} 7 ValOut(-width=>4, -join=>1)
Saturn*ZGlass::mSaturn! X{g}
ID_tZGlass::mSaturnIDX{G} 7 ValOut(-range=>[0,MAX_ID,1], -width=>10)
TimeStamp_tZGlass::mStampReqTring! X{GS} TimeStamp of last change that requires retriangulation
ODEStorage*mStorageX{g}
Double_tmStoreDxX{gS} 7 Value()
Int_tmStoreMaxX{gS} 7 Value(-join=>1)
Int_tmStored! X{g} 7 ValOut(-join=>1)
UShort_tZGlass::mSunRefCount! X{G} 7 ValOut(-width=>4, -join=>1)
TimeStamp_tZGlass::mTimeStamp! X{GS} TimeStamp of last change
TStringZGlass::mTitleX{RGE} 7 Textor()
Double_tmX1X{gS} 7 Value(-join=>1)
Double_tmX2X{gS} 7 Value()
TVectorDmY! X{r}
set<NameChangeCB*>*ZGlass::pspNameChangeCB!
set<RayAbsorber*>*ZGlass::pspRayAbsorber!
static GledNS::LinkMemberInfo*ZGlass::sap_Guard_lmi
static GledNS::ClassInfo*sap_ODECrawler_ci
static GledNS::LinkMemberInfo*sap_ODEMaster_lmi
static GledNS::ClassInfo*ZGlass::sap_ZGlass_ci
private:
Bool_thCrawling!
Double_thERRCON!
Double_thPGROW
Double_thPSHRNK
Double_thSAFETY
Double_thTINY
ODECrawlerMaster*hTrueMaster!

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

void _init()
~ODECrawler()
void AdvanceXLimits(Double_t delta_x = 0)
 Advance x limits forward, so that X1 becomes X2 and new integration
 interval is delta_x.
 If delta_x is 0, length of the interval is preserved.
void SetStorage(ODEStorage* s)
void DetachStorage()
ODEStorage* SwapStorage(ODEStorage* s)
void init_integration(Bool_t call_ode_start)
 Initialize storage arrays, clear integration state.
 If call_ode_start is true, call ODEStart() in master to get
 initial parameters.
 hTrueMaster must be set.
Rkqs(TVectorD& y, TVectorD& dydx, Double_t& x, Double_t htry, TVectorD& yscal, Double_t& h_last, Double_t& h_next)
void Rkck(TVectorD& y, TVectorD& dydx, Double_t x, Double_t h, TVectorD& yout, TVectorD& yerr)
void Integrate()
 Integrate ODE with derivatives provided by mODEMaster from X1 to X2.
void Crawl(Bool_t call_ode_start = true)
 Integrate with given master / parameters.
 If called via a MIR it is executed in a broadcasted detached thread.

 The object is locked for the duration of the execution.
void ChangeOrderInPlace(Int_t order)
Double_t* RawYArray()
ODECrawler(const Text_t* n = "ODECrawler", const Text_t* t = 0)
{ _init(); }