X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PYTHIA6%2FAliDecayerPythia.cxx;h=06ff91ce7a15db6cb496b4ed8737233ff587fe2b;hb=cbd58b9ca6f605fd8df95cbeb1726a7e90dd23ae;hp=ae90baea9f387fd9a1409f251a83b810a7e0dec3;hpb=77f4c2451179b6b2c3c129cd2dd9067574d51e0a;p=u%2Fmrichter%2FAliRoot.git diff --git a/PYTHIA6/AliDecayerPythia.cxx b/PYTHIA6/AliDecayerPythia.cxx index ae90baea9f3..06ff91ce7a1 100644 --- a/PYTHIA6/AliDecayerPythia.cxx +++ b/PYTHIA6/AliDecayerPythia.cxx @@ -61,7 +61,9 @@ AliDecayerPythia::AliDecayerPythia(): fDecay(kAll), fHeavyFlavour(kTRUE), fLongLived(kFALSE), - fPatchOmegaDalitz(0) + fPatchOmegaDalitz(0), + fDecayerExodus(0), + fPi0(1) { // Default Constructor for (Int_t i=0; i< 501; i++) fBraPart[i]= 1.; @@ -74,7 +76,9 @@ AliDecayerPythia::AliDecayerPythia(const AliDecayerPythia &decayer): fDecay(kAll), fHeavyFlavour(kTRUE), fLongLived(kFALSE), - fPatchOmegaDalitz(0) + fPatchOmegaDalitz(0), + fDecayerExodus(0), + fPi0(1) { // Copy Constructor decayer.Copy(*this); @@ -118,8 +122,8 @@ void AliDecayerPythia::Init() fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 1); } */ + if (fPi0) fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 1); - fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 1); Int_t isw = 0; if (fLongLived) isw = 1; @@ -136,23 +140,68 @@ void AliDecayerPythia::Init() ForceDecay(); } +void AliDecayerPythia::SwitchOffParticle(Int_t kf) +{ +//switch off decay for particle "kf" +fPythia->SetMDCY(fPythia->Pycomp(kf),1,0); +} + void AliDecayerPythia::Decay(Int_t idpart, TLorentzVector* p) { // Decay a particle // - Float_t energy = p->Energy(); - Float_t theta = p->Theta(); - Float_t phi = p->Phi(); - if (!fPatchOmegaDalitz) { - Lu1Ent(0, idpart, energy, theta, phi); - } else { - fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 0); - Lu1Ent(0, idpart, energy, theta, phi); - fPythia->DalitzDecays(); - fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 1); - fPythia->Pyexec(); + Float_t energy = p->Energy(); + Float_t theta = p->Theta(); + Float_t phi = p->Phi(); + + if(!fDecayerExodus) { + Lu1Ent(0, idpart, energy, theta, phi); + } else { + + // EXODUS decayer + if(idpart == 111){ + fPythia->SetMDCY(fPythia->Pycomp(22) ,1, 0); + Lu1Ent(0, idpart, energy, theta, phi); + fPythia->PizeroDalitz(); + fPythia->SetMDCY(fPythia->Pycomp(22) ,1, 1); + } + else if(idpart == 221){ + fPythia->SetMDCY(fPythia->Pycomp(22) ,1, 0); + Lu1Ent(0, idpart, energy, theta, phi); + fPythia->EtaDalitz(); + fPythia->SetMDCY(fPythia->Pycomp(22) ,1, 1); + } + else if(idpart == 113){ + Lu1Ent(0, idpart, energy, theta, phi); + fPythia->RhoDirect(); + } + else if(idpart == 223){ + fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 0); + Lu1Ent(0, idpart, energy, theta, phi); + fPythia->OmegaDirect(); + fPythia->OmegaDalitz(); + fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 1); } - fPythia->GetPrimaries(); + else if(idpart == 331){ + fPythia->SetMDCY(fPythia->Pycomp(22) ,1, 0); + Lu1Ent(0, idpart, energy, theta, phi); + fPythia->EtaprimeDalitz(); + fPythia->SetMDCY(fPythia->Pycomp(22) ,1, 1); + } + else if(idpart == 333){ + fPythia->SetMDCY(fPythia->Pycomp(221) ,1, 0); + Lu1Ent(0, idpart, energy, theta, phi); + fPythia->PhiDirect(); + fPythia->PhiDalitz(); + fPythia->SetMDCY(fPythia->Pycomp(221) ,1, 1); + } + else if(idpart == 443){ + Lu1Ent(0, idpart, energy, theta, phi); + fPythia->JPsiDirect(); + } + } + + fPythia->GetPrimaries(); } Int_t AliDecayerPythia::ImportParticles(TClonesArray *particles) @@ -242,6 +291,15 @@ void AliDecayerPythia::ForceDecay() ForceParticleDecay( 5232,13,1); // Sigma_b ForceParticleDecay( 5332,13,1); // Omega_b break; + case kDSemiMuonic: + ForceParticleDecay( 411,13,1); // D0 + ForceParticleDecay( 421,13,1); // D+/- + ForceParticleDecay( 431,13,1); // D_s + ForceParticleDecay( 4122,13,1); // Lambda_c + ForceParticleDecay( 4132,13,1); // Xsi_c + ForceParticleDecay( 4232,13,1); // Sigma_c + ForceParticleDecay( 4332,13,1); // Omega_c + break; case kSemiMuonic: ForceParticleDecay( 411,13,1); // D+/- ForceParticleDecay( 421,13,1); // D0 @@ -429,6 +487,7 @@ void AliDecayerPythia::ForceDecay() ForceParticleDecay( 223,11,1); // omega ForceParticleDecay( 331,11,1); // etaprime ForceParticleDecay( 333,11,1); // phi + ForceParticleDecay( 443,11,1); // jpsi break; case kDiElectronEM: ForceParticleDecay( 111,11,2); // pi^0 @@ -437,14 +496,26 @@ void AliDecayerPythia::ForceDecay() ForceParticleDecay( 223,11,2); // omega ForceParticleDecay( 331,11,2); // etaprime ForceParticleDecay( 333,11,2); // phi + ForceParticleDecay( 443,11,2); // jpsi break; case kGammaEM: - ForceParticleDecay( 111,22,1); // pi^0 - ForceParticleDecay( 221,22,1); // eta - ForceParticleDecay( 113,22,1); // rho - ForceParticleDecay( 223,22,1); // omega - ForceParticleDecay( 331,22,1); // etaprime - ForceParticleDecay( 333,22,1); // phi + ForceParticleDecay( 111, 22, 1); // pi^0 + ForceParticleDecay( 221, 22, 1); // eta + ForceParticleDecay( 113, 22, 1); // rho + ForceParticleDecay( 223, 22, 1); // omega + ForceParticleDecay( 331, 22, 1); // etaprime + ForceParticleDecay( 333, 22, 1); // phi + ForceParticleDecay( 443, 22, 1); // jpsi + ForceParticleDecay( 3212, 22, 1); // Sigma 0 + ForceParticleDecay( 310, 22, 1); // K0s + ForceParticleDecay( 2224, 22, 1); // Delta++ + ForceParticleDecay( 2214, 22, 1); // Delta+ + ForceParticleDecay( 1114, 22, 1); // Delta- + ForceParticleDecay( 2114, 22, 1); // Delta0 + ForceParticleDecay( 213, 22, 1); // rho+ + ForceParticleDecay( -213, 22, 1); // rho- + ForceParticleDecay( 313, 22, 1); // K0star + break; case kBeautyUpgrade: ForceBeautyUpgrade(); @@ -687,7 +758,9 @@ void AliDecayerPythia::ForceParticleDecay(Int_t particle, Int_t product, Int_t m Int_t ifirst=fPythia->GetMDCY(kc,2); Int_t ilast=ifirst+fPythia->GetMDCY(kc,3)-1; Double_t norm = 0.; - for (Int_t channel=ifirst; channel<=ilast;channel++) norm+=fPythia->GetBRAT(channel); + for (Int_t channel=ifirst; channel<=ilast;channel++){ + norm+=fPythia->GetBRAT(channel); + } if (norm < 1.-1.e-12 || norm > 1.+1.e-12) { char pName[16]; fPythia->Pyname(particle,pName);