23.05.2014 Views

Athena Developer Guide

Athena Developer Guide

Athena Developer Guide

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Athena</strong> Appendix C Design considerations Version/Issue: 2.0.0<br />

because they can be used by a range of different algorithms. We could have various types of tracking<br />

algorithm all using the same data as input and producing similar data as output. On the contrary, the<br />

intermediate data types can be designed to be very algorithm dependent.<br />

The way we have chosen to communicate between the different Algorithms which constitute our<br />

physics algorithm is by using the transient event data store. This allows us to have low coupling<br />

between them, but other ways could be envisaged. For instance, we could implement specific methods<br />

in the algorithms and allow other “friend” algorithms to use them directly.<br />

Concerning the relationships between data objects, it is strongly discouraged to have links from the<br />

input data objects to the newly produced ones (i.e. links from hits to tracks). In the other direction this<br />

should not be a problem (i.e from tracks to constituent hits).<br />

For data types that we would like to save permanently we need to implement a specific Converter. One<br />

converter is required for each type of data and each kind of persistency technology that we wish to use.<br />

This is not the case for the data types that are used as intermediate data, since these data are completely<br />

transient.<br />

C.4.3 Mathematics and other utilities<br />

It is clear that to implement any algorithm we will need the help of a series of utility classes. Some of<br />

these classes are very generic and they can be found in common class libraries. For example the<br />

standard template library. Other utilities will be more high energy physics specific, especially in cases<br />

like fitting, error treatment, etc. We envisage making as much use of these kinds of utility classes as<br />

possible.<br />

Some algorithms or algorithm-parts could be designed in a way that allows them to be reused in other<br />

similar physics algorithms. For example, perhaps fitting or clustering algorithms could be designed in a<br />

generic way such that they can be used in various concrete algorithms. During design is the moment to<br />

identify this kind of re-usable component or to identify existing ones that could be used instead and<br />

adapt the design to make possible their usage.<br />

page 186

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!