ROOT logo
#include "AliRsnMiniParticle.h"
#include "AliRsnMiniPair.h"

ClassImp(AliRsnMiniPair)

//__________________________________________________________________________________________________
void AliRsnMiniPair::Fill
(AliRsnMiniParticle *p1, AliRsnMiniParticle *p2, Double_t m1, Double_t m2, Double_t refMass)
{
//
// Fill this object with data coming
// from arguments
//
   p1->Set4Vector(fP1[0], m1, kFALSE);
   p2->Set4Vector(fP2[0], m2, kFALSE);
   p1->Set4Vector(fP1[1], m1, kTRUE );
   p2->Set4Vector(fP2[1], m2, kTRUE );
   
   fDCA1 = p1->DCA();
   fDCA2 = p2->DCA();  

   fMother = -1;
   fIsFromB = kFALSE;
   fIsQuarkFound = kFALSE;
   fPmother[0] = -1.0;
   fPmother[1] = -1.0;
   fPmother[2] = -1.0;
   if (p1->Mother() == p2->Mother()) {
      fMother = p1->Mother();
      fMotherPDG = p1->MotherPDG();
      fPmother[0] = p1->PmotherX();
      fPmother[1] = p1->PmotherY();
      fPmother[2] = p1->PmotherZ();
      fIsFromB = p1->IsFromB();
      fIsQuarkFound = p1->IsQuarkFound();
   }

   Int_t i;
   for (i = 0; i < 2; i++) {
      fSum[i] = fP1[i] + fP2[i];
      fRef[i].SetXYZM(fSum[i].X(), fSum[i].Y(), fSum[i].Z(), refMass);
   }

   fNSisters=-1;
   if (p1->NTotSisters()==p2->NTotSisters()) fNSisters = p1->NTotSisters();
}

//__________________________________________________________________________________________________
Double_t AliRsnMiniPair::CosThetaStar(Bool_t useMC)
{
//
// Return cosine of angle of one daughter to the resonance momentum in its rest frame
//

   TLorentzVector &mother    = fSum[ID(useMC)];
   TLorentzVector &daughter0 = fP1[ID(useMC)];
//    TLorentzVector &daughter1 = fP2[ID(useMC)];
   TVector3 momentumM(mother.Vect());
   TVector3 normal(mother.Y() / momentumM.Mag(), -mother.X() / momentumM.Mag(), 0.0);

   // Computes first the invariant mass of the mother
//    Double_t mass0      = daughter0.M();
//    Double_t mass1      = daughter1.M();
//    Double_t p0         = daughter0.Vect().Mag();
//    Double_t p1         = daughter1.Vect().Mag();
//    Double_t E0         = TMath::Sqrt(mass0 * mass0 + p0 * p0);
//    Double_t E1         = TMath::Sqrt(mass1 * mass1 + p1 * p1);
//    Double_t MotherMass = TMath::Sqrt((E0 + E1) * (E0 + E1) - (p0 * p0 + 2.0 * daughter0.Vect().Dot(daughter1.Vect()) + p1 * p1));
//    MotherMass = mother.M();

   // Computes components of beta
   Double_t betaX = -mother.X() / mother.E();
   Double_t betaY = -mother.Y() / mother.E();
   Double_t betaZ = -mother.Z() / mother.E();

   // Computes Lorentz transformation of the momentum of the first daughter
   // into the rest frame of the mother and theta*
   daughter0.Boost(betaX, betaY, betaZ);
   TVector3 momentumD = daughter0.Vect();

   Double_t cosThetaStar = normal.Dot(momentumD) / momentumD.Mag();

   return cosThetaStar;
}

//__________________________________________________________________________________________________
void AliRsnMiniPair::InvertP(Bool_t first)
{
//
// Inverts one 4-momentum and recompute sum
//

   Int_t i;
   for (i = 0; i < 2; i++) {
      if (first) fP1[i].SetVect(fP1[i].Vect() *= -1.0);
      else       fP2[i].SetVect(fP2[i].Vect() *= -1.0);
      fSum[i] = fP1[i] + fP2[i];
      fRef[i].SetXYZM(fSum[i].X(), fSum[i].Y(), fSum[i].Z(), fRef[i].M());
   }
}

//__________________________________________________________________________________________________
void AliRsnMiniPair::FillRef(Double_t mass)
{
//
// Fill ref 4-vectors using the passed mass and the values in 'sum'
//

   Int_t i;
   for (i = 0; i < 2; i++) {
      fRef[i].SetXYZM(fSum[i].X(), fSum[i].Y(), fSum[i].Z(), mass);
   }
}

//__________________________________________________________________________________________________
Double_t AliRsnMiniPair::InvMassRes() const
{
//
// Return invariant mass resolution
//

   if (fSum[1].M() <= 0.0) return 1E20;

   return (fSum[0].M() - fSum[1].M()) / fSum[1].M();
}

//__________________________________________________________________________________________________
Double_t AliRsnMiniPair::InvMassDiff() const
{
//
// Return invariant mass resolution
//

   if (fSum[1].M() <= 0.0) return 1E20;

   return (fSum[0].M() - fSum[1].M());
}

//__________________________________________________________________________________________________
Double_t AliRsnMiniPair::PtRatio(Bool_t mc) const
{
//
// Return ratio of transverse momenta of daughters
//

   Double_t num = TMath::Abs(fP1[ID(mc)].Perp() - fP2[ID(mc)].Perp());
   Double_t den = TMath::Abs(fP1[ID(mc)].Perp() + fP2[ID(mc)].Perp());

   if (den <= 0.0) return 1E20;

   return num / den;
}

//__________________________________________________________________________________________________
Double_t AliRsnMiniPair::DipAngle(Bool_t mc) const
{
//
// Opening angle in a Z-T space
//

   const TLorentzVector &p1 = fP1[ID(mc)];
   const TLorentzVector &p2 = fP2[ID(mc)];

   return ((p1.Perp() * p2.Perp() + p1.Z() * p2.Z()) / p1.Mag() / p2.Mag());
}

//__________________________________________________________________________________________________
Double_t AliRsnMiniPair::DaughterPt(Int_t daughterId, Bool_t mc)
{
  //returns pt of the <id> daughter 
  // if MC returns generated momenta
  if (daughterId==0)
    return fP1[ID(mc)].Pt();
  else 
    return fP2[ID(mc)].Pt();
}

//__________________________________________________________________________________________________
Double_t AliRsnMiniPair::DaughterDCA(Int_t daughterId)
{   
  //
  //returns dca to Primary Vertex of the <id> daughter 
  //

  if (daughterId==0)
    return fDCA1;
  else 
    return fDCA2;
}

//__________________________________________________________________________________________________
Double_t AliRsnMiniPair::DCAProduct()
{
  //
  //returns products of the DCA of the 2 daughters
  //
  
    return fDCA1*fDCA2;
}

//__________________________________________________________________________________________________
void AliRsnMiniPair::DaughterPxPyPz(Int_t daughterId, Bool_t mc, Double_t *pxpypz)
{
  //returns px,py,pz of the <id> daughter by saving them into pxpypz
  // if MC returns generated momenta
  if (!pxpypz)    return;
 
  if (daughterId==0){
    pxpypz[0]=fP1[ID(mc)].Px();
    pxpypz[1]=fP1[ID(mc)].Py();
    pxpypz[2]=fP1[ID(mc)].Pz();
  } else {
    pxpypz[0]=fP2[ID(mc)].Px();
    pxpypz[1]=fP2[ID(mc)].Py();
    pxpypz[2]=fP2[ID(mc)].Pz();
  }
  return;
}
 AliRsnMiniPair.cxx:1
 AliRsnMiniPair.cxx:2
 AliRsnMiniPair.cxx:3
 AliRsnMiniPair.cxx:4
 AliRsnMiniPair.cxx:5
 AliRsnMiniPair.cxx:6
 AliRsnMiniPair.cxx:7
 AliRsnMiniPair.cxx:8
 AliRsnMiniPair.cxx:9
 AliRsnMiniPair.cxx:10
 AliRsnMiniPair.cxx:11
 AliRsnMiniPair.cxx:12
 AliRsnMiniPair.cxx:13
 AliRsnMiniPair.cxx:14
 AliRsnMiniPair.cxx:15
 AliRsnMiniPair.cxx:16
 AliRsnMiniPair.cxx:17
 AliRsnMiniPair.cxx:18
 AliRsnMiniPair.cxx:19
 AliRsnMiniPair.cxx:20
 AliRsnMiniPair.cxx:21
 AliRsnMiniPair.cxx:22
 AliRsnMiniPair.cxx:23
 AliRsnMiniPair.cxx:24
 AliRsnMiniPair.cxx:25
 AliRsnMiniPair.cxx:26
 AliRsnMiniPair.cxx:27
 AliRsnMiniPair.cxx:28
 AliRsnMiniPair.cxx:29
 AliRsnMiniPair.cxx:30
 AliRsnMiniPair.cxx:31
 AliRsnMiniPair.cxx:32
 AliRsnMiniPair.cxx:33
 AliRsnMiniPair.cxx:34
 AliRsnMiniPair.cxx:35
 AliRsnMiniPair.cxx:36
 AliRsnMiniPair.cxx:37
 AliRsnMiniPair.cxx:38
 AliRsnMiniPair.cxx:39
 AliRsnMiniPair.cxx:40
 AliRsnMiniPair.cxx:41
 AliRsnMiniPair.cxx:42
 AliRsnMiniPair.cxx:43
 AliRsnMiniPair.cxx:44
 AliRsnMiniPair.cxx:45
 AliRsnMiniPair.cxx:46
 AliRsnMiniPair.cxx:47
 AliRsnMiniPair.cxx:48
 AliRsnMiniPair.cxx:49
 AliRsnMiniPair.cxx:50
 AliRsnMiniPair.cxx:51
 AliRsnMiniPair.cxx:52
 AliRsnMiniPair.cxx:53
 AliRsnMiniPair.cxx:54
 AliRsnMiniPair.cxx:55
 AliRsnMiniPair.cxx:56
 AliRsnMiniPair.cxx:57
 AliRsnMiniPair.cxx:58
 AliRsnMiniPair.cxx:59
 AliRsnMiniPair.cxx:60
 AliRsnMiniPair.cxx:61
 AliRsnMiniPair.cxx:62
 AliRsnMiniPair.cxx:63
 AliRsnMiniPair.cxx:64
 AliRsnMiniPair.cxx:65
 AliRsnMiniPair.cxx:66
 AliRsnMiniPair.cxx:67
 AliRsnMiniPair.cxx:68
 AliRsnMiniPair.cxx:69
 AliRsnMiniPair.cxx:70
 AliRsnMiniPair.cxx:71
 AliRsnMiniPair.cxx:72
 AliRsnMiniPair.cxx:73
 AliRsnMiniPair.cxx:74
 AliRsnMiniPair.cxx:75
 AliRsnMiniPair.cxx:76
 AliRsnMiniPair.cxx:77
 AliRsnMiniPair.cxx:78
 AliRsnMiniPair.cxx:79
 AliRsnMiniPair.cxx:80
 AliRsnMiniPair.cxx:81
 AliRsnMiniPair.cxx:82
 AliRsnMiniPair.cxx:83
 AliRsnMiniPair.cxx:84
 AliRsnMiniPair.cxx:85
 AliRsnMiniPair.cxx:86
 AliRsnMiniPair.cxx:87
 AliRsnMiniPair.cxx:88
 AliRsnMiniPair.cxx:89
 AliRsnMiniPair.cxx:90
 AliRsnMiniPair.cxx:91
 AliRsnMiniPair.cxx:92
 AliRsnMiniPair.cxx:93
 AliRsnMiniPair.cxx:94
 AliRsnMiniPair.cxx:95
 AliRsnMiniPair.cxx:96
 AliRsnMiniPair.cxx:97
 AliRsnMiniPair.cxx:98
 AliRsnMiniPair.cxx:99
 AliRsnMiniPair.cxx:100
 AliRsnMiniPair.cxx:101
 AliRsnMiniPair.cxx:102
 AliRsnMiniPair.cxx:103
 AliRsnMiniPair.cxx:104
 AliRsnMiniPair.cxx:105
 AliRsnMiniPair.cxx:106
 AliRsnMiniPair.cxx:107
 AliRsnMiniPair.cxx:108
 AliRsnMiniPair.cxx:109
 AliRsnMiniPair.cxx:110
 AliRsnMiniPair.cxx:111
 AliRsnMiniPair.cxx:112
 AliRsnMiniPair.cxx:113
 AliRsnMiniPair.cxx:114
 AliRsnMiniPair.cxx:115
 AliRsnMiniPair.cxx:116
 AliRsnMiniPair.cxx:117
 AliRsnMiniPair.cxx:118
 AliRsnMiniPair.cxx:119
 AliRsnMiniPair.cxx:120
 AliRsnMiniPair.cxx:121
 AliRsnMiniPair.cxx:122
 AliRsnMiniPair.cxx:123
 AliRsnMiniPair.cxx:124
 AliRsnMiniPair.cxx:125
 AliRsnMiniPair.cxx:126
 AliRsnMiniPair.cxx:127
 AliRsnMiniPair.cxx:128
 AliRsnMiniPair.cxx:129
 AliRsnMiniPair.cxx:130
 AliRsnMiniPair.cxx:131
 AliRsnMiniPair.cxx:132
 AliRsnMiniPair.cxx:133
 AliRsnMiniPair.cxx:134
 AliRsnMiniPair.cxx:135
 AliRsnMiniPair.cxx:136
 AliRsnMiniPair.cxx:137
 AliRsnMiniPair.cxx:138
 AliRsnMiniPair.cxx:139
 AliRsnMiniPair.cxx:140
 AliRsnMiniPair.cxx:141
 AliRsnMiniPair.cxx:142
 AliRsnMiniPair.cxx:143
 AliRsnMiniPair.cxx:144
 AliRsnMiniPair.cxx:145
 AliRsnMiniPair.cxx:146
 AliRsnMiniPair.cxx:147
 AliRsnMiniPair.cxx:148
 AliRsnMiniPair.cxx:149
 AliRsnMiniPair.cxx:150
 AliRsnMiniPair.cxx:151
 AliRsnMiniPair.cxx:152
 AliRsnMiniPair.cxx:153
 AliRsnMiniPair.cxx:154
 AliRsnMiniPair.cxx:155
 AliRsnMiniPair.cxx:156
 AliRsnMiniPair.cxx:157
 AliRsnMiniPair.cxx:158
 AliRsnMiniPair.cxx:159
 AliRsnMiniPair.cxx:160
 AliRsnMiniPair.cxx:161
 AliRsnMiniPair.cxx:162
 AliRsnMiniPair.cxx:163
 AliRsnMiniPair.cxx:164
 AliRsnMiniPair.cxx:165
 AliRsnMiniPair.cxx:166
 AliRsnMiniPair.cxx:167
 AliRsnMiniPair.cxx:168
 AliRsnMiniPair.cxx:169
 AliRsnMiniPair.cxx:170
 AliRsnMiniPair.cxx:171
 AliRsnMiniPair.cxx:172
 AliRsnMiniPair.cxx:173
 AliRsnMiniPair.cxx:174
 AliRsnMiniPair.cxx:175
 AliRsnMiniPair.cxx:176
 AliRsnMiniPair.cxx:177
 AliRsnMiniPair.cxx:178
 AliRsnMiniPair.cxx:179
 AliRsnMiniPair.cxx:180
 AliRsnMiniPair.cxx:181
 AliRsnMiniPair.cxx:182
 AliRsnMiniPair.cxx:183
 AliRsnMiniPair.cxx:184
 AliRsnMiniPair.cxx:185
 AliRsnMiniPair.cxx:186
 AliRsnMiniPair.cxx:187
 AliRsnMiniPair.cxx:188
 AliRsnMiniPair.cxx:189
 AliRsnMiniPair.cxx:190
 AliRsnMiniPair.cxx:191
 AliRsnMiniPair.cxx:192
 AliRsnMiniPair.cxx:193
 AliRsnMiniPair.cxx:194
 AliRsnMiniPair.cxx:195
 AliRsnMiniPair.cxx:196
 AliRsnMiniPair.cxx:197
 AliRsnMiniPair.cxx:198
 AliRsnMiniPair.cxx:199
 AliRsnMiniPair.cxx:200
 AliRsnMiniPair.cxx:201
 AliRsnMiniPair.cxx:202
 AliRsnMiniPair.cxx:203
 AliRsnMiniPair.cxx:204
 AliRsnMiniPair.cxx:205
 AliRsnMiniPair.cxx:206
 AliRsnMiniPair.cxx:207
 AliRsnMiniPair.cxx:208
 AliRsnMiniPair.cxx:209
 AliRsnMiniPair.cxx:210
 AliRsnMiniPair.cxx:211
 AliRsnMiniPair.cxx:212
 AliRsnMiniPair.cxx:213
 AliRsnMiniPair.cxx:214
 AliRsnMiniPair.cxx:215
 AliRsnMiniPair.cxx:216
 AliRsnMiniPair.cxx:217
 AliRsnMiniPair.cxx:218