// Default constructor
}
//____________________________________________________________
-AliGenParam::AliGenParam(Int_t npart, AliGenLib * Library, Int_t param, char* tname)
+AliGenParam::AliGenParam(Int_t npart, AliGenLib * Library, Int_t param, const char* tname)
:AliGenMC(npart),
fPtParaFunc(Library->GetPt(param, tname)),
fYParaFunc (Library->GetY (param, tname)),
//____________________________________________________________
AliGenParam::AliGenParam(Int_t npart, Int_t param,
- Double_t (*PtPara) (Double_t*, Double_t*),
- Double_t (*YPara ) (Double_t* ,Double_t*),
+ Double_t (*PtPara) (const Double_t*, const Double_t*),
+ Double_t (*YPara ) (const Double_t* ,const Double_t*),
Int_t (*IpPara) (TRandom *))
:AliGenMC(npart),
*/
//End_Html
char name[256];
- sprintf(name, "pt-parameterisation for %s", GetName());
+ snprintf(name, 256, "pt-parameterisation for %s", GetName());
if (fPtPara) fPtPara->Delete();
fPtPara = new TF1(name, fPtParaFunc, fPtMin, fPtMax,0);
fPtPara->SetNpx(npx);
- sprintf(name, "y-parameterisation for %s", GetName());
+ snprintf(name, 256, "y-parameterisation for %s", GetName());
if (fYPara) fYPara->Delete();
fYPara = new TF1(name, fYParaFunc, fYMin, fYMax, 0);
gROOT->GetListOfFunctions()->Remove(fYPara);
- sprintf(name, "pt-for-%s", GetName());
+ snprintf(name, 256, "pt-for-%s", GetName());
TF1 ptPara(name ,fPtParaFunc, 0, 15, 0);
- sprintf(name, "y-for-%s", GetName());
+ snprintf(name, 256, "y-for-%s", GetName());
TF1 yPara(name, fYParaFunc, -6, 6, 0);
//
"Division by 0: Please check you rapidity range !");
}
- pl=xmt*ty/sqrt(1.-ty*ty);
+ pl=xmt*ty/sqrt((1.-ty)*(1.+ty));
theta=TMath::ATan2(pt,pl);
// Cut on theta
if(theta<fThetaMin || theta>fThetaMax) continue;
// if fForceDecay == none Primary particle is tracked by GEANT
// (In the latest, make sure that GEANT actually does all the decays you want)
//
+ Bool_t decayed = kFALSE;
+
if (fForceDecay != kNoDecay) {
// Using lujet to decay particle
}
if (np >1) {
- TParticle* iparticle = (TParticle *) particles->At(0);
+ decayed = kTRUE;
+ TParticle* iparticle = 0;
Int_t ipF, ipL;
for (i = 1; i<np ; i++) {
trackIt[i] = 1;
//
// children
- if (ChildSelected(TMath::Abs(kf)) || fForceDecay == kAll && trackIt[i])
+ if ((ChildSelected(TMath::Abs(kf)) || fForceDecay == kAll) && trackIt[i])
{
if (fCutOnChild) {
pc[0]=iparticle->Px();
ipa++;
//
// Parent
- PushTrack(0, -1, iPart, p, origin0, polar, 0, kPPrimary, nt, wgtp);
+
+
+ PushTrack(0, -1, iPart, p, origin0, polar, 0, kPPrimary, nt, wgtp, ((decayed)? 11 : 1));
pParent[0] = nt;
KeepTrack(nt);
fNprimaries++;
if (pSelected[i]) {
TParticle* iparticle = (TParticle *) particles->At(i);
Int_t kf = iparticle->GetPdgCode();
+ Int_t ksc = iparticle->GetStatusCode();
Int_t jpa = iparticle->GetFirstMother()-1;
och[0] = origin0[0]+iparticle->Vx()/10;
PushTrack(fTrackIt * trackIt[i], iparent, kf,
pc, och, polar,
- 0, kPDecay, nt, wgtch);
+ 0, kPDecay, nt, wgtch, ksc);
pParent[i] = nt;
KeepTrack(nt);
fNprimaries++;
else // nodecay option, so parent will be tracked by GEANT (pions, kaons, eta, omegas, baryons)
{
gAlice->GetMCApp()->
- PushTrack(fTrackIt,-1,iPart,p,origin0,polar,0,kPPrimary,nt,wgtp);
+ PushTrack(fTrackIt,-1,iPart,p,origin0,polar,0,kPPrimary,nt,wgtp, 1);
ipa++;
fNprimaries++;
}