Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

d0 and z0 parameters at the extrapolated track state at the ECAL surface #25

Open
dudarboh opened this issue Dec 18, 2023 · 2 comments
Open

Comments

@dudarboh
Copy link
Member

The d0 and z0 parameters of the track state at the ECAL should always be equal to 0 by definition.

What is the purpose of the if condition here?

//fg: for curling tracks the propagated track has the wrong z0 whereas it should be 0. really
if( std::abs( trkStateCalo->getZ0() ) > std::abs( 2.*M_PI/trkStateCalo->getOmega() * trkStateCalo->getTanLambda() ) ){
streamlog_out( DEBUG2 ) << " >>>>>>>>>>> createTrackStateAtCaloFace : setting z0 to 0. for track state at calorimeteter : "
<< toString(trkStateCalo ) << std::endl ;
trkStateCalo->setZ0( 0. ) ;
}

Do we need it? Shouldn't all track states at calo have d0 and z0 set to 0?

There are curly tracks that consistently pass this if condition and result in the huge z0.
This later on affects track length calculation significantly.

Location                                                AtCalorimeter 
Id                                                            00265079
D0                                                       -3.410605e-13
Phi                                                      -2.908563e+00
Omega                                                    -1.132190e-03
Z0                                                        1.901083e+03
Tan Lambda                                               -3.425631e-01
ReferencePoint                              -1082.73, 756.357, -2411.8
Cov matrix:  +2.126779e+01
             -1.300012e-02, +9.355696e-06
             -1.971645e-06, +3.736557e-09, +4.949642e-12
             +9.402990e-01, -7.208810e-03, -1.218709e-05, +3.466207e+01
             -5.503403e-03, +1.006174e-05, +1.273179e-08, -3.512686e-02, +3.673301e-05
Location                                                AtCalorimeter 
Id                                                            00436880
D0                                                       -2.273737e-13
Phi                                                       3.066983e+00
Omega                                                     1.229360e-03
Z0                                                       -1.496372e+03
Tan Lambda                                                2.927782e-01
ReferencePoint                               411.078, -1472.59, 2411.8
Cov matrix:  +3.070539e+01
             +7.454400e-02, +1.824613e-04
             -2.149480e-06, -1.030419e-08, +2.739041e-11
             -1.121788e-01, -6.276377e-03, +3.091315e-05, +3.622616e+01
             -5.844261e-03, -2.985082e-05, +8.095816e-08, +9.340481e-02, +2.442500e-04
             
@gaede
Copy link
Contributor

gaede commented Jan 5, 2024

Good question. From my vague memory and looking at the code: there seems to be an ambiguity in the track state computation for curlers - likely those that are coming back in when hitting the endcap - where the z0 is off by one full turn, i.e. $2*\pi/\omega*tan(\lambda)$. Your example tracks show this feature. Why I put in a condition that the z0 should be larger than this I don't remember - most likely a bug. Can you try w/ removing the condition ?

@dudarboh
Copy link
Member Author

dudarboh commented Jan 8, 2024

In my analysis, during the track length calculation, I manually set d0/z0 of the trackStateAtCalo to 0.
Non-physical lines disappear, so results got better.

Left plot: d0/z0 from production (bugged)
Right plot: d0/z0 set to 0

P.S. To better see the improvement, open plots in new tabs and swap between them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants