From gwatts@phys.washington.edu Fri Apr 30 14:51:36 2004 Date: Sat, 17 Apr 2004 12:17:03 -0700 From: Gordon Watts To: d0dfwg@fnal.gov Subject: PAX Hi, It was such a nice evening, and I'm stuck out in the burbs, that I sat outside and... read up on PAX. PAX is a physics abstraction layer, written in C++. For jets, tracks, electrons, etc., it has 4-vectors. So it is quite high level. You wouldn't easily play around with different jet corrections, for example -- complex things like this are possible, but not easy. It has a very nice idea of building event hypotheses, and refining them as you add more information (jets and electrons, W to ele decay and W to jets decay, combine to a ttbar to lep+jets decay). The method of operation is similar to d0root -- you have to provide a translator that moves the reconstructed objects into PAX, and then you can start writing your algorithms in PAX. We have some similarities in DZERO already. First in the ChargedParticle. This is a high level object that doesn't really represent any single reconstruction object, and is fairly general (has 4-vector semantics, etc.). D0root is a much closer example (though I think fewer of you know it as well as ChargedParticle). D0root has a charged particle, which is basically a 4 vector (TLorentzVector). Most algorithms in d0root deal with this object rather than the derived d0jet or d0emparticle objects -- PAX is similar. PAX uses STL heavily, d0root uses root containers (PAX would probably have a speed advantage). PAX also seems to have been designed more carefully, however from the sounds of it, d0root contains many more of the utilities you might want for doing analysis at dzero. PAX has been used (or is being used) by a German group on CDF for some top analysis. It has also been used for Higgs studies on CMS. I'd be curious to know how the CDF analysis got down and dirty (i.e. playing with jet corrections, etc.) in this framework. The only advantage that I see that would make PAX worth considering was if there were some powerful (complex) algorithms out there already. I'm afraid I didn't do that research too carefully. Finally, PAX is not root based, so it wouldn't make sense to save it in the root tree (though you can write it out in its own format (!)). You would have the same issues moving this code into reco that you do the current d0root code. There is a good intro paper on physics/0306085 (arXiv). I got the above info from this paper and scanning the users manual on the PAX home page (found via google). Cheers, Gordon.