ClassImp(TAmpt)
+
//______________________________________________________________________________
TAmpt::TAmpt()
: TGenerator("Ampt","Ampt"),
fIzt(82),
fBmin(0.),
fBmax(5.),
- fPhi(0.)
+ fPsi(0.)
{
// Default constructor
amptsetdef();
fIzt(izt),
fBmin(bmin),
fBmax(bmax),
- fPhi(0.)
+ fPsi(0.)
{
// TAmpt constructor:
// Note that there may be only one functional TAmpt object
- // at a time, so it's not use to create more than one instance of it.
+ // at a time, so it's not useful to create more than one
+ // instance of it.
amptsetdef();
}
Int_t numpart = HBT.nlast;
printf("TAmpt: AMPT stack contains %d particles.\n", numpart);
- Double_t sinphi = TMath::Sin(fPhi);
- Double_t cosphi = TMath::Cos(fPhi);
-
for (Int_t i=0; i < numpart; ++i) {
Int_t status = 1;
- Double_t px0 = HBT.plast[i][0];//GeV/c
- Double_t py0 = HBT.plast[i][1];//GeV/c
- Double_t px = px0*cosphi-py0*sinphi;
- Double_t py = py0*cosphi+px0*sinphi;
- Double_t pz = HBT.plast[i][2];//GeV/c
- Double_t ma = HBT.plast[i][3];//GeV/c/c
- Double_t vx0 = 0;//HBT.xlast[i][0]*1e-12;//mm
- Double_t vy0 = 0;//HBT.xlast[i][1]*1e-12;//mm
- Double_t vx = vx0*cosphi-vy0*sinphi;
- Double_t vy = vy0*cosphi+vx0*sinphi;
- Double_t vz = 0;//HBT.xlast[i][2]*1e-12;//mm
- Double_t vt = 0;//HBT.xlast[i][3]*1e-12;//mm/c
- Int_t pdg = invflv(HBT.lblast[i]);
+ Double_t px = HBT.plast[i][0];//GeV/c
+ Double_t py = HBT.plast[i][1];//GeV/c
+ Double_t pz = HBT.plast[i][2];//GeV/c
+ Double_t ma = HBT.plast[i][3];//GeV/c/c
+ Double_t vx = 0;//HBT.xlast[i][0]*1e-12;//mm
+ Double_t vy = 0;//HBT.xlast[i][1]*1e-12;//mm
+ Double_t vz = 0;//HBT.xlast[i][2]*1e-12;//mm
+ Double_t vt = 0;//HBT.xlast[i][3]*1e-12;//mm/c
+ //Double_t vx = HBT.xlast[i][0]*1e-12;//mm
+ //Double_t vy = HBT.xlast[i][1]*1e-12;//mm
+ //Double_t vz = HBT.xlast[i][2]*1e-12;//mm
+ //Double_t vt = HBT.xlast[i][3]*1e-12;//mm/c
+
+ // Rotate xy components of vectors to new reaction plane:
+ Double_t pxp=TMath::Cos(fPsi)*px - TMath::Sin(fPsi)*py;
+ Double_t pyp=TMath::Sin(fPsi)*px + TMath::Cos(fPsi)*py;
+ Double_t vxp=TMath::Cos(fPsi)*vx - TMath::Sin(fPsi)*vy;
+ Double_t vyp=TMath::Sin(fPsi)*vx + TMath::Cos(fPsi)*vy;
+
+ Int_t pdg = invflv(HBT.lblast[i]);
TParticle *p = new TParticle(pdg,
status,
-1,
-1,
-1,
-1,
- px,
- py,
+ pxp,
+ pyp,
pz,
TMath::Sqrt(ma*ma+px*px+py*py+pz*pz),
- vx,
- vy,
+ vxp,
+ vyp,
vz,
- vt
- );
- if((px0==0)&&(py0==0)) {
+ vt);
+ if((px==0)&&(py==0)) {
if(pz<0)
p->SetUniqueID(0);
else
p->SetUniqueID(10);
} else
p->SetUniqueID(999);
+ fParticles->Add(p);
}
return fParticles;
}
Int_t numpart = HBT.nlast;
printf("TAmpt: AMPT stack contains %d particles.\n", numpart);
- Double_t sinphi = TMath::Sin(fPhi);
- Double_t cosphi = TMath::Cos(fPhi);
-
//at this point not clear how to read particle history, just take primaries.
for (Int_t i=0; i < numpart; ++i) {
Int_t status = 1;
- Double_t px0 = HBT.plast[i][0];//GeV/c
- Double_t py0 = HBT.plast[i][1];//GeV/c
- Double_t px = px0*cosphi-py0*sinphi;
- Double_t py = py0*cosphi+px0*sinphi;
- Double_t pz = HBT.plast[i][2];//GeV/c
- Double_t ma = HBT.plast[i][3];//GeV/c/c
- Double_t vx0 = 0;//HBT.xlast[i][0]*1e-12;//mm
- Double_t vy0 = 0;//HBT.xlast[i][1]*1e-12;//mm
- Double_t vx = vx0*cosphi-vy0*sinphi;
- Double_t vy = vy0*cosphi+vx0*sinphi;
- Double_t vz = 0;//HBT.xlast[i][2]*1e-12;//mm
- Double_t vt = 0;//HBT.xlast[i][3]*1e-12;//mm/c
+ Double_t px = HBT.plast[i][0];//GeV/c
+ Double_t py = HBT.plast[i][1];//GeV/c
+ Double_t pz = HBT.plast[i][2];//GeV/c
+ Double_t ma = HBT.plast[i][3];//GeV/c/c
+ Double_t vx = 0;//HBT.xlast[i][0]*1e-12;//mm
+ Double_t vy = 0;//HBT.xlast[i][1]*1e-12;//mm
+ Double_t vz = 0;//HBT.xlast[i][2]*1e-12;//mm
+ Double_t vt = 0;//HBT.xlast[i][3]*1e-12;//mm/c
+ //Double_t vx = HBT.xlast[i][0]*1e-12;//mm
+ //Double_t vy = HBT.xlast[i][1]*1e-12;//mm
+ //Double_t vz = HBT.xlast[i][2]*1e-12;//mm
+ //Double_t vt = HBT.xlast[i][3]*1e-12;//mm/c
+
+ // Rotate xy components of vectors to new reaction plane:
+ Double_t pxp=TMath::Cos(fPsi)*px - TMath::Sin(fPsi)*py;
+ Double_t pyp=TMath::Sin(fPsi)*px + TMath::Cos(fPsi)*py;
+ Double_t vxp=TMath::Cos(fPsi)*vx - TMath::Sin(fPsi)*vy;
+ Double_t vyp=TMath::Sin(fPsi)*vx + TMath::Cos(fPsi)*vy;
+
Int_t pdg = invflv(HBT.lblast[i]);
//printf("i %d pdg %d px %f py %f pz %f vx %f vy %f vz %f vt %f\n", i, pdg, px, py, pz, vx, vy, vz, vt);
new(particlesR[i]) TParticle(pdg,
-1,
-1,
-1,
- px,
- py,
+ pxp,
+ pyp,
pz,
TMath::Sqrt(ma*ma+px*px+py*py+pz*pz),
- vx,
- vy,
+ vxp,
+ vyp,
vz,
- vt
- );
- if((px0==0)&&(py0==0)){
+ vt);
+ if((px==0)&&(py==0)){
if(pz<0)
particlesR[i]->SetUniqueID(0);
else
TClonesArray &nucleonsR = *nucleons;
nucleonsR.Clear();
- Double_t sinphi = TMath::Sin(fPhi);
- Double_t cosphi = TMath::Cos(fPhi);
-
Int_t nA = HPARNT.ihnt2[0];
for (Int_t i=0; i < nA; ++i) {
- Double_t x0 = HJCRDN.yp[i][0] + 0.5*GetBB();
- Double_t y0 = HJCRDN.yp[i][1];
- Double_t x = x0*cosphi-y0*sinphi;
- Double_t y = y0*cosphi+x0*sinphi;
- Double_t z = HJCRDN.yp[i][2];
- Int_t p = HSTRNG.nfp[3][i];
- Int_t s = HSTRNG.nfp[4][i];
+ Double_t x = HJCRDN.yp[i][0] + 0.5*GetBB();
+ Double_t y = HJCRDN.yp[i][1];
+ Double_t z = HJCRDN.yp[i][2];
+
+ // Rotate xy components of vectors to new reaction plane:
+ Double_t xp=TMath::Cos(fPsi)*x - TMath::Sin(fPsi)*y;
+ Double_t yp=TMath::Sin(fPsi)*x + TMath::Cos(fPsi)*y;
+
+ Int_t p = HSTRNG.nfp[3][i];
+ Int_t s = HSTRNG.nfp[4][i];
new(nucleonsR[i]) TParticle(p,
s,
-1,
0,
0,
0,
- x,
- y,
+ xp,
+ yp,
z,
- 0
- );
+ 0);
nucleonsR[i]->SetUniqueID(1);
}
Int_t nB = HPARNT.ihnt2[2];
for (Int_t i=0; i < nB; ++i) {
- Double_t x0 = HJCRDN.yt[i][0] - 0.5*HPARNT.hint1[18];
- Double_t y0 = HJCRDN.yt[i][1];
- Double_t x = x0*cosphi-y0*sinphi;
- Double_t y = y0*cosphi+x0*sinphi;
- Double_t z = HJCRDN.yt[i][2];
- Int_t p = HSTRNG.nft[3][i];
- Int_t s = HSTRNG.nft[4][i];
+ Double_t x = HJCRDN.yt[i][0] - 0.5*HPARNT.hint1[18];
+ Double_t y = HJCRDN.yt[i][1];
+ Double_t z = HJCRDN.yt[i][2];
+
+ // Rotate xy components of vectors to new reaction plane:
+ Double_t xp=TMath::Cos(fPsi)*x - TMath::Sin(fPsi)*y;
+ Double_t yp=TMath::Sin(fPsi)*x + TMath::Cos(fPsi)*y;
+
+ Int_t p = HSTRNG.nft[3][i];
+ Int_t s = HSTRNG.nft[4][i];
new(nucleonsR[nA+i]) TParticle(p,
s,
-1,
0,
0,
0,
- x,
- y,
+ xp,
+ yp,
z,
- 0
- );
+ 0);
nucleonsR[nA+i]->SetUniqueID(-1);
}
return nA+nB;
Int_t TAmpt::GetKATT(Int_t key1, Int_t key2) const
{
// Get values of array KATT in common HMAIN2
- if ( key1<1 || key1>200000 ) {
+ if ( key1<1 || key1> _MAXNPARTICLE_ ) {
printf("ERROR in TAmpt::GetKATT(key1,key2):\n");
- printf(" key1=%i is out of range [1..200000]\n",key1);
+ printf(" key1=%i is out of range [1..%d]\n",key1,_MAXNPARTICLE_);
return 0;
}
if ( key2<1 || key2>4 ) {
Float_t TAmpt::GetPATT(Int_t key1, Int_t key2) const
{
// Get values of array PATT in common HMAIN2
- if ( key1<1 || key1>200000 ) {
+ if ( key1<1 || key1>_MAXNPARTICLE_ ) {
printf("ERROR in TAmpt::GetPATT(key1,key2):\n");
printf(" key1=%i is out of range [1..130000]\n",key1);
return 0;
Float_t TAmpt::GetVATT(Int_t key1, Int_t key2) const
{
// Get values of array VATT in common HMAIN2
- if ( key1<1 || key1>200000 ) {
+ if ( key1<1 || key1>_MAXNPARTICLE_ ) {
printf("ERROR in TAmpt::GetVATT(key1,key2):\n");
printf(" key1=%i is out of range [1..130000]\n",key1);
return 0;
if ( key < 1 || key > 200) {
printf("ERROR in TAmpt::SetPARJ(key,parm):\n");
printf(" key=%i is out of range [1..200]\n",key);
+ return;
}
LUDAT1.parj[key-1] = parm;
}
if ( key < 1 || key > 200) {
printf("ERROR in TAmpt::SetMSTJ(key,parm):\n");
printf(" key=%i is out of range [1..200]\n",key);
+ return;
}
LUDAT1.mstj[key-1] = parm;
}
// Generates one event;
//printf("Next event ------------------------\n");
- fPhi = TMath::TwoPi()*AliAmptRndm::GetAmptRandom()->Rndm()-TMath::Pi();
Ampt(fFrame.Data(),fBmin,fBmax);
}