#include <TMath.h>
#include <TF1.h>
#include <TDatabasePDG.h>
#include <TParticlePDG.h>
#include <TParticle.h>
#include <TVector3.h>
#include <TRandom.h>
#include <TObjectTable.h>
#include "AliDecayerPolarized.h"
#include "AliLog.h"
ClassImp(AliDecayerPolarized)
AliDecayerPolarized::AliDecayerPolarized():
fAlpha(0),
fSystRef(kHelicity),
fDecProd(kMuon),
fPol(0),
fMother(0),
fDaughter1(0),
fDaughter2(0)
{
}
AliDecayerPolarized::AliDecayerPolarized(Double_t alpha, Polar_t systref, FinState_t decprod):
fAlpha(alpha),
fSystRef(systref),
fDecProd(decprod),
fPol(new TF1("dsigdcostheta","1.+[0]*x*x",-1.,1.)),
fMother(0),
fDaughter1(0),
fDaughter2(0)
{
fPol->SetParameter(0,fAlpha);
if(fDecProd!=kMuon && fDecProd!=kElectron)
AliFatal("Only polarized decay into muons or electrons is implemented!");
}
AliDecayerPolarized::AliDecayerPolarized(const AliDecayerPolarized &decayer):
AliDecayer(decayer),
fAlpha(0),
fSystRef(kHelicity),
fDecProd(kMuon),
fPol(new TF1("dsigdcostheta","1.+[0]*x*x",-1.,1.)),
fMother(0),
fDaughter1(0),
fDaughter2(0)
{
decayer.Copy(*this);
}
AliDecayerPolarized::~AliDecayerPolarized()
{
delete fPol;
delete fMother;
delete fDaughter1;
delete fDaughter2;
}
void AliDecayerPolarized::Decay(Int_t ipart, TLorentzVector *p)
{
TDatabasePDG *pDataBase = TDatabasePDG::Instance();
if(ipart!= (pDataBase->GetParticle("J/psi")->PdgCode()) &&
ipart!= (pDataBase->GetParticle("psi'")->PdgCode()) &&
ipart!= (pDataBase->GetParticle("Upsilon")->PdgCode()) &&
ipart!= (pDataBase->GetParticle("Upsilon'")->PdgCode()))
AliFatal("Polarized decay only implemented for J/psi, psi', Upsilon and Upsilon' !");
TParticlePDG *d1 = 0, *d2 = 0;
if(fDecProd==kMuon){
d1 = pDataBase->GetParticle("mu-");
d2 = pDataBase->GetParticle("mu+");
}
else if(fDecProd==kElectron){
d1 = pDataBase->GetParticle("e-");
d2 = pDataBase->GetParticle("e+");
}
Double_t e1 = p->M() / 2.;
Double_t e2 = e1;
Double_t p1 = TMath::Sqrt((e1 + d1->Mass())*(e1 - d1->Mass()));
Double_t costheta = fPol->GetRandom();
Double_t sintheta = TMath::Sqrt((1. + costheta)*(1. - costheta));
Double_t phi = 2. * TMath::Pi() * gRandom->Rndm();
Double_t px1 = p1 * sintheta * TMath::Cos(phi);
Double_t py1 = p1 * sintheta * TMath::Sin(phi);
Double_t pz1 = p1 * costheta;
TLorentzVector v1,v2, boosted1, boosted2;
v1.SetPxPyPzE(-px1,-py1,-pz1,e1);
v2.SetPxPyPzE(px1,py1,pz1,e2);
TLorentzVector pProj, pTarg;
Float_t mp = 0.938;
pProj.SetPxPyPzE(0.,0.,-7000.,TMath::Sqrt(7000.*7000.+mp*mp));
pTarg.SetPxPyPzE(0.,0.,7000.,TMath::Sqrt(7000.*7000.+mp*mp));
TVector3 betajpsicm;
betajpsicm = (-1./p->E()*p->Vect());
if(fSystRef == kHelicity) {
TVector3 v3jpsi = (p->Vect()).Unit();
v1.RotateUz(v3jpsi);
v2.RotateUz(v3jpsi);
} else if (fSystRef == kColSop){
pProj.Boost(betajpsicm);
pTarg.Boost(betajpsicm);
TVector3 zaxisCS;
zaxisCS=(((pProj.Vect()).Unit())-((pTarg.Vect()).Unit())).Unit();
v1.RotateUz(zaxisCS);
v2.RotateUz(zaxisCS);
}
v1.Boost(-betajpsicm);
v2.Boost(-betajpsicm);
Int_t statusDecayed=11;
Int_t statusUndecayed=1;
fMother = new TParticle(ipart,statusDecayed,0,-1,2,3,p->Px(),p->Py(),p->Pz(),p->E(),0.,0.,0.,0);
fDaughter1 = new TParticle(d1->PdgCode(),statusUndecayed,1,-1,0,0,v1.Px(),v1.Py(),v1.Pz(),v1.E(),0.,0.,0.,0);
fDaughter2 = new TParticle(d2->PdgCode(),statusUndecayed,1,-1,0,0,v2.Px(),v2.Py(),v2.Pz(),v2.E(),0.,0.,0.,0);
}
Int_t AliDecayerPolarized::ImportParticles(TClonesArray *part)
{
TClonesArray &cloneparticles = *part;
cloneparticles.Clear();
new(cloneparticles[0])TParticle(*fMother);
new(cloneparticles[1])TParticle(*fDaughter1);
new(cloneparticles[2])TParticle(*fDaughter2);
return part->GetEntries();
}
void AliDecayerPolarized::Copy(TObject &) const
{
Fatal("Copy","Not implemented!\n");
}
void AliDecayerPolarized::SetForceDecay(Int_t)
{
}
void AliDecayerPolarized::ForceDecay()
{
AliWarning("Method not implemented for this class !\n");
}
Float_t AliDecayerPolarized::GetPartialBranchingRatio(Int_t)
{
return 1.;
}
Float_t AliDecayerPolarized::GetLifetime(Int_t)
{
AliWarning("Method not implemented for this class !\n");
return -1.;
}
void AliDecayerPolarized::ReadDecayTable()
{
AliWarning("Method not implemented for this class !\n");
}
AliDecayerPolarized.cxx:1 AliDecayerPolarized.cxx:2 AliDecayerPolarized.cxx:3 AliDecayerPolarized.cxx:4 AliDecayerPolarized.cxx:5 AliDecayerPolarized.cxx:6 AliDecayerPolarized.cxx:7 AliDecayerPolarized.cxx:8 AliDecayerPolarized.cxx:9 AliDecayerPolarized.cxx:10 AliDecayerPolarized.cxx:11 AliDecayerPolarized.cxx:12 AliDecayerPolarized.cxx:13 AliDecayerPolarized.cxx:14 AliDecayerPolarized.cxx:15 AliDecayerPolarized.cxx:16 AliDecayerPolarized.cxx:17 AliDecayerPolarized.cxx:18 AliDecayerPolarized.cxx:19 AliDecayerPolarized.cxx:20 AliDecayerPolarized.cxx:21 AliDecayerPolarized.cxx:22 AliDecayerPolarized.cxx:23 AliDecayerPolarized.cxx:24 AliDecayerPolarized.cxx:25 AliDecayerPolarized.cxx:26 AliDecayerPolarized.cxx:27 AliDecayerPolarized.cxx:28 AliDecayerPolarized.cxx:29 AliDecayerPolarized.cxx:30 AliDecayerPolarized.cxx:31 AliDecayerPolarized.cxx:32 AliDecayerPolarized.cxx:33 AliDecayerPolarized.cxx:34 AliDecayerPolarized.cxx:35 AliDecayerPolarized.cxx:36 AliDecayerPolarized.cxx:37 AliDecayerPolarized.cxx:38 AliDecayerPolarized.cxx:39 AliDecayerPolarized.cxx:40 AliDecayerPolarized.cxx:41 AliDecayerPolarized.cxx:42 AliDecayerPolarized.cxx:43 AliDecayerPolarized.cxx:44 AliDecayerPolarized.cxx:45 AliDecayerPolarized.cxx:46 AliDecayerPolarized.cxx:47 AliDecayerPolarized.cxx:48 AliDecayerPolarized.cxx:49 AliDecayerPolarized.cxx:50 AliDecayerPolarized.cxx:51 AliDecayerPolarized.cxx:52 AliDecayerPolarized.cxx:53 AliDecayerPolarized.cxx:54 AliDecayerPolarized.cxx:55 AliDecayerPolarized.cxx:56 AliDecayerPolarized.cxx:57 AliDecayerPolarized.cxx:58 AliDecayerPolarized.cxx:59 AliDecayerPolarized.cxx:60 AliDecayerPolarized.cxx:61 AliDecayerPolarized.cxx:62 AliDecayerPolarized.cxx:63 AliDecayerPolarized.cxx:64 AliDecayerPolarized.cxx:65 AliDecayerPolarized.cxx:66 AliDecayerPolarized.cxx:67 AliDecayerPolarized.cxx:68 AliDecayerPolarized.cxx:69 AliDecayerPolarized.cxx:70 AliDecayerPolarized.cxx:71 AliDecayerPolarized.cxx:72 AliDecayerPolarized.cxx:73 AliDecayerPolarized.cxx:74 AliDecayerPolarized.cxx:75 AliDecayerPolarized.cxx:76 AliDecayerPolarized.cxx:77 AliDecayerPolarized.cxx:78 AliDecayerPolarized.cxx:79 AliDecayerPolarized.cxx:80 AliDecayerPolarized.cxx:81 AliDecayerPolarized.cxx:82 AliDecayerPolarized.cxx:83 AliDecayerPolarized.cxx:84 AliDecayerPolarized.cxx:85 AliDecayerPolarized.cxx:86 AliDecayerPolarized.cxx:87 AliDecayerPolarized.cxx:88 AliDecayerPolarized.cxx:89 AliDecayerPolarized.cxx:90 AliDecayerPolarized.cxx:91 AliDecayerPolarized.cxx:92 AliDecayerPolarized.cxx:93 AliDecayerPolarized.cxx:94 AliDecayerPolarized.cxx:95 AliDecayerPolarized.cxx:96 AliDecayerPolarized.cxx:97 AliDecayerPolarized.cxx:98 AliDecayerPolarized.cxx:99 AliDecayerPolarized.cxx:100 AliDecayerPolarized.cxx:101 AliDecayerPolarized.cxx:102 AliDecayerPolarized.cxx:103 AliDecayerPolarized.cxx:104 AliDecayerPolarized.cxx:105 AliDecayerPolarized.cxx:106 AliDecayerPolarized.cxx:107 AliDecayerPolarized.cxx:108 AliDecayerPolarized.cxx:109 AliDecayerPolarized.cxx:110 AliDecayerPolarized.cxx:111 AliDecayerPolarized.cxx:112 AliDecayerPolarized.cxx:113 AliDecayerPolarized.cxx:114 AliDecayerPolarized.cxx:115 AliDecayerPolarized.cxx:116 AliDecayerPolarized.cxx:117 AliDecayerPolarized.cxx:118 AliDecayerPolarized.cxx:119 AliDecayerPolarized.cxx:120 AliDecayerPolarized.cxx:121 AliDecayerPolarized.cxx:122 AliDecayerPolarized.cxx:123 AliDecayerPolarized.cxx:124 AliDecayerPolarized.cxx:125 AliDecayerPolarized.cxx:126 AliDecayerPolarized.cxx:127 AliDecayerPolarized.cxx:128 AliDecayerPolarized.cxx:129 AliDecayerPolarized.cxx:130 AliDecayerPolarized.cxx:131 AliDecayerPolarized.cxx:132 AliDecayerPolarized.cxx:133 AliDecayerPolarized.cxx:134 AliDecayerPolarized.cxx:135 AliDecayerPolarized.cxx:136 AliDecayerPolarized.cxx:137 AliDecayerPolarized.cxx:138 AliDecayerPolarized.cxx:139 AliDecayerPolarized.cxx:140 AliDecayerPolarized.cxx:141 AliDecayerPolarized.cxx:142 AliDecayerPolarized.cxx:143 AliDecayerPolarized.cxx:144 AliDecayerPolarized.cxx:145 AliDecayerPolarized.cxx:146 AliDecayerPolarized.cxx:147 AliDecayerPolarized.cxx:148 AliDecayerPolarized.cxx:149 AliDecayerPolarized.cxx:150 AliDecayerPolarized.cxx:151 AliDecayerPolarized.cxx:152 AliDecayerPolarized.cxx:153 AliDecayerPolarized.cxx:154 AliDecayerPolarized.cxx:155 AliDecayerPolarized.cxx:156 AliDecayerPolarized.cxx:157 AliDecayerPolarized.cxx:158 AliDecayerPolarized.cxx:159 AliDecayerPolarized.cxx:160 AliDecayerPolarized.cxx:161 AliDecayerPolarized.cxx:162 AliDecayerPolarized.cxx:163 AliDecayerPolarized.cxx:164 AliDecayerPolarized.cxx:165 AliDecayerPolarized.cxx:166 AliDecayerPolarized.cxx:167 AliDecayerPolarized.cxx:168 AliDecayerPolarized.cxx:169 AliDecayerPolarized.cxx:170 AliDecayerPolarized.cxx:171 AliDecayerPolarized.cxx:172 AliDecayerPolarized.cxx:173 AliDecayerPolarized.cxx:174 AliDecayerPolarized.cxx:175 AliDecayerPolarized.cxx:176 AliDecayerPolarized.cxx:177 AliDecayerPolarized.cxx:178 AliDecayerPolarized.cxx:179 AliDecayerPolarized.cxx:180 AliDecayerPolarized.cxx:181 AliDecayerPolarized.cxx:182 AliDecayerPolarized.cxx:183 AliDecayerPolarized.cxx:184 AliDecayerPolarized.cxx:185 AliDecayerPolarized.cxx:186 AliDecayerPolarized.cxx:187 AliDecayerPolarized.cxx:188 AliDecayerPolarized.cxx:189 AliDecayerPolarized.cxx:190 AliDecayerPolarized.cxx:191 AliDecayerPolarized.cxx:192 AliDecayerPolarized.cxx:193 AliDecayerPolarized.cxx:194 AliDecayerPolarized.cxx:195 AliDecayerPolarized.cxx:196 AliDecayerPolarized.cxx:197 AliDecayerPolarized.cxx:198 AliDecayerPolarized.cxx:199 AliDecayerPolarized.cxx:200 AliDecayerPolarized.cxx:201 AliDecayerPolarized.cxx:202 AliDecayerPolarized.cxx:203 AliDecayerPolarized.cxx:204 AliDecayerPolarized.cxx:205 AliDecayerPolarized.cxx:206 AliDecayerPolarized.cxx:207 AliDecayerPolarized.cxx:208 AliDecayerPolarized.cxx:209 AliDecayerPolarized.cxx:210 AliDecayerPolarized.cxx:211 AliDecayerPolarized.cxx:212 AliDecayerPolarized.cxx:213 AliDecayerPolarized.cxx:214 AliDecayerPolarized.cxx:215 AliDecayerPolarized.cxx:216