3 #include "AliKFParticle.h" 18 fdcaBetweenPhotons(1),
36 fMCLabel(kf->GetMCLabel()),
38 fOpeningAngle(kf->GetOpeningAngle()),
39 fAlpha(kf->GetAlpha()),
41 fdcaBetweenPhotons(100),
48 SetPxPyPzE(kf->GetPx(),kf->GetPy(),kf->GetPz(),kf->GetE());
74 SetPxPyPzE(y1->Px()+y2->Px(),y1->Py()+y2->Py(),y1->Pz()+y2->Pz(),y1->E()+y2->E());
77 TVector3 v1(y1->Px(),y1->Py(),y1->Pz());
78 TVector3 v2(y2->Px(),y2->Py(),y2->Pz());
83 if((y1->E()+y2->E()) != 0){
84 fAlpha=(y1->E()-y2->E())/(y1->E()+y2->E());
110 SetPxPyPzE(meson->Px()+gamma->Px(),meson->Py()+gamma->Py(),meson->Pz()+gamma->Pz(),meson->E()+gamma->E());
113 TVector3 v1(meson->Px(),meson->Py(),meson->Pz());
114 TVector3 v2(gamma->Px(),gamma->Py(),gamma->Pz());
122 if((meson->E()+gamma->E()) != 0){
123 fAlpha=(meson->E()-gamma->E())/(meson->E()+gamma->E());
150 SetPxPyPzE(meson1->Px()+meson2->Px(),meson1->Py()+meson2->Py(),meson1->Pz()+meson2->Pz(),meson1->E()+meson2->E());
153 TVector3 v1(meson1->Px(),meson1->Py(),meson1->Pz());
154 TVector3 v2(meson2->Px(),meson2->Py(),meson2->Pz());
162 if((meson1->E()+meson2->E()) != 0){
163 fAlpha=(meson1->E()-meson2->E())/(meson1->E()+meson2->E());
180 if(!mcEvent){AliError(
"MCEvent not defined");
return 0x0;}
193 if(part->GetPdgCode()==pdgcode){
207 TVector3 n = b.Cross(d);
208 TVector3 nn = n.Unit();
214 dist = TMath::Abs((e.Cross(d)).
Mag())/TMath::Abs(d.Mag());
220 dist = TMath::Abs(n.Dot(
c-a))/TMath::Abs(n.Mag());
221 Double_t lambda = (b.Dot(d) * (a-
c).
Dot(d) - d.Dot(d) * (a-
c).
Dot(b))/(b.Dot(b) * d.Dot(d) - TMath::Power(b.Dot(d),2));
222 Double_t mu = ((a-
c).
Dot(d) * b.Dot(b) - (a-
c).
Dot(b) * b.Dot(d) )/(b.Dot(b) * d.Dot(d) - TMath::Power(b.Dot(d),2));
224 TVector3 S1 = a + lambda* b;
225 TVector3 S2 =
c + mu* d;
226 TVector3 Prod = S1 + 0.5*dist*(S2-S1).Unit();
227 prodPoint[0] = Prod(0);
228 prodPoint[1] = Prod(1);
229 prodPoint[2] = Prod(2);
232 if (dist > 1000) dist = 999.;
239 Double_t primCo[3] = {primVertex->GetX(),primVertex->GetY(),primVertex->GetZ()};
241 Double_t absoluteP = TMath::Sqrt(TMath::Power(Px(),2) + TMath::Power(Py(),2) + TMath::Power(Pz(),2));
242 Double_t p[3] = {Px()/absoluteP,Py()/absoluteP,Pz()/absoluteP};
249 Double_t Lambda = - (CP[0]*p[0]+CP[1]*p[1]+CP[2]*p[2])/(p[0]*p[0]+p[1]*p[1]+p[2]*p[2]);
256 fdcaRPrimVtx = TMath::Sqrt( TMath::Power(primCo[0]-S[0],2) + TMath::Power(primCo[1]-S[1],2));
271 if (photonQA1 == 0 || photonQA2 == 0){
275 if (photonQA1 == 1 && photonQA2 == 1){
279 if (photonQA1 == 2 && photonQA2 == 2){
283 if (photonQA1 == 3 && photonQA2 == 3){
307 if ((photonQA1 == 2 && photonQA2 == 3)|| (photonQA1 == 3 && photonQA2 == 2)){
Float_t fdcaBetweenPhotons
virtual Double_t GetPy() const
virtual Double_t GetPz() const
Double_t fProductionVtx[3]
Double_t GetConversionZ() const
virtual ~AliAODConversionMother()
Double_t GetChi2(const TH1F *h1, const TH1F *h2, TH1F *hchi2, Int_t &ndof)
Double_t Dot(const AliVParticle &trk1, const AliVParticle &trk2)
Bool_t IsTrueMeson(AliMCEvent *mcEvent, Int_t pdgcode)
TParticle * GetMCParticle(AliMCEvent *mcEvent)
Int_t GetGammaLabel(Int_t i) const
Double_t Mag(const AliVParticle &trk)
void DetermineMesonQuality(const AliAODConversionPhoton *y1, const AliAODConversionPhoton *y2)
Double_t GetConversionY() const
Float_t CalculateDistanceBetweenPhotons(const AliAODConversionPhoton *y1, const AliAODConversionPhoton *y2, Double_t prodPoint[3])
virtual Double_t GetPx() const
UChar_t GetPhotonQuality() const
void CalculateDistanceOfClossetApproachToPrimVtx(const AliVVertex *primVertex)
Double_t GetConversionX() const