@@ -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" };
@@ -181,6 +186,8 @@ struct lambdalambda {
181186 histos.add (" h_InvMass_mixed_sel" , " " , {HistType::kTHnSparseF , {massAxis, ptAxis, centAxis, combAxis}});
182187 histos.add (" h_InvMass_rot_sel" , " " , {HistType::kTHnSparseF , {massAxis, ptAxis, centAxis, combAxis}});
183188
189+
190+
184191 if (cfgQAv0) {
185192 histos.add (" QA/CentDist" , " " , {HistType::kTH1F , {centQaAxis}});
186193 histos.add (" QA/PVzDist" , " " , {HistType::kTH1F , {PVzQaAxis}});
@@ -289,22 +296,28 @@ struct lambdalambda {
289296 template <typename V01, typename V02>
290297 bool isSelectedV0V0 (V01 const & v01, V02 const & v02)
291298 {
292- if (std::sqrt ( getDCAofV0V0 (v01, v02). perp2 ()) > cfgV0V0DCAR )
299+ if (getDCAofV0V0 (v01, v02) > cfgV0V0DCAMax )
293300 return false ;
294- if (getDCAofV0V0 (v01, v02). z () > cfgV0V0DCAZ )
301+ if (getDCAofV0V0 (v01, v02) < cfgV0V0DCAMin )
295302 return false ;
296- if (getCPA (v01, v02) < cfgV0V0CPA )
303+ if (getCPA (v01, v02) > cfgV0V0CPAMax )
297304 return false ;
298- if (getDistance (v01, v02) > cfgV0V0Distance )
305+ if (getCPA (v01, v02) < cfgV0V0CPAMin )
299306 return false ;
300- if (getRadius (v01, v02) > cfgV0V0Radius)
307+ if (getDistance (v01, v02) > cfgV0V0DistanceMax)
308+ return false ;
309+ if (getDistance (v01, v02) < cfgV0V0DistanceMin)
310+ return false ;
311+ if (getRadius (v01, v02) > cfgV0V0RadiusMax)
312+ return false ;
313+ if (getRadius (v01, v02) < cfgV0V0RadiusMin)
301314 return false ;
302315
303316 return true ;
304317 }
305318
306319 template <typename V01, typename V02>
307- ROOT::Math::XYZVector getDCAofV0V0 (V01 const & v01, V02 const & v02)
320+ float getDCAofV0V0 (V01 const & v01, V02 const & v02)
308321 {
309322 ROOT::Math::XYZVector v01pos, v02pos, v01mom, v02mom;
310323 v01pos.SetXYZ (v01.x (), v01.y (), v01.z ());
@@ -315,7 +328,7 @@ struct lambdalambda {
315328 ROOT::Math::XYZVector posdiff = v02pos - v01pos;
316329 ROOT::Math::XYZVector cross = v01mom.Cross (v02mom);
317330 ROOT::Math::XYZVector dcaVec = (posdiff.Dot (cross) / cross.Mag2 ()) * cross;
318- return dcaVec;
331+ return std::sqrt ( dcaVec. Mag2 ()) ;
319332 }
320333
321334 template <typename V01, typename V02>
@@ -445,32 +458,27 @@ struct lambdalambda {
445458 histos.fill (HIST (" Radius_V0V0_full" ), RecoV0V0.M (), RecoV0V0.Pt (), getRadius (v01, v02), V01Tag + V02Tag);
446459 histos.fill (HIST (" CPA_V0V0_full" ), RecoV0V0.M (), RecoV0V0.Pt (), getCPA (v01, v02), V01Tag + V02Tag);
447460 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);
461+ histos.fill (HIST (" DCA_V0V0_full" ), RecoV0V0.M (), RecoV0V0.Pt (), getDCAofV0V0 (v01, v02), V01Tag + V02Tag);
450462
451463 if (isSelectedV0V0 (v01, v02)) {
452464 histos.fill (HIST (" Radius_V0V0_sel" ), RecoV0V0.M (), RecoV0V0.Pt (), getRadius (v01, v02), V01Tag + V02Tag);
453465 histos.fill (HIST (" CPA_V0V0_sel" ), RecoV0V0.M (), RecoV0V0.Pt (), getCPA (v01, v02), V01Tag + V02Tag);
454466 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);
467+ histos.fill (HIST (" DCA_V0V0_sel" ), RecoV0V0.M (), RecoV0V0.Pt (), getDCAofV0V0 (v01, v02), V01Tag + V02Tag);
457468 IsSelected = true ;
458469 }
459470
460471 if (doprocessDataSame) {
461472 histos.fill (HIST (" h_InvMass_same" ), RecoV0V0.M (), RecoV0V0.Pt (), centrality, V01Tag + V02Tag);
462473 if (cfgV0V0Sel && isSelectedV0V0 (v01, v02)) {
463474 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);
475+ if (cfgRotBkg) {
476+ for (int nr = 0 ; nr < cfgNRotBkg; nr++) {
477+ auto RanPhi = rn->Uniform (o2::constants::math::PI * 5.0 / 6.0 , o2::constants::math::PI * 7.0 / 6.0 );
478+ RanPhi += RecoV02.Phi ();
479+ RecoV02Rot = ROOT::Math::PxPyPzMVector (RecoV02.Pt () * std::cos (RanPhi), RecoV02.Pt () * std::sin (RanPhi), RecoV02.Pz (), RecoV02.M ());
480+ RecoV0V0Rot = RecoV01 + RecoV02Rot;
481+ histos.fill (HIST (" h_InvMass_rot" ), RecoV0V0Rot.M (), RecoV0V0Rot.Pt (), centrality, V01Tag + V02Tag);
474482 }
475483 }
476484 }
0 commit comments