- Int_t kc = fPythia->Pycomp(hadron[ihadron]);
- fPythia->SetMDCY(kc,1,1);
- Int_t ifirst = fPythia->GetMDCY(kc,2);
- Int_t ilast = ifirst + fPythia->GetMDCY(kc,3)-1;
-
- for (channel = ifirst; channel <= ilast; channel++) {
- if (
- fPythia->GetKFDP(channel,1) == decayP[ihadron][0] &&
- fPythia->GetKFDP(channel,2) == decayP[ihadron][1] &&
- fPythia->GetKFDP(channel,3) == decayP[ihadron][2] &&
- fPythia->GetKFDP(channel,4) == 0
- )
- {
- fPythia->SetMDME(channel,1,1);
- } else {
- fPythia->SetMDME(channel,1,0);
- fBraPart[kc] -= fPythia->GetBRAT(channel);
- } // selected channel ?
- } // decay channels
+ {-1 , -1 , -1 , -1},
+ {-1 , -1 , -1 , -1},
+ {-1 , -1 , -1 , -1},
+ {-1 , -1 , -1 , -1},
+ {iLambda , kPiPlus, 0 , 0}
+ };
+
+ // for Lambda_c -> K0bar p
+ Int_t decayP6[kNHadrons][4] =
+ {
+ {-1 , -1 , -1 , -1},
+ {-1 , -1 , -1 , -1},
+ {-1 , -1 , -1 , -1},
+ {-1 , -1 , -1 , -1},
+ {kProton , iK0bar, 0 , 0}
+ };
+
+ if(optUse4Bodies==0){
+ for(Int_t iDau=0;iDau<4;iDau++){
+ decayP2[1][iDau]=-1;
+ decayP3[1][iDau]=-1;
+ decayP4[1][iDau]=-1;
+ }
+ }
+
+ for (Int_t ihadron = 0; ihadron < kNHadrons; ihadron++)
+ {
+ Int_t kc = fPythia->Pycomp(hadron[ihadron]);
+ Int_t ifirst = fPythia->GetMDCY(kc,2);
+ Int_t ilast = ifirst + fPythia->GetMDCY(kc,3)-1;
+ Double_t norm = 0.;
+ for (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(hadron[ihadron],pName);
+ AliWarning(Form("Total branching ratio of %s (PDG code = %d) not equal to 1 (= %f)",pName,hadron[ihadron],norm));
+ }
+ fBraPart[kc] = norm;
+ fPythia->SetMDCY(kc,1,1);
+
+ for (channel = ifirst; channel <= ilast; channel++) {
+ if ((
+ fPythia->GetKFDP(channel,1) == decayP1[ihadron][0] &&
+ fPythia->GetKFDP(channel,2) == decayP1[ihadron][1] &&
+ fPythia->GetKFDP(channel,3) == decayP1[ihadron][2] &&
+ fPythia->GetKFDP(channel,4) == decayP1[ihadron][3] &&
+ fPythia->GetKFDP(channel,5) == 0
+ ) || (
+ fPythia->GetKFDP(channel,1) == decayP2[ihadron][0] &&
+ fPythia->GetKFDP(channel,2) == decayP2[ihadron][1] &&
+ fPythia->GetKFDP(channel,3) == decayP2[ihadron][2] &&
+ fPythia->GetKFDP(channel,4) == decayP2[ihadron][3] &&
+ fPythia->GetKFDP(channel,5) == 0
+ ) || (
+ fPythia->GetKFDP(channel,1) == decayP3[ihadron][0] &&
+ fPythia->GetKFDP(channel,2) == decayP3[ihadron][1] &&
+ fPythia->GetKFDP(channel,3) == decayP3[ihadron][2] &&
+ fPythia->GetKFDP(channel,4) == decayP3[ihadron][3] &&
+ fPythia->GetKFDP(channel,5) == 0
+ ) || (
+ fPythia->GetKFDP(channel,1) == decayP4[ihadron][0] &&
+ fPythia->GetKFDP(channel,2) == decayP4[ihadron][1] &&
+ fPythia->GetKFDP(channel,3) == decayP4[ihadron][2] &&
+ fPythia->GetKFDP(channel,4) == decayP4[ihadron][3] &&
+ fPythia->GetKFDP(channel,5) == 0
+ ) || (
+ fPythia->GetKFDP(channel,1) == decayP5[ihadron][0] &&
+ fPythia->GetKFDP(channel,2) == decayP5[ihadron][1] &&
+ fPythia->GetKFDP(channel,3) == decayP5[ihadron][2] &&
+ fPythia->GetKFDP(channel,4) == decayP5[ihadron][3] &&
+ fPythia->GetKFDP(channel,5) == 0
+ ) || (
+ fPythia->GetKFDP(channel,1) == decayP6[ihadron][0] &&
+ fPythia->GetKFDP(channel,2) == decayP6[ihadron][1] &&
+ fPythia->GetKFDP(channel,3) == decayP6[ihadron][2] &&
+ fPythia->GetKFDP(channel,4) == decayP6[ihadron][3] &&
+ fPythia->GetKFDP(channel,5) == 0
+
+ ))
+
+ {
+ fPythia->SetMDME(channel,1,1);
+ } else {
+ fPythia->SetMDME(channel,1,0);
+ fBraPart[kc] -= fPythia->GetBRAT(channel);
+ } // selected channel ?
+ } // decay channels
+ if (norm > 0) fBraPart[kc] /= norm;