fPythia(AliPythia::Instance()),
fDecay(kAll),
fHeavyFlavour(kTRUE),
- fLongLived(kFALSE)
+ fLongLived(kFALSE),
+ fPatchOmegaDalitz(0)
{
// Default Constructor
for (Int_t i=0; i< 501; i++) fBraPart[i]= 1.;
fPythia(0),
fDecay(kAll),
fHeavyFlavour(kTRUE),
- fLongLived(kFALSE)
+ fLongLived(kFALSE),
+ fPatchOmegaDalitz(0)
{
// Copy Constructor
decayer.Copy(*this);
+ for (Int_t i = 0; i < 501; i++) fBraPart[i] = 0.;
}
void AliDecayerPythia::Init()
Float_t energy = p->Energy();
Float_t theta = p->Theta();
Float_t phi = p->Phi();
-
- Lu1Ent(0, idpart, energy, theta, 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();
+ }
fPythia->GetPrimaries();
}
//
Decay_t decay=fDecay;
fPythia->SetMSTJ(21,2);
- if (decay == kNoDecayHeavy) return;
//
// select mode
ForceParticleDecay(100553,13,2);// Upsilon'
ForceParticleDecay(200553,13,2);// Upsilon''
break;
+ case kJpsiDiMuon:
+ ForceParticleDecay( 443,13,2); // J/Psi
+ break;
case kBSemiElectronic:
ForceParticleDecay( 511,11,1); // B0
ForceParticleDecay( 521,11,1); // B+/-
break;
case kOmega:
ForceOmega();
+ break;
case kLambda:
ForceLambda();
+ break;
case kAll:
break;
case kNoDecay:
case kNoDecayBeauty:
SwitchOffBDecay();
break;
+ case kElectronEM:
+ ForceParticleDecay( 111,11,1); // pi^0
+ ForceParticleDecay( 221,11,1); // eta
+ ForceParticleDecay( 113,11,1); // rho
+ ForceParticleDecay( 223,11,1); // omega
+ ForceParticleDecay( 331,11,1); // etaprime
+ ForceParticleDecay( 333,11,1); // phi
+ break;
+ case kDiElectronEM:
+ ForceParticleDecay( 111,11,2); // pi^0
+ ForceParticleDecay( 221,11,2); // eta
+ ForceParticleDecay( 113,11,2); // rho
+ ForceParticleDecay( 223,11,2); // omega
+ ForceParticleDecay( 331,11,2); // etaprime
+ ForceParticleDecay( 333,11,2); // phi
+ 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
+ break;
}
}
Int_t productsD[2] = {kProton, kPiPlus}, multD[2] = {1, 1};
ForceParticleDecay(iDeltaPP, productsD, multD, 2);
// for Lambda_c -> Lambda(1520) pi+ -> p K- pi+
- Int_t iLambda_1520 = 3124;
+ Int_t iLambda1520 = 3124;
Int_t productsL[2] = {kProton, kKMinus}, multL[2] = {1, 1};
- ForceParticleDecay(iLambda_1520, productsL, multL, 2);
+ ForceParticleDecay(iLambda1520, productsL, multL, 2);
// for Lambda_c -> Lambda pi+
Int_t iLambda=3122;
//for Lambda_c -> antiK0 p
{iKstarbar0 , kPiPlus , kPiMinus, 0},
{-1 , -1 , -1 , -1},
{-1 , -1 , -1 , -1},
- {iLambda_1520, kPiPlus , 0 , 0}
+ {iLambda1520 , kPiPlus , 0 , 0}
};
// for Lambda_c -> Lambda pi+
Int_t decayP5[kNHadrons][4] =
if (norm > 0.) fBraPart[kc] /= norm;
}
-void AliDecayerPythia::ForceParticleDecay(Int_t particle, Int_t* products, Int_t* mult, Int_t npart, Bool_t flag)
+void AliDecayerPythia::ForceParticleDecay(Int_t particle, const Int_t* products, Int_t* mult, Int_t npart, Bool_t flag)
{
//
// Force decay of particle into products with multiplicity mult
}
-void AliDecayerPythia::SwitchOffBDecay(){
+void AliDecayerPythia::SwitchOffBDecay()
+{
+// Switch off B-decays
Int_t heavyB[]={511,521,531,5122,5132,5232,5332};
for(int i=0;i<4;i++)
{
}
-#ifdef never
-void AliDecayerPythia::Streamer(TBuffer &R__b)
-{
- // Stream an object of class AliDecayerPythia.
-
- if (R__b.IsReading()) {
- Version_t R__v = R__b.ReadVersion(); if (R__v) { }
- AliDecayer::Streamer(R__b);
- (AliPythia::Instance())->Streamer(R__b);
- R__b >> (Int_t&)fDecay;
- R__b.ReadStaticArray(fBraPart);
- } else {
- R__b.WriteVersion(AliDecayerPythia::IsA());
- AliDecayer::Streamer(R__b);
- R__b << fPythia;
- R__b << (Int_t)fDecay;
- R__b.WriteArray(fBraPart, 501);
- }
-}
-#endif
-
void AliDecayerPythia::Copy(TObject &) const
{
//