@@ -532,12 +532,20 @@ class VarManager : public TObject
532532 kEta1 ,
533533 kPhi1 ,
534534 kCharge1 ,
535+ kDCAxy1 ,
536+ kDCAz1 ,
537+ kITSclusterMap1 ,
538+ kTPCnSigmaEl1 ,
535539 kPin_leg1 ,
536540 kTPCnSigmaKa_leg1 ,
537541 kPt2 ,
538542 kEta2 ,
539543 kPhi2 ,
540544 kCharge2 ,
545+ kDCAxy2 ,
546+ kDCAz2 ,
547+ kITSclusterMap2 ,
548+ kTPCnSigmaEl2 ,
541549
542550 // Barrel track variables
543551 kPin ,
@@ -3690,37 +3698,55 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values)
36903698 }
36913699 }
36923700
3693- if constexpr ((pairType == kDecayToEE ) && ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0 )) {
3701+ if constexpr ((pairType == kDecayToEE )) {
3702+ if constexpr ((fillMap & ReducedTrackBarrel) > 0 ) {
3703+ values[kITSclusterMap1 ] = t1.itsClusterMap ();
3704+ values[kITSclusterMap2 ] = t2.itsClusterMap ();
3705+ }
36943706
3695- if (fgUsedVars[kQuadDCAabsXY ] || fgUsedVars[kQuadDCAsigXY ] || fgUsedVars[kQuadDCAabsZ ] || fgUsedVars[kQuadDCAsigZ ] || fgUsedVars[kQuadDCAsigXYZ ] || fgUsedVars[kSignQuadDCAsigXY ]) {
3696- // Quantities based on the barrel tables
3707+ if constexpr ((fillMap & ReducedTrackBarrelPID) > 0 ) {
3708+ values[kTPCnSigmaEl1 ] = t1.tpcNSigmaEl ();
3709+ values[kTPCnSigmaEl2 ] = t2.tpcNSigmaEl ();
3710+ }
3711+
3712+ if constexpr (((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0 )) {
36973713 double dca1XY = t1.dcaXY ();
36983714 double dca2XY = t2.dcaXY ();
36993715 double dca1Z = t1.dcaZ ();
37003716 double dca2Z = t2.dcaZ ();
3701- double dca1sigXY = dca1XY / std::sqrt (t1.cYY ());
3702- double dca2sigXY = dca2XY / std::sqrt (t2.cYY ());
3703- double dca1sigZ = dca1Z / std::sqrt (t1.cZZ ());
3704- double dca2sigZ = dca2Z / std::sqrt (t2.cZZ ());
3705-
3706- values[kQuadDCAabsXY ] = std::sqrt ((dca1XY * dca1XY + dca2XY * dca2XY) / 2 );
3707- values[kQuadDCAsigXY ] = std::sqrt ((dca1sigXY * dca1sigXY + dca2sigXY * dca2sigXY) / 2 );
3708- values[kQuadDCAabsZ ] = std::sqrt ((dca1Z * dca1Z + dca2Z * dca2Z) / 2 );
3709- values[kQuadDCAsigZ ] = std::sqrt ((dca1sigZ * dca1sigZ + dca2sigZ * dca2sigZ) / 2 );
3710- values[kSignQuadDCAsigXY ] = t1.sign () * t2.sign () * TMath::Sign (1 ., dca1sigXY) * TMath::Sign (1 ., dca2sigXY) * std::sqrt ((dca1sigXY * dca1sigXY + dca2sigXY * dca2sigXY) / 2 );
37113717
3712- double det1 = t1.cYY () * t1.cZZ () - t1.cZY () * t1.cZY ();
3713- double det2 = t2.cYY () * t2.cZZ () - t2.cZY () * t2.cZY ();
3714- if ((det1 < 0 ) || (det2 < 0 )) {
3715- values[kQuadDCAsigXYZ ] = -999 ;
3716- } else {
3717- double chi2t1 = (dca1XY * dca1XY * t1.cZZ () + dca1Z * dca1Z * t1.cYY () - 2 . * dca1XY * dca1Z * t1.cZY ()) / det1;
3718- double chi2t2 = (dca2XY * dca2XY * t2.cZZ () + dca2Z * dca2Z * t2.cYY () - 2 . * dca2XY * dca2Z * t2.cZY ()) / det2;
3718+ values[kDCAxy1 ] = dca1XY;
3719+ values[kDCAz1 ] = dca1Z;
3720+ values[kDCAxy2 ] = dca2XY;
3721+ values[kDCAz2 ] = dca2Z;
3722+
3723+ if (fgUsedVars[kQuadDCAabsXY ] || fgUsedVars[kQuadDCAsigXY ] || fgUsedVars[kQuadDCAabsZ ] || fgUsedVars[kQuadDCAsigZ ] || fgUsedVars[kQuadDCAsigXYZ ] || fgUsedVars[kSignQuadDCAsigXY ]) {
3724+ // Quantities based on the barrel tables
3725+
3726+ double dca1sigXY = dca1XY / std::sqrt (t1.cYY ());
3727+ double dca2sigXY = dca2XY / std::sqrt (t2.cYY ());
3728+ double dca1sigZ = dca1Z / std::sqrt (t1.cZZ ());
3729+ double dca2sigZ = dca2Z / std::sqrt (t2.cZZ ());
3730+
3731+ values[kQuadDCAabsXY ] = std::sqrt ((dca1XY * dca1XY + dca2XY * dca2XY) / 2 );
3732+ values[kQuadDCAsigXY ] = std::sqrt ((dca1sigXY * dca1sigXY + dca2sigXY * dca2sigXY) / 2 );
3733+ values[kQuadDCAabsZ ] = std::sqrt ((dca1Z * dca1Z + dca2Z * dca2Z) / 2 );
3734+ values[kQuadDCAsigZ ] = std::sqrt ((dca1sigZ * dca1sigZ + dca2sigZ * dca2sigZ) / 2 );
3735+ values[kSignQuadDCAsigXY ] = t1.sign () * t2.sign () * TMath::Sign (1 ., dca1sigXY) * TMath::Sign (1 ., dca2sigXY) * std::sqrt ((dca1sigXY * dca1sigXY + dca2sigXY * dca2sigXY) / 2 );
3736+
3737+ double det1 = t1.cYY () * t1.cZZ () - t1.cZY () * t1.cZY ();
3738+ double det2 = t2.cYY () * t2.cZZ () - t2.cZY () * t2.cZY ();
3739+ if ((det1 < 0 ) || (det2 < 0 )) {
3740+ values[kQuadDCAsigXYZ ] = -999 ;
3741+ } else {
3742+ double chi2t1 = (dca1XY * dca1XY * t1.cZZ () + dca1Z * dca1Z * t1.cYY () - 2 . * dca1XY * dca1Z * t1.cZY ()) / det1;
3743+ double chi2t2 = (dca2XY * dca2XY * t2.cZZ () + dca2Z * dca2Z * t2.cYY () - 2 . * dca2XY * dca2Z * t2.cZY ()) / det2;
37193744
3720- double dca1sigXYZ = std::sqrt (std::abs (chi2t1) / 2 .);
3721- double dca2sigXYZ = std::sqrt (std::abs (chi2t2) / 2 .);
3745+ double dca1sigXYZ = std::sqrt (std::abs (chi2t1) / 2 .);
3746+ double dca2sigXYZ = std::sqrt (std::abs (chi2t2) / 2 .);
37223747
3723- values[kQuadDCAsigXYZ ] = std::sqrt ((dca1sigXYZ * dca1sigXYZ + dca2sigXYZ * dca2sigXYZ) / 2 );
3748+ values[kQuadDCAsigXYZ ] = std::sqrt ((dca1sigXYZ * dca1sigXYZ + dca2sigXYZ * dca2sigXYZ) / 2 );
3749+ }
37243750 }
37253751 }
37263752 }
@@ -4577,9 +4603,9 @@ void VarManager::FillPairVertexing(C const& collision, T const& t1, T const& t2,
45774603 values[kVertexingTauzErr ] = values[kVertexingLzErr ] * v12.M () / (TMath::Abs (v12.Pz ()) * o2::constants::physics::LightSpeedCm2NS);
45784604 values[kVertexingTauxyErr ] = values[kVertexingLxyErr ] * v12.M () / (v12.Pt () * o2::constants::physics::LightSpeedCm2NS);
45794605
4580- values[kCosPointingAngle ] = ((collision.posX () - secondaryVertex[ 0 ] ) * v12.Px () +
4581- (collision.posY () - secondaryVertex[ 1 ] ) * v12.Py () +
4582- (collision.posZ () - secondaryVertex[ 2 ] ) * v12.Pz ()) /
4606+ values[kCosPointingAngle ] = ((secondaryVertex[ 0 ] - collision.posX ()) * v12.Px () +
4607+ (secondaryVertex[ 1 ] - collision.posY ()) * v12.Py () +
4608+ (secondaryVertex[ 2 ] - collision.posZ ()) * v12.Pz ()) /
45834609 (v12.P () * values[VarManager::kVertexingLxyz ]);
45844610 // Decay length defined as in Run 2
45854611 values[kVertexingLzProjected ] = ((secondaryVertex[2 ] - collision.posZ ()) * v12.Pz ()) / TMath::Sqrt (v12.Pz () * v12.Pz ());
@@ -4995,9 +5021,9 @@ void VarManager::FillTripletVertexing(C const& collision, T const& t1, T const&
49955021 values[kVertexingTauzErr ] = values[kVertexingLzErr ] * v123.M () / (TMath::Abs (v123.Pz ()) * o2::constants::physics::LightSpeedCm2NS);
49965022 values[kVertexingTauxyErr ] = values[kVertexingLxyErr ] * v123.M () / (v123.Pt () * o2::constants::physics::LightSpeedCm2NS);
49975023
4998- values[kCosPointingAngle ] = ((collision.posX () - secondaryVertex[ 0 ] ) * v123.Px () +
4999- (collision.posY () - secondaryVertex[ 1 ] ) * v123.Py () +
5000- (collision.posZ () - secondaryVertex[ 2 ] ) * v123.Pz ()) /
5024+ values[kCosPointingAngle ] = ((secondaryVertex[ 0 ] - collision.posX ()) * v123.Px () +
5025+ (secondaryVertex[ 1 ] - collision.posY ()) * v123.Py () +
5026+ (secondaryVertex[ 2 ] - collision.posZ ()) * v123.Pz ()) /
50015027 (v123.P () * values[VarManager::kVertexingLxyz ]);
50025028 // run 2 definitions: Decay length projected onto the momentum vector of the candidate
50035029 values[kVertexingLzProjected ] = (secondaryVertex[2 ] - collision.posZ ()) * v123.Pz ();
@@ -5256,9 +5282,9 @@ void VarManager::FillDileptonTrackVertexing(C const& collision, T1 const& lepton
52565282 values[kVertexingTauxyErr ] = values[kVertexingLxyErr ] * v123.M () / (v123.Pt () * o2::constants::physics::LightSpeedCm2NS);
52575283
52585284 if (fgUsedVars[kCosPointingAngle ] && fgUsedVars[kVertexingLxyz ]) {
5259- values[VarManager::kCosPointingAngle ] = ((collision.posX () - secondaryVertex[ 0 ] ) * v123.Px () +
5260- (collision.posY () - secondaryVertex[ 1 ] ) * v123.Py () +
5261- (collision.posZ () - secondaryVertex[ 2 ] ) * v123.Pz ()) /
5285+ values[VarManager::kCosPointingAngle ] = ((secondaryVertex[ 0 ] - collision.posX ()) * v123.Px () +
5286+ (secondaryVertex[ 1 ] - collision.posY ()) * v123.Py () +
5287+ (secondaryVertex[ 2 ] - collision.posZ ()) * v123.Pz ()) /
52625288 (v123.P () * values[VarManager::kVertexingLxyz ]);
52635289 }
52645290 // run 2 definitions: Lxy projected onto the momentum vector of the candidate
@@ -6283,9 +6309,9 @@ void VarManager::FillDileptonTrackTrackVertexing(C const& collision, T1 const& l
62836309 values[kVertexingTauzErr ] = values[kVertexingLzErr ] * v1234.M () / (TMath::Abs (v1234.Pz ()) * o2::constants::physics::LightSpeedCm2NS);
62846310 values[kVertexingTauxyErr ] = values[kVertexingLxyErr ] * v1234.M () / (v1234.Pt () * o2::constants::physics::LightSpeedCm2NS);
62856311
6286- values[kCosPointingAngle ] = ((collision.posX () - secondaryVertex[ 0 ] ) * v1234.Px () +
6287- (collision.posY () - secondaryVertex[ 1 ] ) * v1234.Py () +
6288- (collision.posZ () - secondaryVertex[ 2 ] ) * v1234.Pz ()) /
6312+ values[kCosPointingAngle ] = ((secondaryVertex[ 0 ] - collision.posX ()) * v1234.Px () +
6313+ (secondaryVertex[ 1 ] - collision.posY ()) * v1234.Py () +
6314+ (secondaryVertex[ 2 ] - collision.posZ ()) * v1234.Pz ()) /
62896315 (v1234.P () * values[VarManager::kVertexingLxyz ]);
62906316 // // run 2 definitions: Decay length projected onto the momentum vector of the candidate
62916317 values[kVertexingLzProjected ] = (secondaryVertex[2 ] - collision.posZ ()) * v1234.Pz ();
0 commit comments