@@ -47,6 +47,7 @@ void MatchITSTPCQC::deleteHistograms()
4747 delete mPtPhysPrimNum [i];
4848 delete mPtPhysPrimDen [i];
4949 delete mFractionITSTPCmatchPhysPrim [i];
50+
5051 // Phi
5152 delete mPhiNum [i];
5253 delete mPhiDen [i];
@@ -57,6 +58,7 @@ void MatchITSTPCQC::deleteHistograms()
5758 delete mPhiVsPtNum [i];
5859 delete mPhiVsPtDen [i];
5960 delete mFractionITSTPCmatchPhiVsPt [i];
61+
6062 // Eta
6163 delete mEtaNum [i];
6264 delete mEtaDen [i];
@@ -67,6 +69,24 @@ void MatchITSTPCQC::deleteHistograms()
6769 delete mEtaVsPtNum [i];
6870 delete mEtaVsPtDen [i];
6971 delete mFractionITSTPCmatchEtaVsPt [i];
72+
73+ if (mUseTrkPID ) { // Vs Tracking PID hypothesis
74+ for (int j = 0 ; j < o2::track::PID::NIDs; ++j) {
75+ // Pt
76+ delete mPtNumVsTrkPID [i][j];
77+ delete mPtDenVsTrkPID [i][j];
78+ delete mFractionITSTPCmatchPtVsTrkPID [i][j];
79+ // Phi
80+ delete mPhiNumVsTrkPID [i][j];
81+ delete mPhiDenVsTrkPID [i][j];
82+ delete mFractionITSTPCmatchPhiVsTrkPID [i][j];
83+ // Eta
84+ delete mEtaNumVsTrkPID [i][j];
85+ delete mEtaDenVsTrkPID [i][j];
86+ delete mFractionITSTPCmatchEtaVsTrkPID [i][j];
87+ }
88+ }
89+
7090 // 1/Pt
7191 delete m1OverPtNum[i];
7292 delete m1OverPtDen[i];
@@ -99,20 +119,36 @@ void MatchITSTPCQC::reset()
99119 mPtDen_noEta0 [i]->Reset ();
100120 mPtPhysPrimNum [i]->Reset ();
101121 mPtPhysPrimDen [i]->Reset ();
122+
102123 // Phi
103124 mPhiNum [i]->Reset ();
104125 mPhiDen [i]->Reset ();
105126 mPhiPhysPrimNum [i]->Reset ();
106127 mPhiPhysPrimDen [i]->Reset ();
107128 mPhiVsPtNum [i]->Reset ();
108129 mPhiVsPtDen [i]->Reset ();
130+
109131 // Eta
110132 mEtaNum [i]->Reset ();
111133 mEtaDen [i]->Reset ();
112134 mEtaPhysPrimNum [i]->Reset ();
113135 mEtaPhysPrimDen [i]->Reset ();
114136 mEtaVsPtNum [i]->Reset ();
115137 mEtaVsPtDen [i]->Reset ();
138+
139+ if (mUseTrkPID ) { // Vs Tracking PID hypothesis
140+ for (int j = 0 ; j < o2::track::PID::NIDs; ++j) {
141+ // Pt
142+ mPtNumVsTrkPID [i][j]->Reset ();
143+ mPtDenVsTrkPID [i][j]->Reset ();
144+ // Phi
145+ mPhiNumVsTrkPID [i][j]->Reset ();
146+ mPhiDenVsTrkPID [i][j]->Reset ();
147+ // Eta
148+ mEtaNumVsTrkPID [i][j]->Reset ();
149+ mEtaDenVsTrkPID [i][j]->Reset ();
150+ }
151+ }
116152 // 1/Pt
117153 m1OverPtNum[i]->Reset ();
118154 m1OverPtDen[i]->Reset ();
@@ -158,6 +194,23 @@ bool MatchITSTPCQC::init()
158194 mEtaVsPtNum [i] = new TH2F (Form (" mEtaVsPtNum_%s" , title[i].c_str ()), Form (" Eta vs Pt distribution of ITSTPC matched tracks, wrt %s tracks; #it{p}_{T} [GeV#it{c}]; #it{p}_{T} [GeV#it{c}]; Eta" , title[i].c_str ()), 100 , 0 .f , 20 .f , 100 , -2 .f , 2 .f );
159195 mEtaVsPtDen [i] = new TH2F (Form (" mEtaVsPtDen_%s" , title[i].c_str ()), Form (" Eta vs Pt distribution of %s tracks; #it{p}_{T} [GeV#it{c}]; #it{p}_{T} [GeV#it{c}]; Eta" , title[i].c_str ()), 100 , 0 .f , 20 .f , 100 , -2 .f , 2 .f );
160196 mFractionITSTPCmatchEtaVsPt [i] = new TEfficiency (Form (" mFractionITSTPCmatchEtaVsPt_%s" , title[i].c_str ()), Form (" Fraction of ITSTPC matched tracks, wrt %s tracks, Eta vs Pt; #it{p}_{T} [GeV#it{c}]; Eta; Eff" , title[i].c_str ()), 100 , 0 .f , 20 .f , 100 , -2 .f , 2 .f );
197+ if (mUseTrkPID ) { // Vs Tracking PID hypothesis
198+ for (int j = 0 ; j < o2::track::PID::NIDs; ++j) {
199+ // Pt
200+ mPtNumVsTrkPID [i][j] = new TH1D (Form (" mPtNumVsTrkPID_%s_PID%i" , title[i].c_str (), j), Form (" Pt distribution of ITSTPC matched tracks, wrt %s tracks %s, TrkPID %i; Pt [GeV/c]; dNdPt" , title[i].c_str (), etaSel[i].c_str (), j), 100 , 0 .f , 20 .f );
201+ mPtDenVsTrkPID [i][j] = new TH1D (Form (" mPtDenVsTrkPID_%s_PID%i" , title[i].c_str (), j), Form (" Pt distribution of %s tracks %s, TrkPID %i; Pt [GeV/c]; dNdPt" , title[i].c_str (), etaSel[i].c_str (), j), 100 , 0 .f , 20 .f );
202+ mFractionITSTPCmatchPtVsTrkPID [i][j] = new TEfficiency (Form (" mFractionITSTPCmatchPtVsTrkPID_%s_PID%i" , title[i].c_str (), j), Form (" Fraction of ITSTPC matched tracks wrt %s tracks vs Pt %s, TrkPID %i; Pt [GeV/c]; Eff" , title[i].c_str (), etaSel[i].c_str (), j), 100 , 0 .f , 20 .f );
203+ // Phi
204+ mPhiNumVsTrkPID [i][j] = new TH1D (Form (" mPhiNumVsTrkPID_%s_PID%i" , title[i].c_str (), j), Form (" Phi distribution of ITSTPC matched tracks, wrt %s tracks %s, TrkPID %i; Phi [rad]; dNdPhi" , title[i].c_str (), etaSel[i].c_str (), j), 100 , 0 .f , 2 * TMath::Pi ());
205+ mPhiDenVsTrkPID [i][j] = new TH1D (Form (" mPhiDenVsTrkPID_%s_PID%i" , title[i].c_str (), j), Form (" Phi distribution of %s tracks %s, TrkPID %i; Phi [rad]; dNdPhi" , title[i].c_str (), etaSel[i].c_str (), j), 100 , 0 .f , 2 * TMath::Pi ());
206+ mFractionITSTPCmatchPhiVsTrkPID [i][j] = new TEfficiency (Form (" mFractionITSTPCmatchPhiVsTrkPID_%s_PID%i" , title[i].c_str (), j), Form (" Fraction of ITSTPC matched tracks wrt %s tracks vs Phi %s, TrkPID %i; Phi [rad]; Eff" , title[i].c_str (), etaSel[i].c_str (), j), 100 , 0 .f , 2 * TMath::Pi ());
207+ // Eta
208+ mEtaNumVsTrkPID [i][j] = new TH1D (Form (" mEtaNumVsTrkPID_%s_PID%i" , title[i].c_str (), j), Form (" Eta distribution of ITSTPC matched tracks, wrt %s tracks %s, TrkPID %i; Eta; dNdEta" , title[i].c_str (), etaSel[i].c_str (), j), 100 , -2 .f , 2 .f );
209+ mEtaDenVsTrkPID [i][j] = new TH1D (Form (" mEtaDenVsTrkPID_%s_PID%i" , title[i].c_str (), j), Form (" Eta distribution of %s tracks %s, TrkPID %i; Eta; dNdEta" , title[i].c_str (), etaSel[i].c_str (), j), 100 , -2 .f , 2 .f );
210+ mFractionITSTPCmatchEtaVsTrkPID [i][j] = new TEfficiency (Form (" mFractionITSTPCmatchEtaVsTrkPID_%s_PID%i" , title[i].c_str (), j), Form (" Fraction of ITSTPC matched tracks wrt %s tracks vs Eta %s, TrkPID %i; Eta; Eff" , title[i].c_str (), etaSel[i].c_str (), j), 100 , -2 .f , 2 .f );
211+ }
212+ }
213+
161214 // 1/pt
162215 m1OverPtNum[i] = new TH1D (Form (" m1OverPtNum_%s" , title[i].c_str ()), Form (" 1/Pt distribution of matched tracks, wrt %s tracks %s; 1/Pt [c/GeV]; dNdPt" , title[i].c_str (), etaSel[i].c_str ()), 100 , -20 .f , 20 .f );
163216 m1OverPtDen[i] = new TH1D (Form (" m1OverPtDen_%s" , title[i].c_str ()), Form (" 1/Pt distribution of %s tracks %s; 1/Pt [c/GeV]; dNdPt" , title[i].c_str (), etaSel[i].c_str ()), 100 , -20 .f , 20 .f );
@@ -202,25 +255,44 @@ bool MatchITSTPCQC::init()
202255 mFractionITSTPCmatchPhysPrim1OverPt [i] = new TEfficiency (Form (" mFractionITSTPCmatchPhysPrim1OverPt_%s" , title[i].c_str ()), Form (" Fraction of ITSTPC matched tracks vs 1/Pt (physical primary), wrt %s tracks %s; 1/Pt [c/GeV]; Eff" , title[i].c_str (), etaSel[i].c_str ()), 100 , -20 .f , 20 .f );
203256
204257 // some extra settings
258+ // Pt
205259 mPtNum [i]->Sumw2 ();
206260 mPtDen [i]->Sumw2 ();
207261 mPtNum_noEta0 [i]->Sumw2 ();
208262 mPtDen_noEta0 [i]->Sumw2 ();
263+ mPtPhysPrimNum [i]->Sumw2 ();
264+ mPtPhysPrimDen [i]->Sumw2 ();
265+
266+ // Phi
209267 mPhiNum [i]->Sumw2 ();
210268 mPhiDen [i]->Sumw2 ();
211269 mPhiVsPtNum [i]->Sumw2 ();
212270 mPhiVsPtDen [i]->Sumw2 ();
213- mPtPhysPrimNum [i]->Sumw2 ();
214- mPtPhysPrimDen [i]->Sumw2 ();
215271 mPhiPhysPrimNum [i]->Sumw2 ();
216272 mPhiPhysPrimDen [i]->Sumw2 ();
273+
274+ // Eta
217275 mEtaNum [i]->Sumw2 ();
218276 mEtaDen [i]->Sumw2 ();
219277 mEtaPhysPrimNum [i]->Sumw2 ();
220278 mEtaPhysPrimDen [i]->Sumw2 ();
221279 mEtaVsPtNum [i]->Sumw2 ();
222280 mEtaVsPtDen [i]->Sumw2 ();
223281
282+ if (mUseTrkPID ) { // Vs Tracking PID hypothesis
283+ for (int j = 0 ; j < o2::track::PID::NIDs; ++j) {
284+ // Pt
285+ mPtNumVsTrkPID [i][j]->Sumw2 ();
286+ mPtDenVsTrkPID [i][j]->Sumw2 ();
287+ // Phi
288+ mPhiNumVsTrkPID [i][j]->Sumw2 ();
289+ mPhiDenVsTrkPID [i][j]->Sumw2 ();
290+ // Eta
291+ mEtaNumVsTrkPID [i][j]->Sumw2 ();
292+ mEtaDenVsTrkPID [i][j]->Sumw2 ();
293+ }
294+ }
295+
224296 m1OverPtNum[i]->Sumw2 ();
225297 m1OverPtDen[i]->Sumw2 ();
226298 m1OverPtPhysPrimNum[i]->Sumw2 ();
@@ -422,12 +494,24 @@ void MatchITSTPCQC::run(o2::framework::ProcessingContext& ctx)
422494 mPhiDen [i]->Fill (trkDen.getPhi ());
423495 mPhiVsPtDen [i]->Fill (trkDen.getPt (), trkDen.getPhi ());
424496 m1OverPtDen[i]->Fill (trkDen.getSign () * trkDen.getPtInv ());
497+ if (mUseTrkPID ) { // Vs Tracking PID hypothesis
498+ mPtNumVsTrkPID [i][trkDen.getPID ()]->Fill (trkDen.getPt ());
499+ mPhiNumVsTrkPID [i][trkDen.getPID ()]->Fill (trkDen.getPhi ());
500+ // we fill also the denominator
501+ mPtDenVsTrkPID [i][trkDen.getPID ()]->Fill (trkDen.getPt ());
502+ mPhiDenVsTrkPID [i][trkDen.getPID ()]->Fill (trkDen.getPhi ());
503+ }
425504 }
426505 mEtaNum [i]->Fill (trkDen.getEta ());
427506 mEtaVsPtNum [i]->Fill (trkDen.getPt (), trkDen.getEta ());
428507 // we fill also the denominator
429508 mEtaDen [i]->Fill (trkDen.getEta ());
430509 mEtaVsPtDen [i]->Fill (trkDen.getPt (), trkDen.getEta ());
510+ if (mUseTrkPID ) { // Vs Tracking PID hypothesis
511+ mEtaNumVsTrkPID [i][trkDen.getPID ()]->Fill (trkDen.getEta ());
512+ // we fill also the denominator
513+ mEtaDenVsTrkPID [i][trkDen.getPID ()]->Fill (trkDen.getEta ());
514+ }
431515 if (el.second .mIsPhysicalPrimary ) {
432516 if (isEtaITSOk) {
433517 mPtPhysPrimNum [i]->Fill (trkDen.getPt ());
@@ -498,10 +582,17 @@ void MatchITSTPCQC::run(o2::framework::ProcessingContext& ctx)
498582 mPtNum_noEta0 [i]->Fill (trkRef.getPt ());
499583 }
500584 mPhiNum [i]->Fill (trkRef.getPhi ());
585+ if (mUseTrkPID ) { // Vs Tracking PID hypothesis
586+ mPtNumVsTrkPID [i][trkRef.getPID ()]->Fill (trkRef.getPt ());
587+ mPhiNumVsTrkPID [i][trkRef.getPID ()]->Fill (trkRef.getPhi ());
588+ }
501589 mPhiVsPtNum [i]->Fill (trkRef.getPt (), trkRef.getPhi ());
502590 m1OverPtNum[i]->Fill (trkRef.getSign () * trkRef.getPtInv ());
503591 }
504592 mEtaNum [i]->Fill (trkRef.getEta ());
593+ if (mUseTrkPID ) { // Vs Tracking PID hypothesis
594+ mEtaNumVsTrkPID [i][trkRef.getPID ()]->Fill (trkRef.getEta ());
595+ }
505596 mEtaVsPtNum [i]->Fill (trkRef.getPt (), trkRef.getEta ());
506597 }
507598 if (i == matchType::TPC) {
@@ -750,6 +841,13 @@ void MatchITSTPCQC::finalize()
750841 setEfficiency (mFractionITSTPCmatchPhiVsPt [i], mPhiVsPtNum [i], mPhiVsPtDen [i], true );
751842 setEfficiency (mFractionITSTPCmatchEtaVsPt [i], mEtaVsPtNum [i], mEtaVsPtDen [i], true );
752843 setEfficiency (mFractionITSTPCmatch1OverPt [i], m1OverPtNum[i], m1OverPtDen[i]);
844+ if (mUseTrkPID ) { // Vs Tracking PID hypothesis
845+ for (int j = 0 ; j < o2::track::PID::NIDs; ++j) {
846+ setEfficiency (mFractionITSTPCmatchPtVsTrkPID [i][j], mPtNumVsTrkPID [i][j], mPtDenVsTrkPID [i][j]);
847+ setEfficiency (mFractionITSTPCmatchPhiVsTrkPID [i][j], mPhiNumVsTrkPID [i][j], mPhiDenVsTrkPID [i][j]);
848+ setEfficiency (mFractionITSTPCmatchEtaVsTrkPID [i][j], mEtaNumVsTrkPID [i][j], mEtaDenVsTrkPID [i][j]);
849+ }
850+ }
753851 if (mUseMC ) {
754852 setEfficiency (mFractionITSTPCmatchPhysPrim [i], mPtPhysPrimNum [i], mPtPhysPrimDen [i]);
755853 setEfficiency (mFractionITSTPCmatchPhiPhysPrim [i], mPhiPhysPrimNum [i], mPhiPhysPrimDen [i]);
@@ -836,6 +934,23 @@ void MatchITSTPCQC::getHistos(TObjArray& objar)
836934 objar.Add (mPhiDen [i]);
837935 objar.Add (mFractionITSTPCmatchPhi [i]);
838936
937+ if (mUseTrkPID ) { // Vs Tracking PID hypothesis
938+ for (int j = 0 ; j < o2::track::PID::NIDs; ++j) {
939+ // Pt
940+ objar.Add (mPtNumVsTrkPID [i][j]);
941+ objar.Add (mPtDenVsTrkPID [i][j]);
942+ objar.Add (mFractionITSTPCmatchPtVsTrkPID [i][j]);
943+ // Phi
944+ objar.Add (mPhiNumVsTrkPID [i][j]);
945+ objar.Add (mPhiDenVsTrkPID [i][j]);
946+ objar.Add (mFractionITSTPCmatchPhiVsTrkPID [i][j]);
947+ // Eta
948+ objar.Add (mEtaNumVsTrkPID [i][j]);
949+ objar.Add (mEtaDenVsTrkPID [i][j]);
950+ objar.Add (mFractionITSTPCmatchEtaVsTrkPID [i][j]);
951+ }
952+ }
953+
839954 objar.Add (mPhiPhysPrimNum [i]);
840955 objar.Add (mPhiPhysPrimDen [i]);
841956 objar.Add (mFractionITSTPCmatchPhiPhysPrim [i]);
0 commit comments