BmnRoot
Loading...
Searching...
No Matches
BmnMath.h
Go to the documentation of this file.
1#ifndef BMNMATH_H_
2#define BMNMATH_H_
3
4#include "FairTrackParam.h"
5#include "BmnTrack.h"
6#include "BmnHit.h"
7#include "TLorentzVector.h"
8#include "TVectorD.h"
9#include "TF1.h"
10
11class CbmHit;
12class CbmStripHit;
13class CbmPixelHit;
14class CbmGlobalTrack;
15
16#define ANSI_COLOR_RED "\x1b[91m"
17#define ANSI_COLOR_BLUE "\x1b[94m"
18#define ANSI_COLOR_RESET "\x1b[0m"
19#define ANSI_COLOR_YELLOW_BG "\x1b[33;7m"
20#define ANSI_COLOR_BLUE_BG "\x1b[94;7m"
21#define ANSI_BOLD "\e[1m"
22#define ANSI_DEFAULT "\e[0m"
23
24#define DBG(a) printf(ANSI_BOLD "Trace %s: %s" ANSI_DEFAULT " (%s:%d)\n", __func__, a, __FILE__, __LINE__);
25#define DBGERR(a) fprintf(stderr, ANSI_COLOR_RED "!!! %s error in %s: %s" ANSI_DEFAULT " (%s:%d)\n", a, __func__, strerror(errno), __FILE__, __LINE__);
26
27namespace lit
28{
29
30
31Float_t ChiSq(const FairTrackParam* par, const BmnHit* hit);
32
33Int_t NDF(const BmnTrack* track);
34
35}
36
37Bool_t IsParCorrect(const FairTrackParam* par, const Bool_t isField);
38Bool_t IsParCorrect(const FairTrackParam* par);
39Float_t NumericalRootFinder(TF1 f, Float_t left, Float_t right);
40TVector3 LineFit(BmnTrack* track, const TClonesArray* arr, TString type);
41void LineFit(Double_t&, Double_t&, BmnTrack*, TClonesArray*, Int_t, Int_t);
42TVector3 LineFitBy3Hits(const BmnHit* h0, const BmnHit* h1, const BmnHit* h2);
43TVector3 CircleFit(BmnTrack* track, const TClonesArray* arr, Double_t &chi2);
44TVector3 CircleFit(vector<BmnHit*> hits, Int_t idSkip);
45TVector3 CircleBy3Hit(BmnTrack* track, const TClonesArray* arr);
46TVector3 CircleBy3Hit(const BmnHit* h0, const BmnHit* h1, const BmnHit* h2);
47TVector3 Pol2By3Hit(BmnTrack* track, const TClonesArray* arr);
48Double_t CalcTx(const BmnHit* h0, const BmnHit* h1, const BmnHit* h2);
49void DrawHits(BmnTrack* track, const TClonesArray* arr);
50Float_t NewtonSolver(Float_t A0, Float_t A1, Float_t A2, Float_t A22);
51Float_t Dist(Float_t x1, Float_t y1, Float_t x2, Float_t y2);
52
53void fit_seg(Double_t*, Double_t*, Double_t*, Double_t*, Int_t, Int_t);
54void Pol2Fit(BmnTrack*, const TClonesArray*, Double_t&, Double_t&, Double_t&, Int_t);
55TVector3 Pol2Fit(vector <BmnHit*>, Int_t);
56TVector2 LineFit(vector<BmnHit*>, Int_t, TString);
57
58void DrawBar(UInt_t iEv, UInt_t nEv);
59void DrawBar(Long64_t iEv, Long64_t nEv);
60
61// Some supplementary functions to calculate Tukey weights
62vector <Double_t> dist(vector <Double_t>, Double_t);
63vector <Double_t> W(vector <Double_t>, Double_t);
64Double_t Sigma(vector <Double_t>, vector <Double_t>);
65Double_t Mu(vector <Double_t>, vector <Double_t>);
66
67Double_t GetVZByTwoStraightTracks(BmnTrack* tr0, BmnTrack* tr1, Double_t& dist);
68Double_t GetVzByVectorStraightTracks(vector<BmnTrack> tr, Double_t& dist);
69
70void UpdateTrackParam(FairTrackParam* initPar, const FairTrackParam* detPar, Double_t& chiSq);
71
72#endif /*BMNMATH_H_*/
float f
Definition P4_F32vec4.h:21
Double_t Mu(vector< Double_t >, vector< Double_t >)
Definition BmnMath.cxx:906
TVector3 LineFit(BmnTrack *track, const TClonesArray *arr, TString type)
Definition BmnMath.cxx:113
void DrawHits(BmnTrack *track, const TClonesArray *arr)
Definition BmnMath.cxx:532
void DrawBar(UInt_t iEv, UInt_t nEv)
Definition BmnMath.cxx:940
TVector3 CircleBy3Hit(BmnTrack *track, const TClonesArray *arr)
Definition BmnMath.cxx:470
vector< Double_t > dist(vector< Double_t >, Double_t)
Definition BmnMath.cxx:869
Double_t GetVZByTwoStraightTracks(BmnTrack *tr0, BmnTrack *tr1, Double_t &dist)
Definition BmnMath.cxx:979
TVector3 CircleFit(BmnTrack *track, const TClonesArray *arr, Double_t &chi2)
Definition BmnMath.cxx:312
void Pol2Fit(BmnTrack *, const TClonesArray *, Double_t &, Double_t &, Double_t &, Int_t)
Definition BmnMath.cxx:781
Double_t CalcTx(const BmnHit *h0, const BmnHit *h1, const BmnHit *h2)
Definition BmnMath.cxx:422
void UpdateTrackParam(FairTrackParam *initPar, const FairTrackParam *detPar, Double_t &chiSq)
Definition BmnMath.cxx:1048
void fit_seg(Double_t *, Double_t *, Double_t *, Double_t *, Int_t, Int_t)
Definition BmnMath.cxx:589
Double_t Sigma(vector< Double_t >, vector< Double_t >)
Definition BmnMath.cxx:890
Float_t NewtonSolver(Float_t A0, Float_t A1, Float_t A2, Float_t A22)
Definition BmnMath.cxx:441
Bool_t IsParCorrect(const FairTrackParam *par, const Bool_t isField)
Definition BmnMath.cxx:59
vector< Double_t > W(vector< Double_t >, Double_t)
Definition BmnMath.cxx:878
TVector3 LineFitBy3Hits(const BmnHit *h0, const BmnHit *h1, const BmnHit *h2)
Definition BmnMath.cxx:209
Float_t Dist(Float_t x1, Float_t y1, Float_t x2, Float_t y2)
Definition BmnMath.cxx:432
Float_t NumericalRootFinder(TF1 f, Float_t left, Float_t right)
Definition BmnMath.cxx:96
Double_t GetVzByVectorStraightTracks(vector< BmnTrack > tr, Double_t &dist)
Definition BmnMath.cxx:999
TVector3 Pol2By3Hit(BmnTrack *track, const TClonesArray *arr)
Definition BmnMath.cxx:505
Int_t NDF(const BmnTrack *track)
Definition BmnMath.cxx:47
Float_t ChiSq(const FairTrackParam *par, const BmnHit *hit)
Definition BmnMath.cxx:29