kAll, kNoDecayHeavy, kHardMuons, kBJpsi, kBJpsiUndecayed,
kWToMuon,kWToCharm, kWToCharmToMuon, kZDiMuon, kZDiElectron, kNeutralPion, kAllMuonic,
kChiToJpsiGammaToMuonMuon, kChiToJpsiGammaToElectronElectron, kNoDecayBeauty, kPsiPrimeJpsiDiElectron,
- kElectronEM, kGammaEM, kDiElectronEM, kBeautyUpgrade
+ kElectronEM, kGammaEM, kDiElectronEM, kBeautyUpgrade,kHadronicDWithV0,kHadronicDWithout4BodiesWithV0
} Decay_t;
#endif
break;
case kHadronicD:
case kHadronicDWithout4Bodies:
+ case kHadronicDWithV0:
+ case kHadronicDWithout4BodiesWithV0:
fChildSelect[0]=kPiPlus;
fChildSelect[1]=kKPlus;
break;
ForceParticleDecay( 23, 11,2); // Z -> e+ e-
break;
case kHadronicD:
- ForceHadronicD(1);
- break;
+ ForceHadronicD(1,0);
+ break;
+ case kHadronicDWithV0:
+ ForceHadronicD(1,1);
+ break;
case kHadronicDWithout4Bodies:
- ForceHadronicD(0);
+ ForceHadronicD(0,0);
+ break;
+ case kHadronicDWithout4BodiesWithV0:
+ ForceHadronicD(0,1);
break;
case kPhiKK:
ForceParticleDecay(333,321,2); // Phi->K+K-
const Int_t prod2[2]={413,211};
ForceParticleDecay(511,prod2,mult,2,1);
// force charm hadronic decays (D mesons and Lc)
- ForceHadronicD(0);
+ ForceHadronicD(0,0);
}
void AliDecayerPythia::Lu1Ent(Int_t flag, Int_t idpart,
}
-void AliDecayerPythia::ForceHadronicD(Int_t optUse4Bodies)
+void AliDecayerPythia::ForceHadronicD(Int_t optUse4Bodies, Int_t optUseDtoV0)
{
+
+ // Xic->Xipipi
+ Int_t Xic = 4232;
+ Int_t productsX[3] = {3312, 211,211}, multX[3] = {1, 1, 1};
+ ForceParticleDecay(Xic, productsX, multX, 3);
//
// Force golden D decay modes
//
Int_t decayP3[kNHadrons][4] =
{
{kPiPlus , iPhi , 0 , 0},
- {kKMinus , kPiPlus, iRho0 , 0 },
- {-1 , -1 , -1 , -1},
+ {kKMinus , kPiPlus, iRho0 , 0},
+ {kKPlus , iK0bar , 0 , 0},
{-1 , -1 , -1 , -1},
{kProton , kKMinus, kPiPlus , 0}
};
// for Lambda_c -> Lambda pi+
Int_t decayP5[kNHadrons][4] =
{
- {-1 , -1 , -1 , -1},
+ {iK0bar , kPiPlus, 0 , 0},
{-1 , -1 , -1 , -1},
{-1 , -1 , -1 , -1},
{-1 , -1 , -1 , -1},
decayP4[1][iDau]=-1;
}
}
-
+ if(optUseDtoV0==0){
+ for(Int_t iDau=0;iDau<4;iDau++){
+ decayP3[2][iDau]=-1; // swicth off Ds->K0K+
+ decayP5[0][iDau]=-1; // swicth off D+->K0pi+
+ }
+ }
+
for (Int_t ihadron = 0; ihadron < kNHadrons; ihadron++)
{
Int_t kc = fPythia->Pycomp(hadron[ihadron]);
Int_t CountProducts(Int_t channel, Int_t particle);
void ForceParticleDecay(Int_t particle, Int_t product, Int_t mult);
void ForceParticleDecay(Int_t particle, const Int_t* products, Int_t* mult, Int_t npart, Bool_t flag = 0);
- void ForceHadronicD(Int_t optUser4Bodies=1);
+ void ForceHadronicD(Int_t optUse4Bodies=1, Int_t optUseDtoV0=0);
void ForceOmega();
void ForceLambda();
void SwitchOffHeavyFlavour();
fPythia8->ReadString("23:onIfAll = 11 11");
break;
case kHadronicD:
- ForceHadronicD(1);
+ ForceHadronicD(1,0);
break;
+ case kHadronicDWithV0:
+ ForceHadronicD(1,1);
+ break;
case kHadronicDWithout4Bodies:
- ForceHadronicD(0);
- break;
+ ForceHadronicD(0,0);
+ break;
+ case kHadronicDWithout4BodiesWithV0:
+ ForceHadronicD(0,1);
+ break;
case kPhiKK:
// Phi-> K+ K-
fPythia8->ReadString("333:onMode = off");
}
-void AliDecayerPythia8::ForceHadronicD(Int_t optUse4Bodies)
+void AliDecayerPythia8::ForceHadronicD(Int_t optUse4Bodies, Int_t optUseDtoV0)
{
//
// Force golden D decay modes
fPythia8->ReadString("421:onIfMatch = 321 211");
if (optUse4Bodies) {
- // D0 -> K pi pi pi
- fPythia8->ReadString("421:onIfMatch = 321 211 211 211");
- // D0 -> K pi rho
- fPythia8->ReadString("421:onIfMatch = 321 211 113");
- // D0 -> K*0 pi pi
- fPythia8->ReadString("421:onIfMatch = 313 211 211");
+ // D0 -> K pi pi pi
+ fPythia8->ReadString("421:onIfMatch = 321 211 211 211");
+ // D0 -> K pi rho
+ fPythia8->ReadString("421:onIfMatch = 321 211 113");
+ // D0 -> K*0 pi pi
+ fPythia8->ReadString("421:onIfMatch = 313 211 211");
}
-
+ if(optUseDtoV0==1){
+ // Ds -> K0K
+ fPythia8->ReadString("431:onIfMatch = 311 321");
+ // Ds -> K0pi
+ fPythia8->ReadString("411:onIfMatch = 311 211");
+ }
+
+
// D_s -> K K*
fPythia8->ReadString("431:onIfMatch = 321 313");
// D_s -> Phi pi
AliDecayerPythia8(const AliDecayerPythia8&);
AliDecayerPythia8 operator=(const AliDecayerPythia8&);
void SwitchOffHeavyFlavour();
- void ForceHadronicD(Int_t optUser4Bodies = 1);
+ void ForceHadronicD(Int_t optUser4Bodies = 1,Int_t optUseDtoV0 =1);
AliTPythia8* fPythia8; // Pointer to pythia8
Int_t fDebug; // Debug level