99// granted to it by virtue of its status as an Intergovernmental Organization
1010// or submit itself to any jurisdiction.
1111
12+ // \brief Analysis task for the (anti-)deuteron absorption cross section using HMPID
13+ // \authors rocco.liotino@cern.ch
14+
1215#include " tableHMPID.h"
1316
1417#include < Framework/AnalysisTask.h>
15- #include < Framework/Configurable.h>
1618#include < Framework/HistogramRegistry.h>
17- #include < Framework/HistogramSpec.h>
18- #include < Framework/InitContext.h>
1919#include < Framework/OutputObjHeader.h>
2020#include < Framework/runDataProcessing.h>
2121
22+ #include < TMath.h>
2223#include < TString.h>
2324
24- #include < cmath>
25- #include < cstdlib>
26-
2725using namespace o2 ;
2826using namespace o2 ::framework;
2927
@@ -44,16 +42,19 @@ struct HmpidDeuteron {
4442
4543 Configurable<float > cutMinMomGlobalTrack{" cutMinMomGlobalTrack" , 1 .5f , " minimum momentum of global track" };
4644
45+ Configurable<float > offsetX{" offsetX" , 0 .696712f , " Residuals offset - X direction" };
46+ Configurable<float > offsetY{" offsetY" , 2 .32849f , " Residuals offset - Y direction" };
47+
4748 // Configurables for plotting
4849 // Momentum
4950 Configurable<int > momNBins{" momNBins" , 490 , " Momentum bins" };
5051 Configurable<float > momMin{" momMin" , 0 .1f , " Momentum min" };
5152 Configurable<float > momMax{" momMax" , 5 .0f , " Momentum max" };
5253
5354 // DeltaR
54- Configurable<int > deltaRNBins{" deltaRNBins" , 300 , " DeltaR bins" };
55+ Configurable<int > deltaRNBins{" deltaRNBins" , 500 , " DeltaR bins" };
5556 Configurable<float > deltaRMin{" deltaRMin" , 0 .0f , " DeltaR min" };
56- Configurable<float > deltaRMax{" deltaRMax" , 30 .0f , " DeltaR max" };
57+ Configurable<float > deltaRMax{" deltaRMax" , 50 .0f , " DeltaR max" };
5758
5859 // nSigma TPC
5960 Configurable<int > nSigmaTPCNBins{" nSigmaTPCNBins" , 20 , " nSigmaTPC bins" };
@@ -123,11 +124,15 @@ struct HmpidDeuteron {
123124 registryDA.add (" De_Pos_momentum" , " De_Pos_momentum" , HistType::kTH2F , {{100 , 0.0 , 5.0 , " #it{p}_{vtx} (GeV/#it{c})" }, {100 , 0.0 , 5.0 , " #it{p}_{hmpid} (GeV/#it{c})" }});
124125
125126 // nsigma plots
126- registryDA.add (" nSigmaTPC_vs_momHMPID_noCut_DePos" , " nSigmaTPC_vs_momHMPID_noCut_DePos" , HistType::kTH2F , {axisMom, axisNsigmaTPC});
127- registryDA.add (" nSigmaTOF_vs_momHMPID_noCut_DePos" , " nSigmaTOF_vs_momHMPID_noCut_DePos" , HistType::kTH2F , {axisMom, axisNsigmaTOF});
128127 registryDA.add (" nSigmaTPC_vs_momHMPID_Cut_DePos" , " nSigmaTPC_vs_momHMPID_Cut_DePos" , HistType::kTH2F , {axisMom, axisNsigmaTPC});
129128 registryDA.add (" nSigmaTOF_vs_momHMPID_Cut_DePos" , " nSigmaTOF_vs_momHMPID_Cut_DePos" , HistType::kTH2F , {axisMom, axisNsigmaTOF});
130129
130+ // check residuals distributions
131+ registryDA.add (" residualsX_Vs_momentum_Neg_8cm" , " residualsX_Vs_momentum_Neg_8cm" , HistType::kTH2F , {axisMom, {400 , -20 .0f , 20 .0f , " x_{mip} - x_{track} (cm)" }});
132+ registryDA.add (" residualsY_Vs_momentum_Neg_8cm" , " residualsY_Vs_momentum_Neg_8cm" , HistType::kTH2F , {axisMom, {400 , -20 .0f , 20 .0f , " y_{mip} - y_{track} (cm)" }});
133+ registryDA.add (" residualsX_Vs_momentum_Pos_8cm" , " residualsX_Vs_momentum_Pos_8cm" , HistType::kTH2F , {axisMom, {400 , -20 .0f , 20 .0f , " x_{mip} - x_{track} (cm)" }});
134+ registryDA.add (" residualsY_Vs_momentum_Pos_8cm" , " residualsY_Vs_momentum_Pos_8cm" , HistType::kTH2F , {axisMom, {400 , -20 .0f , 20 .0f , " y_{mip} - y_{track} (cm)" }});
135+
131136 // Deuteron Neg
132137 registryDA.add (" incomingDe_Neg_8cm" , " incomingDe_Neg_8cm" , HistType::kTH1F , {axisMom});
133138 registryDA.add (" incomingDe_Neg_4cm" , " incomingDe_Neg_4cm" , HistType::kTH1F , {axisMom});
@@ -144,18 +149,16 @@ struct HmpidDeuteron {
144149 registryDA.add (" De_Neg_Q_4cm" , " De_Neg_Q_4cm" , HistType::kTH2F , {axisMom, axisCharge});
145150 registryDA.add (" De_Neg_momentum" , " De_Neg_momentum" , HistType::kTH2F , {{100 , 0.0 , 5.0 , " #it{p}_{vtx} (GeV/#it{c})" }, {100 , 0.0 , 5.0 , " #it{p}_{hmpid} (GeV/#it{c})" }});
146151
147- // first step of the analysis
148- registryDA.add (" residualsX_Vs_momentum" , " residualsX_Vs_momentum" , HistType::kTH2F , {axisMom, {400 , -20 .0f , 20 .0f , " x_{mip} - x_{track} (cm)" }});
149- registryDA.add (" residualsY_Vs_momentum" , " residualsY_Vs_momentum" , HistType::kTH2F , {axisMom, {400 , -20 .0f , 20 .0f , " y_{mip} - y_{track} (cm)" }});
152+ // check residuals distributions
153+ registryDA.add (" residualsX_Vs_momentum_Neg_4cm" , " residualsX_Vs_momentum_Neg_4cm" , HistType::kTH2F , {axisMom, {400 , -20 .0f , 20 .0f , " x_{mip} - x_{track} (cm)" }});
154+ registryDA.add (" residualsY_Vs_momentum_Neg_4cm" , " residualsY_Vs_momentum_Neg_4cm" , HistType::kTH2F , {axisMom, {400 , -20 .0f , 20 .0f , " y_{mip} - y_{track} (cm)" }});
155+ registryDA.add (" residualsX_Vs_momentum_Pos_4cm" , " residualsX_Vs_momentum_Pos_4cm" , HistType::kTH2F , {axisMom, {400 , -20 .0f , 20 .0f , " x_{mip} - x_{track} (cm)" }});
156+ registryDA.add (" residualsY_Vs_momentum_Pos_4cm" , " residualsY_Vs_momentum_Pos_4cm" , HistType::kTH2F , {axisMom, {400 , -20 .0f , 20 .0f , " y_{mip} - y_{track} (cm)" }});
150157
151158 // nsigma plots
152- registryDA.add (" nSigmaTPC_vs_momHMPID_noCut_DeNeg" , " nSigmaTPC_vs_momHMPID_noCut_DeNeg" , HistType::kTH2F , {axisMom, axisNsigmaTPC});
153- registryDA.add (" nSigmaTOF_vs_momHMPID_noCut_DeNeg" , " nSigmaTOF_vs_momHMPID_noCut_DeNeg" , HistType::kTH2F , {axisMom, axisNsigmaTOF});
154159 registryDA.add (" nSigmaTPC_vs_momHMPID_Cut_DeNeg" , " nSigmaTPC_vs_momHMPID_Cut_DeNeg" , HistType::kTH2F , {axisMom, axisNsigmaTPC});
155160 registryDA.add (" nSigmaTOF_vs_momHMPID_Cut_DeNeg" , " nSigmaTOF_vs_momHMPID_Cut_DeNeg" , HistType::kTH2F , {axisMom, axisNsigmaTOF});
156161
157- registryDA.add (" hmpidCkovvsMom" , " hmpidCkovvsMom" , kTH2F , {{500 , 0 , 10 ., " #it{p} (GeV/#it{c})" }, {800 , 0 ., 0.8 , " #theta_{Ch} (rad)" }});
158-
159162 // general plots
160163 registryDA.add (" hEta" , " hEta" , kTH1F , {axisEta});
161164 registryDA.add (" hPhi" , " hPhi" , kTH1F , {axisPhi});
@@ -164,10 +167,6 @@ struct HmpidDeuteron {
164167 registryDA.add (" hMass" , " hMass" , kTH1F , {axisMass});
165168 registryDA.add (" hMass_postDeuteron" , " hMass_postDeuteron" , kTH1F , {axisMass});
166169
167- // quality check for step distributions
168- registryDA.add (" De_Pos_deltaR_precut" , " De_Pos_deltaR_precut" , HistType::kTH1F , {axisDeltaR});
169- registryDA.add (" De_Neg_deltaR_precut" , " De_Neg_deltaR_precut" , HistType::kTH1F , {axisDeltaR});
170-
171170 for (int iCh = 0 ; iCh < nCh; iCh++) {
172171 registryDA.add (Form (" De_Pos_deltaR_%d" , iCh), Form (" De_Pos_deltaR_%d" , iCh), HistType::kTH1F , {axisDeltaR});
173172 registryDA.add (Form (" De_Neg_deltaR_%d" , iCh), Form (" De_Neg_deltaR_%d" , iCh), HistType::kTH1F , {axisDeltaR});
@@ -206,7 +205,7 @@ struct HmpidDeuteron {
206205
207206 const float dx = hmpid.xMip () - hmpid.xTrack ();
208207 const float dy = hmpid.yMip () - hmpid.yTrack ();
209- const float dr = std::hypot (dx, dy);
208+ const float dr = std::hypot (dx - offsetX , dy - offsetY );
210209
211210 const float mass =
212211 std::pow (nmean * momAbs * std::cos (hmpid.chAngle ()), 2 ) -
@@ -258,31 +257,6 @@ struct HmpidDeuteron {
258257 registryDA.fill (HIST (" hPhi_6" ), hmpid.phiTrack ());
259258 }
260259
261- // -------------------------
262- // precut deltaR
263- // -------------------------
264- if (isPos)
265- registryDA.fill (HIST (" De_Pos_deltaR_precut" ), dr);
266- if (isNeg)
267- registryDA.fill (HIST (" De_Neg_deltaR_precut" ), dr);
268-
269- // -------------------------
270- // nsigma pre-cut
271- // -------------------------
272- if (isPos) {
273- registryDA.fill (HIST (" nSigmaTPC_vs_momHMPID_noCut_DePos" ),
274- momAbs, hmpid.tpcNSigmaDe ());
275- registryDA.fill (HIST (" nSigmaTOF_vs_momHMPID_noCut_DePos" ),
276- momAbs, hmpid.tofNSigmaDe ());
277- }
278-
279- if (isNeg) {
280- registryDA.fill (HIST (" nSigmaTPC_vs_momHMPID_noCut_DeNeg" ),
281- momAbs, hmpid.tpcNSigmaDe ());
282- registryDA.fill (HIST (" nSigmaTOF_vs_momHMPID_noCut_DeNeg" ),
283- momAbs, hmpid.tofNSigmaDe ());
284- }
285-
286260 // -------------------------
287261 // deuteron candidate cuts - TPC
288262 // -------------------------
@@ -328,11 +302,6 @@ struct HmpidDeuteron {
328302 // DEUTERON CANDIDATES AFTER ALL CUTS
329303 // -------------------------
330304
331- // -------------------------
332- // Ckov angle vs momentum
333- // -------------------------
334- registryDA.fill (HIST (" hmpidCkovvsMom" ), momHmpid, hmpid.chAngle ());
335-
336305 // -------------------------
337306 // deltaR per chamber (Pos/Neg)
338307 // -------------------------
@@ -391,6 +360,9 @@ struct HmpidDeuteron {
391360 registryDA.fill (HIST (" De_Pos_Q_8cm" ), momAbs, hmpid.chargeMip ());
392361 registryDA.fill (HIST (" De_Pos_deltaR_8cm" ), dr);
393362 registryDA.fill (HIST (" nSigmaTOF_vs_momHMPID_DePos_8cm" ), momAbs, hmpid.tofNSigmaDe ());
363+
364+ registryDA.fill (HIST (" residualsX_Vs_momentum_Pos_8cm" ), momAbs, dx);
365+ registryDA.fill (HIST (" residualsY_Vs_momentum_Pos_8cm" ), momAbs, dy);
394366 }
395367
396368 if (isNeg && chamber == abs8cm) {
@@ -400,8 +372,8 @@ struct HmpidDeuteron {
400372 registryDA.fill (HIST (" De_Neg_deltaR_8cm" ), dr);
401373 registryDA.fill (HIST (" nSigmaTOF_vs_momHMPID_DeNeg_8cm" ), momAbs, hmpid.tofNSigmaDe ());
402374
403- registryDA.fill (HIST (" residualsX_Vs_momentum " ), momAbs, dx);
404- registryDA.fill (HIST (" residualsY_Vs_momentum " ), momAbs, dy);
375+ registryDA.fill (HIST (" residualsX_Vs_momentum_Neg_8cm " ), momAbs, dx);
376+ registryDA.fill (HIST (" residualsY_Vs_momentum_Neg_8cm " ), momAbs, dy);
405377 }
406378
407379 if (isPos && chamber == abs4cm) {
@@ -410,6 +382,9 @@ struct HmpidDeuteron {
410382 registryDA.fill (HIST (" De_Pos_Q_4cm" ), momAbs, hmpid.chargeMip ());
411383 registryDA.fill (HIST (" De_Pos_deltaR_4cm" ), dr);
412384 registryDA.fill (HIST (" nSigmaTOF_vs_momHMPID_DePos_4cm" ), momAbs, hmpid.tofNSigmaDe ());
385+
386+ registryDA.fill (HIST (" residualsX_Vs_momentum_Pos_4cm" ), momAbs, dx);
387+ registryDA.fill (HIST (" residualsY_Vs_momentum_Pos_4cm" ), momAbs, dy);
413388 }
414389
415390 if (isNeg && chamber == abs4cm) {
@@ -418,6 +393,9 @@ struct HmpidDeuteron {
418393 registryDA.fill (HIST (" De_Neg_Q_4cm" ), momAbs, hmpid.chargeMip ());
419394 registryDA.fill (HIST (" De_Neg_deltaR_4cm" ), dr);
420395 registryDA.fill (HIST (" nSigmaTOF_vs_momHMPID_DeNeg_4cm" ), momAbs, hmpid.tofNSigmaDe ());
396+
397+ registryDA.fill (HIST (" residualsX_Vs_momentum_Neg_4cm" ), momAbs, dx);
398+ registryDA.fill (HIST (" residualsY_Vs_momentum_Neg_4cm" ), momAbs, dy);
421399 }
422400 } // end of loop over hmpidTable
423401 } // end of process
0 commit comments