@@ -183,10 +183,10 @@ struct decay3bodyBuilder {
183183 std::string prefix = " mixingOpts" ;
184184 Configurable<int > n3bodyMixing{" n3bodyMixing" , 0 , " Number of decay3bodys to mix: 0 - value set to maximum bin entry in hDecay3BodyRadiusPhi, > 0 - manual setting" };
185185 Configurable<int > mixingType{" mixingType" , 0 , " 0: mix V0 from one event with bachelor from another, 1: mix pion and bachelor from one event with proton from another, 1: mix proton and bachelor from one event with pion from another " };
186- ConfigurableAxis bins3BodyRadius{" bins3BodyRadius" , {VARIABLE_WIDTH, 0 .0f , 2 .0f , 4 .0f , 7 .0f , 10 .0f , 14 .0f , 18 .0f , 22 .0f , 30 .0f , 40 .0f }, " Mixing bins - 3body radius" };
187- ConfigurableAxis bins3BodyPhi{" bins3BodyPhi" , {VARIABLE_WIDTH, -180 * TMath::Pi () / 180 , -120 * TMath::Pi () / 180 , -60 * TMath::Pi () / 180 , 0 , 60 * TMath::Pi () / 180 , 120 * TMath::Pi () / 180 , 180 * TMath::Pi () / 180 }, " Mixing bins - 3body phi (rad)" };
188- ConfigurableAxis bins3BodyPhiDegree{" bins3BodyPhiDegree" , {VARIABLE_WIDTH, -180 , -120 , -60 , 0 , 60 , 120 , 180 }, " Mixing bins - 3body phi (degree)" };
189- ConfigurableAxis bins3BodyPosZ{" bins3BodyPosZ" , {VARIABLE_WIDTH, -500 .0f , -200 .0f , -100 .0f , -70 .0f , -60 .0f , -50 .0f , -40 .0f , -35 .0f , -30 .0f , -25 .0f , -20 .0f , -15 .0f , -13 .0f , -10 .0f , -8 .0f , -6 .0f , -4 .0f , -2 .0f , 0 .0f , 2 .0f , 4 .0f , 6 .0f , 8 .0f , 10 .0f , 13 .0f , 15 .0f , 20 .0f , 25 .0f , 30 .0f , 35 .0f , 40 .0f , 50 .0f , 60 .0f , 70 .0f , 100 .0f , 200 .0f , 500 .0f }, " 3body SV z position" };
186+ ConfigurableAxis bins3BodyRadius{" mixingOpts. bins3BodyRadius" , {VARIABLE_WIDTH, 0 .0f , 2 .0f , 4 .0f , 7 .0f , 10 .0f , 14 .0f , 18 .0f , 22 .0f , 30 .0f , 40 .0f }, " Mixing bins - 3body radius" };
187+ ConfigurableAxis bins3BodyPhi{" mixingOpts. bins3BodyPhi" , {VARIABLE_WIDTH, -180 * TMath::Pi () / 180 , -120 * TMath::Pi () / 180 , -60 * TMath::Pi () / 180 , 0 , 60 * TMath::Pi () / 180 , 120 * TMath::Pi () / 180 , 180 * TMath::Pi () / 180 }, " Mixing bins - 3body phi (rad)" };
188+ ConfigurableAxis bins3BodyPhiDegree{" mixingOpts. bins3BodyPhiDegree" , {VARIABLE_WIDTH, -180 , -120 , -60 , 0 , 60 , 120 , 180 }, " Mixing bins - 3body phi (degree)" };
189+ ConfigurableAxis bins3BodyPosZ{" mixingOpts. bins3BodyPosZ" , {VARIABLE_WIDTH, -500 .0f , -200 .0f , -100 .0f , -70 .0f , -60 .0f , -50 .0f , -40 .0f , -35 .0f , -30 .0f , -25 .0f , -20 .0f , -15 .0f , -13 .0f , -10 .0f , -8 .0f , -6 .0f , -4 .0f , -2 .0f , 0 .0f , 2 .0f , 4 .0f , 6 .0f , 8 .0f , 10 .0f , 13 .0f , 15 .0f , 20 .0f , 25 .0f , 30 .0f , 35 .0f , 40 .0f , 50 .0f , 60 .0f , 70 .0f , 100 .0f , 200 .0f , 500 .0f }, " 3body SV z position" };
190190 Configurable<bool > selectPVPosZ3bodyMixing{" selectPVPosZ3bodyMixing" , true , " Select same pvPosZ events in case of 3body mixing" };
191191 Configurable<float > maxDeltaPVPosZ3bodyMixing{" maxDeltaPVPosZ3bodyMixing" , 1 ., " max difference between PV z position in case of 3body mixing" };
192192 // SVertexer selections
@@ -464,14 +464,14 @@ struct decay3bodyBuilder {
464464 }
465465
466466 if (doprocessRealDataReduced3bodyMixing == true ) {
467- auto h3bodyCombinationCounter = registry.add <TH1>(" EM /h3bodyCombinationCounter" , " h3bodyCombinationCounter" , HistType::kTH1D , {{4 , 0 .0f , 4 .0f }});
467+ auto h3bodyCombinationCounter = registry.add <TH1>(" Mixing /h3bodyCombinationCounter" , " h3bodyCombinationCounter" , HistType::kTH1D , {{4 , 0 .0f , 4 .0f }});
468468 h3bodyCombinationCounter->GetXaxis ()->SetBinLabel (1 , " total" );
469469 h3bodyCombinationCounter->GetXaxis ()->SetBinLabel (2 , " not same collision" );
470470 h3bodyCombinationCounter->GetXaxis ()->SetBinLabel (3 , " collision VtxZ" );
471471 h3bodyCombinationCounter->GetXaxis ()->SetBinLabel (4 , " bach sign/ID" );
472472 h3bodyCombinationCounter->LabelsOption (" v" );
473- registry.add (" EM /hDecay3BodyRadiusPhi" , " hDecay3BodyRadiusPhi" , HistType::kTH2F , {mixingOpts.bins3BodyRadius , mixingOpts.bins3BodyPhi });
474- registry.add (" EM /hDecay3BodyPosZ" , " hDecay3BodyPosZ" , HistType::kTH1F , {mixingOpts.bins3BodyPosZ });
473+ registry.add (" Mixing /hDecay3BodyRadiusPhi" , " hDecay3BodyRadiusPhi" , HistType::kTH2F , {mixingOpts.bins3BodyRadius , mixingOpts.bins3BodyPhi });
474+ registry.add (" Mixing /hDecay3BodyPosZ" , " hDecay3BodyPosZ" , HistType::kTH1F , {mixingOpts.bins3BodyPosZ });
475475 }
476476 }
477477
@@ -652,8 +652,7 @@ struct decay3bodyBuilder {
652652 return ; // don't do if no request for decay3bodys in place
653653 }
654654
655- // prepare MC containers (not necessarily used)
656- std::vector<mc3Bodyinfo> mc3BodyInfos; // Decay3bodyMCCore information
655+ // prepare MC container (not necessarily used)
657656 std::vector<bool > mcParticleIsReco;
658657
659658 // clear and reserve size for MC info vectors
@@ -983,7 +982,7 @@ struct decay3bodyBuilder {
983982 if (!mEnabledTables [kVtx3BodyDatas ]) {
984983 return ; // don't do if no request for decay3bodys in place
985984 }
986-
985+
987986 // Strictly upper index policy for decay3body objects binned by radius, phi
988987 for (const auto & [decay3body0, decay3body1] : selfPairCombinations (binningType, mixingOpts.n3bodyMixing , -1 , decay3bodys)) {
989988 auto trackPos0 = decay3body0.template track0_as <TRedTracks>();
@@ -1007,13 +1006,13 @@ struct decay3bodyBuilder {
10071006 trackPion1 = trackPos1;
10081007 }
10091008
1010- registry.fill (HIST (" h3bodyCombinationCounter" ), 0.5 );
1009+ registry.fill (HIST (" Mixing/ h3bodyCombinationCounter" ), 0.5 );
10111010
10121011 // only combine if from different event
10131012 if (decay3body0.collisionId () == decay3body1.collisionId ()) {
10141013 continue ;
10151014 }
1016- registry.fill (HIST (" QA/EM /h3bodyCombinationCounter" ), 1.5 );
1015+ registry.fill (HIST (" Mixing /h3bodyCombinationCounter" ), 1.5 );
10171016
10181017 // collision vertex selection
10191018 auto collision0 = decay3body0.template collision_as <TRedCollisions>();
@@ -1027,27 +1026,27 @@ struct decay3bodyBuilder {
10271026 if (mixingOpts.selectPVPosZ3bodyMixing && std::abs (collision0.posZ () - collision1.posZ ()) > mixingOpts.maxDeltaPVPosZ3bodyMixing ) {
10281027 continue ;
10291028 }
1030- registry.fill (HIST (" QA/EM /h3bodyCombinationCounter" ), 2.5 );
1029+ registry.fill (HIST (" Mixing /h3bodyCombinationCounter" ), 2.5 );
10311030
10321031 // Charge selections
10331032 // same magnetic fields --> mix matter with matter
1034- if (std::signbit (magFieldCol0) == std::signbit (magFieldCol1)) {
1033+ if ((magFieldCol0/ std::abs (magFieldCol0)) == (magFieldCol1/ std::abs (magFieldCol1) )) {
10351034 if (trackDeuteron0.sign () != trackDeuteron1.sign ()) {
1036- continue ;
1037- }
1035+ continue ;
1036+ }
10381037 }
10391038 // opposite magnetic fields --> mix matter with anti-matter
1040- if (std::signbit (magFieldCol0) != std::signbit (magFieldCol1)) {
1039+ if ((magFieldCol0/ std::abs (magFieldCol0)) != (magFieldCol1/ std::abs (magFieldCol1) )) {
10411040 if (trackDeuteron0.sign () == trackDeuteron1.sign ()) {
1042- continue ;
1043- }
1041+ continue ;
1042+ }
10441043 }
10451044
10461045 // don't mix 3body with itself
10471046 if ((trackDeuteron0.globalIndex () == trackDeuteron1.globalIndex ()) || (trackProton0.globalIndex () == trackProton1.globalIndex ()) || (trackPion0.globalIndex () == trackPion1.globalIndex ())) {
10481047 continue ;
10491048 }
1050- registry.fill (HIST (" QA/EM /h3bodyCombinationCounter" ), 3.5 );
1049+ registry.fill (HIST (" Mixing /h3bodyCombinationCounter" ), 3.5 );
10511050
10521051 // candidate analysis
10531052 // mix deuteron
@@ -1300,29 +1299,29 @@ struct decay3bodyBuilder {
13001299 soa::Join<aod::RedDecay3Bodys, aod::Red3BodyInfo> const & decay3bodys,
13011300 aod::RedIUTracks const &)
13021301 {
1303- auto xAxis = registry.get <TH2>(HIST (" hDecay3BodyRadiusPhi" ))->GetXaxis ();
1304- auto yAxis = registry.get <TH2>(HIST (" hDecay3BodyRadiusPhi" ))->GetYaxis ();
1302+ auto xAxis = registry.get <TH2>(HIST (" Mixing/ hDecay3BodyRadiusPhi" ))->GetXaxis ();
1303+ auto yAxis = registry.get <TH2>(HIST (" Mixing/ hDecay3BodyRadiusPhi" ))->GetYaxis ();
13051304
13061305 for (const auto & decay3body : decay3bodys) {
13071306 int bin_Radius, bin_Phi;
13081307 if (decay3bodyBuilderOpts.useKFParticle ) {
13091308 bin_Radius = xAxis->FindBin (decay3body.radiusKF ());
13101309 bin_Phi = yAxis->FindBin (decay3body.phiKF ());
1311- registry.fill (HIST (" hDecay3BodyPosZ" ), decay3body.poszKF ());
1310+ registry.fill (HIST (" Mixing/ hDecay3BodyPosZ" ), decay3body.poszKF ());
13121311 } else {
13131312 bin_Radius = xAxis->FindBin (decay3body.radiusDCA ());
13141313 bin_Phi = yAxis->FindBin (decay3body.phiDCA ());
1315- registry.fill (HIST (" hDecay3BodyPosZ" ), decay3body.poszDCA ());
1314+ registry.fill (HIST (" Mixing/ hDecay3BodyPosZ" ), decay3body.poszDCA ());
13161315 }
1317- registry.fill (HIST (" hDecay3BodyRadiusPhi" ), xAxis->GetBinCenter (bin_Radius), yAxis->GetBinCenter (bin_Phi));
1316+ registry.fill (HIST (" Mixing/ hDecay3BodyRadiusPhi" ), xAxis->GetBinCenter (bin_Radius), yAxis->GetBinCenter (bin_Phi));
13181317 }
13191318
13201319 if (decay3bodyBuilderOpts.useKFParticle ) {
1321- Binning3BodyKF binningOnRadPhi {{mixingOpts.bins3BodyRadius , mixingOpts.bins3BodyPhi }, true };
1322- buildMixedCandidates<aod::RedCollisions, aod::RedIUTracks>(decay3bodys, binningOnRadPhi );
1320+ Binning3BodyKF binningOnRadPhiKF {{mixingOpts.bins3BodyRadius , mixingOpts.bins3BodyPhi }, true };
1321+ buildMixedCandidates<aod::RedCollisions, aod::RedIUTracks>(decay3bodys, binningOnRadPhiKF );
13231322 } else {
1324- Binning3BodyDCAfitter binningOnRadPhi {{mixingOpts.bins3BodyRadius , mixingOpts.bins3BodyPhi }, true };
1325- buildMixedCandidates<aod::RedCollisions, aod::RedIUTracks>(decay3bodys, binningOnRadPhi );
1323+ Binning3BodyDCAfitter binningOnRadPhiDCA {{mixingOpts.bins3BodyRadius , mixingOpts.bins3BodyPhi }, true };
1324+ buildMixedCandidates<aod::RedCollisions, aod::RedIUTracks>(decay3bodys, binningOnRadPhiDCA );
13261325 }
13271326 }
13281327
0 commit comments