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.;
fDecay(kAll),
fHeavyFlavour(kTRUE),
fLongLived(kFALSE),
- fPatchOmegaDalitz(0)
+ fPatchOmegaDalitz(0),
+ fDecayerExodus(0),
+ fPi0(1)
{
// Copy Constructor
decayer.Copy(*this);
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;
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);
}
- fPythia->GetPrimaries();
+ 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);
+ }
+ 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)
Double_t norm = 0.;
for (Int_t channel=ifirst; channel<=ilast;channel++){
norm+=fPythia->GetBRAT(channel);
- printf("%f ",fPythia->GetBRAT(channel));
- }printf("\n");
+ }
if (norm < 1.-1.e-12 || norm > 1.+1.e-12) {
char pName[16];
fPythia->Pyname(particle,pName);