upgrade of PPV vertex finder to 3D (for pp 500 beam line constrain, 2009)

X-Y & Y-Z vertex distribution for real events are here


 

the core part of new code in PPV will be ~100 lines. Below is sketch, we need to add only 'STEP 2'. Extra code is needed for the chain switches, will deal w/ this later

 

All what PPV does now is fine except in:
StPPVertexFinder::findVertex(VertexData &V) { ....
it has now:
  // take x,y from beam line equation, TMP
  float x=mX0+z0*mdxdz;
  float y=mY0+z0*mdydz;
 
This part needs top be extended by the logic shown in STEP 2 above.
It is the old approach on LMV, where helix is approximated locally by straight lines which allow solving 2x2 matrix to find vertex in 2D or 3x3 matrix if we want to improve it in 3D.
I think for the beam-line constrain needs we can do just 2D reco - the few TPC tracks will have so large extrapolation errors that what PPV does now in Z-direction is fine.
 
The following tasks we can share (and I'm happy to pick any you like the least)
1)  generate M-C multi-muon events with:
 - 3,6,10,20 muons per event
 -  PT uniform over 3 GeV around the mean PT of 2,5,10,15 GeV/c
 - Z vertex continuos  in Z[-200,200]
 - X,Y vertex uniform in Rxy<4cm
 - perhaps add 1mm offset to every track
Total 4*4=16 sets of events, 10K each
 
2) develop (stand alone) function taking list of 2D lines N *{ x,y,vx,vy,sig} and returning center of gravity.
This will be the working horse of PPV extension but can & should be tested stand alone including basic QA & study of convergency
 
3) integration:
- add 2D X-Y fitter to PPV
- add sensitivity to 'useBeamLine' switch
- add decoding in Vertex itself (type?) if beam line was used or not
 
4) testing:
- using multi-muon events, produce lot of QA
- using    the above mixed with pileup from minB M-C events (lot of CPU)
- using exactly the same pp500 daq file Gene used now for beam line constrain and event by event comparison w/ Minuit
 
Let me know if it make sense and what you want to work on.
Tasks 1 & 2 can proceed in parallel.