1616#include < cstdlib>
1717#include < chrono>
1818#include < string>
19+ #include < vector>
1920
2021#include " TLorentzVector.h"
2122#include " TRandom3.h"
@@ -128,6 +129,9 @@ struct lambdapolarization {
128129 Configurable<bool > cfgShiftCorrDef{" cfgShiftCorrDef" , false , " additional shift correction definition" };
129130 Configurable<std::string> cfgShiftPath{" cfgShiftPath" , " Users/j/junlee/Qvector/QvecCalib/Shift" , " Path for Shift" };
130131
132+ Configurable<bool > cfgEffCor{" cfgEffCor" , false , " flag to apply efficiency correction" };
133+ Configurable<std::string> cfgEffCorPath{" cfgEffCorPath" , " " , " path for pseudo efficiency correction" };
134+
131135 ConfigurableAxis massAxis{" massAxis" , {30 , 1.1 , 1.13 }, " Invariant mass axis" };
132136 ConfigurableAxis ptAxis{" ptAxis" , {VARIABLE_WIDTH, 0.2 , 0.5 , 1.0 , 1.5 , 2.0 , 2.5 , 3.0 , 4.0 , 5.0 , 6.5 , 8.0 , 10.0 , 100.0 }, " Transverse momentum bins" };
133137 ConfigurableAxis centAxis{" centAxis" , {VARIABLE_WIDTH, 0 , 5 , 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 100 }, " Centrality interval" };
@@ -151,6 +155,7 @@ struct lambdapolarization {
151155 int currentRunNumber = -999 ;
152156 int lastRunNumber = -999 ;
153157 std::vector<TProfile3D*> shiftprofile{};
158+ TProfile2D* EffMap = nullptr ;
154159
155160 std::string fullCCDBShiftCorrPath;
156161
@@ -203,6 +208,10 @@ struct lambdapolarization {
203208 histos.add (Form (" psi%d/h_alambda_vncos" , i), " " , {HistType::kTHnSparseF , {massAxis, ptAxis, cosAxis, centAxis}});
204209 histos.add (Form (" psi%d/h_alambda_vnsin" , i), " " , {HistType::kTHnSparseF , {massAxis, ptAxis, cosAxis, centAxis}});
205210 }
211+ histos.add (" QA/ptspec_l" , " " , {HistType::kTH3F , {massAxis, ptAxis, centAxis}});
212+ histos.add (" QA/ptspec_al" , " " , {HistType::kTH3F , {massAxis, ptAxis, centAxis}});
213+ histos.add (" QA/ptspecCor_l" , " " , {HistType::kTH3F , {massAxis, ptAxis, centAxis}});
214+ histos.add (" QA/ptspecCor_al" , " " , {HistType::kTH3F , {massAxis, ptAxis, centAxis}});
206215
207216 if (cfgQAv0) {
208217 histos.add (" QA/CentDist" , " " , {HistType::kTH1F , {centQaAxis}});
@@ -558,50 +567,67 @@ struct lambdapolarization {
558567 continue ;
559568 }
560569
570+ if (LambdaTag) {
571+ histos.fill (HIST (" QA/ptspec_l" ), v0.mLambda (), v0.pt (), centrality);
572+ if (cfgEffCor) {
573+ histos.fill (HIST (" QA/ptspecCor_l" ), v0.mLambda (), v0.pt (), centrality,
574+ 1.0 / EffMap->GetBinContent (EffMap->GetXaxis ()->FindBin (v0.pt ()), EffMap->GetYaxis ()->FindBin (centrality)));
575+ }
576+ }
577+ if (aLambdaTag) {
578+ histos.fill (HIST (" QA/ptspec_al" ), v0.mAntiLambda (), v0.pt (), centrality);
579+ if (cfgEffCor) {
580+ histos.fill (HIST (" QA/ptspecCor_al" ), v0.mAntiLambda (), v0.pt (), centrality,
581+ 1.0 / EffMap->GetBinContent (EffMap->GetXaxis ()->FindBin (v0.pt ()), EffMap->GetYaxis ()->FindBin (centrality)));
582+ }
583+ }
584+
585+ double weight = cfgEffCor ? 1.0 / EffMap->GetBinContent (EffMap->GetXaxis ()->FindBin (v0.pt ()), EffMap->GetYaxis ()->FindBin (centrality)) : 1 .;
586+
561587 if (nmode == 2 ) { // //////////
562588 if (LambdaTag) {
563- histos.fill (HIST (" psi2/h_lambda_cos" ), v0.mLambda (), v0.pt (), angle, centrality, relphi);
564- histos.fill (HIST (" psi2/h_lambda_cos2" ), v0.mLambda (), v0.pt (), angle * angle, centrality, relphi);
565- histos.fill (HIST (" psi2/h_lambda_cossin" ), v0.mLambda (), v0.pt (), angle * TMath::Sin (relphi), centrality);
566- histos.fill (HIST (" psi2/h_lambda_vncos" ), v0.mLambda (), v0.pt (), TMath::Cos (relphi), centrality);
567- histos.fill (HIST (" psi2/h_lambda_vnsin" ), v0.mLambda (), v0.pt (), TMath::Sin (relphi), centrality);
589+ histos.fill (HIST (" psi2/h_lambda_cos" ), v0.mLambda (), v0.pt (), angle, centrality, relphi, weight );
590+ histos.fill (HIST (" psi2/h_lambda_cos2" ), v0.mLambda (), v0.pt (), angle * angle, centrality, relphi, weight );
591+ histos.fill (HIST (" psi2/h_lambda_cossin" ), v0.mLambda (), v0.pt (), angle * TMath::Sin (relphi), centrality, weight );
592+ histos.fill (HIST (" psi2/h_lambda_vncos" ), v0.mLambda (), v0.pt (), TMath::Cos (relphi), centrality, weight );
593+ histos.fill (HIST (" psi2/h_lambda_vnsin" ), v0.mLambda (), v0.pt (), TMath::Sin (relphi), centrality, weight );
568594 }
569595 if (aLambdaTag) {
570- histos.fill (HIST (" psi2/h_alambda_cos" ), v0.mAntiLambda (), v0.pt (), angle, centrality, relphi);
571- histos.fill (HIST (" psi2/h_alambda_cos2" ), v0.mAntiLambda (), v0.pt (), angle * angle, centrality, relphi);
572- histos.fill (HIST (" psi2/h_alambda_cossin" ), v0.mAntiLambda (), v0.pt (), angle * TMath::Sin (relphi), centrality);
573- histos.fill (HIST (" psi2/h_alambda_vncos" ), v0.mLambda (), v0.pt (), TMath::Cos (relphi), centrality);
574- histos.fill (HIST (" psi2/h_alambda_vnsin" ), v0.mLambda (), v0.pt (), TMath::Sin (relphi), centrality);
596+ histos.fill (HIST (" psi2/h_alambda_cos" ), v0.mAntiLambda (), v0.pt (), angle, centrality, relphi, weight );
597+ histos.fill (HIST (" psi2/h_alambda_cos2" ), v0.mAntiLambda (), v0.pt (), angle * angle, centrality, relphi, weight );
598+ histos.fill (HIST (" psi2/h_alambda_cossin" ), v0.mAntiLambda (), v0.pt (), angle * TMath::Sin (relphi), centrality, weight );
599+ histos.fill (HIST (" psi2/h_alambda_vncos" ), v0.mLambda (), v0.pt (), TMath::Cos (relphi), centrality, weight );
600+ histos.fill (HIST (" psi2/h_alambda_vnsin" ), v0.mLambda (), v0.pt (), TMath::Sin (relphi), centrality, weight );
575601 }
576602 } else if (nmode == 3 ) {
577603 if (LambdaTag) {
578- histos.fill (HIST (" psi3/h_lambda_cos" ), v0.mLambda (), v0.pt (), angle, centrality, relphi);
579- histos.fill (HIST (" psi3/h_lambda_cos2" ), v0.mLambda (), v0.pt (), angle * angle, centrality, relphi);
580- histos.fill (HIST (" psi3/h_lambda_cossin" ), v0.mLambda (), v0.pt (), angle * TMath::Sin (relphi), centrality);
581- histos.fill (HIST (" psi3/h_lambda_vncos" ), v0.mLambda (), v0.pt (), TMath::Cos (relphi), centrality);
582- histos.fill (HIST (" psi3/h_lambda_vnsin" ), v0.mLambda (), v0.pt (), TMath::Sin (relphi), centrality);
604+ histos.fill (HIST (" psi3/h_lambda_cos" ), v0.mLambda (), v0.pt (), angle, centrality, relphi, weight );
605+ histos.fill (HIST (" psi3/h_lambda_cos2" ), v0.mLambda (), v0.pt (), angle * angle, centrality, relphi, weight );
606+ histos.fill (HIST (" psi3/h_lambda_cossin" ), v0.mLambda (), v0.pt (), angle * TMath::Sin (relphi), centrality, weight );
607+ histos.fill (HIST (" psi3/h_lambda_vncos" ), v0.mLambda (), v0.pt (), TMath::Cos (relphi), centrality, weight );
608+ histos.fill (HIST (" psi3/h_lambda_vnsin" ), v0.mLambda (), v0.pt (), TMath::Sin (relphi), centrality, weight );
583609 }
584610 if (aLambdaTag) {
585- histos.fill (HIST (" psi3/h_alambda_cos" ), v0.mAntiLambda (), v0.pt (), angle, centrality, relphi);
586- histos.fill (HIST (" psi3/h_alambda_cos2" ), v0.mAntiLambda (), v0.pt (), angle * angle, centrality, relphi);
587- histos.fill (HIST (" psi3/h_alambda_cossin" ), v0.mAntiLambda (), v0.pt (), angle * TMath::Sin (relphi), centrality);
588- histos.fill (HIST (" psi3/h_alambda_vncos" ), v0.mLambda (), v0.pt (), TMath::Cos (relphi), centrality);
589- histos.fill (HIST (" psi3/h_alambda_vnsin" ), v0.mLambda (), v0.pt (), TMath::Sin (relphi), centrality);
611+ histos.fill (HIST (" psi3/h_alambda_cos" ), v0.mAntiLambda (), v0.pt (), angle, centrality, relphi, weight );
612+ histos.fill (HIST (" psi3/h_alambda_cos2" ), v0.mAntiLambda (), v0.pt (), angle * angle, centrality, relphi, weight );
613+ histos.fill (HIST (" psi3/h_alambda_cossin" ), v0.mAntiLambda (), v0.pt (), angle * TMath::Sin (relphi), centrality, weight );
614+ histos.fill (HIST (" psi3/h_alambda_vncos" ), v0.mLambda (), v0.pt (), TMath::Cos (relphi), centrality, weight );
615+ histos.fill (HIST (" psi3/h_alambda_vnsin" ), v0.mLambda (), v0.pt (), TMath::Sin (relphi), centrality, weight );
590616 }
591617 } else if (nmode == 4 ) {
592618 if (LambdaTag) {
593- histos.fill (HIST (" psi4/h_lambda_cos" ), v0.mLambda (), v0.pt (), angle, centrality, relphi);
594- histos.fill (HIST (" psi4/h_lambda_cos2" ), v0.mLambda (), v0.pt (), angle * angle, centrality, relphi);
595- histos.fill (HIST (" psi4/h_lambda_cossin" ), v0.mLambda (), v0.pt (), angle * TMath::Sin (relphi), centrality);
596- histos.fill (HIST (" psi4/h_lambda_vncos" ), v0.mLambda (), v0.pt (), TMath::Cos (relphi), centrality);
597- histos.fill (HIST (" psi4/h_lambda_vnsin" ), v0.mLambda (), v0.pt (), TMath::Sin (relphi), centrality);
619+ histos.fill (HIST (" psi4/h_lambda_cos" ), v0.mLambda (), v0.pt (), angle, centrality, relphi, weight );
620+ histos.fill (HIST (" psi4/h_lambda_cos2" ), v0.mLambda (), v0.pt (), angle * angle, centrality, relphi, weight );
621+ histos.fill (HIST (" psi4/h_lambda_cossin" ), v0.mLambda (), v0.pt (), angle * TMath::Sin (relphi), centrality, weight );
622+ histos.fill (HIST (" psi4/h_lambda_vncos" ), v0.mLambda (), v0.pt (), TMath::Cos (relphi), centrality, weight );
623+ histos.fill (HIST (" psi4/h_lambda_vnsin" ), v0.mLambda (), v0.pt (), TMath::Sin (relphi), centrality, weight );
598624 }
599625 if (aLambdaTag) {
600- histos.fill (HIST (" psi4/h_alambda_cos" ), v0.mAntiLambda (), v0.pt (), angle, centrality, relphi);
601- histos.fill (HIST (" psi4/h_alambda_cos2" ), v0.mAntiLambda (), v0.pt (), angle * angle, centrality, relphi);
602- histos.fill (HIST (" psi4/h_alambda_cossin" ), v0.mAntiLambda (), v0.pt (), angle * TMath::Sin (relphi), centrality);
603- histos.fill (HIST (" psi4/h_alambda_vncos" ), v0.mLambda (), v0.pt (), TMath::Cos (relphi), centrality);
604- histos.fill (HIST (" psi4/h_alambda_vnsin" ), v0.mLambda (), v0.pt (), TMath::Sin (relphi), centrality);
626+ histos.fill (HIST (" psi4/h_alambda_cos" ), v0.mAntiLambda (), v0.pt (), angle, centrality, relphi, weight );
627+ histos.fill (HIST (" psi4/h_alambda_cos2" ), v0.mAntiLambda (), v0.pt (), angle * angle, centrality, relphi, weight );
628+ histos.fill (HIST (" psi4/h_alambda_cossin" ), v0.mAntiLambda (), v0.pt (), angle * TMath::Sin (relphi), centrality, weight );
629+ histos.fill (HIST (" psi4/h_alambda_vncos" ), v0.mLambda (), v0.pt (), TMath::Cos (relphi), centrality, weight );
630+ histos.fill (HIST (" psi4/h_alambda_vnsin" ), v0.mLambda (), v0.pt (), TMath::Sin (relphi), centrality, weight );
605631 }
606632 } // //////// FIXME: not possible to get histograms using nmode
607633 }
@@ -637,6 +663,10 @@ struct lambdapolarization {
637663 lastRunNumber = currentRunNumber;
638664 }
639665 }
666+ if (cfgEffCor) {
667+ auto bc = collision.bc_as <aod::BCsWithTimestamps>();
668+ EffMap = ccdb->getForTimeStamp <TProfile2D>(cfgEffCorPath.value , bc.timestamp ());
669+ }
640670 for (int i = 2 ; i < cfgnMods + 2 ; i++) {
641671 if (cfgShiftCorrDef) {
642672 FillShiftCorrection (collision, i);
0 commit comments