Photon energy subtleties:

For those of you who use the Standard Ntuple and remember the subtleties of photon energies and such, we bring you the following update. For completeness we will tell the full story rather than just the new part.

The story so far:

For those who use the TOPFND code in their analysis, it is common to use the variables P4E_ELE for the 4-vectors of EM clusters, whether they be photons or electrons. We have found that P4E_ELE is NOT APPROPRIATE for PHOTONS. Here's why:

In an ELES bank, there exist two sets of px, py and pz for an EM cluster.

One set comes directly from the associated CALS bank (ELES pointers PX_ELE, PY_ELE, PZ_ELE). The other set is calculated using a combination of the CALS energy, CES info, tracking info and vertex info (ELES pointers EXVELE, EYVELE, EZVELE)

These are defined as follows (quoted from DSELES.INC):

20. For the PEM and FEM ETVELE, EXVELE, EYVELE, and EZVELE, the energy weighted EM cluster position (except for regions in the plug where there are strips and then the strip position is used) is combined with the primary vertex (Xv=0, Yv=0, and Zv from ZVELE). The magnitude of the vector is the energy from the CALS bank (E_ELE).

21. In the CEM ETVELE, EXVELE, EYVELE, and EZVELE are computed using the direction of the track associated with the EM cluster and the Z vertex. If there is no track, then these quanities are calculated the vertex and the energy weighted EM cluster position. The magnitude of the vector is the energy from the CALS bank (E_ELE).

Where the best Z vertex used is determined from C$ELE:ZVERTX.CDF. It uses the following algorithm:

This routine selects the "best" primary vertex for the EM cluster JCL based on the Z0 of the largest P track pointing to the cluster. If there is only one primary vertex, this is the best. If there are no primary vertices, ZV = 0. If there is more than one primary vertex and the EM cluster has no tracks, ZV = 0. If there is 1 track, ZV is from the primary vertex closest to Z0 of the track. If there is more than one track, then the one that extrapolates closest to the strip clusters or to the cluster centroid is used."


Ok...So what you might ask...Well, the following algorithm may be nice, but it ISN'T WHAT THE CODE ACTUALLY DOES!!!. Specifically, if there is no track the FIRST vertex with class>0 is chosen as the ELES bank vertex. This is probably biassed towards Vertices with lots of tracks (min bias like??) rather than one stiff one (lepton like??)


So, if you use the TOPFND code to extract the electron 4-vectors (P4E_ELE), then you will get the second set, which uses the tracking. This particular algorithm gives rise to some unusual error modes for central EM clusters. If the EM cluster is a photon with a track pointing into (or near) the cluster, or if the EM cluster is an electron and for some reason the CTC track of the real electron is absent. In those cases, the C$ELE code will correct the CALS (px py pz) so that (px py pz) points in the direction of the highest pt 3d track pointing into the cluster, but with the same CALS energy. There may be also some other error modes associated with PEM and FEM clusters (haven't checked these yet).

So, In order to avoid these problems with EM cluster 4-vectors, we suggest the following

1) PHOTON kinematics should NOT be calculated using the TOPFND P4E_ELE. If there is a low pt track nearby the total energy will be correct, but px, py and pz could be very WRONG!!! Better that you use the PHOVAL.CDF code.


The photon kinematics from PHOVAL are now (and have been) in the Standard Ntuple. However, they are slightly inconsistant. For example the ET (PETC1) and the 4 vectors (PPX1, PPY1, PPZ1 and PPE1) are calculated in a slightly different manner. Specifically:

PHOET() ==> PETC1 in the NTUPLE. It is filled using Phoe*Sin(Theta) where the energy comes directly from the ELES bank i.e, Phoe(Ncencl) = Rw(Inddat+E__Ele) ! Photon Energy

Sin(Theta) is calculated using the tower face and Z and R corrected using the wire and strip positions as well as the assumed Vertex (Phozv(Ncencl) = Rw(inddat+zv_ele)).

However, the four vectors are calculated only using the corrected Z from the wire and strip position and the ZVertex which is the FIRST vertex from CALL VTGZZT(1,NPRIM,KCL,ZVERT,XVERT,YVERT). If there is no track, the vertices are the same, if there is a stray track, they could be different. In anycase in the NTUPLE:

PETC1 is NOT equal to SQRT(PPX1*PPX1 + PPY1*PPY1), although it is often very close.


2) For electron kinematics, the TOPFND P4E_ELE will always do the right thing for good high pt electrons. If you suspect that the z vertex or the track associated with the electron are bad for some reason, then you should not use TOPFND P4E_ELE.

This handy analysis tip was brought to you by

Dave and Jeff

P.S. How much does this affect a given analysis?? In the WGamma analysis there are 25 events (With photon Et>25), of those 7 photons claim to have used a different vertex from the lepton. We show the effect on the Et of the photons when we use the vertex from the lepton.

Old Et New Et Difference
30.155 31.041 -0.88659
26.607 26.864 -0.25698
26.092 24.072 2.0195
26.098 31.636 -5.5380 <===
26.376 25.146 1.2301
51.934 54.279 -2.3448
29.943 30.172 -0.22870

For the marked photon...The ELES bank picked a vertex at -23.6, the lepton had a vertex at 48.4cm

created by Marcus Hohlmann ( Jun 12, 1996