@@ -118,11 +118,16 @@ struct lambdalambda {
118118 Configurable<float > cfgV0V0RapMax{" cfgV0V0RapMax" , 0.5 , " rapidity selection for V0V0" };
119119
120120 Configurable<bool > cfgV0V0Sel{" cfgV0V0Sel" , false , " application of V0V0 selections" };
121- Configurable<float > cfgV0V0Radius{" cfgV0V0Radius" , 1.0 , " maximum radius of v0v0" };
122- Configurable<float > cfgV0V0CPA{" cfgV0V0CPA" , 0.6 , " minimum CPA of v0v0" };
123- Configurable<float > cfgV0V0Distance{" cfgV0V0Distance" , 1 , " minimum distance of v0v0" };
124- Configurable<float > cfgV0V0DCAR{" cfgV0V0DCAR" , 1.0 , " maximum DCA of v0v0 R" };
125- Configurable<float > cfgV0V0DCAZ{" cfgV0V0DCAZ" , 1.0 , " maximum DCA of v0v0 Z" };
121+
122+ Configurable<float > cfgV0V0RadiusMin{" cfgV0V0RadiusMin" , 1.0 , " maximum radius of v0v0" };
123+ Configurable<float > cfgV0V0CPAMin{" cfgV0V0CPAMin" , 0.6 , " minimum CPA of v0v0" };
124+ Configurable<float > cfgV0V0DistanceMin{" cfgV0V0DistanceMin" , 1 , " minimum distance of v0v0" };
125+ Configurable<float > cfgV0V0DCAMin{" cfgV0V0DCAMin" , 1.0 , " maximum DCA of v0v0 R" };
126+
127+ Configurable<float > cfgV0V0RadiusMax{" cfgV0V0RadiusMax" , 1.0 , " maximum radius of v0v0" };
128+ Configurable<float > cfgV0V0CPAMax{" cfgV0V0CPAMax" , 0.6 , " maximum CPA of v0v0" };
129+ Configurable<float > cfgV0V0DistanceMax{" cfgV0V0DistanceMax" , 1 , " maximum distance of v0v0" };
130+ Configurable<float > cfgV0V0DCAMax{" cfgV0V0DCAMax" , 1.0 , " maximum DCA of v0v0 R" };
126131
127132 Configurable<bool > cfgEffCor{" cfgEffCor" , false , " flag to apply efficiency correction" };
128133 Configurable<std::string> cfgEffCorPath{" cfgEffCorPath" , " " , " path for pseudo efficiency correction" };
@@ -289,22 +294,28 @@ struct lambdalambda {
289294 template <typename V01, typename V02>
290295 bool isSelectedV0V0 (V01 const & v01, V02 const & v02)
291296 {
292- if (std::sqrt (getDCAofV0V0 (v01, v02).perp2 ()) > cfgV0V0DCAR)
297+ if (getDCAofV0V0 (v01, v02) > cfgV0V0DCAMax)
298+ return false ;
299+ if (getDCAofV0V0 (v01, v02) < cfgV0V0DCAMin)
293300 return false ;
294- if (getDCAofV0V0 (v01, v02). z () > cfgV0V0DCAZ )
301+ if (getCPA (v01, v02) > cfgV0V0CPAMax )
295302 return false ;
296- if (getCPA (v01, v02) < cfgV0V0CPA )
303+ if (getCPA (v01, v02) < cfgV0V0CPAMin )
297304 return false ;
298- if (getDistance (v01, v02) > cfgV0V0Distance )
305+ if (getDistance (v01, v02) > cfgV0V0DistanceMax )
299306 return false ;
300- if (getRadius (v01, v02) > cfgV0V0Radius)
307+ if (getDistance (v01, v02) < cfgV0V0DistanceMin)
308+ return false ;
309+ if (getRadius (v01, v02) > cfgV0V0RadiusMax)
310+ return false ;
311+ if (getRadius (v01, v02) < cfgV0V0RadiusMin)
301312 return false ;
302313
303314 return true ;
304315 }
305316
306317 template <typename V01, typename V02>
307- ROOT::Math::XYZVector getDCAofV0V0 (V01 const & v01, V02 const & v02)
318+ float getDCAofV0V0 (V01 const & v01, V02 const & v02)
308319 {
309320 ROOT::Math::XYZVector v01pos, v02pos, v01mom, v02mom;
310321 v01pos.SetXYZ (v01.x (), v01.y (), v01.z ());
@@ -315,7 +326,7 @@ struct lambdalambda {
315326 ROOT::Math::XYZVector posdiff = v02pos - v01pos;
316327 ROOT::Math::XYZVector cross = v01mom.Cross (v02mom);
317328 ROOT::Math::XYZVector dcaVec = (posdiff.Dot (cross) / cross.Mag2 ()) * cross;
318- return dcaVec;
329+ return std::sqrt ( dcaVec. Mag2 ()) ;
319330 }
320331
321332 template <typename V01, typename V02>
@@ -445,32 +456,27 @@ struct lambdalambda {
445456 histos.fill (HIST (" Radius_V0V0_full" ), RecoV0V0.M (), RecoV0V0.Pt (), getRadius (v01, v02), V01Tag + V02Tag);
446457 histos.fill (HIST (" CPA_V0V0_full" ), RecoV0V0.M (), RecoV0V0.Pt (), getCPA (v01, v02), V01Tag + V02Tag);
447458 histos.fill (HIST (" Distance_V0V0_full" ), RecoV0V0.M (), RecoV0V0.Pt (), getDistance (v01, v02), V01Tag + V02Tag);
448- histos.fill (HIST (" DCAR_V0V0_full" ), RecoV0V0.M (), RecoV0V0.Pt (), std::sqrt (getDCAofV0V0 (v01, v02).perp2 ()), V01Tag + V02Tag);
449- histos.fill (HIST (" DCAZ_V0V0_full" ), RecoV0V0.M (), RecoV0V0.Pt (), getDCAofV0V0 (v01, v02).z (), V01Tag + V02Tag);
459+ histos.fill (HIST (" DCA_V0V0_full" ), RecoV0V0.M (), RecoV0V0.Pt (), getDCAofV0V0 (v01, v02), V01Tag + V02Tag);
450460
451461 if (isSelectedV0V0 (v01, v02)) {
452462 histos.fill (HIST (" Radius_V0V0_sel" ), RecoV0V0.M (), RecoV0V0.Pt (), getRadius (v01, v02), V01Tag + V02Tag);
453463 histos.fill (HIST (" CPA_V0V0_sel" ), RecoV0V0.M (), RecoV0V0.Pt (), getCPA (v01, v02), V01Tag + V02Tag);
454464 histos.fill (HIST (" Distance_V0V0_sel" ), RecoV0V0.M (), RecoV0V0.Pt (), getDistance (v01, v02), V01Tag + V02Tag);
455- histos.fill (HIST (" DCAR_V0V0_sel" ), RecoV0V0.M (), RecoV0V0.Pt (), std::sqrt (getDCAofV0V0 (v01, v02).perp2 ()), V01Tag + V02Tag);
456- histos.fill (HIST (" DCAZ_V0V0_sel" ), RecoV0V0.M (), RecoV0V0.Pt (), getDCAofV0V0 (v01, v02).z (), V01Tag + V02Tag);
465+ histos.fill (HIST (" DCA_V0V0_sel" ), RecoV0V0.M (), RecoV0V0.Pt (), getDCAofV0V0 (v01, v02), V01Tag + V02Tag);
457466 IsSelected = true ;
458467 }
459468
460469 if (doprocessDataSame) {
461470 histos.fill (HIST (" h_InvMass_same" ), RecoV0V0.M (), RecoV0V0.Pt (), centrality, V01Tag + V02Tag);
462471 if (cfgV0V0Sel && isSelectedV0V0 (v01, v02)) {
463472 histos.fill (HIST (" h_InvMass_same_sel" ), RecoV0V0.M (), RecoV0V0.Pt (), centrality, V01Tag + V02Tag);
464- }
465- if (cfgRotBkg) {
466- for (int nr = 0 ; nr < cfgNRotBkg; nr++) {
467- auto RanPhi = rn->Uniform (o2::constants::math::PI * 5.0 / 6.0 , o2::constants::math::PI * 7.0 / 6.0 );
468- RanPhi += RecoV02.Phi ();
469- RecoV02Rot = ROOT::Math::PxPyPzMVector (RecoV02.Pt () * std::cos (RanPhi), RecoV02.Pt () * std::sin (RanPhi), RecoV02.Pz (), RecoV02.M ());
470- RecoV0V0Rot = RecoV01 + RecoV02Rot;
471- histos.fill (HIST (" h_InvMass_rot" ), RecoV0V0Rot.M (), RecoV0V0Rot.Pt (), centrality, V01Tag + V02Tag);
472- if (cfgV0V0Sel && isSelectedV0V0 (v01, v02)) {
473- histos.fill (HIST (" h_InvMass_rot_sel" ), RecoV0V0Rot.M (), RecoV0V0Rot.Pt (), centrality, V01Tag + V02Tag);
473+ if (cfgRotBkg) {
474+ for (int nr = 0 ; nr < cfgNRotBkg; nr++) {
475+ auto RanPhi = rn->Uniform (o2::constants::math::PI * 5.0 / 6.0 , o2::constants::math::PI * 7.0 / 6.0 );
476+ RanPhi += RecoV02.Phi ();
477+ RecoV02Rot = ROOT::Math::PxPyPzMVector (RecoV02.Pt () * std::cos (RanPhi), RecoV02.Pt () * std::sin (RanPhi), RecoV02.Pz (), RecoV02.M ());
478+ RecoV0V0Rot = RecoV01 + RecoV02Rot;
479+ histos.fill (HIST (" h_InvMass_rot" ), RecoV0V0Rot.M (), RecoV0V0Rot.Pt (), centrality, V01Tag + V02Tag);
474480 }
475481 }
476482 }
0 commit comments