AliDecayerPythia::AliDecayerPythia():
fPythia(AliPythia::Instance()),
- fDecay(kAll)
+ fDecay(kAll),
+ fHeavyFlavour(kTRUE)
{
// Default Constructor
for (Int_t i=0; i< 501; i++) fBraPart[i]= 1.;
AliDecayerPythia::AliDecayerPythia(const AliDecayerPythia &decayer):
AliDecayer(decayer),
fPythia(0),
- fDecay(kAll)
+ fDecay(kAll),
+ fHeavyFlavour(kTRUE)
{
// Copy Constructor
decayer.Copy(*this);
//...Switch off decay of pi0, K0S, Lambda, Sigma+-, Xi0-, Omega-.
if (fDecay != kNeutralPion) {
- fPythia->SetMDCY(fPythia->Pycomp(111) ,1,0);
+ fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 0);
} else {
- fPythia->SetMDCY(fPythia->Pycomp(111) ,1,1);
+ fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 1);
}
fPythia->SetMDCY(fPythia->Pycomp(3312),1,0);
fPythia->SetMDCY(fPythia->Pycomp(3322),1,0);
fPythia->SetMDCY(fPythia->Pycomp(3334),1,0);
+
// .. Force decay channels
ForceDecay();
}
Lu1Ent(0, idpart, energy, theta, phi);
fPythia->GetPrimaries();
-// fPythia->Pylist(1);
-
}
Int_t AliDecayerPythia::ImportParticles(TClonesArray *particles)
void AliDecayerPythia::ForceDecay()
{
// Force a particle decay mode
+// Switch heavy flavour production off if requested
+ if (!fHeavyFlavour) SwitchOffHeavyFlavour();
+//
Decay_t decay=fDecay;
fPythia->SetMSTJ(21,2);
if (decay == kNoDecayHeavy) return;
}
}
+void AliDecayerPythia::SwitchOffHeavyFlavour()
+{
+ // Switch off heavy flavour production
+ //
+ // Maximum number of quark flavours used in pdf
+ fPythia->SetMSTP(58, 3);
+ // Maximum number of flavors that can be used in showers
+ fPythia->SetMSTJ(45, 3);
+ // Switch off g->QQbar splitting in decay table
+ for (Int_t i = 156; i <= 160; i++) fPythia->SetMDME(i, 1, 0);
+}
+
void AliDecayerPythia::Lu1Ent(Int_t flag, Int_t idpart,
Double_t mom, Double_t theta, Double_t phi)
{
virtual void SetForceDecay(Int_t decay)
{SetForceDecay((Decay_t) decay);}
virtual void ForceDecay();
-
+ virtual void HeavyFlavourOff() {fHeavyFlavour = kFALSE;}
virtual Float_t GetPartialBranchingRatio(Int_t ipart);
virtual Float_t GetLifetime(Int_t kf);
virtual void WriteDecayTable();
void ForceParticleDecay(Int_t particle, Int_t product, Int_t mult);
void ForceParticleDecay(Int_t particle, Int_t* products, Int_t* mult, Int_t npart);
void ForceHadronicD(Int_t optUser4Bodies=1);
- void ForceOmega();
+ void ForceOmega();
+ void SwitchOffHeavyFlavour();
Float_t GetBraPart(Int_t kf);
- void Copy(TObject &decayer) const;
+ void Copy(TObject &decayer) const;
AliDecayerPythia &operator=(const AliDecayerPythia &decayer)
{decayer.Copy(*this);return(*this);}
private:
AliPythia* fPythia; //! Pointer to AliPythia
- Decay_t fDecay; // Forced decay mode
+ Decay_t fDecay; // Forced decay mode
Float_t fBraPart[501]; //! Branching ratios
+ Bool_t fHeavyFlavour; //! Flag for heavy flavors
static Bool_t fgInit; //! initialization flag
- ClassDef(AliDecayerPythia,2) // AliDecayer implementation using Pythia
+ ClassDef(AliDecayerPythia, 3) // AliDecayer implementation using Pythia
};
#endif
fPythia->ProcInit(fProcess,fEnergyCMS,fStrucFunc);
// Forward Paramters to the AliPythia object
fDecayer->SetForceDecay(fForceDecay);
- fDecayer->Init();
// Switch off Heavy Flavors on request
if (fHFoff) {
+ // Maximum number of quark flavours used in pdf
fPythia->SetMSTP(58, 3);
+ // Maximum number of flavors that can be used in showers
fPythia->SetMSTJ(45, 3);
- for (Int_t i = 156; i <= 160; i++) fPythia->SetMDME(i, 1, 0);
+ // Switch off g->QQbar splitting in decay table
+ ((AliDecayerPythia*) fDecayer)->HeavyFlavourOff();
}
+ fDecayer->Init();
+
// Parent and Children Selection
switch (fProcess)