QString &InfoText::TrackInfo(AMSEventR *event, int itrk) { static QString str; str = ""; if (!event) return str; TrTrackR *trk = event->pTrTrack(itrk); if (!trk) return str; int id1 = TrTrackR::kChoutko; int id2 = TrTrackR::kChoutko+TrTrackR::kMultScat; if (!trk->ParExists(id1)) id1 = TrTrackR::kLinear; if (!trk->ParExists(id2)) id2 = id1; if (!trk->ParExists(id1)) return str; int fpat[8]; for (int i = 0; i < 8; i++) fpat[i] = 0; for (int i = 0; i < trk->GetNhits(); i++) { TrRecHitR *hit = trk->GetHit(i); int ily = hit->GetLayer()-1; if (hit->OnlyY()) fpat[ily] = 1; else fpat[ily] = 2; } TString spat; for (int i = 0; i < 8; i++) { if (fpat[i] == 0) spat += "_"; if (fpat[i] == 1) spat += "Y"; if (fpat[i] == 2) spat += "O"; } str += Form("Track[%d]\n", itrk); str += Form(" nHit: %d\n", trk->GetNhits()); str += Form(" nHitXY: %d\n", trk->GetNhitsXY()); str += Form(" Pattern: %d [%s]\n", trk->GetPattern(), spat.Data()); str += "\n"; str += Form(" Rigidity (noMS): %.2f\n", trk->GetRigidity(id1)); str += Form(" Rigidity (Fast): %.2f\n", trk->GetRigidity(id2)); str += Form(" errRinv (Fast): %.2f\n", trk->GetErrRinv (id2)); str += "\n"; str += Form(" Chi2Fast: %.2f\n", trk->GetChisq (id2)); str += Form(" Chi2X/Ndf: %.2f/%d\n", trk->GetChisqX (id2), trk->GetNdofX (id2)); str += Form(" Chi2Y/Ndf: %.2f/%d\n", trk->GetChisqY (id2), trk->GetNdofY (id2)); str += "\n"; str += Form(" P0: (%.2f, %.2f, %.2f)\n", trk->GetP0x(id2), trk->GetP0y(id2), trk->GetP0z(id2)); str += Form(" th/ph: (%.1f, %.1f)\n", trk->GetTheta(id2)*TMath::RadToDeg(), trk->GetPhi (id2)*TMath::RadToDeg()); for (int i = 0; i < trk->GetNhits(); i++) { TrRecHitR *hit = trk->GetHit(i); if (!hit) continue; int lay = hit->GetLayer(); str += Form("\nHit[%d]\n ", i); str += hit->Info(i); str += Form("Residual: %.4f %.4f\n", trk->GetResidualO(lay).x(), trk->GetResidualO(lay).y()); } return str; }
QString &InfoText::EventInfo(AMSEventR *event) { static QString str; str = ""; if (!event) return str; QDateTime qdt; qdt.setTime_t(event->fHeader.Time[0]); int num[8][2]; time_t *tt = (time_t*)event->fHeader.Time; str += Form("Run: %10d\nEvent: %7d\n" "FineTime: %d\nTime: %s\n" "TimeDiff: %d\n\n" "nRawClusters: %3d\nnClusters: %3d\n" "nRecHits: %3d\nnTracks: %3d\n", event->Run(), event->Event(), event->fHeader.Time[1], //ctime(tt), qdt.toLocalTime().toString(Qt::SystemLocaleShortDate) .toAscii().data(), event->pLevel1()->TrigTime[4], event->nTrRawCluster(), event->nTrCluster(), event->nTrRecHit(), event->nTrTrack()); str += "Tracks:\n"; for (int i = 0; i < event->nTrTrack(); i++) { TrTrackR *trk = event->pTrTrack(i); if (!trk) continue; str += Form(" nHit: %d nHitXY: %d", trk->GetNhits(), trk->GetNhitsXY()); str += Form(" Rigidity : %.2f", trk->GetRigidity()); str += Form(" Chi2: %.2f\n", trk->GetChisq()); } for (int i = 0; i < 8; i++) num[i][0] = num[i][1]=0; str += "RawClusters:\n"; for (int i = 0; i < event->nTrRawCluster(); i++){ TrRawClusterR *cc = event->pTrRawCluster(i); if (cc) num[cc->GetLayer()-1][cc->GetSide()]++; } for (int i = 0; i < 8; i++) str += Form("Layer %d: S: %3d K: %3d \n", i+1, num[i][0], num[i][1]); str += "\n"; for (int i = 0; i < 8; i++) num[i][0] = num[i][1]=0; str += "Clusters:\n"; for (int i = 0; i < event->nTrCluster(); i++){ TrClusterR* cc = event->pTrCluster(i); if (cc) num[cc->GetLayer()-1][cc->GetSide()]++; } for (int i = 0; i < 8; i++) str += Form("Layer %d: S: %3d K: %3d \n", i+1, num[i][0],num[i][1]); str += "\n"; for (int i = 0; i < 8; i++) num[i][0] = num[i][1]=0; str += "RecHits:\n"; for (int i = 0; i< event->nTrRecHit(); i++){ TrRecHitR* cc = event->pTrRecHit(i); if (cc) num[cc->GetLayer()-1][0]++; } for (int i = 0; i < 8; i++) str += Form("Layer %d: %3d \n", i+1, num[i][0]); return str; }