]>
Commit | Line | Data |
---|---|---|
03d23846 | 1 | #include "AliRsnMiniParticle.h" |
2 | #include "AliRsnMiniPair.h" | |
3 | ||
4 | ClassImp(AliRsnMiniPair) | |
5 | ||
6 | //__________________________________________________________________________________________________ | |
7 | void AliRsnMiniPair::Fill | |
8 | (AliRsnMiniParticle *p1, AliRsnMiniParticle *p2, Double_t m1, Double_t m2, Double_t refMass) | |
9 | { | |
10 | // | |
11 | // Fill this object with data coming | |
12 | // from arguments | |
13 | // | |
14 | ||
15 | p1->Set4Vector(fP1[0], m1, kFALSE); | |
16 | p2->Set4Vector(fP2[0], m2, kFALSE); | |
17 | p1->Set4Vector(fP1[1], m1, kTRUE ); | |
18 | p2->Set4Vector(fP2[1], m2, kTRUE ); | |
61f275d1 | 19 | |
03d23846 | 20 | fMother = -1; |
21 | if (p1->Mother() == p2->Mother()) { | |
22 | fMother = p1->Mother(); | |
23 | fMotherPDG = p1->MotherPDG(); | |
24 | } | |
61f275d1 | 25 | |
03d23846 | 26 | Int_t i; |
27 | for (i = 0; i < 2; i++) { | |
28 | fSum[i] = fP1[i] + fP2[i]; | |
29 | fRef[i].SetXYZM(fSum[i].X(), fSum[i].Y(), fSum[i].Z(), refMass); | |
30 | } | |
31 | } | |
32 | ||
33 | //__________________________________________________________________________________________________ | |
34 | Double_t AliRsnMiniPair::CosThetaStar(Bool_t useMC) | |
35 | { | |
36 | // | |
37 | // Return cosine of angle of one daughter to the resonance momentum in its rest frame | |
38 | // | |
61f275d1 | 39 | |
03d23846 | 40 | TLorentzVector &mother = fSum[ID(useMC)]; |
41 | TLorentzVector &daughter0 = fP1[ID(useMC)]; | |
42 | TLorentzVector &daughter1 = fP2[ID(useMC)]; | |
43 | TVector3 momentumM(mother.Vect()); | |
44 | TVector3 normal(mother.Y() / momentumM.Mag(), -mother.X() / momentumM.Mag(), 0.0); | |
45 | ||
46 | // Computes first the invariant mass of the mother | |
47 | Double_t mass0 = daughter0.M(); | |
48 | Double_t mass1 = daughter1.M(); | |
49 | Double_t p0 = daughter0.Vect().Mag(); | |
50 | Double_t p1 = daughter1.Vect().Mag(); | |
51 | Double_t E0 = TMath::Sqrt(mass0 * mass0 + p0 * p0); | |
52 | Double_t E1 = TMath::Sqrt(mass1 * mass1 + p1 * p1); | |
53 | Double_t MotherMass = TMath::Sqrt((E0 + E1) * (E0 + E1) - (p0 * p0 + 2.0 * daughter0.Vect().Dot(daughter1.Vect()) + p1 * p1)); | |
54 | MotherMass = mother.M(); | |
55 | ||
56 | // Computes components of beta | |
57 | Double_t betaX = -mother.X() / mother.E(); | |
58 | Double_t betaY = -mother.Y() / mother.E(); | |
59 | Double_t betaZ = -mother.Z() / mother.E(); | |
60 | ||
61 | // Computes Lorentz transformation of the momentum of the first daughter | |
62 | // into the rest frame of the mother and theta* | |
63 | daughter0.Boost(betaX, betaY, betaZ); | |
64 | TVector3 momentumD = daughter0.Vect(); | |
65 | ||
66 | Double_t cosThetaStar = normal.Dot(momentumD) / momentumD.Mag(); | |
67 | ||
68 | return cosThetaStar; | |
69 | } | |
6aaeb33c | 70 | |
71 | //__________________________________________________________________________________________________ | |
72 | void AliRsnMiniPair::InvertP(Bool_t first) | |
73 | { | |
74 | // | |
75 | // Inverts one 4-momentum and recompute sum | |
76 | // | |
77 | ||
78 | Int_t i; | |
79 | for (i = 0; i < 2; i++) { | |
80 | if (first) fP1[i].Vect() *= -1.0; | |
81 | else fP2[i].Vect() *= -1.0; | |
82 | fSum[i] = fP1[i] + fP2[i]; | |
83 | fRef[i].SetXYZM(fSum[i].X(), fSum[i].Y(), fSum[i].Z(), fRef[i].M()); | |
84 | } | |
85 | } |