1 #ifndef PNDTRKTRACKFINDER_H 2 #define PNDTRKTRACKFINDER_H 32 #include <TStopwatch.h> 34 #define MAXNOFHITS 1000 // CHECK 51 virtual InitStatus
Init();
54 virtual void Exec(Option_t *opt);
59 void Apollonius(
PndTrkCluster *cluster, std::vector<double> &X, std::vector<double> &Y, std::vector<double> &R);
75 void DrawConfHit(
double x,
double y,
double r,
int marker = 2);
125 void DrawZGeometry(
double phimin = 0,
double phimax = 360,
double zmin = -43,
double zmax = 113);
128 Bool_t
MinuitFit2(
PndTrkCluster *cluster,
double xstart,
double ystart,
double rstart,
double &xc,
double &yc,
double &R,
double &
sign);
132 std::map<int, bool>
PrimaryCheck(Int_t detid, std::map<
int, std::vector<int>> &det_to_hitids);
135 Int_t fNofMvdPixHits, fNofMvdStrHits, fNofSttHits, fNofTriplets, fNofHits, fNofSciTHits, fNofGemHits;
138 TClonesArray *fSttPointArray;
140 TClonesArray *fSttHitArray;
143 TClonesArray *fMvdPixelHitArray;
145 TClonesArray *fMvdStripHitArray;
148 TClonesArray *fSciTHitArray;
150 TClonesArray *fGemHitArray;
152 TClonesArray *fTrackArray, *fTrackCandArray, *fTrkTrackArray, *fPrimaryTrackArray;
154 TClonesArray *fTubeArray;
157 char fSttBranch[200], fMvdPixelBranch[200], fMvdStripBranch[200], fSciTBranch[200], fGemBranch[200];
170 Double_t fSttParalDistance, fSttToMvdStripDistance;
172 double fDeltaThetaRad;
175 Bool_t fDisplayOn, fPersistence, fUseMVDPix, fUseMVDStr, fUseSTT, fUseSCIT, fUseGEM, fSecondary, fInitDone;
176 Double_t fMvdPix_RealDistLimit, fMvdStr_RealDistLimit, fStt_RealDistLimit, fMvdPix_ConfDistLimit, fMvdStr_ConfDistLimit, fStt_ConfDistLimit;
177 double fUmin, fUmax, fVmin, fVmax, fRmin, fRmax, fThetamin, fThetamax;
186 std::vector<std::pair<double, double>> fFoundPeaks;
194 TH2F *hxy, *hxz, *hzphi;
PndTrkCluster CleanUpSkewHitList(PndTrkCluster *skewhitlist)
PndTrkClusterList CreateFullClusterization()
virtual void Exec(Option_t *opt)
Int_t RecreateHitArrays(std::map< int, std::vector< int >> &det_to_hitids)
void AnalyticalFit2(PndTrkCluster *cluster, double fitm, double fitp, double &fitm2, double &fip2)
void DrawNeighboringsToHit(PndTrkHit *hit)
Bool_t AnalyticalParabolaFit(PndTrkCluster *cluster, double xc, double yc, double R, double &fita, double &fitb, Double_t &fitc, Double_t &epsilon)
std::map< int, bool > PrimaryCheck(Int_t detid, std::map< int, std::vector< int >> &det_to_hitids)
void DrawConfHit(double x, double y, double r, int marker=2)
Int_t ApplyLegendre(PndTrkCluster *cluster, double &theta_max, double &r_max)
void LightCluster(PndTrkCluster *cluster)
PndTrkHit * FindMvdReferenceHit()
virtual InitStatus Init()
Bool_t MinuitFit(PndTrkCluster *cluster, double mstart, double qstart, double &fitm, double &fitq)
Bool_t MinuitFit2(PndTrkCluster *cluster, double xstart, double ystart, double rstart, double &xc, double &yc, double &R, double &sign)
PndTrkCluster CreateSkewHitList(PndTrkTrack *track)
void FromConformalToRealTrack(double fitm, double fitp, double &x0, double &y0, double &R)
void FillLegendreHisto(PndTrkCluster *cluster)
Int_t CountTracksInCluster(PndTrkCluster *cluster)
void DrawZGeometry(double phimin=0, double phimax=360, double zmin=-43, double zmax=113)
void FromRealToConformalTrack(double x0, double y0, double R, double &fitm, double &fitp)
Int_t CountPossibleTracks()
void Apollonius(PndTrkCluster *cluster, std::vector< double > &X, std::vector< double > &Y, std::vector< double > &R)
void ComputeTraAndRot(PndTrkHit *hit, Double_t &delta, Double_t trasl[2])
void DrawGeometryConf(double x1, double x2, double y1, double y2)
void CircleBy3Points(PndTrkHit *hit1, PndTrkHit *hit2, PndTrkHit *hit3, double &X, double &Y, double &R)
PndTrkHit * FindReferenceHit()
PndTrkHit * FindSttReferenceHit(int isec=-1)
void SearchSecondaryTracks()
void ComputePlaneExtremities(PndTrkCluster *cluster)
void DrawHits(PndTrkHitList *hitlist)
void RePrepareLegendre(PndTrkCluster *cluster)
Int_t ExtractLegendre(Int_t mode, double &theta_max, double &r_max)
Int_t ClusterToConformal(PndTrkCluster *cluster)
PndTrkHit * FindMvdStripReferenceHit()
void IntersectionFinder(PndTrkHit *hit, double xc, double yc, double R)
void FromConformalToRealTrackParabola(double fita, double fitb, double fitc, double &x0, double &y0, double &R, double &epsilon)
PndTrkCluster * CreateClusterAroundTrack(PndTrkTrack *track)
Int_t FillConformalHitList(PndTrkCluster *cluster)
Bool_t AnalyticalFit(PndTrkCluster *cluster, double xc, double yc, double R, double &fitm, double &fitq)
Int_t CountTracksInSkewSector(PndTrkCluster *cluster)
PndTrkTrack * LegendreFit(PndTrkCluster *cluster)
PndTrkHit * FindMvdPixelReferenceHit()