fSelectAll(0),
fFlavor(0),
fTrials(0),
+ fNprimaries(0),
fSpectators(1),
fSpecn(0),
fSpecp(0),
fDecayAll(0),
fGenImpPar(0.),
fProcess(kDpmMb),
+ fTriggerParticle(0),
+ fTriggerEta(0.9),
+ fTriggerMinPt(-1),
+ fTriggerMaxPt(1000),
fTriggerMultiplicity(0),
fTriggerMultiplicityEta(0),
fTriggerMultiplicityPtMin(0),
fSelectAll(0),
fFlavor(0),
fTrials(0),
+ fNprimaries(0),
fSpectators(1),
fSpecn(0),
fSpecp(0),
fDecayAll(0),
fGenImpPar(0.),
fProcess(kDpmMb),
+ fTriggerParticle(0),
+ fTriggerEta(0.9),
+ fTriggerMinPt(-1),
+ fTriggerMaxPt(1000),
fTriggerMultiplicity(0),
fTriggerMultiplicityEta(0),
fTriggerMultiplicityPtMin(0),
fSelectAll(0),
fFlavor(0),
fTrials(0),
+ fNprimaries(0),
fSpectators(1),
fSpecn(0),
fSpecp(0),
fDecayAll(0),
fGenImpPar(0.),
fProcess(kDpmMb),
+ fTriggerParticle(0),
+ fTriggerEta(0.9),
+ fTriggerMinPt(-1),
+ fTriggerMaxPt(1000),
fTriggerMultiplicity(0),
fTriggerMultiplicityEta(0),
fTriggerMultiplicityPtMin(0),
Int_t kf, ks, imo;
kf = 0;
fTrials = 0;
+ fNprimaries = 0;
// Set collision vertex position
if (fVertexSmear == kPerEvent) Vertex();
Printf("Triggered on event with multiplicity of %d >= %d", multiplicity, fTriggerMultiplicity);
}
+ //Trigger on the presence of a given particle in some phase space
+ if (fTriggerParticle) {
+ Bool_t triggered = kFALSE;
+ for (Long_t i = 0; i < np; i++) {
+ TParticle * iparticle = (TParticle *) fParticles.At(i);
+ kf = CheckPDGCode(iparticle->GetPdgCode());
+ if (kf != fTriggerParticle) continue;
+ if (iparticle->Pt() == 0.) continue;
+ if (TMath::Abs(iparticle->Eta()) > fTriggerEta) continue;
+ if ( iparticle->Pt() > fTriggerMaxPt || iparticle->Pt() < fTriggerMinPt ) continue;
+ triggered = kTRUE;
+ break;
+ }
+ if (!triggered) continue;
+ }
if(fkTuneForDiff && ( (TMath::Abs(fEnergyCMS - 900) < 1) || (TMath::Abs(fEnergyCMS - 2760) < 1) || (TMath::Abs(fEnergyCMS - 7000) < 1)) ) {
if(!CheckDiffraction() ) continue;
polar[0], polar[1], polar[2],
kPNoProcess, nt, 1., ks);
KeepTrack(nt);
+ fNprimaries++;
newPos[i] = nt;
} // if selected
} // particle loop
void AliGenDPMjet::MakeHeader()
{
// Builds the event header, to be called after each event
- fHeader.SetNProduced(fDPMjet->GetNumStablePc());
+ fHeader.SetNProduced(fNprimaries);
fHeader.SetImpactParameter(fDPMjet->GetBImpac());
fHeader.SetTotalEnergy(fDPMjet->GetTotEnergy());
fHeader.SetParticipants(fDPMjet->GetProjParticipants(),