Skip to content

Commit 9301ab2

Browse files
ddobrigkalibuild
andauthored
Example pcm qa at builder (#3920)
* Example pcm qa at builder * Require TPC only * Please consider the following formatting changes (#187) * true TPC only ONLY --------- Co-authored-by: David Dobrigkeit Chinellato <david.dobrigkeit.chinellato.cern.ch> Co-authored-by: ALICE Builder <alibuild@users.noreply.github.com>
1 parent 5248161 commit 9301ab2

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

PWGLF/TableProducer/lambdakzerobuilder.cxx

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,8 @@ struct lambdakzeroBuilder {
153153

154154
ConfigurableAxis axisX{"axisX", {200, 0, 200}, "X_{IU}"};
155155
ConfigurableAxis axisRadius{"axisRadius", {500, 0, 50}, "Radius (cm)"};
156+
ConfigurableAxis axisDeltaDistanceRadii{"axisDeltaDistanceRadii", {500, -50, 50}, "(cm)"};
157+
ConfigurableAxis axisPositionGuess{"axisPositionGuess", {240, 0, 120}, "(cm)"};
156158

157159
int mRunNumber;
158160
float d_bz;
@@ -290,6 +292,16 @@ struct lambdakzeroBuilder {
290292
registry.add("h2dTopoVarPosDCAToPV", "h2dTopoVarPosDCAToPV", kTH2D, {axisPtQA, axisTopoVarDCAToPV});
291293
registry.add("h2dTopoVarNegDCAToPV", "h2dTopoVarNegDCAToPV", kTH2D, {axisPtQA, axisTopoVarDCAToPV});
292294
registry.add("h2dTopoVarDCAV0ToPV", "h2dTopoVarDCAV0ToPV", kTH2D, {axisPtQA, axisTopoVarDCAV0ToPV});
295+
296+
// QA for PCM
297+
registry.add("h2d_pcm_DeltaDistanceRadii_True", "h2d_pcm_DeltaDistanceRadii_True", kTH2D, {axisPtQA, axisDeltaDistanceRadii});
298+
registry.add("h2d_pcm_DeltaDistanceRadii_Bg", "h2d_pcm_DeltaDistanceRadii_Bg", kTH2D, {axisPtQA, axisDeltaDistanceRadii});
299+
registry.add("h2d_pcm_PositionGuess_True", "h2d_pcm_PositionGuess_True", kTH2D, {axisPtQA, axisPositionGuess});
300+
registry.add("h2d_pcm_PositionGuess_Bg", "h2d_pcm_PositionGuess_Bg", kTH2D, {axisPtQA, axisPositionGuess});
301+
registry.add("h2d_pcm_RadiallyOutgoingAtThisRadius1_True", "h2d_pcm_RadiallyOutgoingAtThisRadius1_True", kTH2D, {axisPtQA, axisPositionGuess});
302+
registry.add("h2d_pcm_RadiallyOutgoingAtThisRadius2_True", "h2d_pcm_RadiallyOutgoingAtThisRadius2_True", kTH2D, {axisPtQA, axisPositionGuess});
303+
registry.add("h2d_pcm_RadiallyOutgoingAtThisRadius1_Bg", "h2d_pcm_RadiallyOutgoingAtThisRadius1_Bg", kTH2D, {axisPtQA, axisPositionGuess});
304+
registry.add("h2d_pcm_RadiallyOutgoingAtThisRadius2_Bg", "h2d_pcm_RadiallyOutgoingAtThisRadius2_Bg", kTH2D, {axisPtQA, axisPositionGuess});
293305
}
294306

295307
mRunNumber = 0;
@@ -672,6 +684,45 @@ struct lambdakzeroBuilder {
672684
registry.fill(HIST("h2dTopoVarNegDCAToPV"), lPt, v0candidate.negDCAxy);
673685
registry.fill(HIST("h2dTopoVarDCAV0ToPV"), lPt, dcaV0toPV);
674686

687+
// -------------------------------------------------------------------------------------
688+
// PCM finding tests
689+
//
690+
// a) delta1 = D - R1 - R2
691+
// D: distance between two track helix centers in xy
692+
// R1, R2: track radii
693+
694+
o2::math_utils::CircleXYf_t trcCircle1, trcCircle2;
695+
float sna, csa;
696+
posTrackPar.getCircleParams(d_bz, trcCircle1, sna, csa);
697+
negTrackPar.getCircleParams(d_bz, trcCircle2, sna, csa);
698+
699+
// distance between circle centers (one circle is at origin -> easy)
700+
float centerDistance = std::hypot(trcCircle1.xC - trcCircle2.xC, trcCircle1.yC - trcCircle2.yC);
701+
702+
// b) delta2 = abs(R2/(R1+R2)*rvec1 + R1/(R1+R2)*rvec2)
703+
float r1_r = trcCircle1.rC / (trcCircle1.rC + trcCircle2.rC);
704+
float r2_r = trcCircle2.rC / (trcCircle1.rC + trcCircle2.rC);
705+
float delta2 = std::hypot(r2_r * trcCircle1.xC + r1_r * trcCircle2.xC, r2_r * trcCircle1.yC + r1_r * trcCircle2.yC);
706+
707+
// c) delta3 = sqrt(D^2-R^2); D: distance origin-center, R: radius
708+
float delta3_track1 = TMath::Sqrt(TMath::Power(trcCircle1.xC, 2) + TMath::Power(trcCircle1.yC, 2) - TMath::Power(trcCircle1.rC, 2));
709+
float delta3_track2 = TMath::Sqrt(TMath::Power(trcCircle2.xC, 2) + TMath::Power(trcCircle2.yC, 2) - TMath::Power(trcCircle2.rC, 2));
710+
711+
// let's just use tagged, cause we can
712+
if (!posTrack.hasITS() && !posTrack.hasTRD() && !posTrack.hasTOF() && !negTrack.hasITS() && !negTrack.hasTRD() && !negTrack.hasTOF()) {
713+
if (V0.isTrueGamma()) {
714+
registry.fill(HIST("h2d_pcm_DeltaDistanceRadii_True"), lPt, centerDistance - trcCircle1.rC - trcCircle2.rC);
715+
registry.fill(HIST("h2d_pcm_PositionGuess_True"), lPt, delta2);
716+
registry.fill(HIST("h2d_pcm_RadiallyOutgoingAtThisRadius1_True"), lPt, delta3_track1);
717+
registry.fill(HIST("h2d_pcm_RadiallyOutgoingAtThisRadius2_True"), lPt, delta3_track2);
718+
} else {
719+
registry.fill(HIST("h2d_pcm_DeltaDistanceRadii_Bg"), lPt, centerDistance - trcCircle1.rC - trcCircle2.rC);
720+
registry.fill(HIST("h2d_pcm_PositionGuess_Bg"), lPt, delta2);
721+
registry.fill(HIST("h2d_pcm_RadiallyOutgoingAtThisRadius1_Bg"), lPt, delta3_track1);
722+
registry.fill(HIST("h2d_pcm_RadiallyOutgoingAtThisRadius2_Bg"), lPt, delta3_track2);
723+
}
724+
}
725+
// -------------------------------------------------------------------------------------
675726
} // end QA
676727
return true;
677728
}

0 commit comments

Comments
 (0)