1 #ifndef PNDSTTMVDGEMTRACKING_H     2 #define PNDSTTMVDGEMTRACKING_H 1    11 #include "FairGeanePro.h"    30   virtual InitStatus 
Init();
    33   virtual void Exec(Option_t *opt);
    47   void Reset(Int_t nhits, Int_t ntracks);
    72   std::vector<int> 
AssignHits(Int_t itrk, FairTrackParP *gempar, Int_t ipos);
    78   void Kalman(TMatrixT<double> extrap, TMatrixT<double> measurement, TMatrixT<double> H, TMatrixT<double> extrap_cov, TMatrixT<double> measurement_cov, TMatrixT<double> &kalman,
    79               TMatrixT<double> &kalman_cov);
    82   Int_t 
GetClosestOnFirst(FairTrackParP *gempar, Int_t ipos, Double_t &closestdistance);
    87   Bool_t 
Fit(TMatrixT<double> points, Double_t &outxc, Double_t &outyc, Double_t &outradius);
    88   Bool_t 
ZFit(TMatrixT<double> points, Int_t charge, Double_t xc, Double_t yc, Double_t radius, Double_t &fitm, Double_t &fip);
    89   Bool_t 
GetInitialParams(
PndTrack *sttmvd, Double_t &xc, Double_t &yc, Double_t &radius, Double_t &fitm, Double_t &fitp);
    92   Bool_t 
ZFind(Int_t nhits, TMatrixT<double> points, Double_t xc, Double_t yc, Double_t radius);
   111     fStartTrackIDBranchName = trackid;
   116   void SetBranchNames(TString mvdpixel, TString mvdstrip, TString stt, TString gem);
   121   TClonesArray *fGemHitArray;
   123   TClonesArray *fGemPointArray;
   126   TClonesArray *fMvdPixelHitArray;
   128   TClonesArray *fMvdStripHitArray;
   130   TClonesArray *fSttHitArray;
   133   TClonesArray *fMvdPointArray;
   135   TClonesArray *fSttPointArray;
   138   TClonesArray *fMCTrackArray;
   140   TClonesArray *fTrackArray;
   142   TClonesArray *fTrackIDArray;
   144   TClonesArray *fTrackCandArray;
   147   TClonesArray *fCompleteTrackCandArray;
   149   TClonesArray *fCompleteTrackArray;
   152   TClonesArray *fTubeArray;
   162   Int_t countgood, countbad, countdoubt, countreconstructablehit, countprinotassigned, countsecnotassigned, countreconstructablepoint;
   163   Int_t countplane[8], countprop[2][8], countsttmvd, countsttmvdusable, countnohitonplane[8], evt;
   165   std::vector<int> usabletracks;
   168   std::vector<int> fOrdering;
   169   std::vector<int>::iterator fOrderingIterator;
   172   TClonesArray *fSensPositions;
   181   Int_t fPdgCode, fDefaultPdgCode;
   184   std::vector<std::pair<int, int>> trackvector;
   185   std::vector<int> trackindexes;
   186   std::vector<int> notassignedhits;
   187   std::vector<int> notassignedtracks;
   190   std::map<int, bool> towhichplane;
   193   std::map<int, bool> fProTracks;
   200   TMatrixT<float> hitmap;
   205   TMatrixT<float> hitcounter;
   208   TMatrixT<double> distancemap;
   211   Double_t fMaxDistance;
   218   TH2F *h[8], *hnotskewed, *hskewed;
   219   TH1F *hdist[8], *hdist2[8], *hsigma[8], *hsigma2[8], *hchosen[8], *hchosen2[8], *hmcdist[8], *hmcx[8], *hmcy[8];
   225   TString fMvdPixelBranchName, fMvdStripBranchName, fSttBranchName, fGemBranchName;
   226   TString fStartTrackBranchName, fStartTrackCandBranchName, fStartTrackIDBranchName;
   229   std::map<int, int> fCombiMap;
   230   Double_t fCombiDistance;
 Double_t CompareToPreviousPhi(Double_t Fi, Double_t Fi_pre, int charge)
 
void OrderGemHits(Int_t nhits)
 
Int_t GetPosIndex(PndGemHit *hit)
 
void Copy(PndTrackCand *completeCand, PndTrack *completeTrack, PndTrackCand *sttmvdCand, PndTrack *sttmvd)
 
void SetCombinatorialDistance(Double_t combidistance)
 
std::vector< int > GetTracksAssociatedToHit(Int_t ihit)
 
void CheckCombinatorial(Int_t nhits, Int_t ntracks)
 
virtual void SetParContainers()
 
void SetBranchNames(TString mvdpixel, TString mvdstrip, TString stt, TString gem)
 
Bool_t Fit(TMatrixT< double > points, Double_t &outxc, Double_t &outyc, Double_t &outradius)
 
Double_t IsAssignable(FairTrackParP *gempar, PndGemHit *gemhit)
 
void SetPersistency(Bool_t val=kTRUE)
 
Double_t CalculatePhi(TVector2 v, TVector2 p, double alpha, double Phi0, int charge)
 
Int_t CountHitsInTrack(Int_t itrk)
 
Digitization Parameter Class for GEM part. 
 
Bool_t IntersectionFinder(Double_t xc, Double_t yc, Double_t radius, PndSttHit *stthit, TVector3 &xyz, TVector3 &dxyz)
 
Int_t GetChargeCorrectedPdgFromMC(int trackid, int charge)
 
Bool_t ZFit(TMatrixT< double > points, Int_t charge, Double_t xc, Double_t yc, Double_t radius, Double_t &fitm, Double_t &fip)
 
Int_t GetClosestOnFirst(FairTrackParP *gempar, Int_t ipos, Double_t &closestdistance)
 
void EvaluatePerformances(Int_t nhits, Int_t ntracks)
 
void AddRemainingHits(Int_t ntracks)
 
Bool_t PropagateToGemPlane(FairTrackParP *tmppar, FairTrackParP *gempar, Int_t ipos)
 
Int_t GetPdgFromMC(int trackid)
 
virtual void Exec(Option_t *opt)
 
void SetMaxDistance(Double_t maxdistance)
 
Int_t GetHitIndex(Int_t i)
 
Bool_t Prefit(PndTrack *sttmvdTrack, PndTrackCand *sttmvdCand, TVector3 &lastpos, TVector3 &lastmom)
 
void SetPdgFromMC(TString trackid)
 
void Kalman(TMatrixT< double > extrap, TMatrixT< double > measurement, TMatrixT< double > H, TMatrixT< double > extrap_cov, TMatrixT< double > measurement_cov, TMatrixT< double > &kalman, TMatrixT< double > &kalman_cov)
 
void DeleteHitFromTrack(Int_t ihit, Int_t itrk)
 
void ForbidMultiAssignedHits(Int_t nhits, Int_t ntracks)
 
void AddHitToTrack(Int_t ihit, Int_t itrk)
 
Bool_t ZFind(Int_t nhits, TMatrixT< double > points, Double_t xc, Double_t yc, Double_t radius)
 
Bool_t PropagateToGemPlaneAsHelix(PndTrack *sttmvd, FairTrackParP *gempar, Int_t ipos)
 
void SetDefaultPdg(int pdg)
 
void SetTrackBranchNames(TString startingtrack, TString startingtrackcand)
 
virtual InitStatus Init()
 
std::vector< int > GetHitsAssociatedToTrack(Int_t itrk)
 
std::vector< int > AssignHits(Int_t itrk, FairTrackParP *gempar, Int_t ipos)
 
FairTrackParP SetStartParameters(PndTrack *sttmvd, PndTrackCand *sttmvdCand)
 
std::vector< int > GetHitsAssociatedToTrackOnPlane(Int_t itrk, Int_t ipos)
 
Int_t SelectPdgCode(PndTrack *sttmvd)
 
void OnlyOneHitToEachTrack(Int_t nhits, Int_t ntracks)
 
void UpdateMCTrackId(PndTrackCand *completeCand)
 
void SetPersistenc(Bool_t persistence)
 
Bool_t GetInitialParams(PndTrack *sttmvd, Double_t &xc, Double_t &yc, Double_t &radius, Double_t &fitm, Double_t &fitp)
 
void SetTimes(Int_t times)
 
void SetEvaluateFlag(Bool_t flag)
 
void ConsiderCombinatorialEffect(Int_t nhits)
 
Int_t GetTrackIndex(Int_t i)
 
void Reset(Int_t nhits, Int_t ntracks)