From 21aaa1754546c2dfdef97c1d952ae96d0ef71e53 Mon Sep 17 00:00:00 2001 From: fca Date: Fri, 16 Jul 1999 18:42:06 +0000 Subject: [PATCH] Import All particles from Pythia and add CutOnChild --- EVGEN/AliGenParam.cxx | 96 +++++++++++++++++++++++++++++++------------ EVGEN/AliGenParam.h | 2 + 2 files changed, 71 insertions(+), 27 deletions(-) diff --git a/EVGEN/AliGenParam.cxx b/EVGEN/AliGenParam.cxx index cafe5933b82..12566847dd9 100644 --- a/EVGEN/AliGenParam.cxx +++ b/EVGEN/AliGenParam.cxx @@ -27,6 +27,7 @@ AliGenParam::AliGenParam() fYPara = 0; fParam = jpsi_p; fAnalog = analog; + SetCutOnChild(); } //____________________________________________________________ @@ -49,6 +50,7 @@ AliGenParam::AliGenParam(Int_t npart, Param_t param) fChildSelect.Set(5); for (Int_t i=0; i<5; i++) fChildSelect[i]=0; ForceDecay(); + SetCutOnChild(); } //____________________________________________________________ @@ -135,14 +137,16 @@ void AliGenParam::Generate() // on the vertex is done if selected + //printf("Generate !!!!!!!!!!!!!\n"); + Float_t polar[3]= {0,0,0}; // Float_t origin[3], origin0[3]; Float_t pt, pl, ptot; Float_t phi, theta; - Float_t p[3]; + Float_t p[3], pc[3], och[3], pch[10][3]; Float_t ty, xmt; - Int_t i, nt, j; + Int_t nt, i, j, kfch[10]; Float_t wgtp, wgtch; Double_t dummy; static TClonesArray *particles; @@ -158,8 +162,9 @@ void AliGenParam::Generate() TMath::Sqrt(-2*TMath::Log(random[2*j+1])); } } - for(i=0;i - SetTrack(0,-1,Ipart,p,origin,polar,0,"Primary",nt,wgtp); - Int_t iparent=nt; // // use lujet to decay particle Float_t energy=TMath::Sqrt(ptot*ptot+am*am); fPythia->DecayParticle(Ipart,energy,theta,phi); -// fPythia->LuList(1); - + // fPythia->LuList(1); + + + //printf("origin0 %f %f %f\n",origin0[0],origin0[1],origin0[2]); + //printf("fCutOnChild %d \n",fCutOnChild); // // select muons - fPythia->ImportParticles(particles) ; - Int_t np = particles->GetEntriesFast(); - for (Int_t i = 0; iImportParticles(particles,"All"); + //printf("np %d \n",np); + Int_t ncsel=0; + for (i = 1; iAt(i); Int_t kf = iparticle->GetPdgCode(); + //printf("kf %d\n",kf); // // children if (ChildSelected(TMath::Abs(kf))) { - p[0]=iparticle->Px(); - p[1]=iparticle->Py(); - p[2]=iparticle->Pz(); - origin[0]=origin0[0]+iparticle->Vx()/10; - origin[1]=origin0[1]+iparticle->Vy()/10; - origin[2]=origin0[2]+iparticle->Vz()/10; - gAlice->SetTrack(fTrackIt,iparent,kf, - p,origin,polar, - 0,"Decay",nt,wgtch); - gAlice->KeepTrack(nt); + pc[0]=iparticle->Px(); + pc[1]=iparticle->Py(); + pc[2]=iparticle->Pz(); + och[0]=origin0[0]+iparticle->Vx()/10; + och[1]=origin0[1]+iparticle->Vy()/10; + och[2]=origin0[2]+iparticle->Vz()/10; + if (fCutOnChild) { + Float_t PtChild=TMath::Sqrt(pc[0]*pc[0]+pc[1]*pc[1]); + Float_t PChild=TMath::Sqrt(PtChild*PtChild+pc[2]*pc[2]); + Float_t ThetaChild=TMath::ATan2(PtChild,pc[2]); + Float_t PhiChild=TMath::ATan2(pc[1],pc[0])+TMath::Pi(); + if ((PtChild > fPtMin && PtChild fPMin && PChild fThetaMin && ThetaChild fPhiMin && PhiChild 0) || !fCutOnChild){ + ipa++; +// +// parent + gAlice-> + SetTrack(0,-1,Ipart,p,origin,polar,0,"Primary",nt,wgtp); + iparent=nt; + + for (i=0; i< ncsel; i++) { + gAlice->SetTrack(fTrackIt,iparent,kfch[i], + &pch[i][0],och,polar, + 0,"Decay",nt,wgtch); + gAlice->KeepTrack(nt); + } + + } // kinematic selection break; - } // kinematic selection + } // while } // event loop } diff --git a/EVGEN/AliGenParam.h b/EVGEN/AliGenParam.h index a769e8a8c9a..2a5aaca9a40 100644 --- a/EVGEN/AliGenParam.h +++ b/EVGEN/AliGenParam.h @@ -27,6 +27,7 @@ protected: Float_t fBias; Int_t fTrials; Decay_t fForceDecay; + Int_t fCutOnChild; TArrayI fChildSelect; AliPythia *fPythia; private: @@ -47,6 +48,7 @@ protected: // force decay type virtual void ForceDecay(Decay_t decay=dimuon) {fForceDecay=decay;} virtual void SetWeighting(Weighting_t flag=analog) {fAnalog=flag;} + virtual void SetCutOnChild(Int_t flag=0) {fCutOnChild=flag;} ClassDef(AliGenParam,1) // Generator using parameterised pt- and y-distribution }; #endif -- 2.43.0