50 mFileOut = TFile::Open(
"RecoQChistos.root",
"RECREATE");
51 TString histnames[9] = {
"hT0AcorrPV",
"hT0CcorrPV",
"resolution",
"hT0A",
"hT0C",
"hT0AC"};
52 for (
int ihist = 0; ihist < 6; ihist++) {
53 mHisto[ihist] =
new TH1F(histnames[ihist].Data(), histnames[ihist].Data(), 300, -1000, 1000);
55 mVertexT0 =
new TH1F(
"VertexT0",
"T0 vertex", 100, -30, 30);
56 mPV =
new TH1F(
"PV",
"primary vertex", 100, -30, 30);
57 mVertexComp =
new TH2F(
"hVertexComp",
"FT0 and PV comparion", 100, -30, 30, 100, -30, 30);
67 std::map<uint64_t, o2::dataformats::PrimaryVertex const*> bcsMap;
68 for (
auto&
vertex : primVertices) {
69 auto& timeStamp =
vertex.getTimeStamp();
70 double tsTimeStamp = timeStamp.getTimeStamp() * 1E3;
72 auto [iter, inserted] = bcsMap.try_emplace(globalBC, &
vertex);
74 iter->second =
nullptr;
78 for (
auto& ft0RecPoint : ft0RecPoints) {
79 uint64_t
bc = ft0RecPoint.getInteractionRecord().toLong();
80 auto item = bcsMap.find(
bc);
82 if (std::abs(ft0RecPoint.getCollisionTimeA()) < 2000) {
83 mHisto[3]->Fill(ft0RecPoint.getCollisionTimeA());
85 if (std::abs(ft0RecPoint.getCollisionTimeC()) < 2000) {
86 mHisto[4]->Fill(ft0RecPoint.getCollisionTimeC());
89 if (std::abs(ft0RecPoint.getCollisionTimeC()) < 2000 &&
90 std::abs(ft0RecPoint.getCollisionTimeA()) < 2000) {
91 mHisto[5]->Fill(ft0RecPoint.getCollisionTimeMean());
92 vertexT0 = 0.5 * (ft0RecPoint.getCollisionTimeC() - ft0RecPoint.getCollisionTimeA()) * cSpeed;
93 mVertexT0->Fill(vertexT0);
95 if (item == bcsMap.end() || item->second ==
nullptr) {
96 LOG(
debug) <<
"Error: could not find a corresponding BC ID for a FT0 rec. point; BC = " <<
bc;
99 auto&
vertex = *item->second;
100 auto currentVertex =
vertex.getZ();
101 mPV->Fill(currentVertex);
102 ushort ncont =
vertex.getNContributors();
103 LOG(
debug) <<
"CurrentVertex " << currentVertex <<
" ncont " <<
int(ncont);
107 auto shift = currentVertex / cSpeed;
108 short t0A = ft0RecPoint.getCollisionTimeA() + shift;
109 short t0C = ft0RecPoint.getCollisionTimeC() - shift;
111 LOG(info) <<
" BC t0 " <<
bc <<
" shift " << shift <<
" A " << t0A <<
" C " << t0C <<
" vertex " << vertexT0 <<
" PV " << currentVertex;
112 mHisto[0]->Fill(t0A);
113 mHisto[1]->Fill(t0C);
114 mHisto[2]->Fill((t0C - t0A) / 2);
115 mVertexComp->Fill(vertexT0, currentVertex);