- Compact style
- Indico style
- Indico style - inline minutes
- Indico style - numbered
- Indico style - numbered + minutes
- Indico Weeks View
Help us make Indico better by taking this survey! Aidez-nous à améliorer Indico en répondant à ce sondage !
Additional info from Franco :
during my talk yesterday I forgot to remind that the momenta and the vertex you obtain after a vertex fit are in general strongly correlated. So, if you want to calculate the error on the Bs mass, for instance, you need to keep these correlations in mind. The class VertexMore has a method to return the full covariance matrix of vertex position and track momenta:
| C(x,x) C(x,p1) C(x,p2) .... C(x,pn) |
C(x,p1, p2, ..., pn) = | C(p1,x) C(p1,p1) C(p1,p2) .... C(p1,pn) |
| ....................................................................................... |
| C(pn,x) C(pn,p1) C(pn,p2) ... C(pn,pn) |
Where each block is a 3x3 matrix. The method is called GetBigCov(). The following a snippet of code shows how to calculate the error on the Bs mass after fitting a pion and a Ds pseudo-track. Hope it helps.
Best,
Franco
//
// Bs mass plots
TVector3 rBsPi = vBs->GetMomentum(0); // Momentum pion from Bs
TVector3 rBsDs = vBs->GetMomentum(1); // Momentum Ds from Bs
Double_t PiMass = pBsPi->Mass; // Pion mass
Double_t DsMass = pDs->Mass; // Ds mass
Double_t BsMass = pBs->Mass; // Bs mass
Double_t Epi = TMath::Sqrt(PiMass*PiMass+rBsPi.Mag2()); // Energy pion from Bs
Double_t Eds = TMath::Sqrt(DsMass*DsMass+rBsDs.Mag2()); // Energy Ds from Bs
Double_t Etot = Epi + Eds; // Bs energy
TVector3 Ptot = rBsPi + rBsDs; // Bs momentum
Double_t rBsMass = TMath::Sqrt(Etot*Etot-Ptot.Mag2()); // Reconstructed Bs mass
// Mass error
TVector3 dm1 = (1./BsMass)*((Etot/Epi)*rBsPi-Ptot); // dm/dp1
TVector3 dm2 = (1./BsMass)*((Etot/Eds)*rBsDs-Ptot); // dm/dp2
Double_t dmp[6] = {dm1(0), dm1(1), dm1(2),dm2(0), dm2(1), dm2(2)};
TVectorD DmDp(6, dmp);
TMatrixDSym Bcov = vBs->GetBigCov(); // cov(x,p1,p2)
TMatrixDSym pcov = Bcov.GetSub(3,8,3,8); // cov(p1,p2)
Double_t mBsErr = TMath::Sqrt(pcov.Similarity(DmDp)); // Error on Bs mass
I have just made a "Work in Progress" pull request to FCCAnalyses, in which the vertexing code of Franco is now interfaced properly, by linking Delphes:
Consequently, one can now use Franco's Vertexmore class. I have added an example that reconstructs the (Ds and) Bs vertices in Bs to Ds(KKpi) K :
It is an improved / cleaner version of the example that I had given to Marco S last summer (which was already using Vertexmore).
There are many comments in the example.
It runs over a test file, the corresponding EvtGen card being here:
The example is "MC seeded", i.e. I first use the MC truth in order to search for the K, K, K, pi tracks of interest.
The Ds daughter tracks are fitted to a common vertex; the Ds "pseudo-track" is then reconstructed, and fitted together
with the track of the bachelor K. The example is run with:
fccanalyses run analysis_Bs2DsK_MCseeded.py --test --nevents 2000
A simple script, plots_Bs2DsK.x in the same directory, makes some basic validation plots.
The next step would be to move away from the "MC seeding" and work with all tracks in the event.
I also point you to the SW tutorial and the vertexing examples:
You can see in 2.4.3 how to reconstruct the non-primary tracks (example updated in the PR, following the other changes
made in this PR), and some stuff in 2.4.5 for the tau -> 3 mu may also be of some interest.