ROOT logo
Gled » NUMERICA » ODECrawler

class ODECrawler: public ZGlass


 ODE integrator using adaptive step functions from GSL.
 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.

 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).
 Start and end points (at x1 and x2) are always stored, unless mStoreMax=0.

 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 AList*ZGlass::AsAList()
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
Bool_tZGlass::GetAcceptRefs() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
Double_tGetEpsAbs() const
Double_tGetEpsRel() const
Double_tGetFacDer() const
Double_tGetFacVal() const
UShort_tZGlass::GetFireRefCount() const
UInt_tZGlass::GetGlassBits()
ZMirFilter*ZGlass::GetGuard()
Double_tGetH() const
Double_tGetH1() const
Double_tGetHmin() const
virtual const char*TObject::GetIconName() const
virtual ZGlass*ZGlass::GetLinkByName(const TString& link_name)
Int_tGetMaxSteps() const
Bool_tZGlass::GetMIRActive() const
UShort_tZGlass::GetMoonRefCount() const
Int_tGetN() const
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
Int_tGetStepChanged() const
ODECrawler::StepFunc_eGetStepFunc() const
Int_tGetStepOK() const
ODEStorage*GetStorage()
Int_tGetStored() const
Double_tGetStoreDx() const
Bool_tGetStoreH() const
Int_tGetStoreMax() const
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() const
Double_tGetX2() const
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_tZGlass::Mid_SetAcceptRefs()
static MID_tMid_SetEpsAbs()
static MID_tMid_SetEpsRel()
static MID_tMid_SetFacDer()
static MID_tMid_SetFacVal()
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_SetStepFunc()
static MID_tMid_SetStoreDx()
static MID_tMid_SetStoreH()
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()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
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
vector<Double_t>&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)
static const gsl_odeiv_step_type*s_get_step_func(ODECrawler::StepFunc_e sf)
ZMIR*ZGlass::S_RebuildRnrScheme()
ZMIR*ZGlass::S_ReTriangulate()
ZMIR*ZGlass::S_SetAcceptRefs(Bool_t acceptrefs)
ZMIR*S_SetEpsAbs(Double_t epsabs)
ZMIR*S_SetEpsRel(Double_t epsrel)
ZMIR*S_SetFacDer(Double_t facder)
ZMIR*S_SetFacVal(Double_t facval)
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_SetStepFunc(ODECrawler::StepFunc_e stepfunc)
ZMIR*S_SetStoreDx(Double_t storedx)
ZMIR*S_SetStoreH(Bool_t storeh)
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 = "")
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)
voidSetEpsAbs(Double_t epsabs)
voidSetEpsRel(Double_t epsrel)
voidSetFacDer(Double_t facder)
voidSetFacVal(Double_t facval)
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)
voidSetStepFunc(ODECrawler::StepFunc_e stepfunc)
voidSetStorage(ODEStorage* s)
voidSetStoreDx(Double_t storedx)
voidSetStoreH(Bool_t storeh)
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)
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)
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_gsl_alloc()
void_gsl_free()
void_init()

Data Members

public:
enum StepFunc_e { SF_RK2
SF_RK4
SF_RKF45
SF_RKCK
SF_RK8PD
SF_RK2Imp
SF_RK4Imp
SF_BSImp
SF_Gear1
SF_Gear2
};
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_tZGlass::bMIRActiveX{GS} 7 BoolOut(-join=>1)
Bool_tbStoreHX{GS} 7 Bool()
Bool_tZGlass::bUseDispListX{GST} 7 Bool(-join=>1)
Bool_tZGlass::bUseNameStackX{GS} 7 Bool()
Double_tmEpsAbsX{GS} 7 Value(-range=>[0,1000], -join=>1)
Double_tmEpsRelX{GS} 7 Value(-range=>[0,1])
UShort_tZGlass::mEyeRefCount!
Double_tmFacDerX{GS} 7 Value(-range=>[0,100])
Double_tmFacValX{GS} 7 Value(-range=>[0,100], -join=>1)
UShort_tZGlass::mFireRefCount! X{G} 7 ValOut(-width=>4)
UInt_tZGlass::mGlassBitsX{g}
ZLink<ZMirFilter>ZGlass::mGuardX{E} L{}
Double_tmHX{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()
TStringZGlass::mNameX{RGE} 7 Textor()
ZLink<ZGlass>mODEMasterX{GS} L{a}
ODECrawler::StepFunc_emPrevStepFunc!
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
Int_tmStepChanged! X{G} 7 ValOut()
ODECrawler::StepFunc_emStepFuncX{GS} 7 PhonyEnum()
Int_tmStepOK! X{G} 7 ValOut(-join=>1)
ODEStorage*mStorageX{g}
Double_tmStoreDxX{GS} 7 Value(-range=>[0,1e12])
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()
vector<Double_t>mY! 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_tm_crawling!
gsl_odeiv_control*m_gsl_control!
gsl_odeiv_evolve*m_gsl_evolve!
gsl_odeiv_step*m_gsl_step!
gsl_odeiv_system*m_gsl_system!
ODECrawlerMaster*m_true_master!

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

void _init()
ODECrawler(const Text_t* n = "ODECrawler", const Text_t* t = 0)
~ODECrawler()
const gsl_odeiv_step_type* s_get_step_func(ODECrawler::StepFunc_e sf)
void _gsl_alloc()
void _gsl_free()
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.
 m_true_master must be set.
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)