FairRoot/PandaRoot
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
RhoKalmanVtxFitter Class Reference

#include <RhoKalmanVtxFitter.h>

Inheritance diagram for RhoKalmanVtxFitter:
RhoFitterBase

Public Member Functions

 RhoKalmanVtxFitter (RhoCandidate *b)
 
virtual ~RhoKalmanVtxFitter ()
 
void SetExpansionPoint (TVector3 P)
 
void SetNIterations (int i)
 
double FitVertexFast (TVector3 &vtx, TMatrixD &cov, bool skipcov=false, int niter=2)
 
void SetDebug (bool db=true)
 
void SetSilent ()
 
Bool_t Fit ()
 
Bool_t FitAll ()
 
double Chi2Contribution (const RhoCandidate *)
 
double GetChi2 () const
 
int GetNdf () const
 
double GetProb () const
 
void SetVerbose (Bool_t v=kTRUE)
 

Protected Member Functions

RhoCandidateHeadOfTree () const
 
RhoCandidateCopyCand (RhoCandidate *)
 uppermost particle composite in tree More...
 
RhoCandidateCopyTree (RhoCandidate *)
 
void InsertChi2 (const RhoCandidate *bc, const double chi2)
 
void SetDaugthersFromComposite (RhoCandidate *cand)
 
void FindAndAddFinalStateDaughters (RhoCandidate *cand)
 
void SetFourMomentumByDaughters (RhoCandidate *composite)
 
void SetDecayVertex (RhoCandidate *composite, const TVector3 &vtx, const TMatrixD &CovVV)
 

Protected Attributes

Bool_t fVerbose
 
RhoCandidatefHeadOfTree
 
std::vector< RhoCandidate * > fDaughters
 
double fChiSquare
 
int fNDegreesOfFreedom
 

Private Member Functions

Bool_t FitNode (RhoCandidate *b)
 
Bool_t Calculate ()
 
Bool_t CalcPrgParams (RhoCandidate *cand, TVector3 expansionpoint)
 
Bool_t CalcPrgParams (RhoCandidate *cand)
 

Private Attributes

RhoCandidatefCurrentHead
 
bool fDebug
 
int fNIterations
 
TVector3 fExpansionPoint
 
Float_t fPrgParams [5]
 
TMatrixD fPrgCov
 
TMatrixD fJacobian
 

Detailed Description

Definition at line 21 of file RhoKalmanVtxFitter.h.

Constructor & Destructor Documentation

RhoKalmanVtxFitter::RhoKalmanVtxFitter ( RhoCandidate b)

Definition at line 16 of file RhoKalmanVtxFitter.cxx.

References fCurrentHead, RhoFitterBase::fHeadOfTree, and RhoFitterBase::fVerbose.

16  :
17  RhoFitterBase(b),
18  fDebug(false),
19  fNIterations(2),
20  fExpansionPoint(0.,0.,0.), // Assume Zero origin as default
21  fPrgCov(5,5),
22  fJacobian(5,7)
23 {
24  fVerbose=false;
26 }
RhoCandidate * fCurrentHead
RhoCandidate * fHeadOfTree
Definition: RhoFitterBase.h:62
RhoKalmanVtxFitter::~RhoKalmanVtxFitter ( )
virtual

Definition at line 28 of file RhoKalmanVtxFitter.cxx.

29 {
30 }

Member Function Documentation

Bool_t RhoKalmanVtxFitter::CalcPrgParams ( RhoCandidate cand,
TVector3  expansionpoint 
)
private

Definition at line 33 of file RhoKalmanVtxFitter.cxx.

References Bool_t, RhoCandidate::Cov7(), Double_t, fJacobian, fPrgCov, fPrgParams, RhoCandidate::GetCharge(), RhoCandidate::GetPosition(), mom, RhoCandidate::P4(), RhoCalculationTools::P7toPRG(), and pos.

Referenced by Calculate(), and FitVertexFast().

34 {
35  // calculate helix and its covariance in the preigee representation
36 
37  TLorentzVector mom = tcand->P4();
38  TVector3 pos= tcand->GetPosition();
39  Double_t charge = tcand->GetCharge();
40  TMatrixD cov77 = tcand->Cov7();
41  Bool_t test = RhoCalculationTools::P7toPRG(pos, mom, charge, cov77, expansionpoint, fPrgParams, fPrgCov, fJacobian, false);
42  return test;
43 }
TVector3 pos
Double_t mom
Definition: plot_dirc.C:14
static Bool_t P7toPRG(const TVector3 &pos, const TLorentzVector &p4, const Double_t Q, const TMatrixD &cov77, const TVector3 &expPoint, Float_t *helixparams, TMatrixD &helixCov, TMatrixD &jacobian, Bool_t skipcov=kFALSE)
Double_t
TMatrixT< double > TMatrixD
Definition: PndLmdDim.h:52
Bool_t RhoKalmanVtxFitter::CalcPrgParams ( RhoCandidate cand)
inlineprivate

Definition at line 40 of file RhoKalmanVtxFitter.h.

40 {return CalcPrgParams(cand,fExpansionPoint);}; // calculate helix and its covariance
Bool_t CalcPrgParams(RhoCandidate *cand, TVector3 expansionpoint)
Bool_t RhoKalmanVtxFitter::Calculate ( )
private

Definition at line 192 of file RhoKalmanVtxFitter.cxx.

References Bool_t, CalcPrgParams(), RhoCandidate::Daughter(), Double_t, RhoCandidate::E(), RhoFitterBase::fChiSquare, fCurrentHead, fDebug, fExpansionPoint, fJacobian, RhoFitterBase::fNDegreesOfFreedom, fNIterations, fPrgCov, fPrgParams, RhoFitterBase::fVerbose, RhoCandidate::GetCharge(), RhoCandidate::GetMomentum(), RhoCandidate::GetPosition(), i, RhoFitterBase::InsertChi2(), RhoCandidate::NDaughters(), Print(), printf(), RhoCandidate::SetCov7(), RhoFitterBase::SetDecayVertex(), RhoFitterBase::SetFourMomentumByDaughters(), RhoCandidate::SetP3(), RhoCandidate::SetPos(), T, and W.

Referenced by FitNode().

193 {
194  // We'll do a vertex finding and Fitting in empty space at a constant magnetic field along z-direction
195  // We don't dive into the particle tree, it's just the daughters of this candidate
196 
197  int nTrk = fCurrentHead->NDaughters();
198  fNDegreesOfFreedom=2*nTrk-3;
199 
200  TVector3 vtx(0.,0.,0.);
201  std::vector<TVector3> momenta;
202  TMatrixD tmpcov(3,3);
203  Double_t chisquare=500000;//some high value
204  Double_t determinant = 0.;
205  TMatrixD qip(5,nTrk); // starting parameters of all tracks
206  std::vector<TMatrixD> B;
207  std::vector<TMatrixD> GI; // only Gi^-1 is used
208  std::vector<TMatrixD> BGI; // helper to save on multiplications (more memory needed, though)
209  std::vector<TMatrixD> D; // helper
210  std::vector<TMatrixD> E; //helper
211  TMatrixD A(3,3);
212  TMatrixD T(3,1);
213  std::vector<TMatrixD> U;
214  std::vector<TMatrixD> W;
215  std::vector<TMatrixD> dq; // helper
216  TMatrixD CovFitFull(3+3*nTrk,3+3*nTrk); //3 vtx coordinates, nTrk*3 momenta
217  TMatrixD CovVV(3,3);
218 
219  // Find a nice seed value
220  bool verbi=fVerbose;
221  fVerbose=false;
222  bool debi=fDebug;
223  fDebug=false; // temporary silence
224  //FitVertexFast(vtx,tmpcov,false);//fast vertex seed (with expansion point used)
225  fDebug=debi;
226  fVerbose=verbi;
227  if(fVerbose) {std::cout<<" #$# Fit #$# Vertex after fast prefit: "; vtx.Print();}
228  // fExpansionPoint = vtx; // move to vincinity
229  for (int iteration = 0 ; iteration < fNIterations ; iteration++) {
230  if(fVerbose) {
231  std::cout<<"Iteration "<<iteration<<std::endl;
232  std::cout<<" #$# Fit #$# Begin iteration "<<iteration<<" #$#$#$# "<<std::endl;
233  }
234  //cleanup
235  B.clear();
236  GI.clear(); // only Gi^-1 is used
237  BGI.clear(); // helper to save on multiplications (more memory needed, though)
238  D.clear(); // helper
239  E.clear(); //helper
240  U.clear();
241  W.clear();
242  dq.clear(); // helper
243  A.Zero();
244  T.Zero();
245  CovFitFull.Zero();
246  CovVV.Zero();
247 
248  for(int i=0; i<nTrk; i++) {
249  if(fVerbose) {std::cout<<" #$# Fit #$# track "<<i<<" #$#$#$# "<<std::endl;}
250  if(fVerbose) {std::cout<<" #$# Fit #$# Expansion point "; fExpansionPoint.Print();}
251  if(fVerbose) {std::cout<<" #$# Fit #$# Vertex before (global) "; (vtx).Print();}
252  RhoCandidate* tcand = fCurrentHead->Daughter(i);
253 
254  const Double_t charge = tcand->GetCharge();
255 
256  if(iteration==0) {
257  //On the first run fetch the starting values (being updated)
258  //Bool_t testprg = CalcPrgParams(tcand,fExpansionPoint);
259  Bool_t testprg = CalcPrgParams(tcand,vtx);
260  if(!testprg) {printf("#$# Fit #$# CANNOT CALCULATE TRACK PARAMETERS (momenta at origin)"); return kFALSE;}
261  qip[0][i]=0.;//fPrgParams[0];// the initial guess is AT the guess vertex. No epsilon_0
262  qip[1][i]=0.;//fPrgParams[1];// the initial guess is AT the guess vertex. No z_0
263  qip[2][i]=fPrgParams[2];//
264  qip[3][i]=fPrgParams[3];//phi0
265  qip[4][i]=fPrgParams[4];
266 
267  if(fDebug) {printf(" ##$# Fit #$# Measurement p: "); tcand->GetMomentum().Print();}
268  if(fDebug) {printf(" ##$# Fit #$# Measurement x: "); tcand->GetPosition().Print();}
269  momenta.push_back(tcand->GetMomentum());
270  momenta[i].SetPhi(fPrgParams[3]); // set phi while keeping magnitude and theta constant
271  if(fDebug) {printf(" ##$# Fit #$# Momentum at Expansionpoint (phi=%g): ",fPrgParams[3]); momenta[i].Print();}
272  }
273 
274  // get parameters closest to current vertex estimate
275  Bool_t testvtx = CalcPrgParams(tcand,vtx);
276  if(!testvtx) { return kFALSE; }
277  if (fVerbose) {
278  printf("#$# Fit #$# Helix params:\n\t epsilon = %.4g cm\n\t Z0\t = %.4g cm\n\t theta\t = %.4g\n\t phi0\t = %.4g\n\t rho\t = %.4g 1/cm\n\t charge\t = %g e\n",fPrgParams[0],fPrgParams[1],fPrgParams[2],fPrgParams[3],fPrgParams[4],charge);
279  std::cout<<" #$# Fit #$# Helix cov: ";
280  fPrgCov.Print();
281  }
282 
283  TMatrixD qiv(5,1); // parameters describing relative to expansion point the vertex seed
284  qiv[0][0]=fPrgParams[0];//epsilon AT vertex zero
285  qiv[1][0]=fPrgParams[1];//z0 AT vertex zero
286  qiv[2][0]=fPrgParams[2];//
287  qiv[3][0]=fPrgParams[3];//phi0
288  qiv[4][0]=fPrgParams[4];//
289  //dqi = q_measured - F_0 == div-qip;
290  TMatrixD qipi(5,1);
291  for (int kk=0; kk<5; kk++) { qipi[kk][0]=qip[kk][i]; }
292  TMatrixD dqi(qiv,TMatrixD::kMinus,qipi);
293  dq.push_back(dqi);
294  if(fDebug) {std::cout<<" #$# Fit #$# dqi "; dqi.Print();}
295 
296  TMatrixD COVi(5,5); // track parameter cov for (epsilon,z_p,Phi_p)
297  //Double_t r=pocai.Perp();
298 
299  COVi=fPrgCov;
300  if(fVerbose) {std::cout<<" #$# Fit #$# COVi "; COVi.Print();}
301 
302  //Take the derivatives at the current vertex estimate (seed) (cf. Avery1 p.4)
303  TMatrixD Di(5,3); // Derivative in V
304  Di[0][0]=fJacobian[0][0]; // dEpsilon / dvx
305  Di[0][1]=fJacobian[0][1]; // dEpsilon /dvy
306  Di[0][2]=fJacobian[0][2]; // dEpsilon /dvz
307  Di[1][0]=fJacobian[1][0]; // dZ0 /dvx
308  Di[1][1]=fJacobian[1][1]; // dZ0 /dvy
309  Di[1][2]=fJacobian[1][2]; // dZ0 /dvz
310  Di[2][0]=fJacobian[2][0]; //
311  Di[2][1]=fJacobian[2][1]; //
312  Di[2][2]=fJacobian[2][2]; //
313  Di[3][0]=fJacobian[3][0]; // dPhi0 /dvx
314  Di[3][1]=fJacobian[3][1]; // dPhi0 /dvy
315  Di[3][2]=fJacobian[3][2]; // dPhi0 /dvz
316  Di[4][0]=fJacobian[4][0]; //
317  Di[4][1]=fJacobian[4][1]; //
318  Di[4][2]=fJacobian[4][2]; //
319  //Di.T();
320  D.push_back(Di);
321  if(fDebug) {std::cout<<" #$# Fit #$# Di "; Di.Print();}
322 
323  TMatrixD Ei(5,3); // Derivative in p
324  Ei[0][0]=fJacobian[0][3]; // dEpsilon /dpx
325  Ei[0][1]=fJacobian[0][4]; // dEpsilon /dpy
326  Ei[0][2]=fJacobian[0][5]; // dEpsilon /dpz
327  Ei[1][0]=fJacobian[1][3]; // dZ0 /dpx
328  Ei[1][1]=fJacobian[1][4]; // dZ0 /dpy
329  Ei[1][2]=fJacobian[1][5]; // dZ0 /dpz
330  Ei[2][0]=fJacobian[2][3]; //
331  Ei[2][1]=fJacobian[2][4]; //
332  Ei[2][2]=fJacobian[2][5]; //
333  Ei[3][0]=fJacobian[3][3]; // dPhi0 /dpx
334  Ei[3][1]=fJacobian[3][4]; // dPhi0 /dpy
335  Ei[3][2]=fJacobian[3][5]; // dPhi0 /dpz
336  Ei[4][0]=fJacobian[4][3]; //
337  Ei[4][1]=fJacobian[4][4]; //
338  Ei[4][2]=fJacobian[4][5]; //
339  //Ei.T();
340  E.push_back(Ei);
341  if(fDebug) {std::cout<<" #$# Fit #$# Ei "; Ei.Print();}
342 
343  //det(aA) = a^n det(A)
344  TMatrixD Wi(COVi);
345  determinant=0.;
346  Wi.InvertFast(&determinant);
347  if (determinant==0) {
348  std::cout<<"RhoKalmanVtxFitter: COVi Inversion failed, abort fit."<<std::endl;
349  return kFALSE;
350  }
351  W.push_back(Wi);
352  if(fDebug) {
353  std::cout<<" #$# Fit #$# Wi (det(cov) = "<<determinant<<")"<<std::endl;
354  Wi.Print();
355  for(int sdsd=0; sdsd<3; sdsd++) for(int asas=sdsd; asas<3; asas++) {
356  printf("W{%i}[%i][%i] = %6.9f\n",i,sdsd,asas,Wi[sdsd][asas]);
357  printf("W{%i}[%i][%i] = %6.9f\n",i,asas,sdsd,Wi[asas][sdsd]);
358  }
359  }
360 
361  // calculate matrices to be stored: A, Bi, Gi, T, Ui
362  TMatrixD DitWi(Di,TMatrixD::kTransposeMult,Wi);
363  if(fDebug) {std::cout<<" #$# Fit #$# DitWi "; DitWi.Print();}
364 
365  TMatrixD EitWi(Ei,TMatrixD::kTransposeMult,Wi);
366  if(fDebug) {std::cout<<" #$# Fit #$# EitWi "; EitWi.Print();}
367 
368  TMatrixD Ai(DitWi,TMatrixD::kMult,Di);
369  A += Ai;
370  if(fDebug) {std::cout<<" #$# Fit #$# Ai ("<<i<<") = DitWiDi "; Ai.Print();}
371 
372  TMatrixD Bi(DitWi,TMatrixD::kMult,Ei);
373  B.push_back(Bi);
374  if(fDebug) {std::cout<<" #$# Fit #$# Bi = DitWiEi "; Bi.Print();}
375 
376  TMatrixD Gi(EitWi,TMatrixD::kMult,Ei);
377  if(fDebug) {std::cout<<" #$# Fit #$# Gi = EitWiEi "; Gi.Print();}
378 
379  TMatrixD GIi(Gi);
380  determinant=0.;
381  GIi.InvertFast(&determinant);
382  if (determinant==0) {
383  std::cout<<"RhoKalmanVtxFitter: GIi Inversion failed, abort fit."<<std::endl;
384  return kFALSE;
385  }
386  GI.push_back(GIi);
387  if(fDebug) {std::cout<<" #$# Fit #$# GIi = Gi^-1 (det="<<determinant<<")"; GIi.Print();}
388 
389  TMatrixD BiGIi(Bi,TMatrixD::kMult,GIi);
390  BGI.push_back(BiGIi);
391  if(fDebug) {std::cout<<" #$# Fit #$# BiGIi "; BiGIi.Print();}
392 
393  TMatrixD Ti(DitWi,TMatrixD::kMult,dqi);
394  T += Ti;
395  if(fDebug) {std::cout<<" #$# Fit #$# Ti = DitWi*dqi "; Ti.Print();}
396 
397  TMatrixD Ui(EitWi,TMatrixD::kMult,dqi);
398  U.push_back(Ui);
399  if(fDebug) {std::cout<<" #$# Fit #$# Ui = EitWi*dqi"; Ui.Print();}
400 
401  } // loop tracks
402  if(fDebug) {std::cout<<" #$# Fit #$# A = "; A.Print();}
403 
404  // Calculate Vertex update
405  TMatrixD WV(A);
406  if(fDebug) {std::cout<<" #$# Fit #$# WV = "; WV.Print();}
407  TMatrixD Vpre(T);
408  if(fDebug) {std::cout<<" #$# Fit #$# Vpre "; Vpre.Print();}
409  for(int i=0; i<nTrk; i++) {
410  TMatrixD BiGIi(BGI[i]);
411  TMatrixD BiGIiUi(BiGIi,TMatrixD::kMult,U[i]);
412  Vpre-=BiGIiUi;
413  if(fDebug) {std::cout<<" #$# Fit #$# GIi ("<<i<<") "; GI[i].Print();}
414  if(fDebug) {std::cout<<" #$# Fit #$# Bi ("<<i<<") "; B[i].Print();}
415  if(fDebug) {std::cout<<" #$# Fit #$# BiGIi ("<<i<<") "; BiGIi.Print();}
416  TMatrixD BiGIiBti(BiGIi,TMatrixD::kMultTranspose,B[i]);
417  if(fDebug) {std::cout<<" #$# Fit #$# BiGIiBti ("<<i<<") = "; BiGIiBti.Print();}
418  WV-=BiGIiBti;
419  if(fDebug) {std::cout<<" #$# Fit #$# WV = "; WV.Print();}
420  if(fDebug) {std::cout<<" #$# Fit #$# Vpre "; Vpre.Print();}
421  }
422  CovVV=WV;
423  //CovVV*=1e9;//catch numerics
424  CovVV.InvertFast(&determinant);
425  //CovVV*=1e9;//catch numerics back
426  if (determinant==0) {
427  std::cout<<"RhoKalmanVtxFitter: WV Inversion failed, abort fit."<<std::endl;
428  return kFALSE;
429  }
430  if(fDebug) {std::cout<<" #$# Fit #$# WV= "; WV.Print();}
431  if(fDebug) {std::cout<<" #$# Fit #$# CovVV (det="<<determinant<<") ="; CovVV.Print();}
432  //TMatrixD CovVV(TMatrixD::kInverted,WV); // no determinant returned -> No check possible
433  TMatrixD uV(CovVV,TMatrixD::kMult,Vpre);
434  vtx.SetXYZ(vtx.X()+uV[0][0],vtx.Y()+uV[1][0],vtx.Z()+uV[2][0]);
435  if(fDebug) {std::cout<<" #$# Fit #$# Vertex update = "; uV.Print();}
436  if(fVerbose) {std::cout<<" #$# Fit #$# Vertex after "; vtx.Print();}
437  if(fVerbose) {std::cout<<" #$# Fit #$# Vertex after (global) "; vtx.Print();}
438 
439 // //skip momentim update until the very last iteration
440 // if(iteration < fNIterations-1){
441 // fExpansionPoint=vtx; //
442 // continue;
443 // }
444 
445  // Calculate Momentum updates & Chi^2
446  std::vector<TMatrixD> uq;
447  //dV.T();
448  double chiq=0;
449  for(int i=0; i<nTrk; i++) {
450  TMatrixD BtiV(B[i],TMatrixD::kTransposeMult,uV);
451  TMatrixD uPi(GI[i],TMatrixD::kMult,U[i]-BtiV);
452  // update momenta
453  momenta[i]+=TVector3(uPi[0][0],uPi[1][0],uPi[2][0]);
454  if(fVerbose) {std::cout<<" #$# Fit #$# Momenum update on particle %i"<<i; uPi.Print();}
455  //qip[3][i]=momenta[i].Phi();
456  // update track parameters at current vertex (phi_0)
457  // track param residuals for chisquare
458  TMatrixD uvi(D[i],TMatrixD::kMult,uV);
459  TMatrixD upi(E[i],TMatrixD::kMult,uPi);
460  dq[i]-=uvi;
461  dq[i]-=upi;
462  //chisquare
463  TMatrixD dqitWi(dq[i],TMatrixD::kTransposeMult,W[i]);
464  TMatrixD chis(dqitWi,TMatrixD::kMult,dq[i]);
465  chiq+=chis[0][0];
466  if(fDebug){std::cout<<" #$# Fit #$# Insert Chisquare"<<std::endl;}
467  InsertChi2(fCurrentHead->Daughter(i),chisquare);
468  }
469  if(chiq>0 && chiq<10000) { chisquare=chiq; }
470  else { chisquare = -20; }
471  // TODO: end iteration loop at satisfying chisq?
472  }// end of iteratoin loop
473  fChiSquare=chisquare;
474 
475  // calculating other cov matrices
476 
477  // POS COV
478  for(int k=0; k<3; k++) for(int l=0; l<3; l++) {
479  CovFitFull[k][l]=CovVV[k][l];
480  }
481 
482  // MOM-POS COV
483  for(int i=0; i<nTrk; i++) {
484  TMatrixD CovVPi(CovVV,TMatrixD::kMult,BGI[i]);
485  CovVPi*=-1.;
486  for(int k=0; k<3; k++) for(int l=0; l<3; l++) {
487  CovFitFull[k+3*(i+1)][l]=CovVPi[k][l]; ;
488  CovFitFull[l][k+3*(i+1)]=CovVPi[k][l]; ;
489  }
490  // MOM-MOM COV
491  for(int j=0; j<nTrk; j++) {
492  // Caution: Identity of tracks i and j switch, to use CovVPi from above.
493  TMatrixD CovPPijtmp(GI[j],TMatrixD::kMultTranspose,B[j]);
494  TMatrixD CovPPij(CovPPijtmp,TMatrixD::kMult,CovVPi);
495  CovPPij*=-1.;
496  if(i==j) { CovPPij+=GI[j]; }
497  for(int k=0; k<3; k++) for(int l=0; l<3; l++) {
498  CovFitFull[k+3*(j+1)][l+3*(i+1)]=CovPPij[k][l]; // momentum cov
499  CovFitFull[l+3*(i+1)][k+3*(j+1)]=CovPPij[k][l]; // momentum cov
500  }
501  }
502  }
503  if(fDebug) {std::cout<<" #$# Fit #$# CovFitFull: "; CovFitFull.Print();}
504 
505 
506  //TODO... Continue checking
507 
508  // update particle candidates
509  TMatrixD CovP7(7,7);
510  for(int k=0; k<3; k++) for(int l=0; l<3; l++) {
511  CovP7[k][l]=CovVV[k][l];
512  }
513 
514  for(int i=0; i<nTrk; i++) {
515  // The candidate tree is the to-be-fitted copy
516  // It's safe to modify!
517  RhoCandidate* tcand = fCurrentHead->Daughter(i);
518  // set fitted values
519  tcand->SetPos(vtx);
520  if(fDebug) {std::cout<<" #$# Fit #$# Final Momentum :("<<i<<") "; momenta[i].Print();}
521  tcand->SetP3(momenta[i]);
522 
523  for(int k=0; k<3; k++) for(int l=0; l<3; l++) {
524  CovP7[k+3][l+3]=CovFitFull[3*(i+1)+k][3*(i+1)+l]; // momentum cov
525  CovP7[k+3][l]=CovFitFull[3*(i+1)+k][l]; // momentum-position cov
526  CovP7[l][k+3]=CovFitFull[l][3*(i+1)+k]; // momentum-position cov
527  }
528  // Calculate energy covariances:
529  double invE = 1./tcand->E();
530  CovP7[3][6] = CovP7[6][3] = (momenta[i].X()*CovP7[3][3]+momenta[i].Y()*CovP7[3][4]+momenta[i].Z()*CovP7[3][5])*invE;
531  CovP7[4][6] = CovP7[6][4] = (momenta[i].X()*CovP7[4][3]+momenta[i].Y()*CovP7[4][4]+momenta[i].Z()*CovP7[4][5])*invE;
532  CovP7[5][6] = CovP7[6][5] = (momenta[i].X()*CovP7[5][3]+momenta[i].Y()*CovP7[5][4]+momenta[i].Z()*CovP7[5][5])*invE;
533 
534  CovP7[6][6] = (momenta[i].X()*momenta[i].X()*CovP7[3][3]+momenta[i].Y()*momenta[i].Y()*CovP7[4][4]+momenta[i].Z()*momenta[i].Z()*CovP7[5][5]
535  +2.0*momenta[i].X()*momenta[i].Y()*CovP7[3][4]
536  +2.0*momenta[i].X()*momenta[i].Z()*CovP7[3][5]
537  +2.0*momenta[i].Y()*momenta[i].Z()*CovP7[4][5])*invE*invE;
538 
539  CovP7[6][0] = CovP7[0][6] = (momenta[i].X()*CovP7[3][0]+momenta[i].Y()*CovP7[4][0]+momenta[i].Z()*CovP7[5][0])*invE;
540  CovP7[6][1] = CovP7[1][6] = (momenta[i].X()*CovP7[3][1]+momenta[i].Y()*CovP7[4][1]+momenta[i].Z()*CovP7[5][1])*invE;
541  CovP7[6][2] = CovP7[2][6] = (momenta[i].X()*CovP7[3][2]+momenta[i].Y()*CovP7[4][2]+momenta[i].Z()*CovP7[5][2])*invE;
542 
543  tcand->SetCov7(CovP7);
544  //tcand->Lock(); //?? autolocking
545  //if(fDebug) {std::cout<<" #$# Fit #$# CovP7 with mom for traj "<<i<<": "; CovP7.Print();}
546  }
547  fCurrentHead->SetPos(vtx); // that's where the P4 is defined
548  SetFourMomentumByDaughters(fCurrentHead);//Cov7 updated by daughters, too!
549  SetDecayVertex(fCurrentHead,vtx,CovVV);
550  return kTRUE; // all good now!
551 }
MechFsc Print()
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
void SetPos(const TVector3 &pos)
Definition: RhoCandidate.h:235
Double_t GetCharge() const
Definition: RhoCandidate.h:183
Int_t i
Definition: run_full.C:25
RhoCandidate * Daughter(Int_t n)
void SetFourMomentumByDaughters(RhoCandidate *composite)
Bool_t CalcPrgParams(RhoCandidate *cand, TVector3 expansionpoint)
TTree * T
Definition: anaLmdReco.C:32
#define W
Definition: createSTT.C:76
void SetP3(const TVector3 &p3)
TVector3 GetPosition() const
Definition: RhoCandidate.h:185
Double_t
TVector3 GetMomentum() const
Definition: RhoCandidate.h:188
Double_t E() const
Definition: RhoCandidate.h:202
RhoCandidate * fCurrentHead
Int_t NDaughters() const
double fChiSquare
Definition: RhoFitterBase.h:74
void SetDecayVertex(RhoCandidate *composite, const TVector3 &vtx, const TMatrixD &CovVV)
void SetCov7(const TMatrixD &cov7)
void InsertChi2(const RhoCandidate *bc, const double chi2)
Definition: RhoFitterBase.h:66
TMatrixT< double > TMatrixD
Definition: PndLmdDim.h:52
int fNDegreesOfFreedom
Definition: RhoFitterBase.h:75
Double_t RhoFitterBase::Chi2Contribution ( const RhoCandidate b)
inherited

access to the fitted candidates

Definition at line 86 of file RhoFitterBase.cxx.

References Double_t, RhoFitterBase::fChi2Map, uid(), and RhoCandidate::Uid().

87 {
88  if(!b) return -999.;
89  Int_t uid = b->Uid();
90  Double_t chi2=fChi2Map[uid];
91  return chi2 >=0.0 ? chi2 : -1.;
92 }
Int_t Uid() const
Definition: RhoCandidate.h:419
std::map< Int_t, Double_t > fChi2Map
! each particle&#39;s contribution to the chi^2
Definition: RhoFitterBase.h:80
int uid(int lev, int lrun, int lmode)
Definition: autocutx.C:122
Double_t
RhoCandidate * RhoFitterBase::CopyCand ( RhoCandidate b)
protectedinherited

uppermost particle composite in tree

Definition at line 51 of file RhoFitterBase.cxx.

References RhoFactory::Instance(), RhoFactory::NewCandidate(), RhoCandidate::RemoveAssociations(), and RhoCandidate::SetFit().

Referenced by RhoFitterBase::CopyTree().

52 {
54  newCand->RemoveAssociations();
55  b->SetFit(newCand);//ready to be modified
56  return newCand;
57 }
void RemoveAssociations()
static RhoFactory * Instance()
Definition: RhoFactory.cxx:34
void SetFit(RhoCandidate *b)
Definition: RhoCandidate.h:292
static RhoCandidate * NewCandidate()
Definition: RhoFactory.cxx:52
RhoCandidate * RhoFitterBase::CopyTree ( RhoCandidate head)
protectedinherited

Definition at line 61 of file RhoFitterBase.cxx.

References RhoFitterBase::CopyCand(), RhoCandidate::Daughter(), i, RhoCandidate::IsComposite(), RhoCandidate::NDaughters(), and RhoCandidate::SetMotherLink().

Referenced by RhoFitterBase::RhoFitterBase().

62 {
63  //std::cout<<"\n\tcopy tree "<<head->Uid()<<" "<<&head<<" "<<head->PdgCode()<<" "<<head->NDaughters()<<"...";
64  RhoCandidate* headcopy=CopyCand(head);
65  RhoCandidate* daucopy=0;
66  RhoCandidate* dau=0;
67  for(Int_t i=0;i<head->NDaughters();i++)
68  {
69  dau=head->Daughter(i);
70  //std::cout<<" daugter "<<dau->Uid()<<" "<<i<<" "<<dau->PdgCode()<<" at "<<dau<<" ";
71  if(dau == head) {
72  std::cout<<endl<<"*** Candidate is its own mother??? *** \n"<<std::endl;
73  std::cout<<" print: "<<*head<<std::endl;;
74  }
75  assert(dau != head);
76  if(dau->IsComposite()) daucopy=CopyTree(dau);
77  else daucopy=CopyCand(dau);
78  //std::cout<<"CopyTree: copied candidate "<<dau->Uid()<<std::endl;
79  daucopy->SetMotherLink(headcopy); //daughter link is set automatically, too
80  }
81  return headcopy;
82 }
Int_t i
Definition: run_full.C:25
void SetMotherLink(RhoCandidate *m, bool verbose=true)
Bool_t IsComposite() const
RhoCandidate * Daughter(Int_t n)
Int_t NDaughters() const
RhoCandidate * CopyTree(RhoCandidate *)
RhoCandidate * CopyCand(RhoCandidate *)
uppermost particle composite in tree
void RhoFitterBase::FindAndAddFinalStateDaughters ( RhoCandidate cand)
protectedinherited

Definition at line 149 of file RhoFitterBase.cxx.

References RhoCandidate::Daughter(), RhoFitterBase::fDaughters, RhoCandidate::IsComposite(), RhoCandidate::IsLocked(), and RhoCandidate::NDaughters().

Referenced by Rho4CFitter::Fit(), RhoKinFitter::Fit(), and Rho4CFitter::FitConserveMasses().

150 {
151  RhoCandidate* tc;
152  for (int k=0;k<cand->NDaughters();k++) {
153  tc=cand->Daughter(k);
154  if (!tc->IsComposite() || tc->IsLocked()) { fDaughters.push_back(tc); }
155  else { FindAndAddFinalStateDaughters(tc); }
156  }
157  return;
158 }
void FindAndAddFinalStateDaughters(RhoCandidate *cand)
Bool_t IsComposite() const
RhoCandidate * Daughter(Int_t n)
Bool_t IsLocked()
Definition: RhoCandidate.h:330
std::vector< RhoCandidate * > fDaughters
Definition: RhoFitterBase.h:69
Int_t NDaughters() const
Bool_t RhoFitterBase::Fit ( )
inherited
Bool_t RhoFitterBase::FitAll ( )
inherited

Definition at line 101 of file RhoFitterBase.cxx.

References RhoFitterBase::fHeadOfTree, RhoCandidate::IsLocked(), and RhoFitterBase::IterateAndFit().

102 {
103  if(fHeadOfTree->IsLocked())
104  {
105  Warning("RhoFitterBase::FitAll","You tried to fit a locked candidate. Retuning kFALSE now.");
106  return kFALSE;
107  }
108  return IterateAndFit(fHeadOfTree);
109 }
Bool_t IsLocked()
Definition: RhoCandidate.h:330
RhoCandidate * fHeadOfTree
Definition: RhoFitterBase.h:62
Bool_t IterateAndFit(RhoCandidate *b)
Bool_t RhoKalmanVtxFitter::FitNode ( RhoCandidate b)
privatevirtual

Reimplemented from RhoFitterBase.

Definition at line 46 of file RhoKalmanVtxFitter.cxx.

References b, Bool_t, Calculate(), RhoFitterBase::fChiSquare, and fCurrentHead.

47 {
49  Bool_t check = Calculate();
50  if(check == kFALSE) {
51  fChiSquare=-22222;
52  Error("RhoKalmanVtxFitter::FitNode()","Fit failed for composite %p. Set chisquare to %f.",b,fChiSquare);
53  }
54  return check;
55 }
TTree * b
RhoCandidate * fCurrentHead
double fChiSquare
Definition: RhoFitterBase.h:74
Double_t RhoKalmanVtxFitter::FitVertexFast ( TVector3 &  vtx,
TMatrixD cov,
bool  skipcov = false,
int  niter = 2 
)

Definition at line 75 of file RhoKalmanVtxFitter.cxx.

References Bool_t, c, CalcPrgParams(), cos(), RhoCandidate::Daughter(), Double_t, RhoFitterBase::fChiSquare, fCurrentHead, fDebug, fExpansionPoint, fJacobian, RhoFitterBase::fNDegreesOfFreedom, fPrgCov, fPrgParams, RhoFitterBase::fVerbose, i, RhoCandidate::NDaughters(), niter, printf(), s, sin(), t, and CAMath::Tan().

Referenced by PndPmtTask::Exec(), poormantracks(), and PndRhoTupleQA::qaPRG().

76 {
77  // Calculate a vertex of n tracks without considering the changes in momentum vector
78  // the variables vtx & cov (3x3) are written and the Chi^2 is returned.
79  // the current head candidate is set by FitNode during tree navigation or is the composite
80  // which the fitter was initialized with.
81  int nTrk = fCurrentHead->NDaughters();
82  fNDegreesOfFreedom=2*nTrk-3;
83  for (int iterate=0;iterate<niter;iterate++){
84  fExpansionPoint=vtx;
85  std::vector<TMatrixD> w;
86  std::vector<TMatrixD> xp;
87  TMatrixD sumw(3,3);
88  TMatrixD sumwx(3,1);
89  Double_t determinant = 0.;
90  for(int i=0; i<nTrk; i++) {
92  // get Helix in PRG notation from Billoir paper
93  // (epsilon,z0,theta,phi0,rho)
94  Bool_t testprg = CalcPrgParams(tcand,fExpansionPoint);
95  if(!testprg) { return -2; }
96 
97  if (fVerbose) {
98  printf("#$# Fast #$# Helix params:\n\t epsilon\t = %.4g cm\n\t Z0\t = %.4g cm\n\t theta\t = %.4g\n\t phi0\t = %.4g\n\t rho\t = %.4g\n",fPrgParams[0],fPrgParams[1],fPrgParams[2],fPrgParams[3],fPrgParams[4]);
99  std::cout<<" #$# Fast #$# Helix cov: ";
100  fPrgCov.Print();
101  }
102 
103  Double_t s = sin(fPrgParams[3]);
104  Double_t c = cos(fPrgParams[3]);
106  if(t!=0.) { t = 1/t; }
107  else { return -3; } // t = cot(theta)
108 
109  TMatrixD COVi(2,2); // track parameter cov for (epsilon,z0)
110  COVi[0][0]=fPrgCov[0][0];
111  COVi[0][1]=fPrgCov[0][1];
112  COVi[1][0]=fPrgCov[1][0];
113  COVi[1][1]=fPrgCov[1][1];
114  if(fVerbose) {std::cout<<" #$# Fast #$# COVi "; COVi.Print();}
115 
116  TMatrixD Di(2,3); // Derivative in V, 2x3
117  Di[0][0]=fJacobian[0][0]; // dEpsilon / dvx
118  Di[0][1]=fJacobian[0][1]; // dEpsilon /dvy
119  Di[0][2]=fJacobian[0][2]; // dEpsilon /dvz
120  Di[1][0]=fJacobian[1][0]; // dZ0 /dvx
121  Di[1][1]=fJacobian[1][1]; // dZ0 /dvy
122  Di[1][2]=fJacobian[1][2]; // dZ0 /dvz
123  if(fDebug) {std::cout<<" #$# Fast #$# Di "; Di.Print();}
124 
125  TMatrixD xpi(1,3);
126  xpi[0][0]=s*fPrgParams[0];
127  xpi[0][1]=-c*fPrgParams[0];
128  xpi[0][2]=fPrgParams[1];
129  xp.push_back(xpi); // save for later use
130  if(fVerbose) {std::cout<<" #$# Fast #$# xpi "; xpi.Print();}
131 
132  //propagate to Vertex
133  TMatrixD Wi(COVi);
134  Wi.InvertFast(&determinant);
135  if (determinant == 0.) {
136  std::cout<<"RhoKalmanVtxFitter: COVi Inversion failed, abort fit -888"<<std::endl;
137  return -888;
138  }
139  //TMatrixD Wi(TMatrixD::kInverted,COVi); // no determinant returned -> No check possible
140  if(fDebug) {std::cout<<" #$# Fast #$# Wi"<<std::endl; Wi.Print();}
141  TMatrixD wi(TMatrixD(Di,TMatrixD::kTransposeMult,Wi),TMatrixD::kMult,Di);
142  w.push_back(wi); // save for later use
143  if(fDebug) {std::cout<<" #$# Fast #$# wi "; wi.Print();}
144  TMatrixD wixpi(wi,TMatrixD::kMultTranspose,xpi);
145  if(fDebug) {std::cout<<" #$# Fast #$# wixpi "; wixpi.Print();}
146 
147  sumw+=wi; // sum up weights
148  if(fDebug) {std::cout<<" #$# Fast #$# sumw "; sumw.Print();}
149  sumwx+=wixpi; // sum up weighted positions
150  if(fDebug) {std::cout<<" #$# Fast #$# sumwx "; sumwx.Print();}
151  }
152 
153  TMatrixD cV(sumw);
154  cV.InvertFast(&determinant);
155  if (determinant==0) {
156  std::cout<<"RhoKalmanVtxFitter: sumw Inversion failed, retunring -777"<<std::endl;
157  return -777;
158  }
159  //TMatrixD cV(TMatrixD::kInverted,sumw); // no determinant returned -> No check possible
160  if(fVerbose) {std::cout<<" #$# Fast #$# cV "; cV.Print();}
161  TMatrixD V(cV,TMatrixD::kMult,sumwx);// result vertex
162  V.T(); // make it a row vector
163  if(fVerbose) {std::cout<<" #$# Fast #$# V "; V.Print();}
164  vtx.SetXYZ(V[0][0],V[0][1],V[0][2]);
165  vtx += fExpansionPoint; // move back to origin
166  if(fVerbose) {std::cout<<" #$# Fast #$# Vtx: "; vtx.Print();}
167 
168  if (skipcov) {
169  fChiSquare = -111.;// skip chisqare calculation
170  } else {
171  Double_t chisq=0.; // calculate chisquare
172  for(int i=0; i<nTrk; i++) {
173  if(fDebug) {std::cout<<" #$# Fast #$# V "; V.Print();}
174  TMatrixD resid(xp[i],TMatrixD::kMinus,V);
175  if(fDebug) {std::cout<<" #$# Fast #$# resid "; resid.Print();}
176  if(fDebug) {std::cout<<" #$# Fast #$# w["<<i<<"] "; w[i].Print();}
177  TMatrixD chisqi(TMatrixD(resid,TMatrixD::kMult,w[i]),TMatrixD::kMultTranspose,resid);
178  if(fDebug) {std::cout<<" #$# Fast #$# chisqi "; chisqi.Print();}
179  chisq+=chisqi[0][0];
180  }
181  if(fVerbose) {std::cout<<" #$# Fast #$# chisq = "<<chisq<<std::endl;}
182  cov=cV;
183  fChiSquare=chisq;
184  }
185  }
186  return fChiSquare;
187 
188 }
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
friend F32vec4 cos(const F32vec4 &a)
Definition: P4_F32vec4.h:112
Int_t i
Definition: run_full.C:25
friend F32vec4 sin(const F32vec4 &a)
Definition: P4_F32vec4.h:111
TLorentzVector s
Definition: Pnd2DStar.C:50
RhoCandidate * Daughter(Int_t n)
float Tan(float x)
Definition: PndCAMath.h:165
Bool_t CalcPrgParams(RhoCandidate *cand, TVector3 expansionpoint)
Double_t
int niter
Definition: poormantracks.C:20
RhoCandidate * fCurrentHead
Int_t NDaughters() const
double fChiSquare
Definition: RhoFitterBase.h:74
TTree * t
Definition: bump_analys.C:13
TMatrixT< double > TMatrixD
Definition: PndLmdDim.h:52
int fNDegreesOfFreedom
Definition: RhoFitterBase.h:75
double RhoFitterBase::GetChi2 ( ) const
inlineinherited
int RhoFitterBase::GetNdf ( ) const
inlineinherited

Definition at line 49 of file RhoFitterBase.h.

References RhoFitterBase::fNDegreesOfFreedom.

Referenced by poormantracks(), and PndRhoTupleQA::qaFitter().

49 {return fNDegreesOfFreedom;};
int fNDegreesOfFreedom
Definition: RhoFitterBase.h:75
double RhoFitterBase::GetProb ( ) const
inlineinherited
RhoCandidate& RhoFitterBase::HeadOfTree ( ) const
inlineprotectedinherited

Definition at line 57 of file RhoFitterBase.h.

References RhoFitterBase::fHeadOfTree.

57 { return *fHeadOfTree; }
RhoCandidate * fHeadOfTree
Definition: RhoFitterBase.h:62
void RhoFitterBase::InsertChi2 ( const RhoCandidate bc,
const double  chi2 
)
inlineprotectedinherited

Definition at line 66 of file RhoFitterBase.h.

References RhoFitterBase::fChi2Map, and RhoCandidate::Uid().

Referenced by Calculate().

66 {fChi2Map[ bc->Uid()] = chi2;}
Int_t Uid() const
Definition: RhoCandidate.h:419
std::map< Int_t, Double_t > fChi2Map
! each particle&#39;s contribution to the chi^2
Definition: RhoFitterBase.h:80
void RhoFitterBase::SetDaugthersFromComposite ( RhoCandidate cand)
protectedinherited

Definition at line 136 of file RhoFitterBase.cxx.

References RhoCandidate::Daughter(), RhoFitterBase::fDaughters, RhoCandidate::IsComposite(), and RhoCandidate::NDaughters().

Referenced by RhoKinHyperonFitter::Fit(), RhoKinVtxFitter::FitNode(), RhoKinHyperonVtxFitter::FitNode(), and RhoKinHyperonFitter::SetMatrices().

137 {
138  fDaughters.clear();
139  if(cand->IsComposite()){
140  RhoCandidate* tc;
141  for (int k=0;k<cand->NDaughters();k++) {
142  tc=cand->Daughter(k);
143  fDaughters.push_back(tc);
144  }
145  }
146  return;
147 }
Bool_t IsComposite() const
RhoCandidate * Daughter(Int_t n)
std::vector< RhoCandidate * > fDaughters
Definition: RhoFitterBase.h:69
Int_t NDaughters() const
void RhoKalmanVtxFitter::SetDebug ( bool  db = true)
inline

Definition at line 32 of file RhoKalmanVtxFitter.h.

References fDebug, and RhoFitterBase::fVerbose.

32 {if(db) { fVerbose=true; } fDebug=db;};
void RhoFitterBase::SetDecayVertex ( RhoCandidate composite,
const TVector3 &  vtx,
const TMatrixD CovVV 
)
protectedinherited

Definition at line 178 of file RhoFitterBase.cxx.

References RhoCandidate::SetDecayVtx().

Referenced by Calculate(), RhoKinVtxFitter::SetOutput(), and RhoKinHyperonVtxFitter::SetOutput().

179 {
180  RhoError decaypointcov(CovVV);
181  RhoVector3Err decayvertex(vtx,decaypointcov);
182  composite->SetDecayVtx(decayvertex);
183 }
void SetDecayVtx(RhoVector3Err theVtx)
void RhoKalmanVtxFitter::SetExpansionPoint ( TVector3  P)
inline

Definition at line 26 of file RhoKalmanVtxFitter.h.

References fExpansionPoint, and P.

Referenced by PndPmtTask::Exec().

void RhoFitterBase::SetFourMomentumByDaughters ( RhoCandidate composite)
protectedinherited

Definition at line 160 of file RhoFitterBase.cxx.

References RhoCandidate::Cov7(), RhoCandidate::Daughter(), RhoCandidate::IsComposite(), RhoCandidate::IsLocked(), RhoCandidate::NDaughters(), RhoCandidate::P4(), RhoCandidate::SetCov7(), and RhoCandidate::SetP4().

Referenced by Calculate(), Rho4CFitter::Fit(), Rho4CFitter::FitConserveMasses(), RhoKinVtxFitter::SetOutput(), and RhoKinFitter::SetOutput().

161 {
162  RhoCandidate* tc;
163  TLorentzVector tmpLV;
164  TMatrixD tmpCov(7,7);
165  // Sum daughter fourmomenta, dive into nodes if necessary
166  for (int k=0;k<composite->NDaughters();k++) {
167  tc=composite->Daughter(k);
168  if (tc->IsComposite() && !tc->IsLocked()) { SetFourMomentumByDaughters(tc); }
169  tmpLV += tc->P4();
170  tmpCov = tmpCov + tc->Cov7();
171  }
172  composite->SetP4(tmpLV);
173  composite->SetCov7(tmpCov);
174  //std::cout<<" Base fitter cov7 from tc "<<tc->Uid()<<"/"<<tc->Charge()<<"/"<<tc->PdgCode()<<": ";tmpCov.Print();
175  return;
176 }
Bool_t IsComposite() const
RhoCandidate * Daughter(Int_t n)
void SetFourMomentumByDaughters(RhoCandidate *composite)
void SetP4(Double_t mass, const TVector3 &p3)
Bool_t IsLocked()
Definition: RhoCandidate.h:330
TLorentzVector P4() const
Definition: RhoCandidate.h:195
TMatrixD Cov7() const
Int_t NDaughters() const
void SetCov7(const TMatrixD &cov7)
TMatrixT< double > TMatrixD
Definition: PndLmdDim.h:52
void RhoKalmanVtxFitter::SetNIterations ( int  i)
inline

Definition at line 27 of file RhoKalmanVtxFitter.h.

References fNIterations, and i.

Referenced by PndPmtTask::Exec().

27 {fNIterations=i;};
Int_t i
Definition: run_full.C:25
void RhoKalmanVtxFitter::SetSilent ( )
inline

Definition at line 33 of file RhoKalmanVtxFitter.h.

References fDebug, and RhoFitterBase::fVerbose.

Referenced by PndPmtTask::Exec(), poormantracks(), and PndRhoTupleQA::qaPRG().

33 {fVerbose=false; fDebug=false;};
void RhoFitterBase::SetVerbose ( Bool_t  v = kTRUE)
inlineinherited

Definition at line 52 of file RhoFitterBase.h.

References RhoFitterBase::fVerbose, and v.

52 {fVerbose=v;}
__m128 v
Definition: P4_F32vec4.h:4

Member Data Documentation

double RhoFitterBase::fChiSquare
protectedinherited
RhoCandidate* RhoKalmanVtxFitter::fCurrentHead
private

Definition at line 36 of file RhoKalmanVtxFitter.h.

Referenced by Calculate(), FitNode(), FitVertexFast(), and RhoKalmanVtxFitter().

std::vector<RhoCandidate*> RhoFitterBase::fDaughters
protectedinherited
bool RhoKalmanVtxFitter::fDebug
private

Definition at line 40 of file RhoKalmanVtxFitter.h.

Referenced by Calculate(), FitVertexFast(), SetDebug(), and SetSilent().

TVector3 RhoKalmanVtxFitter::fExpansionPoint
private

Definition at line 44 of file RhoKalmanVtxFitter.h.

Referenced by Calculate(), FitVertexFast(), and SetExpansionPoint().

RhoCandidate* RhoFitterBase::fHeadOfTree
protectedinherited
TMatrixD RhoKalmanVtxFitter::fJacobian
private

Definition at line 47 of file RhoKalmanVtxFitter.h.

Referenced by CalcPrgParams(), Calculate(), and FitVertexFast().

int RhoFitterBase::fNDegreesOfFreedom
protectedinherited
int RhoKalmanVtxFitter::fNIterations
private

Definition at line 43 of file RhoKalmanVtxFitter.h.

Referenced by Calculate(), and SetNIterations().

TMatrixD RhoKalmanVtxFitter::fPrgCov
private

Definition at line 46 of file RhoKalmanVtxFitter.h.

Referenced by CalcPrgParams(), Calculate(), and FitVertexFast().

Float_t RhoKalmanVtxFitter::fPrgParams[5]
private

Definition at line 45 of file RhoKalmanVtxFitter.h.

Referenced by CalcPrgParams(), Calculate(), and FitVertexFast().

Bool_t RhoFitterBase::fVerbose
protectedinherited

The documentation for this class was generated from the following files: