fPHOSEta(0.13),
fEMCALMinPhi(79.),
fEMCALMaxPhi(191.),
- fEMCALEta(0.71)
-
+ fEMCALEta(0.71),
+ fItune(-1),
+ fInfo(1)
{
// Default Constructor
fEnergyCMS = 5500.;
fPHOSEta(0.13),
fEMCALMinPhi(79.),
fEMCALMaxPhi(191.),
- fEMCALEta(0.71)
+ fEMCALEta(0.71),
+ fItune(-1),
+ fInfo(1)
{
// default charm production at 5. 5 TeV
// semimuonic decay
fRL = 0x0;
}
//
- fPythia->ProcInit(fProcess, fEnergyCMS, fStrucFunc);
+ fPythia->ProcInit(fProcess, fEnergyCMS, fStrucFunc, fItune);
// Forward Paramters to the AliPythia object
fDecayer->SetForceDecay(fForceDecay);
// Switch off Heavy Flavors on request
case kPyCharmpPbMNR:
case kPyCharmppMNR:
case kPyCharmppMNRwmi:
+ case kPyCharmPWHG:
fParentSelect[0] = 411;
fParentSelect[1] = 421;
fParentSelect[2] = 431;
fParentSelect[0] = 431;
fFlavorSelect = 4;
break;
+ case kPyLambdacppMNR:
+ fParentSelect[0] = 4122;
+ fFlavorSelect = 4;
+ break;
case kPyBeauty:
+ case kPyBeautyJets:
case kPyBeautyPbPbMNR:
case kPyBeautypPbMNR:
case kPyBeautyppMNR:
case kPyBeautyppMNRwmi:
+ case kPyBeautyPWHG:
fParentSelect[0]= 511;
fParentSelect[1]= 521;
fParentSelect[2]= 531;
case kPyJpsi:
fParentSelect[0] = 443;
break;
+ case kPyMbAtlasTuneMC09:
case kPyMbDefault:
case kPyMb:
case kPyMbWithDirectPhoton:
case kPyMbNonDiffr:
case kPyMbMSEL1:
case kPyJets:
+ case kPyJetsPWHG:
case kPyDirectGamma:
case kPyLhwgMb:
break;
+ case kPyWPWHG:
case kPyW:
case kPyZ:
+ case kPyZgamma:
+ case kPyMBRSingleDiffraction:
+ case kPyMBRDoubleDiffraction:
+ case kPyMBRCentralDiffraction:
break;
}
//
fDecayer->ForceDecay();
- Float_t polar[3] = {0,0,0};
- Float_t origin[3] = {0,0,0};
- Float_t p[4];
+ Double_t polar[3] = {0,0,0};
+ Double_t origin[3] = {0,0,0};
+ Double_t p[4];
// converts from mm/c to s
const Float_t kconv=0.001/2.999792458e8;
//
}
fNpartons = fPythia->GetNumberOfParticles();
} else {
- printf("Loading Event %d\n",AliRunLoader::GetRunLoader()->GetEventNumber());
- fRL->GetEvent(AliRunLoader::GetRunLoader()->GetEventNumber());
+ printf("Loading Event %d\n",AliRunLoader::Instance()->GetEventNumber());
+ fRL->GetEvent(AliRunLoader::Instance()->GetEventNumber());
fPythia->SetNumberOfParticles(0);
fPythia->LoadEvent(fRL->Stack(), 0 , 1);
fPythia->EditEventList(21);
fProcess != kPyMbMSEL1 &&
fProcess != kPyW &&
fProcess != kPyZ &&
+ fProcess != kPyZgamma &&
fProcess != kPyCharmppMNRwmi &&
- fProcess != kPyBeautyppMNRwmi) {
+ fProcess != kPyBeautyppMNRwmi &&
+ fProcess != kPyWPWHG &&
+ fProcess != kPyJetsPWHG &&
+ fProcess != kPyCharmPWHG &&
+ fProcess != kPyBeautyPWHG) {
for (i = 0; i < np; i++) {
TParticle* iparticle = (TParticle *) fParticles.At(i);
origin[1] = fVertex[1]+iparticle->Vy()/10; // [cm]
origin[2] = fVertex[2]+iparticle->Vz()/10; // [cm]
- Float_t tof = kconv*iparticle->T();
+ Float_t tof = fTime + kconv*iparticle->T();
Int_t ipa = (fPythia->Version() == 6) ? (iparticle->GetFirstMother() - 1) :(iparticle->GetFirstMother()) ;
Int_t iparent = (ipa > -1) ? pParent[ipa] : -1;
}
if (jev >= fNpart || fNpart == -1) {
fKineBias=Float_t(fNpart)/Float_t(fTrials);
- fPythia->GetXandQ(fQ, fX1, fX2);
+ if (fInfo) fPythia->GetXandQ(fX1, fX2, fQ);
fTrialsRun += fTrials;
fNev++;
MakeHeader();
Int_t* pParent = new Int_t[np];
for (i=0; i< np; i++) pParent[i] = -1;
- if (fProcess == kPyJets || fProcess == kPyDirectGamma) {
+ if (fProcess == kPyJets || fProcess == kPyDirectGamma || fProcess == kPyJetsPWHG || fProcess == kPyCharmPWHG || fProcess == kPyBeautyPWHG ) {
TParticle* jet1 = (TParticle *) fParticles.At(6);
TParticle* jet2 = (TParticle *) fParticles.At(7);
if (!CheckTrigger(jet1, jet2)) {
}
// Select jets with fragmentation photon or pi0 going to PHOS or EMCAL
- if (fProcess == kPyJets && (fFragPhotonInCalo || fPi0InCalo) ) {
+ if ((fProcess == kPyJets || fProcess == kPyJetsPWHG) && (fFragPhotonInCalo || fPi0InCalo) ) {
Bool_t ok = kFALSE;
}
}
}
- if(!ok)
- return 0;
+ if(!ok){
+ delete [] pParent;
+ return 0;
+ }
}
// Select events with a photon pt > min pt going to PHOS eta acceptance or exactly PHOS eta phi
- if ((fProcess == kPyJets || fProcess == kPyDirectGamma) && fPhotonInCalo && (fCheckPHOSeta || fCheckPHOS)){
+ if ((fProcess == kPyJets || fProcess == kPyJetsPWHG || fProcess == kPyDirectGamma) && fPhotonInCalo && (fCheckPHOSeta || fCheckPHOS)){
Bool_t okd = kFALSE;
if(!okd && iphcand != -1) // execute rotation in phi
RotatePhi(iphcand,okd);
- if(!okd)
- return 0;
+ if(!okd) {
+ delete[] pParent;
+ return 0;
+ }
}
if (fTriggerParticle) {
if(mi<0) continue;
mother = (TParticle*)fParticles.At(mi);
mpdg=TMath::Abs(mother->GetPdgCode());
- mpdgUpperFamily=(mpdg>1000 ? mpdg-1000 : mpdg-100); // keep e from c from b
+ mpdgUpperFamily=(mpdg>1000 ? mpdg+1000 : mpdg+100); // keep e from c from b
if ( ParentSelected(mpdg) ||
(fFlavorSelect==5 && ParentSelected(mpdgUpperFamily))) {
if (KinematicSelection(partCheck,1)) {
}
//Introducing child cuts in case kPyW, kPyZ, kPyMb, and kPyMbNonDiff
- if ( (fProcess == kPyW ||
+ if ( (
+ fProcess == kPyWPWHG ||
+ fProcess == kPyW ||
fProcess == kPyZ ||
+ fProcess == kPyZgamma ||
fProcess == kPyMbDefault ||
fProcess == kPyMb ||
fProcess == kPyMbWithDirectPhoton ||
Int_t km = iparticle->GetFirstMother();
if ((ks == 1 && kf!=0 && KinematicSelection(iparticle, 0)) ||
(ks != 1) ||
- (fProcess == kPyJets && ks == 21 && km == 0 && i>1)) {
+ ((fProcess == kPyJets || fProcess == kPyJetsPWHG) && ks == 21 && km == 0 && i>1)) {
nc++;
if (ks == 1) trackIt = 1;
origin[1] = fVertex[1]+iparticle->Vy()/10; // [cm]
origin[2] = fVertex[2]+iparticle->Vz()/10; // [cm]
- Float_t tof = fEventTime + kconv * iparticle->T();
+ Float_t tof = fTime + fEventTime + kconv * iparticle->T();
PushTrack(fTrackIt*trackIt, iparent, kf,
p[0], p[1], p[2], p[3],
//
// Special Treatment to store color-flow
//
+ /*
if (ks == 3 || ks == 13 || ks == 14) {
TParticle* particle = 0;
if (fStack) {
particle = fStack->Particle(nt);
} else {
- particle = AliRunLoader::GetRunLoader()->Stack()->Particle(nt);
+ particle = AliRunLoader::Instance()->Stack()->Particle(nt);
}
-// particle->SetFirstDaughter(fPythia->GetK(2, i));
-// particle->SetLastDaughter(fPythia->GetK(3, i));
+ particle->SetFirstDaughter(fPythia->GetK(2, i));
+ particle->SetLastDaughter(fPythia->GetK(3, i));
}
-
+ */
KeepTrack(nt);
pParent[i] = nt;
SetHighWaterMark(nt);
//
// Event Vertex
fHeader->SetPrimaryVertex(fVertex);
-
+ fHeader->SetInteractionTime(fTime+fEventTime);
//
// Number of primaries
fHeader->SetNProduced(fNprimaries);
//
// Jets that have triggered
- if (fProcess == kPyJets)
+ if (fProcess == kPyJets || fProcess == kPyJetsPWHG)
{
Int_t ntrig, njet;
Float_t jets[4][10];
// Store quenching parameters
//
if (fQuench){
- Double_t z[4];
- Double_t xp, yp;
+ Double_t z[4] = {0.};
+ Double_t xp = 0.;
+ Double_t yp = 0.;
if (fQuench == 1) {
// Pythia::Quench()
fPythia->GetQuenchingParameters(xp, yp, z);
fHeader = 0x0;
}
-Bool_t AliGenPythiaPlus::CheckTrigger(TParticle* jet1, TParticle* jet2)
+Bool_t AliGenPythiaPlus::CheckTrigger(const TParticle* jet1, const TParticle* jet2)
{
// Check the kinematic trigger condition
//
pdg[1] = jet2->GetPdgCode();
Bool_t triggered = kFALSE;
- if (fProcess == kPyJets) {
+ if (fProcess == kPyJets || fProcess == kPyJetsPWHG) {
Int_t njets = 0;
Int_t ntrig = 0;
Float_t jets[4][10];
-Bool_t AliGenPythiaPlus::IsInEMCAL(Float_t phi, Float_t eta)
+Bool_t AliGenPythiaPlus::IsInEMCAL(Float_t phi, Float_t eta) const
{
// Is particle in EMCAL acceptance?
// phi in degrees, etamin=-etamax
return kFALSE;
}
-Bool_t AliGenPythiaPlus::IsInPHOS(Float_t phi, Float_t eta)
+Bool_t AliGenPythiaPlus::IsInPHOS(Float_t phi, Float_t eta) const
{
// Is particle in PHOS acceptance?
// Acceptance slightly larger considered.