8 #ifndef PNDSTTHITCORRECTOR_H_ 9 #define PNDSTTHITCORRECTOR_H_ 23 : fVerbose(0), fHits(data->GetHits()), fStrawMap(data->GetStrawMap()), fGeometryMap(data->GetGeometryMap()), fMapTubeIdToHit(data->GetMapTubeIdToHit()),
24 fHitNeighbors(data->GetHitNeighborsWithoutSkewed()), fSeparations(data->GetSeparationsWithoutSkewed()), fMinIsochrone(0.1), fIsochroneEquality(0.8),
25 fDeltaDiff(TMath::DegToRad() * 20), fMaxDiffBetweenAngles(TMath::DegToRad() * 15)
30 for (std::map<int, FairHit *>::iterator it = fCorrectedIsochrones.begin(); it != fCorrectedIsochrones.end(); ++it) {
47 std::vector<FairHit *> fHits;
50 std::map<int, int> fMapTubeIdToHit;
51 std::map<int, std::vector<int>> fHitNeighbors;
52 std::map<int, std::vector<int>> fSeparations;
54 std::map<int, std::set<double>> fTangentAngles;
55 std::map<int, FairHit *> fCorrectedIsochrones;
58 double fIsochroneEquality;
60 double fMaxDiffBetweenAngles;
68 int GetMiddleHitNeighbor(
int tubeID);
71 std::pair<int, int> GetStraightNeighbors(
int tubeID);
76 std::set<double> GetBestCombinatedPhi(
const std::vector<std::vector<double>> &angles);
80 void CalcDifferencesBetweenAngles(
const std::vector<std::vector<double>> &angles, std::vector<std::vector<std::vector<double>>> &retDifferences,
81 std::vector<std::vector<double>> &retSmallestDiff, std::vector<std::vector<std::pair<int, int>>> &retPairsOfSmallest);
86 std::vector<std::vector<double>> CalcClassification(
const std::vector<std::vector<double>> &smallestDiff);
88 std::vector<std::vector<double>> CalcClassification(
const std::vector<std::vector<std::vector<double>>> &differences);
91 void CorrectIsochrones();
93 void KeepBestAngle(
int tubeID,
double angle);
95 double GetDiffBetweenAngles(
double angle1,
double angle2);
97 double GetAverageOfAngles(
double angle1,
double angle2);
99 double GetBestFittingAngle(
double angle, std::set<double> anglesToTest);
102 bool AreHitNeihbors(
int tubeID1,
int tubeID2);
105 bool HasUnambiguousAngle(
int tubeID);
virtual ~PndSttHitCorrector()
std::map< int, FairHit * > GetCorrectedHits()
void SetVerbose(Int_t verbose)
void PrintTangentAngles()
PndSttHitCorrector(const PndSttCellTrackFinderData *data)