#include <TParticleClassPDG.h>
#include <TPDGCode.h>
#include <TLorentzVector.h>
+#include <TClonesArray.h>
#include "AliRunLoader.h"
#include "AliGenDPMjet.h"
#include "AliGenDPMjetEventHeader.h"
AliGenDPMjet::AliGenDPMjet()
:AliGenMC(),
fBeamEn(2750.),
- fEnergyCMS(5500.),
fMinImpactParam(0.),
fMaxImpactParam(5.),
fICentr(0),
fSpecn(0),
fSpecp(0),
fDPMjet(0),
- fParticles(0),
fNoGammas(0),
fLHC(0),
fPi0Decay(0),
fProcess(kDpmMb)
{
// Constructor
+ fEnergyCMS = 5500.;
AliDpmJetRndm::SetDpmJetRandom(GetRandom());
}
AliGenDPMjet::AliGenDPMjet(Int_t npart)
:AliGenMC(npart),
fBeamEn(2750.),
- fEnergyCMS(5500.),
fMinImpactParam(0.),
fMaxImpactParam(5.),
fICentr(0),
fSpecn(0),
fSpecp(0),
fDPMjet(0),
- fParticles(new TClonesArray("TParticle",10000)),
fNoGammas(0),
fLHC(0),
fPi0Decay(0),
{
// Default PbPb collisions at 5. 5 TeV
//
+ fEnergyCMS = 5500.;
fName = "DPMJET";
fTitle= "Particle Generator using DPMJET";
SetTarget();
AliGenDPMjet::AliGenDPMjet(const AliGenDPMjet &/*Dpmjet*/)
:AliGenMC(),
fBeamEn(2750.),
- fEnergyCMS(5500.),
fMinImpactParam(0.),
fMaxImpactParam(5.),
fICentr(0),
fSpecn(0),
fSpecp(0),
fDPMjet(0),
- fParticles(0),
fNoGammas(0),
fLHC(0),
fPi0Decay(0),
fProcess(kDpmMb)
{
// Dummy copy constructor
+ fEnergyCMS = 5500.;
}
//______________________________________________________________________________
AliGenDPMjet::~AliGenDPMjet()
{
// Destructor
- delete fParticles;
}
//______________________________________________________________________________
void AliGenDPMjet::Init()
// fICentr<-99 -> fraction of x-sec. = XSFRAC
// fICentr=-1. -> evaporation/fzc suppressed
// fICentr<-1. -> evaporation/fzc suppressed
- if (fAProjectile == 1 && fZProjectile == 1) fDPMjet->SetfIdp(1);
+ if (fAProjectile == 1 && TMath::Abs(fZProjectile == 1)) fDPMjet->SetfIdp(1);
fDPMjet->SetfFCentr(fICentr);
fDPMjet->SetbRange(fMinImpactParam, fMaxImpactParam);
Float_t polar[3] = {0,0,0};
Float_t origin[3] = {0,0,0};
- Float_t origin0[3] = {0,0,0};
Float_t p[3];
Float_t tof;
fDPMjet->GenerateEvent();
fTrials++;
- fDPMjet->ImportParticles(fParticles,"All");
+ fDPMjet->ImportParticles(&fParticles,"All");
if (fLHC) Boost();
// Temporaneo
fGenImpPar = fDPMjet->GetBImpac();
- Int_t np = fParticles->GetEntriesFast();
+ Int_t np = fParticles.GetEntriesFast();
printf("\n **************************************************%d\n",np);
Int_t nc=0;
if (np==0) continue;
pSelected[i] = 0;
}
-// Get event vertex
-
- fVertex[0] = origin0[0];
- fVertex[1] = origin0[1];
- fVertex[2] = origin0[2];
-
// First select parent particles
for (i = 0; i<np; i++) {
- TParticle *iparticle = (TParticle *) fParticles->At(i);
+ TParticle *iparticle = (TParticle *) fParticles.At(i);
// Is this a parent particle ?
Bool_t hasSelectedDaughters = kFALSE;
kf = iparticle->GetPdgCode();
- if (kf == 92) continue;
+ if (kf == 92 || kf == 99999) continue;
ks = iparticle->GetStatusCode();
// No initial state partons
if (ks==21) continue;
for (i=0; i<np; i++) {
- TParticle *iparticle = (TParticle *) fParticles->At(i);
+ TParticle *iparticle = (TParticle *) fParticles.At(i);
// Is this a final state particle ?
// Write particles to stack
for (i = 0; i<np; i++) {
- TParticle * iparticle = (TParticle *) fParticles->At(i);
+ TParticle * iparticle = (TParticle *) fParticles.At(i);
Bool_t hasMother = (iparticle->GetFirstMother()>=0);
if (pSelected[i]) {
TParticle* mother = 0;
if (hasMother) {
imo = iparticle->GetFirstMother();
- mother = (TParticle *) fParticles->At(imo);
- imo = (mother->GetPdgCode() != 92) ? imo = newPos[imo] : -1;
+ mother = (TParticle *) fParticles.At(imo);
+ imo = (mother->GetPdgCode() != 92 && mother->GetPdgCode() != 99999) ? newPos[imo] : -1;
} // if has mother
Bool_t tFlag = (fTrackIt && (ks == 1));
-
PushTrack(tFlag,imo,kf,p,origin,polar,tof,kPNoProcess,nt, 1., ks);
KeepTrack(nt);
newPos[i] = nt;
imin = iparticle->GetFirstDaughter();
imax = iparticle->GetLastDaughter();
for (i = imin; i <= imax; i++){
- TParticle * jparticle = (TParticle *) fParticles->At(i);
+ TParticle * jparticle = (TParticle *) fParticles.At(i);
Int_t ip = jparticle->GetPdgCode();
if (KinematicSelection(jparticle,0)&&SelectFlavor(ip)) {
selected=kTRUE; break;
// Event Vertex
header->SetPrimaryVertex(fVertex);
gAlice->SetGenEventHeader(header);
- AddHeader(header);
+ AddHeader(header);
}
void AliGenDPMjet::AddHeader(AliGenEventHeader* header)
}
+void AliGenDPMjet::FinishRun()
+{
+ // Print run statistics
+ fDPMjet->Dt_Dtuout();
+}
+
+
//______________________________________________________________________________