//
// class implements pair of particles and taking care of caluclation (almost)
// all of pair properties (Qinv, InvMass,...)
+//
// more info: http://alisoft.cern.ch/people/skowron/analyzer/index.html
//
////////////////////////////////////////////////////////////////////////////
#include "AliHBTParticle.h"
#include "AliHBTWeights.h"
+#include "AliHBTTrackPoints.h"
ClassImp(AliHBTPair)
}
/************************************************************************/
+AliHBTPair::AliHBTPair(const AliHBTPair& in):
+ TObject(in),
+ fPart1(0x0),
+ fPart2(0x0),
+ fSwapedPair(0x0),
+ fQSideCMSLC(0.0),
+ fQSideCMSLCNotCalc(kTRUE),
+ fQOutCMSLC(0.0),
+ fQOutCMSLCNotCalc(kTRUE),
+ fQLongCMSLC(0.0),
+ fQLongCMSLCNotCalc(kTRUE),
+ fQInv(0.0),
+ fQInvNotCalc(kTRUE),
+ fInvMass(0.0),
+ fInvMassNotCalc(kTRUE),
+ fKt(0.0),
+ fKtNotCalc(kTRUE),
+ fKStar(0.0),
+ fKStarNotCalc(kTRUE),
+ fPInv(0.0),
+ fQSide(0.0),
+ fOut(0.0),
+ fQLong(0.0),
+ fMt(0.0),
+ fMtNotCalc(kTRUE),
+ fInvMassSqr(0.0),
+ fMassSqrNotCalc(kTRUE),
+ fQInvL(0.0),
+ fQInvLNotCalc(kTRUE),
+ fWeight(0.0),
+ fWeightNotCalc(kTRUE),
+ fPxSum(0.0),
+ fPySum(0.0),
+ fPzSum(0.0),
+ fESum(0.0),
+ fSumsNotCalc(kTRUE),
+ fPxDiff(0.0),
+ fPyDiff(0.0),
+ fPzDiff(0.0),
+ fEDiff(0.0),
+ fDiffsNotCalc(kTRUE),
+ fGammaCMSLC(0.0),
+ fGammaCMSLCNotCalc(kTRUE),
+ fChanged(kTRUE)
+{
+ //cpy constructor
+ in.Copy(*this);
+}
+/************************************************************************/
+
+AliHBTPair& AliHBTPair::operator=(const AliHBTPair& in)
+{
+ //Assigment operator
+ in.Copy(*this);
+ return *this;
+}
+/************************************************************************/
Double_t AliHBTPair::GetInvMass()
{
{
CalculateSums();
- Double_t Ptrans = fPxSum*fPxSum + fPySum*fPySum;
- Double_t Mtrans = fESum*fESum - fPzSum*fPzSum;
- Double_t Pinv = TMath::Sqrt(Mtrans - Ptrans);
+ Double_t ptrans = fPxSum*fPxSum + fPySum*fPySum;
+ Double_t mtrans = fESum*fESum - fPzSum*fPzSum;
+ Double_t pinv = TMath::Sqrt(mtrans - ptrans);
- Double_t Q = (fPart1->GetMass()*fPart1->GetMass() - fPart2->GetMass()*fPart2->GetMass())/Pinv;
+ Double_t q = (fPart1->GetMass()*fPart1->GetMass() - fPart2->GetMass()*fPart2->GetMass())/pinv;
CalculateQInvL();
- Q = Q*Q - fQInvL;
- if ( Q < 0)
+ q = q*q - fQInvL;
+ if ( q < 0)
{
- Info("GetKStar","Q = %f",Q);
+ Info("GetKStar","q = %f",q);
fPart1->Print();
fPart2->Print();
- Q = TMath::Abs(Q);
+ q = TMath::Abs(q);
}
- Q = TMath::Sqrt(Q);
- fKStar = Q/2.;
+ q = TMath::Sqrt(q);
+ fKStar = q/2.;
fKStarNotCalc = kFALSE;
}
return fKStar;
}
return fWeight;
}
+
+/************************************************************************/
+
+Double_t AliHBTPair::GetAvarageDistance()
+{
+ //returns avarage distance between two tracks in range
+ //as defined in Track-Points of AliHBTParticle
+ //returns negative value if error uccured f.g. tracks do not have track-points
+ AliHBTTrackPoints* tpts1 = fPart1->GetTrackPoints();
+ if ( tpts1 == 0x0)
+ {//it could be simulated pair
+// Warning("GetValue","Track 1 does not have Track Points. Pair NOT Passed.");
+ return -1.0;
+ }
+
+ AliHBTTrackPoints* tpts2 = fPart2->GetTrackPoints();
+ if ( tpts2 == 0x0)
+ {
+// Warning("GetValue","Track 2 does not have Track Points. Pair NOT Passed.");
+ return -1.0;
+ }
+
+ return tpts1->AvarageDistance(*tpts2);
+}