@@ -324,7 +324,7 @@ void GPUQA::clearGarbagageCollector()
324324 std::apply ([](auto &&... args) { ((args.clear ()), ...); }, mGarbageCollector ->v );
325325}
326326
327- GPUQA::GPUQA (GPUChainTracking* chain, const GPUSettingsQA* config) : mTracking(chain), mConfig(config ? *config : GPUQA_GetConfig(chain)), mGarbageCollector(std::make_unique<GPUQAGarbageCollection>())
327+ GPUQA::GPUQA (GPUChainTracking* chain, const GPUSettingsQA* config, const GPUParam* param ) : mTracking(chain), mConfig(config ? *config : GPUQA_GetConfig(chain)), mParam(param ? *param : chain-> GetParam ( )), mGarbageCollector(std::make_unique<GPUQAGarbageCollection>())
328328{
329329 static int initColorsInitialized = initColors ();
330330 (void )initColorsInitialized;
@@ -756,9 +756,9 @@ void GPUQA::RunQA(bool matchOnly, const std::vector<o2::tpc::TrackTPC>* tracksEx
756756 mcLabelBuffer[mNEvents - 1 ].resize (mTracking ->mIOPtrs .nMergedTracks );
757757 }
758758
759- bool mcAvail = mcPresent ();
759+ bool mcAvail = mcPresent () || tracksExtMC ;
760760
761- if (mcAvail && mTracking ->GetParam ().rec .NonConsecutiveIDs ) {
761+ if (mcAvail && !tracksExtMC && mTracking ->GetParam ().rec .NonConsecutiveIDs ) {
762762 GPUError (" QA incompatible to non-consecutive MC labels" );
763763 return ;
764764 }
@@ -1088,8 +1088,8 @@ void GPUQA::RunQA(bool matchOnly, const std::vector<o2::tpc::TrackTPC>* tracksEx
10881088 GPUTPCGMPropagator prop;
10891089 prop.SetMaxSinPhi (.999 );
10901090 prop.SetMaterialTPC ();
1091- prop.SetPolynomialField (&mTracking -> GetParam () .polynomialField );
1092- prop.SetToyMCEventsFlag (mTracking -> GetParam () .par .ToyMCEventsFlag );
1091+ prop.SetPolynomialField (&mParam .polynomialField );
1092+ prop.SetToyMCEventsFlag (mParam .par .ToyMCEventsFlag );
10931093
10941094 for (unsigned int i = 0 ; i < mTrackMCLabels .size (); i++) {
10951095 if (mConfig .writeMCLabels ) {
@@ -1188,11 +1188,11 @@ void GPUQA::RunQA(bool matchOnly, const std::vector<o2::tpc::TrackTPC>* tracksEx
11881188 }
11891189
11901190 auto getdz = [this , ¶m, &mc1, &side]() {
1191- if (!mTracking -> GetParam () .par .continuousMaxTimeBin ) {
1191+ if (!mParam .par .continuousMaxTimeBin ) {
11921192 return param.Z () - mc1.z ;
11931193 }
11941194#ifdef GPUCA_TPC_GEOMETRY_O2
1195- if (!mTracking -> GetParam () .par .earlyTpcTransform ) {
1195+ if (!mParam .par .earlyTpcTransform ) {
11961196 float shift = side == 2 ? 0 : mTracking ->GetTPCTransform ()->convDeltaTimeToDeltaZinTimeFrame (side * GPUChainTracking::NSLICES / 2 , param.GetTZOffset () - mc1.t0 );
11971197 return param.GetZ () + shift - mc1.z ;
11981198 }
@@ -2263,8 +2263,9 @@ int GPUQA::DrawQAHistograms(TObjArray* qcout)
22632263 }
22642264 if (!mConfig .inputHistogramsOnly && mcAvail) {
22652265 TH1D* e = hist;
2266- e->GetEntries ();
2267- e->Fit (" gaus" , " sQ" );
2266+ if (e && e->GetEntries ()) {
2267+ e->Fit (" gaus" , " sQ" );
2268+ }
22682269 }
22692270
22702271 float tmpMax = 0 ;
0 commit comments