Skip to content

Commit 22940fd

Browse files
committed
add self corr
1 parent d06d545 commit 22940fd

1 file changed

Lines changed: 72 additions & 74 deletions

File tree

PWGCF/Flow/Tasks/pidcme.cxx

Lines changed: 72 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#include <TVector2.h>
2121

2222
// o2Physics includes.
23-
#include "Framework/ASoA.h"
23+
#include "Framework/ASoA.h"
2424
#include "Framework/AnalysisDataModel.h"
2525
#include "Framework/AnalysisTask.h"
2626
#include "Framework/ASoAHelpers.h"
@@ -55,7 +55,8 @@ DECLARE_SOA_TABLE(Flags, "AOD", "Flags", CMETrackPIDcolums::NPIDFlag);
5555
} // namespace o2::aod
5656

5757
using TracksPID = soa::Join<aod::Tracks, aod::TracksExtra, aod::TrackSelection, aod::TrackSelectionExtension, aod::pidTPCFullPi, aod::pidTOFFullPi, aod::pidTPCFullKa, aod::pidTOFFullKa, aod::pidTPCFullPr, aod::pidTOFFullPr>;
58-
struct FillPIDcolums {
58+
struct FillPIDcolums
59+
{
5960
Configurable<float> cfgnSigmaCutTPCPi{"cfgnSigmaCutTPCPi", 3.0, "Value of the TPC Nsigma cut for pions"};
6061
Configurable<float> cfgnSigmaCutTPCKa{"cfgnSigmaCutTPCKa", 3.0, "Value of the TPC Nsigma cut for kaons"};
6162
Configurable<float> cfgnSigmaCutTPCPr{"cfgnSigmaCutTPCPr", 3.0, "Value of the TPC Nsigma cut for protons"};
@@ -79,7 +80,7 @@ struct FillPIDcolums {
7980
template <typename TrackType>
8081
bool SelTrack_PID(const TrackType track)
8182
{
82-
if (!(track.pt() > cfgMinPtPID))
83+
if (!(track.pt() > cfgMinPtPID) )
8384
return false;
8485
if (!(std::abs(track.eta()) < cfgMaxEtaPID))
8586
return false;
@@ -185,13 +186,13 @@ struct FillPIDcolums {
185186
}
186187

187188
HistogramRegistry histosQA{"histosQAPID", {}, OutputObjHandlingPolicy::AnalysisObject};
188-
189+
189190
void init(InitContext const&)
190191
{
191192
AxisSpec axisRigidity{cfgrigidityBins, "#it{p}^{TPC}/#it{z}"};
192193
AxisSpec axisdEdx{cfgdedxBins, "d#it{E}/d#it{x}"};
193194
AxisSpec axisnSigma{cfgnSigmaBins, "n_{#sigma}TPC"};
194-
AxisSpec axisPtPID{cfgaxisptPID, "#it{p}_{T}"};
195+
AxisSpec axisPtPID{cfgaxisptPID,"#it{p}_{T}"};
195196

196197
histosQA.add(Form("QA/PID/histdEdxTPC_All"), "", {HistType::kTH2F, {axisRigidity, axisdEdx}});
197198
histosQA.add(Form("QA/PID/histdEdxTPC_Pi"), "", {HistType::kTH2F, {axisRigidity, axisdEdx}});
@@ -208,47 +209,48 @@ struct FillPIDcolums {
208209
void process(TracksPID const& tracks)
209210
{
210211
int8_t PID_flag;
211-
for (auto& track : tracks) {
212-
if (!SelTrack_PID(track)) {
212+
for(auto &track : tracks){
213+
if(!SelTrack_PID(track)) {
213214
PID_flag = -1;
214215
} else {
215-
histosQA.fill(HIST("QA/PID/histdEdxTPC_All"), track.sign() * track.tpcInnerParam(), track.tpcSignal());
216+
histosQA.fill(HIST("QA/PID/histdEdxTPC_All"), track.sign()*track.tpcInnerParam(), track.tpcSignal());
216217
float nsigma_array[3] = {track.tpcNSigmaPi(), track.tpcNSigmaKa(), track.tpcNSigmaPr()};
217218
PID_flag = 0;
218219
for (int8_t i = 0; i < 3; i++) {
219-
if (selectionPID(track, i))
220-
PID_flag = PID_flag * 10 + i + 1;
221-
if (PID_flag > 10) { // If a track is identified as two different tracks.
220+
if(selectionPID(track,i))
221+
PID_flag = PID_flag*10 + i + 1;
222+
if(PID_flag > 10){ // If a track is identified as two different tracks.
222223
if (fabs(nsigma_array[(PID_flag / 10) - 1]) < fabs(nsigma_array[(PID_flag % 10) - 1])) // The track is identified as the particle whose |nsigma| is the least.
223224
PID_flag /= 10;
224225
else
225226
PID_flag %= 10;
226227
}
227228
}
228229

229-
switch (PID_flag) {
230-
case 1:
231-
histosQA.fill(HIST("QA/PID/histdEdxTPC_Pi"), track.sign() * track.tpcInnerParam(), track.tpcSignal());
232-
histosQA.fill(HIST("QA/PID/histnSigma_Pi"), track.tpcNSigmaPi());
233-
histosQA.fill(HIST("QA/PID/histnSigma_Pt_Pi"), track.pt(), track.tpcNSigmaPi());
234-
break;
235-
case 2:
236-
histosQA.fill(HIST("QA/PID/histdEdxTPC_Ka"), track.sign() * track.tpcInnerParam(), track.tpcSignal());
237-
histosQA.fill(HIST("QA/PID/histnSigma_Ka"), track.tpcNSigmaKa());
238-
histosQA.fill(HIST("QA/PID/histnSigma_Pt_Ka"), track.pt(), track.tpcNSigmaKa());
239-
break;
240-
case 3:
241-
histosQA.fill(HIST("QA/PID/histdEdxTPC_Pr"), track.sign() * track.tpcInnerParam(), track.tpcSignal());
242-
histosQA.fill(HIST("QA/PID/histnSigma_Pr"), track.tpcNSigmaPr());
243-
histosQA.fill(HIST("QA/PID/histnSigma_Pt_Pr"), track.pt(), track.tpcNSigmaPr());
244-
break;
230+
switch(PID_flag){
231+
case 1:
232+
histosQA.fill(HIST("QA/PID/histdEdxTPC_Pi"), track.sign()*track.tpcInnerParam(), track.tpcSignal());
233+
histosQA.fill(HIST("QA/PID/histnSigma_Pi"), track.tpcNSigmaPi());
234+
histosQA.fill(HIST("QA/PID/histnSigma_Pt_Pi"), track.pt(), track.tpcNSigmaPi());
235+
break;
236+
case 2:
237+
histosQA.fill(HIST("QA/PID/histdEdxTPC_Ka"), track.sign()*track.tpcInnerParam(), track.tpcSignal());
238+
histosQA.fill(HIST("QA/PID/histnSigma_Ka"), track.tpcNSigmaKa());
239+
histosQA.fill(HIST("QA/PID/histnSigma_Pt_Ka"), track.pt(), track.tpcNSigmaKa());
240+
break;
241+
case 3:
242+
histosQA.fill(HIST("QA/PID/histdEdxTPC_Pr"), track.sign()*track.tpcInnerParam(), track.tpcSignal());
243+
histosQA.fill(HIST("QA/PID/histnSigma_Pr"), track.tpcNSigmaPr());
244+
histosQA.fill(HIST("QA/PID/histnSigma_Pt_Pr"), track.pt(), track.tpcNSigmaPr());
245+
break;
245246
}
246247
}
247248
PIDCMEtable(PID_flag);
248249
}
249250
}
250251
};
251252

253+
252254
struct pidcme {
253255
HistogramRegistry histosQA{"histosmain", {}, OutputObjHandlingPolicy::AnalysisObject};
254256

@@ -275,6 +277,7 @@ struct pidcme {
275277
ConfigurableAxis cfgaxissumpt{"cfgaxissumpt", {7, 1, 8}, "Binning for #gamma and #delta pt(particle1 + particle2)"};
276278
ConfigurableAxis cfgaxisdeltaeta{"cfgaxisdeltaeta", {5, 0, 1}, "Binning for #gamma and #delta |#eta(particle1 - particle2)|"};
277279

280+
278281
Configurable<bool> OpenCME = {"cfgkOpeanCME", true, "open PID CME"};
279282

280283
EventPlaneHelper helperEP;
@@ -309,7 +312,7 @@ struct pidcme {
309312
return 0;
310313
}
311314
}
312-
315+
313316
Filter col = aod::evsel::sel8 == true;
314317
Filter collisionFilter = (nabs(aod::collision::posZ) < 10.f);
315318
Filter ptfilter = aod::track::pt > cfgMinPt;
@@ -496,50 +499,46 @@ struct pidcme {
496499
}
497500
int DetInd = DetId * 4 + cfgnTotalSystem * 4 * (nmode - 2);
498501
float Psi_n = helperEP.GetEventPlane(collision.qvecRe()[DetInd + 3], collision.qvecIm()[DetInd + 3], nmode);
499-
for (auto& trk : track1) {
500-
if (!SelTrack(trk))
502+
for (auto& trk : track1){
503+
if (!SelTrack(trk))
501504
continue;
502505
if (nmode == 2) {
503-
if (trk.sign() > 0) {
506+
if(trk.sign() > 0){
504507
histosQA.fill(HIST("V2/PID/histCosDetV2_Pi"), collision.centFT0C(), trk.pt(),
505-
std::cos(static_cast<float>(nmode) * (trk.phi() - Psi_n)));
506-
} else if (trk.sign() < 0) {
508+
std::cos(static_cast<float>(nmode) * (trk.phi() - Psi_n)));
509+
} else if(trk.sign() < 0){
507510
histosQA.fill(HIST("V2/PID/histCosDetV2_Pi_Neg"), collision.centFT0C(), trk.pt(),
508-
std::cos(static_cast<float>(nmode) * (trk.phi() - Psi_n)));
511+
std::cos(static_cast<float>(nmode) * (trk.phi() - Psi_n)));
509512
}
510513
}
511514
}
512-
for (auto& trk : track2) {
513-
if (!SelTrack(trk))
515+
for (auto& trk : track2){
516+
if (!SelTrack(trk))
514517
continue;
515518
if (nmode == 2) {
516-
if (trk.sign() > 0) {
519+
if(trk.sign() > 0){
517520
histosQA.fill(HIST("V2/PID/histCosDetV2_Ka"), collision.centFT0C(), trk.pt(),
518-
std::cos(static_cast<float>(nmode) * (trk.phi() - Psi_n)));
519-
} else if (trk.sign() < 0) {
521+
std::cos(static_cast<float>(nmode) * (trk.phi() - Psi_n)));
522+
} else if(trk.sign() < 0){
520523
histosQA.fill(HIST("V2/PID/histCosDetV2_Ka_Neg"), collision.centFT0C(), trk.pt(),
521-
std::cos(static_cast<float>(nmode) * (trk.phi() - Psi_n)));
524+
std::cos(static_cast<float>(nmode) * (trk.phi() - Psi_n)));
522525
}
523526
}
524527
}
525-
for (auto& trk : track3) {
526-
if (!SelTrack(trk))
528+
for (auto& trk : track3){
529+
if (!SelTrack(trk))
527530
continue;
528531
if (nmode == 2) {
529-
if (trk.sign() > 0) {
532+
if(trk.sign() > 0){
530533
histosQA.fill(HIST("V2/PID/histCosDetV2_Pr"), collision.centFT0C(), trk.pt(),
531-
std::cos(static_cast<float>(nmode) * (trk.phi() - Psi_n)));
532-
} else if (trk.sign() < 0) {
534+
std::cos(static_cast<float>(nmode) * (trk.phi() - Psi_n)));
535+
} else if(trk.sign() < 0){
533536
histosQA.fill(HIST("V2/PID/histCosDetV2_Pr_Neg"), collision.centFT0C(), trk.pt(),
534-
std::cos(static_cast<float>(nmode) * (trk.phi() - Psi_n)));
537+
std::cos(static_cast<float>(nmode) * (trk.phi() - Psi_n)));
535538
}
536539
}
537540
}
538541
if (OpenCME) {
539-
<<<<<<< HEAD
540-
for (auto& trk1 : track1) {
541-
for (auto& trk2 : track2) {
542-
=======
543542
for(auto& trk1 : track1) {
544543
for(auto& trk2 : track1) {
545544
if (trk1.globalIndex() == trk2.globalIndex())
@@ -611,70 +610,69 @@ struct pidcme {
611610
}
612611
for(auto& trk1 : track1) {
613612
for(auto& trk2 : track2) {
614-
>>>>>>> 3b9f73a9e (add pid self corr)
615613
if (trk1.globalIndex() == trk2.globalIndex())
616614
continue;
617615
if (nmode == 2) {
618-
if (trk1.sign() == trk2.sign()) {
616+
if(trk1.sign() == trk2.sign()){
619617
histosQA.fill(HIST("PIDCME/histgamama_PiKa_ss"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast<float>(nmode) * Psi_n)));
620618
histosQA.fill(HIST("PIDCME/histdelta_PiKa_ss"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi())));
621619
histosQA.fill(HIST("PIDCME/Differential/histgamama_PiKa_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()),
622-
std::cos((trk1.phi() + trk2.phi() - static_cast<float>(nmode) * Psi_n)));
620+
std::cos((trk1.phi() + trk2.phi() - static_cast<float>(nmode) * Psi_n)));
623621
histosQA.fill(HIST("PIDCME/Differential/histdelta_PiKa_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()),
624-
std::cos((trk1.phi() - trk2.phi())));
622+
std::cos((trk1.phi() - trk2.phi())));
625623
} else {
626624
histosQA.fill(HIST("PIDCME/histgamama_PiKa_os"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast<float>(nmode) * Psi_n)));
627625
histosQA.fill(HIST("PIDCME/histdelta_PiKa_os"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi())));
628626
histosQA.fill(HIST("PIDCME/Differential/histgamama_PiKa_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()),
629-
std::cos((trk1.phi() + trk2.phi() - static_cast<float>(nmode) * Psi_n)));
627+
std::cos((trk1.phi() + trk2.phi() - static_cast<float>(nmode) * Psi_n)));
630628
histosQA.fill(HIST("PIDCME/Differential/histdelta_PiKa_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()),
631-
std::cos((trk1.phi() - trk2.phi())));
629+
std::cos((trk1.phi() - trk2.phi())));
632630
}
633631
}
634632
}
635633
}
636-
for (auto& trk1 : track1) {
637-
for (auto& trk3 : track3) {
634+
for(auto& trk1 : track1) {
635+
for(auto& trk3 : track3) {
638636
if (trk1.globalIndex() == trk3.globalIndex())
639637
continue;
640638
if (nmode == 2) {
641-
if (trk1.sign() == trk3.sign()) {
639+
if(trk1.sign() == trk3.sign()){
642640
histosQA.fill(HIST("PIDCME/histgamama_PiPr_ss"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast<float>(nmode) * Psi_n)));
643641
histosQA.fill(HIST("PIDCME/histdelta_PiPr_ss"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi())));
644642
histosQA.fill(HIST("PIDCME/Differential/histgamama_PiPr_ss_Dif"), collision.centFT0C(), trk1.pt() + trk3.pt(), std::abs(trk1.eta() - trk3.eta()),
645-
std::cos((trk1.phi() + trk3.phi() - static_cast<float>(nmode) * Psi_n)));
643+
std::cos((trk1.phi() + trk3.phi() - static_cast<float>(nmode) * Psi_n)));
646644
histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPr_ss_Dif"), collision.centFT0C(), trk1.pt() + trk3.pt(), std::abs(trk1.eta() - trk3.eta()),
647-
std::cos((trk1.phi() - trk3.phi())));
645+
std::cos((trk1.phi() - trk3.phi())));
648646
} else {
649647
histosQA.fill(HIST("PIDCME/histgamama_PiPr_os"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast<float>(nmode) * Psi_n)));
650648
histosQA.fill(HIST("PIDCME/histdelta_PiPr_os"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi())));
651649
histosQA.fill(HIST("PIDCME/Differential/histgamama_PiPr_os_Dif"), collision.centFT0C(), trk1.pt() + trk3.pt(), std::abs(trk1.eta() - trk3.eta()),
652-
std::cos((trk1.phi() + trk3.phi() - static_cast<float>(nmode) * Psi_n)));
650+
std::cos((trk1.phi() + trk3.phi() - static_cast<float>(nmode) * Psi_n)));
653651
histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPr_os_Dif"), collision.centFT0C(), trk1.pt() + trk3.pt(), std::abs(trk1.eta() - trk3.eta()),
654-
std::cos((trk1.phi() - trk3.phi())));
652+
std::cos((trk1.phi() - trk3.phi())));
655653
}
656654
}
657655
}
658656
}
659-
for (auto& trk2 : track2) {
660-
for (auto& trk3 : track3) {
657+
for(auto& trk2 : track2) {
658+
for(auto& trk3 : track3) {
661659
if (trk2.globalIndex() == trk3.globalIndex())
662660
continue;
663661
if (nmode == 2) {
664-
if (trk2.sign() == trk3.sign()) {
662+
if(trk2.sign() == trk3.sign()){
665663
histosQA.fill(HIST("PIDCME/histgamama_KaPr_ss"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast<float>(nmode) * Psi_n)));
666664
histosQA.fill(HIST("PIDCME/histdelta_KaPr_ss"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi())));
667665
histosQA.fill(HIST("PIDCME/Differential/histgamama_KaPr_ss_Dif"), collision.centFT0C(), trk2.pt() + trk3.pt(), std::abs(trk2.eta() - trk3.eta()),
668-
std::cos((trk2.phi() + trk3.phi() - static_cast<float>(nmode) * Psi_n)));
666+
std::cos((trk2.phi() + trk3.phi() - static_cast<float>(nmode) * Psi_n)));
669667
histosQA.fill(HIST("PIDCME/Differential/histdelta_KaPr_ss_Dif"), collision.centFT0C(), trk2.pt() + trk3.pt(), std::abs(trk2.eta() - trk3.eta()),
670-
std::cos((trk2.phi() - trk3.phi())));
668+
std::cos((trk2.phi() - trk3.phi())));
671669
} else {
672670
histosQA.fill(HIST("PIDCME/histgamama_KaPr_os"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast<float>(nmode) * Psi_n)));
673671
histosQA.fill(HIST("PIDCME/histdelta_KaPr_os"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi())));
674672
histosQA.fill(HIST("PIDCME/Differential/histgamama_KaPr_os_Dif"), collision.centFT0C(), trk2.pt() + trk3.pt(), std::abs(trk2.eta() - trk3.eta()),
675-
std::cos((trk2.phi() + trk3.phi() - static_cast<float>(nmode) * Psi_n)));
673+
std::cos((trk2.phi() + trk3.phi() - static_cast<float>(nmode) * Psi_n)));
676674
histosQA.fill(HIST("PIDCME/Differential/histdelta_KaPr_os_Dif"), collision.centFT0C(), trk2.pt() + trk3.pt(), std::abs(trk2.eta() - trk3.eta()),
677-
std::cos((trk2.phi() - trk3.phi())));
675+
std::cos((trk2.phi() - trk3.phi())));
678676
}
679677
}
680678
}
@@ -702,13 +700,13 @@ struct pidcme {
702700
for (auto i = 0; i < static_cast<int>(cfgnMods->size()); i++) {
703701
int DetInd_global = DetId * 4 + cfgnTotalSystem * 4 * (cfgnMods->at(i) - 2);
704702
float Psi_n_global = helperEP.GetEventPlane(collision.qvecRe()[DetInd_global + 3], collision.qvecIm()[DetInd_global + 3], cfgnMods->at(i));
705-
for (auto& trk : tracks) {
703+
for(auto& trk : tracks){
706704
if (!SelTrack(trk))
707705
continue;
708706
histosQA.fill(HIST("V2/histSinDetV2"), collision.centFT0C(), trk.pt(),
709-
std::sin(static_cast<float>(cfgnMods->at(i)) * (trk.phi() - Psi_n_global)));
707+
std::sin(static_cast<float>(cfgnMods->at(i)) * (trk.phi() - Psi_n_global)));
710708
histosQA.fill(HIST("V2/histCosDetV2"), collision.centFT0C(), trk.pt(),
711-
std::cos(static_cast<float>(cfgnMods->at(i)) * (trk.phi() - Psi_n_global)));
709+
std::cos(static_cast<float>(cfgnMods->at(i)) * (trk.phi() - Psi_n_global)));
712710
}
713711
fillHistosQvec(collision, cfgnMods->at(i));
714712
fillHistosFlow_gamma_delta(collision, tracks1, tracks2, tracks3, cfgnMods->at(i));
@@ -722,4 +720,4 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
722720
adaptAnalysisTask<FillPIDcolums>(cfgc),
723721
adaptAnalysisTask<pidcme>(cfgc),
724722
};
725-
}
723+
}

0 commit comments

Comments
 (0)