diff --git a/analysis/detectors/mvd/qa/CbmMvdQa.cxx b/analysis/detectors/mvd/qa/CbmMvdQa.cxx index 411296cf9277e940d4ad164a32db2b2c23ae84cf..29af627019f7fb80a65cb46a91d7fdbb1ba42f08 100644 --- a/analysis/detectors/mvd/qa/CbmMvdQa.cxx +++ b/analysis/detectors/mvd/qa/CbmMvdQa.cxx @@ -119,13 +119,29 @@ InitStatus CbmMvdQa::Init() fBadTracks = new TClonesArray("CbmStsTrack", 5000); ioman->Register("BadTracks", "sts", fBadTracks, IsOutputBranchPersistent("BadTracks")); - fStsTrackMatches = (TClonesArray*) ioman->GetObject("StsTrackMatch"); - fStsTrackArray = (TClonesArray*) ioman->GetObject("StsTrack"); - fGlobalTrackArray = (TClonesArray*) ioman->GetObject("GlobalTrack"); + if (useTrackQa) { + fStsTrackMatches = (TClonesArray*) ioman->GetObject("StsTrackMatch"); + fStsTrackArray = (TClonesArray*) ioman->GetObject("StsTrack"); + fGlobalTrackArray = (TClonesArray*) ioman->GetObject("GlobalTrack"); - if (!fStsTrackArray) { Fatal("CbmMvdQa: StsTrackArray not found (!)", " That's bad. "); } + if (!fStsTrackArray) { + Fatal("CbmMvdQa: StsTrackArray not found (!)", " That's bad. "); + } + + // fPrimVtx = (CbmVertex*) ioman->GetObject("PrimaryVertex"); + // Get pointer to PrimaryVertex object from IOManager if it exists + // The old name for the object is "PrimaryVertex" the new one + // "PrimaryVertex." Check first for the new name + fPrimVtx = dynamic_cast<CbmVertex*>(ioman->GetObject("PrimaryVertex.")); + if (nullptr == fPrimVtx) { + fPrimVtx = dynamic_cast<CbmVertex*>(ioman->GetObject("PrimaryVertex")); + } + if (nullptr == fPrimVtx) { + // LOG(fatal) << "No primary vertex"; + } + } - fMcPoints = (TClonesArray*) ioman->GetObject("MvdPileUpMC"); // PileUp Mc points + fMcPoints = (TClonesArray*) ioman->GetObject("MvdPoint"); // PileUp Mc points fMvdDigis = (TClonesArray*) ioman->GetObject("MvdDigi"); fMvdCluster = (TClonesArray*) ioman->GetObject("MvdCluster"); fMvdHits = (TClonesArray*) ioman->GetObject("MvdHit"); @@ -135,16 +151,6 @@ InitStatus CbmMvdQa::Init() if (fMvdHits->GetEntriesFast() != fMvdHitMatchArray->GetEntriesFast()) LOG(error) << "MvdHit and MvdHitMatch Arrays do not have the same size"; - // fPrimVtx = (CbmVertex*) ioman->GetObject("PrimaryVertex"); - // Get pointer to PrimaryVertex object from IOManager if it exists - // The old name for the object is "PrimaryVertex" the new one - // "PrimaryVertex." Check first for the new name - fPrimVtx = dynamic_cast<CbmVertex*>(ioman->GetObject("PrimaryVertex.")); - if (nullptr == fPrimVtx) { fPrimVtx = dynamic_cast<CbmVertex*>(ioman->GetObject("PrimaryVertex")); } - if (nullptr == fPrimVtx) { - // LOG(fatal) << "No primary vertex"; - } - fListMCTracks = (TClonesArray*) ioman->GetObject("MCTrack"); if (!fMcPoints) { @@ -549,7 +555,9 @@ void CbmMvdQa::ExecMCQa() for (Int_t i = 0; i < nrMcPoints; ++i) { CbmMvdPoint* curMc = (CbmMvdPoint*) fMcPoints->At(i); - if (curMc->GetZ() < fFirstMvdPos + 1) { fMC2F[0]->Fill(curMc->GetX(), curMc->GetY()); } + if (curMc->GetZ() < fFirstMvdPos + 1) { + fMC2F[0]->Fill(curMc->GetX(), curMc->GetY()); + } } } // ------------------------------------------------------------------------- @@ -578,7 +586,8 @@ void CbmMvdQa::ExecDigiQa() Double_t lab[3] = {0., 0., 0.}; if (curSens->GetDetectorID() == curDigi->GetDetectorId()) { curSens->PixelToTop(curDigi->GetPixelX(), curDigi->GetPixelY(), lab); - if (curSens->GetZ() < 6) fDigi2F[1]->Fill(lab[0], lab[1]); + if (curSens->GetZ() < 6) + fDigi2F[1]->Fill(lab[0], lab[1]); else if (curSens->GetZ() < 11) fDigi2F[2]->Fill(lab[0], lab[1]); else if (curSens->GetZ() < 16) @@ -586,7 +595,9 @@ void CbmMvdQa::ExecDigiQa() else fDigi2F[4]->Fill(lab[0], lab[1]); - if (lab[0] > -2 && lab[0] <= -0.5 && lab[1] >= -1.5 && lab[1] <= 1.5) { fDigi2F[0]->Fill(lab[0], lab[1]); } + if (lab[0] > -2 && lab[0] <= -0.5 && lab[1] >= -1.5 && lab[1] <= 1.5) { + fDigi2F[0]->Fill(lab[0], lab[1]); + } } } } @@ -667,7 +678,8 @@ void CbmMvdQa::ExecTrackQa() stsTrack = (CbmStsTrack*) fStsTrackArray->At(glTrack->GetStsTrackIndex()); trackMatch = (CbmTrackMatchNew*) fStsTrackMatches->At(glTrack->GetStsTrackIndex()); mcMatchId = trackMatch->GetMatchedLink().GetIndex(); - if (mcMatchId > -1) mcTrack = (CbmMCTrack*) fListMCTracks->At(mcMatchId); + if (mcMatchId > -1) + mcTrack = (CbmMCTrack*) fListMCTracks->At(mcMatchId); else continue; @@ -690,7 +702,8 @@ void CbmMvdQa::ExecTrackQa() if (hasHitFirst) { if (mcP < 1.5) { fnrTrackslowP++; - if (mcP >= 1) fhigh++; + if (mcP >= 1) + fhigh++; else if (mcP >= 0.5) fmid++; else @@ -749,22 +762,27 @@ void CbmMvdQa::ExecTrackQa() if (glQP >= 0) { fTracks1F[22]->Fill(glX); - if (mcP >= 1) fTracks1F[26]->Fill(glX); + if (mcP >= 1) + fTracks1F[26]->Fill(glX); else fTracks1F[27]->Fill(glX); } if (glQP < 0) { fTracks1F[23]->Fill(glX); - if (mcP >= 1) fTracks1F[28]->Fill(glX); + if (mcP >= 1) + fTracks1F[28]->Fill(glX); else fTracks1F[29]->Fill(glX); } - if (ChiSqOverNDF > 1) fTracks1F[24]->Fill(glX); + if (ChiSqOverNDF > 1) + fTracks1F[24]->Fill(glX); else fTracks1F[25]->Fill(glX); } - if (ChiSqOverNDF > 1) { fTracks1F[20]->Fill(sqrt((glX * glX) + (glY * glY))); } + if (ChiSqOverNDF > 1) { + fTracks1F[20]->Fill(sqrt((glX * glX) + (glY * glY))); + } else { fTracks1F[21]->Fill(sqrt((glX * glX) + (glY * glY))); } @@ -779,7 +797,8 @@ void CbmMvdQa::ExecTrackQa() if (trueOverAll == 1.) fTracks2F[4]->Fill(mcP, mcP - glP); } - if (hasHitFirst) fTracks2F[5]->Fill(mcP, mcP - glP); + if (hasHitFirst) + fTracks2F[5]->Fill(mcP, mcP - glP); else fTracks2F[6]->Fill(mcP, mcP - glP); @@ -788,7 +807,8 @@ void CbmMvdQa::ExecTrackQa() if (ChiSqOverNDF <= 1) fTracks2F[8]->Fill(hitFirst[0], hitFirst[1]); if (mcP < 1.5) { fTracks2F[9]->Fill(0.1, 0.1); - if (mcP >= 1) fTracks2F[11]->Fill(1.25, 0.1); + if (mcP >= 1) + fTracks2F[11]->Fill(1.25, 0.1); else if (mcP >= 0.5) fTracks2F[11]->Fill(0.75, 0.1); else @@ -801,7 +821,8 @@ void CbmMvdQa::ExecTrackQa() if (hasHitFirstTrue) { if (mcP < 1.5) { fTracks2F[9]->Fill(0.1, 0.70); - if (mcP >= 1) fTracks2F[11]->Fill(1.25, 0.7); + if (mcP >= 1) + fTracks2F[11]->Fill(1.25, 0.7); else if (mcP >= 0.5) fTracks2F[11]->Fill(0.75, 0.7); else @@ -847,7 +868,9 @@ Bool_t CbmMvdQa::HasHitFirstTrue(Int_t MCtrackID, CbmStsTrack* stsTrack) const CbmMvdPoint* point = nullptr; for (Int_t iHit = 0; iHit < nrOfMvdHits; iHit++) { CbmMatch* mvdMatch = (CbmMatch*) fMvdHitMatchArray->At(stsTrack->GetMvdHitIndex(iHit)); - if (mvdMatch) { nrOfLinks = mvdMatch->GetNofLinks(); } + if (mvdMatch) { + nrOfLinks = mvdMatch->GetNofLinks(); + } else { continue; // any kind of error in the matching } @@ -859,7 +882,9 @@ Bool_t CbmMvdQa::HasHitFirstTrue(Int_t MCtrackID, CbmStsTrack* stsTrack) } else mcTrackId = point->GetTrackID(); - if (mcTrackId == MCtrackID && point->GetZOut() < fFirstMvdPos + 1) { return kTRUE; } + if (mcTrackId == MCtrackID && point->GetZOut() < fFirstMvdPos + 1) { + return kTRUE; + } } } @@ -875,7 +900,9 @@ void CbmMvdQa::GetFirstMCPos(CbmStsTrack* stsTrack, Float_t* pos) const CbmMvdPoint* point = nullptr; for (Int_t iHit = 0; iHit < nrOfMvdHits; iHit++) { CbmMatch* mvdMatch = (CbmMatch*) fMvdHitMatchArray->At(stsTrack->GetMvdHitIndex(iHit)); - if (mvdMatch) { nrOfLinks = mvdMatch->GetNofLinks(); } + if (mvdMatch) { + nrOfLinks = mvdMatch->GetNofLinks(); + } else { continue; // any kind of error in the matching } @@ -926,7 +953,9 @@ void CbmMvdQa::SetMatches(Int_t MCtrackID, CbmStsTrack* stsTrack) } else mcTrackId = point->GetTrackID(); - if (mcTrackId == MCtrackID) { hasTrack = kTRUE; } + if (mcTrackId == MCtrackID) { + hasTrack = kTRUE; + } } if (!hasTrack) falseCounter++; } @@ -941,14 +970,15 @@ void CbmMvdQa::SetMatches(Int_t MCtrackID, CbmStsTrack* stsTrack) //----------------------------------------------------------------------------------------- void CbmMvdQa::Finish() { - foutFile->cd(); + + // foutFile->cd(); if (useMcQa) FinishMCQa(); if (useDigiQa) FinishDigiQa(); if (useHitQa) FinishHitQa(); if (useTrackQa) FinishTrackQa(); - foutFile->Write(); + // foutFile->Write(); } //----------------------------------------------------------------------------------------- diff --git a/macro/mvd/qa/CMakeLists.txt b/macro/mvd/qa/CMakeLists.txt index cbecc2c9dfbbd6a860e6fa0507f13d2613c82aee..96f0d9dc5f50cc87fe53f92fa4fbe2f6e993fea1 100644 --- a/macro/mvd/qa/CMakeLists.txt +++ b/macro/mvd/qa/CMakeLists.txt @@ -56,13 +56,13 @@ SET_TESTS_PROPERTIES(mvd_qa3_digitize_event PROPERTIES FIXTURES_SETUP fixture_mvd_qa4_reco_event ) -#GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/mvd/qa/mvd_qa4_reco_event.C) -#add_test(mvd_qa4_reco_event ${CBMROOT_BINARY_DIR}/macro/mvd/qa/mvd_qa4_reco_event.sh) -#SET_TESTS_PROPERTIES(mvd_qa4_reco_event PROPERTIES -# TIMEOUT "300" -# PASS_REGULAR_EXPRESSION "Test Passed;All ok" -# FIXTURES_REQUIRED fixture_mvd_qa4_reco_event -#) +GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/mvd/qa/mvd_qa4_reco_event.C) +add_test(mvd_qa4_reco_event ${CBMROOT_BINARY_DIR}/macro/mvd/qa/mvd_qa4_reco_event.sh) +SET_TESTS_PROPERTIES(mvd_qa4_reco_event PROPERTIES + TIMEOUT "300" + PASS_REGULAR_EXPRESSION "Test Passed;All ok" + FIXTURES_REQUIRED fixture_mvd_qa4_reco_event +) Install(FILES mvd_qa1_transUrqmd.C mvd_qa2_transDelta.C mvd_qa3_digitize.C mvd_qa4_reco.C DESTINATION share/cbmroot/macro/mvd diff --git a/macro/mvd/qa/mvd_qa4_reco_event.C b/macro/mvd/qa/mvd_qa4_reco_event.C index a19f599813c77673d5cd70e58a1276f92ad359d1..9e4ad9c2e99125a8fc0d3e8a9c34fd58bcaaf9d6 100644 --- a/macro/mvd/qa/mvd_qa4_reco_event.C +++ b/macro/mvd/qa/mvd_qa4_reco_event.C @@ -99,14 +99,12 @@ void mvd_qa4_reco_event(const char* setup = "sis100_electron") mvd_hit->SetMode(ECbmRecoMode::EventByEvent); fRun->AddTask(mvd_hit); -/* CbmMatchRecoToMC* match = new CbmMatchRecoToMC(); fRun->AddTask(match); CbmMvdQa* qaTask = new CbmMvdQa("CbmMvdQa"); qaTask->SetUseHitQa(); fRun->AddTask(qaTask); -*/ //---------------------------------------------------------------------------- // ----- Parameter database ----------------------------------------------- FairRuntimeDb* rtdb = fRun->GetRuntimeDb();