@@ -69,7 +69,6 @@ struct FlowSP {
6969 O2_DEFINE_CONFIGURABLE (cfgEvtRCTFlagCheckerLimitAcceptAsBad, bool , false , " Evt sel: RCT flag checker treat Limited Acceptance As Bad" );
7070 } rctFlags;
7171
72- // struct : ConfigurableGroup { // <-- change all to evsels.Selection
7372 // event selection configurable group
7473 O2_DEFINE_CONFIGURABLE (cfgEvSelsUseAdditionalEventCut, bool , true , " Bool to enable Additional Event Cut" );
7574 O2_DEFINE_CONFIGURABLE (cfgEvSelsMaxOccupancy, int , 10000 , " Maximum occupancy of selected events" );
@@ -81,7 +80,6 @@ struct FlowSP {
8180 O2_DEFINE_CONFIGURABLE (cfgEvSelsIsVertexITSTPC, bool , true , " Selects collisions with at least one ITS-TPC track" );
8281 O2_DEFINE_CONFIGURABLE (cfgEvSelsIsGoodITSLayersAll, bool , true , " Cut time intervals with dead ITS staves" );
8382 O2_DEFINE_CONFIGURABLE (cfgEvSelsIsGoodITSLayer0123, bool , true , " Cut time intervals with dead ITS staves" );
84- // } evSels;
8583
8684 // QA Plots
8785 O2_DEFINE_CONFIGURABLE (cfgFillEventQA, bool , false , " Fill histograms for event QA" );
@@ -528,6 +526,11 @@ struct FlowSP {
528526 if (cfgFillMeanPT) {
529527 registry.add <TProfile2D>(" incl/meanPT/meanRelPtA" , " " , kTProfile2D , {axisEtaVn, axisCentrality});
530528 registry.add <TProfile2D>(" incl/meanPT/meanRelPtC" , " " , kTProfile2D , {axisEtaVn, axisCentrality});
529+
530+ registry.add <TProfile2D>(" incl/meanPT/hRelEtaPt" , " " , kTProfile2D , {axisEtaVn, axisCentrality});
531+ registry.add <TProfile2D>(" incl/meanPT/ptV1A" , " " , kTProfile2D , {axisEtaVn, axisCentrality});
532+ registry.add <TProfile2D>(" incl/meanPT/ptV1C" , " " , kTProfile2D , {axisEtaVn, axisCentrality});
533+ registry.add <TProfile>(" incl/meanPT/meanPT" , " " , kTProfile , {axisCentrality});
531534 }
532535 if (cfgFillPID) {
533536 registry.add <TProfile3D>(" incl/pion/vnC" , " " , kTProfile3D , {axisPt, axisEtaVn, axisCentrality});
@@ -1066,6 +1069,13 @@ struct FlowSP {
10661069 registry.fill (HIST (Charge[ct]) + HIST (Species[pt]) + HIST (" vnC_EP" ), track.pt (), track.eta (), spm.centrality , spm.vnC , weight);
10671070 registry.fill (HIST (Charge[ct]) + HIST (Species[pt]) + HIST (" vnFull_EP" ), track.pt (), track.eta (), spm.centrality , spm.vnFull , weight);
10681071 }
1072+
1073+ if (cfgFillMeanPT) {
1074+ registry.fill (HIST (Charge[ct]) + HIST (Species[pt]) + HIST (" meanPT/hRelEtaPt" ), track.eta (), spm.centrality , track.pt (), weight);
1075+ registry.fill (HIST (Charge[ct]) + HIST (Species[pt]) + HIST (" meanPT/meanPT" ), spm.centrality , track.pt (), weight);
1076+ registry.fill (HIST (Charge[ct]) + HIST (Species[pt]) + HIST (" meanPT/ptV1A" ), track.eta (), spm.centrality , track.pt () * ((spm.uy * spm.qyA + spm.ux * spm.qxA ) / std::sqrt (std::fabs (spm.corrQQ ))), weight);
1077+ registry.fill (HIST (Charge[ct]) + HIST (Species[pt]) + HIST (" meanPT/ptV1C" ), track.eta (), spm.centrality , track.pt () * ((spm.uy * spm.qyC + spm.ux * spm.qxC ) / std::sqrt (std::fabs (spm.corrQQ ))), weight);
1078+ }
10691079 }
10701080
10711081 template <FillType ft, ChargeType ct, ParticleType par, typename TrackObject>
@@ -1307,9 +1317,18 @@ struct FlowSP {
13071317
13081318 fillEventQA<kAfter >(collision, tracks);
13091319
1310- TProfile2D* hRelEtaPt = new TProfile2D (" hRelEtaPt" , " hRelEtaPt" , 8 , -.8 , .8 , 3 , 0 , 3 );
1311- TProfile2D* ptV1A = new TProfile2D (" ptV1A" , " ptV1A" , 8 , -.8 , .8 , 3 , 0 , 3 );
1312- TProfile2D* ptV1C = new TProfile2D (" ptV1C" , " ptV1C" , 8 , -.8 , .8 , 3 , 0 , 3 );
1320+ TProfile* meanPTMap = new TProfile (" meanPTMap" , " meanPTMap" , 8 , -0.8 , 0.8 );
1321+ TProfile* meanPTMapPos = new TProfile (" meanPTMapPos" , " meanPTMapPos" , 8 , -0.8 , 0.8 );
1322+ TProfile* meanPTMapNeg = new TProfile (" meanPTMapNeg" , " meanPTMapNeg" , 8 , -0.8 , 0.8 );
1323+
1324+ TProfile* relPxA = new TProfile (" relPxA" , " relPxA" , 8 , -0.8 , 0.8 );
1325+ TProfile* relPxC = new TProfile (" relPxC" , " relPxC" , 8 , -0.8 , 0.8 );
1326+
1327+ TProfile* relPxANeg = new TProfile (" relPxANeg" , " relPxANeg" , 8 , -0.8 , 0.8 );
1328+ TProfile* relPxAPos = new TProfile (" relPxAPos" , " relPxAPos" , 8 , -0.8 , 0.8 );
1329+
1330+ TProfile* relPxCNeg = new TProfile (" relPxCNeg" , " relPxCNeg" , 8 , -0.8 , 0.8 );
1331+ TProfile* relPxCPos = new TProfile (" relPxCPos" , " relPxCPos" , 8 , -0.8 , 0.8 );
13131332
13141333 for (const auto & track : tracks) {
13151334
@@ -1373,18 +1392,6 @@ struct FlowSP {
13731392
13741393 histos.fill (HIST (" hTrackCount" ), trackSel_ParticleWeights);
13751394
1376- double weight = spm.wacc [0 ][0 ] * spm.weff [0 ][0 ] * spm.centWeight ;
1377- double weightCharged = spm.wacc [spm.charge ][0 ] * spm.weff [spm.charge ][0 ] * spm.centWeight ;
1378-
1379- hRelEtaPt->Fill (track.eta (), kInclusive , track.pt (), weight);
1380- hRelEtaPt->Fill (track.eta (), spm.charge , track.pt (), weightCharged);
1381-
1382- ptV1A->Fill (track.eta (), kInclusive , track.pt () * ((spm.uy * spm.qyA + spm.ux * spm.qxA ) / std::sqrt (std::fabs (spm.corrQQ ))), weight);
1383- ptV1A->Fill (track.eta (), spm.charge , track.pt () * ((spm.uy * spm.qyA + spm.ux * spm.qxA ) / std::sqrt (std::fabs (spm.corrQQ ))), weightCharged);
1384-
1385- ptV1C->Fill (track.eta (), kInclusive , track.pt () * ((spm.uy * spm.qyC + spm.ux * spm.qxC ) / std::sqrt (std::fabs (spm.corrQQ ))), weight);
1386- ptV1C->Fill (track.eta (), spm.charge , track.pt () * ((spm.uy * spm.qyC + spm.ux * spm.qxC ) / std::sqrt (std::fabs (spm.corrQQ ))), weightCharged);
1387-
13881395 fillAllQA<kAfter , kUnidentified >(track);
13891396 if (cfgFillPIDQA) {
13901397 switch (trackPID) {
@@ -1481,47 +1488,66 @@ struct FlowSP {
14811488 }
14821489 } // end of fillPID
14831490
1491+ double drelPxA = track.pt () * ((spm.uy * spm.qyA + spm.ux * spm.qxA ) / std::sqrt (std::fabs (spm.corrQQ )));
1492+ double drelPxC = track.pt () * ((spm.uy * spm.qyC + spm.ux * spm.qxC ) / std::sqrt (std::fabs (spm.corrQQ )));
1493+
1494+ meanPTMap->Fill (track.eta (), track.pt (), spm.wacc [kInclusive ][kUnidentified ] * spm.weff [kInclusive ][kUnidentified ]);
1495+ relPxA->Fill (track.eta (), drelPxA, spm.wacc [kInclusive ][kUnidentified ] * spm.weff [kInclusive ][kUnidentified ]);
1496+ relPxC->Fill (track.eta (), drelPxC, spm.wacc [kInclusive ][kUnidentified ] * spm.weff [kInclusive ][kUnidentified ]);
1497+
1498+ if (spm.charge == kPositive ) {
1499+ meanPTMapPos->Fill (track.eta (), track.pt (), spm.wacc [kPositive ][kUnidentified ] * spm.weff [kPositive ][kUnidentified ]);
1500+ relPxAPos->Fill (track.eta (), drelPxA, spm.wacc [kPositive ][kUnidentified ] * spm.weff [kPositive ][kUnidentified ]);
1501+ relPxCPos->Fill (track.eta (), drelPxC, spm.wacc [kPositive ][kUnidentified ] * spm.weff [kPositive ][kUnidentified ]);
1502+ }
1503+
1504+ if (spm.charge == kNegative ) {
1505+ meanPTMapNeg->Fill (track.eta (), track.pt (), spm.wacc [kNegative ][kUnidentified ] * spm.weff [kNegative ][kUnidentified ]);
1506+ relPxANeg->Fill (track.eta (), drelPxA, spm.wacc [kNegative ][kUnidentified ] * spm.weff [kNegative ][kUnidentified ]);
1507+ relPxCNeg->Fill (track.eta (), drelPxC, spm.wacc [kNegative ][kUnidentified ] * spm.weff [kNegative ][kUnidentified ]);
1508+ }
1509+
14841510 } // end of track loop
14851511
14861512 // Now we want to fill the final relPt histogram
14871513 // Loop over all eta and fill bins
14881514 if (cfgFillMeanPT) {
1489- for (int i = 0 ; i < hRelEtaPt->GetNbinsX (); i++) {
1490- double eta = hRelEtaPt->GetXaxis ()->GetBinCenter (i);
1491-
1492- int bin = hRelEtaPt->FindBin (eta, kInclusive );
1493-
1494- double drelPt = hRelEtaPt->GetBinContent (bin);
1495- double dptV1A = ptV1A->GetBinContent (bin);
1496- double dptV1C = ptV1C->GetBinContent (bin);
1497- if (drelPt)
1498- registry.fill (HIST (" incl/meanPT/meanRelPtA" ), eta, spm.centrality , dptV1A / drelPt, 1 );
1499- if (drelPt)
1500- registry.fill (HIST (" incl/meanPT/meanRelPtC" ), eta, spm.centrality , dptV1C / drelPt, 1 );
1501-
1502- bin = hRelEtaPt->FindBin (eta, kPositive );
1503- double drelPtPos = hRelEtaPt->GetBinContent (bin);
1504- double dptV1APos = ptV1A->GetBinContent (bin);
1505- double dptV1CPos = ptV1C->GetBinContent (bin);
1506- if (drelPtPos)
1507- registry.fill (HIST (" pos/meanPT/meanRelPtA" ), eta, spm.centrality , dptV1APos / drelPtPos, 1 );
1508- if (drelPtPos)
1509- registry.fill (HIST (" pos/meanPT/meanRelPtC" ), eta, spm.centrality , dptV1CPos / drelPtPos, 1 );
1510-
1511- bin = hRelEtaPt->FindBin (eta, kNegative );
1512- double drelPtNeg = hRelEtaPt->GetBinContent (bin);
1513- double dptV1ANeg = ptV1A->GetBinContent (bin);
1514- double dptV1CNeg = ptV1C->GetBinContent (bin);
1515- if (drelPtNeg)
1516- registry.fill (HIST (" neg/meanPT/meanRelPtA" ), eta, spm.centrality , dptV1ANeg / drelPtNeg, 1 );
1517- if (drelPtNeg)
1518- registry.fill (HIST (" neg/meanPT/meanRelPtC" ), eta, spm.centrality , dptV1CNeg / drelPtNeg, 1 );
1515+ int nBinsEta = 8 ;
1516+ for (int etabin = 1 ; etabin <= nBinsEta; etabin++) {
1517+ // eta bin is 1 --> Find centbin!!
1518+ double eta = meanPTMap->GetXaxis ()->GetBinCenter (etabin);
1519+ double meanPt = meanPTMap->GetBinContent (etabin);
1520+ double meanPtPos = meanPTMapPos->GetBinContent (etabin);
1521+ double meanPtNeg = meanPTMapNeg->GetBinContent (etabin);
1522+
1523+ double drelPxA = relPxA->GetBinContent (etabin);
1524+ double drelPxANeg = relPxANeg->GetBinContent (etabin);
1525+ double drelPxAPos = relPxAPos->GetBinContent (etabin);
1526+
1527+ double drelPxC = relPxC->GetBinContent (etabin);
1528+ double drelPxCNeg = relPxCNeg->GetBinContent (etabin);
1529+ double drelPxCPos = relPxCPos->GetBinContent (etabin);
1530+
1531+ if (meanPt != 0 ) {
1532+ registry.fill (HIST (" incl/meanPT/meanRelPtA" ), eta, spm.centrality , drelPxA / meanPt, 1 );
1533+ registry.fill (HIST (" neg/meanPT/meanRelPtA" ), eta, spm.centrality , drelPxANeg / meanPtNeg, 1 );
1534+ registry.fill (HIST (" pos/meanPT/meanRelPtA" ), eta, spm.centrality , drelPxAPos / meanPtPos, 1 );
1535+ registry.fill (HIST (" incl/meanPT/meanRelPtC" ), eta, spm.centrality , drelPxC / meanPt, 1 );
1536+ registry.fill (HIST (" neg/meanPT/meanRelPtC" ), eta, spm.centrality , drelPxCNeg / meanPtNeg, 1 );
1537+ registry.fill (HIST (" pos/meanPT/meanRelPtC" ), eta, spm.centrality , drelPxCPos / meanPtPos, 1 );
1538+ }
15191539 }
15201540 }
15211541
1522- delete hRelEtaPt;
1523- delete ptV1A;
1524- delete ptV1C;
1542+ delete meanPTMap;
1543+ delete meanPTMapPos;
1544+ delete meanPTMapNeg;
1545+ delete relPxA;
1546+ delete relPxANeg;
1547+ delete relPxAPos;
1548+ delete relPxC;
1549+ delete relPxCNeg;
1550+ delete relPxCPos;
15251551 }
15261552
15271553 PROCESS_SWITCH (FlowSP, processData, " Process analysis for non-derived data" , true );
0 commit comments