12 GetClusterFitExtrapolatedTOFPixelID(
const Track& track,
13 const RecEvent& recEvent,
14 const det::TOFWall& TOFwall,
18 cerr<<
"\n\nNumber of points on track in the MTPC = "<<track.GetNumberOfClusters(TrackConst::eMTPC)<<endl;
20 const utl::Point& last_point_on_track = track.GetLastPointOnTrack();
21 std::vector<Point> clusters;
26 for (ClusterIndexIterator ClusterIter = track.ClustersEnd(); ClusterIter != track.ClustersBegin(); --ClusterIter)
28 if (clusters.size() > 9)
32 cerr<<
"\nClusterIter = "<<*ClusterIter;
34 if (iPoint == 0) --ClusterIter;
38 cerr<<
"\nFor iPoint = "<<iPoint;
40 const Cluster& cluster = recEvent.Get(*ClusterIter);
41 clusters.push_back(cluster.GetPosition());
45 cerr<<
": "<<cluster.GetPosition().GetX()<<
", "<<cluster.GetPosition().GetY()<<
", "<<cluster.GetPosition().GetZ();
47 if (last_point_on_track == cluster.GetPosition())
48 cerr<<
". Found last point on track, corresponding to iPoint = "<<iPoint;
52 if (debug ==
true) cerr<<
"\n";
80 TGraph * graph_track_XZ =
new TGraph(clusters.size());
81 TGraph * graph_track_YZ =
new TGraph(clusters.size());
82 for(
unsigned int iclust = 0; iclust < clusters.size(); iclust++)
84 graph_track_XZ->SetPoint((
int)iclust, clusters.at(iclust).GetZ(), clusters.at(iclust).GetX());
85 graph_track_YZ->SetPoint((
int)iclust, clusters.at(iclust).GetZ(), clusters.at(iclust).GetY());
87 TF1 * lin_fit_XZ =
new TF1(
"track_XZ",
"[0]*x+[1]", 650, 830);
88 TF1 * lin_fit_YZ =
new TF1(
"track_XZ",
"[0]*x+[1]", 650, 830);
91 graph_track_XZ->Fit(lin_fit_XZ,
"Q");
92 graph_track_YZ->Fit(lin_fit_YZ,
"Q");
102 std::vector<int> vTOFHitIndex;
103 for(
int hitindex = 1; hitindex <= 891; ++hitindex)
105 const det::TOFScintillator& Iscint = TOFwall.GetScintillator(hitindex);
106 double extrapolationPositionZ = Iscint.GetCenterPosition().GetZ() - 2.3/2;
107 double extrapolationPositionX = lin_fit_XZ->Eval(extrapolationPositionZ);
108 double extrapolationPositionY = lin_fit_YZ->Eval(extrapolationPositionZ);
110 if (extrapolationPositionX < Iscint.GetCenterPosition().GetX() - Iscint.GetWidth()/2.)
continue;
111 if (extrapolationPositionX > Iscint.GetCenterPosition().GetX() + Iscint.GetWidth()/2.)
continue;
112 if (extrapolationPositionY < Iscint.GetCenterPosition().GetY() - 3.4/2)
continue;
113 if (extrapolationPositionY > Iscint.GetCenterPosition().GetY() + 3.4/2)
continue;
115 vTOFHitIndex.push_back(hitindex);
119 delete graph_track_XZ;
120 delete graph_track_YZ;