Tao: The Tool for Accelerator Optics

Many simulation problems fall into one of three categories:

Programs that are written to solve these types of problems have common elements: You have variables you want to vary in your model of your machine, you have "data" that you want to view, and, in the first two categories above, you want to match the machine model to the data (in designing a lattice the constraints correspond to the data).

Because of this commonality of design, the Tao program was developed so that programming with the Bmad toolkit was not necessary in order to do lattice analysis and design. Tao is a program that implements the essential ingredients needed to solve simulation problems. Tao uses configuration input files that can be tailored to specific machines. Additionally, Tao has been built to be easily customizable so that extending Tao to solve new and different problems is relatively straight forward.

Note: Among other things, Tao is very useful for quickly examining lattices to look at orbits, Twiss parameters, element parameters, etc. So much so that Tao is the most commonly used Bmad based program. It is highly recommended that all users become familiar with Tao since Tao will save countless hours.


Documentation

Introduction and Tutorial to Bmad and Tao:

Tao manual: (Revised: April 16, 2024)


Running Tao

Use the links on the left to get information on how to setup Bmad and Tao. Also see the Introduction and Tutorial to Bmad and Tao (above) on how to run Tao along with some simple examples.


PyTao

PyTao is a Python package that interfaces Python with Tao. PyTao is hosted on GitHub. Documentation including Downloading instructions is at:


The Wisdom of Tao

[As told to Geoffrey James]

In the beginning was the Tao. The Tao gave birth to Space and Time. Therefore Space and Time are Yin and Yang of programming.

Programmers that do not comprehend the Tao are always running out of time and space for their programs. Programmers that comprehend the Tao always have enough time and space to accomplish their goals.

How could it be otherwise?


Thus spake the master programmer:

After three days without programming, life becomes meaningless.


A novice asked the master: I have a program that sometime runs and sometimes aborts. I have followed the rules of programming, yet I am totally baffled. What is the reason for this?

The master replied: You are confused because you do not understand Tao. Only a fool expects rational behavior from his fellow humans. Why do you expect it from a machine that humans have constructed? Computers simulate determinism; only Tao is perfect.

The rules of programming are transitory; only Tao is eternal. Therefore you must contemplate Tao before you receive enlightenment.

But how will I know when I have received enlightenment? asked the novice.

Your program will then run correctly, replied the master.


The wise programmer is told about Tao and follows it.
The average programmer is told about Tao and searches for it.
The foolish programmer is told about Tao and laughs at it.

If it were not for laughter, there would be no Tao.

The highest sounds are hardest to hear.
Going forward is a way to retreat.
Great talent shows itself late in life.
Even a perfect program still has bugs.


A novice asked the Master: Here is a programmer that never designs, documents or tests his programs. Yet all who know him consider him one of the best programmers in the world. Why is this?

The Master replies: That programmer has mastered the Tao. He has gone beyond the need for design; he does not become angry when the system crashes, but accepts the universe without concern. He has gone beyond the need for documentation; he no longer cares if anyone else sees his code. He has gone beyond the need for testing; each of his programs are perfect within themselves, serene and elegant, their purpose self-evident. Truly, he has entered the mystery of Tao.