X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PYTHIA6%2FAliGenPythia.cxx;h=b3dae11cf44769faddcccc78f870f737a68959c7;hb=80b9610c2f7108e667b4b6978a00b37b5f83941c;hp=afe4f90faab973a2002c094fbd24167459d07f3c;hpb=129a4a69cd7149d39c629ee6d4899753fded1477;p=u%2Fmrichter%2FAliRoot.git diff --git a/PYTHIA6/AliGenPythia.cxx b/PYTHIA6/AliGenPythia.cxx index afe4f90faab..b3dae11cf44 100644 --- a/PYTHIA6/AliGenPythia.cxx +++ b/PYTHIA6/AliGenPythia.cxx @@ -52,6 +52,7 @@ ClassImp(AliGenPythia) AliGenPythia::AliGenPythia(): AliGenMC(), fProcess(kPyCharm), + fItune(-1), fStrucFunc(kCTEQ5L), fKineBias(0.), fTrials(0), @@ -80,6 +81,7 @@ AliGenPythia::AliGenPythia(): fQuench(0), fQhat(0.), fLength(0.), + fImpact(0.), fPtKick(1.), fFullEvent(kTRUE), fDecayer(new AliDecayerPythia()), @@ -114,6 +116,7 @@ AliGenPythia::AliGenPythia(): fTriggerEta(0.9), fTriggerMultiplicity(0), fTriggerMultiplicityEta(0), + fTriggerMultiplicityPtMin(0), fCountMode(kCountAll), fHeader(0), fRL(0), @@ -138,7 +141,6 @@ AliGenPythia::AliGenPythia(): { // Default Constructor fEnergyCMS = 5500.; - SetNuclei(0,0); if (!AliPythiaRndm::GetPythiaRandom()) AliPythiaRndm::SetPythiaRandom(GetRandom()); } @@ -146,6 +148,7 @@ AliGenPythia::AliGenPythia(): AliGenPythia::AliGenPythia(Int_t npart) :AliGenMC(npart), fProcess(kPyCharm), + fItune(-1), fStrucFunc(kCTEQ5L), fKineBias(0.), fTrials(0), @@ -174,6 +177,7 @@ AliGenPythia::AliGenPythia(Int_t npart) fQuench(kFALSE), fQhat(0.), fLength(0.), + fImpact(0.), fPtKick(1.), fFullEvent(kTRUE), fDecayer(new AliDecayerPythia()), @@ -208,6 +212,7 @@ AliGenPythia::AliGenPythia(Int_t npart) fTriggerEta(0.9), fTriggerMultiplicity(0), fTriggerMultiplicityEta(0), + fTriggerMultiplicityPtMin(0), fCountMode(kCountAll), fHeader(0), fRL(0), @@ -240,7 +245,6 @@ AliGenPythia::AliGenPythia(Int_t npart) // Set random number generator if (!AliPythiaRndm::GetPythiaRandom()) AliPythiaRndm::SetPythiaRandom(GetRandom()); - SetNuclei(0,0); } AliGenPythia::~AliGenPythia() @@ -371,7 +375,7 @@ void AliGenPythia::Init() 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 @@ -457,6 +461,7 @@ void AliGenPythia::Init() fParentSelect[0] = 443; break; case kPyMbDefault: + case kPyMbAtlasTuneMC09: case kPyMb: case kPyMbWithDirectPhoton: case kPyMbNonDiffr: @@ -535,11 +540,7 @@ void AliGenPythia::Init() fPythia->SetPARJ(199, fLength); fPythia->SetMSTJ(42, 2); // angular ordering fPythia->SetMSTJ(44, 2); // option to run alpha_s - //fPythia->SetMSTJ(47, 0); // No correction back to hard scattering element - //fPythia->SetMSTJ(50, 0); // No coherence in first branching fPythia->SetPARJ(82, 1.); // Cut off for parton showers - // MSTJ(41) must NOT be 11 or 12, as then FSR may go through PYPTFS - // (kt-ordered cascade) in which medium effects have not been introduced. } } @@ -581,7 +582,8 @@ void AliGenPythia::Generate() Double_t bimp; // Quenching comes through medium-modified splitting functions. AliFastGlauber::Instance()->GetRandomBHard(bimp); - fPythia->SetPARJ(197,bimp); + fPythia->SetPARJ(197, bimp); + fImpact = bimp; } // // Either produce new event or read partons from file @@ -624,7 +626,7 @@ void AliGenPythia::Generate() } fTrials++; fPythia->ImportParticles(&fParticles,"All"); - Boost(); + if (TMath::Abs(fDyBoost) > 1.e-4) Boost(); // // // @@ -651,6 +653,7 @@ void AliGenPythia::Generate() Int_t nTkbles = 0; // Trackable particles if (fProcess != kPyMbDefault && fProcess != kPyMb && + fProcess != kPyMbAtlasTuneMC09 && fProcess != kPyMbWithDirectPhoton && fProcess != kPyJets && fProcess != kPyDirectGamma && @@ -889,10 +892,7 @@ Int_t AliGenPythia::GenerateMB() Int_t* pParent = new Int_t[np]; for (i=0; i< np; i++) pParent[i] = -1; - // - //TO BE CHECKED: Should we require this for Beauty Jets? - // - if (fProcess == kPyJets || fProcess == kPyDirectGamma || fProcess == kPyBeautyJets) { + if (fProcess == kPyJets || fProcess == kPyDirectGamma || fProcess == kPyBeautyJets || fProcess == kPyBeautyppMNRwmi) { TParticle* jet1 = (TParticle *) fParticles.At(6); TParticle* jet2 = (TParticle *) fParticles.At(7); if (!CheckTrigger(jet1, jet2)) { @@ -908,7 +908,7 @@ Int_t AliGenPythia::GenerateMB() Int_t pdg = 0; if (fFragPhotonInCalo) pdg = 22 ; // Photon - else if (fPi0InCalo) pdg = 111 ; // Pi0 + else if (fPi0InCalo) pdg = 111 ; // Pi0 for (i=0; i< np; i++) { TParticle* iparticle = (TParticle *) fParticles.At(i); @@ -956,7 +956,6 @@ Int_t AliGenPythia::GenerateMB() return 0; AliDebug(5,Form("Found an electron jet (pt,eta,phi) = (%f,%f,%f)",pt,eta,phi)); } - // Check for minimum multiplicity if (fTriggerMultiplicity > 0) { Int_t multiplicity = 0; @@ -966,17 +965,15 @@ Int_t AliGenPythia::GenerateMB() Int_t statusCode = iparticle->GetStatusCode(); // Initial state particle - if (statusCode > 20) - continue; - - // skip quarks and gluons - Int_t pdgCode = TMath::Abs(iparticle->GetPdgCode()); - if (pdgCode <= 10 || pdgCode == 21) + if (statusCode != 1) continue; - + // eta cut if (fTriggerMultiplicityEta > 0 && TMath::Abs(iparticle->Eta()) > fTriggerMultiplicityEta) continue; - + // pt cut + if (iparticle->Pt() < fTriggerMultiplicityPtMin) + continue; + TParticlePDG* pdgPart = iparticle->GetPDG(); if (pdgPart && pdgPart->Charge() == 0) continue; @@ -988,8 +985,7 @@ Int_t AliGenPythia::GenerateMB() delete [] pParent; return 0; } - - Printf("Triggered on event with multiplicity of %d > %d", multiplicity, fTriggerMultiplicity); + Printf("Triggered on event with multiplicity of %d >= %d", multiplicity, fTriggerMultiplicity); } // Select events with a photon pt > min pt going to PHOS eta acceptance or exactly PHOS eta phi @@ -1046,9 +1042,7 @@ Int_t AliGenPythia::GenerateMB() // Check if there is a ccbar or bbbar pair with at least one of the two // in fYMin < y < fYMax - // - // TO BE CHECKED: Should we require this for beauty jets? - // + if (fProcess == kPyCharmppMNRwmi || fProcess == kPyBeautyppMNRwmi || fProcess == kPyBeautyJets) { TParticle *partCheck; TParticle *mother; @@ -1095,6 +1089,7 @@ Int_t AliGenPythia::GenerateMB() fProcess == kPyZ || fProcess == kPyMbDefault || fProcess == kPyMb || + fProcess == kPyMbAtlasTuneMC09 || fProcess == kPyMbWithDirectPhoton || fProcess == kPyMbNonDiffr) && (fCutOnChild == 1) ) { @@ -1113,9 +1108,6 @@ Int_t AliGenPythia::GenerateMB() Int_t km = iparticle->GetFirstMother(); if ((ks == 1 && kf!=0 && KinematicSelection(iparticle, 0)) || (ks != 1) || - // - //TO BE CHECKED: Should we require this for beauty jets? - // ((fProcess == kPyJets || fProcess == kPyBeautyJets) && ks == 21 && km == 0 && i>1)) { nc++; if (ks == 1) trackIt = 1; @@ -1226,7 +1218,7 @@ void AliGenPythia::MakeHeader() // Jets that have triggered //Need to store jets for b-jet studies too! - if (fProcess == kPyJets || fProcess == kPyDirectGamma || fProcess == kPyBeautyJets) + if (fProcess == kPyJets || fProcess == kPyDirectGamma || fProcess == kPyBeautyJets || fProcess == kPyBeautyppMNRwmi) { Int_t ntrig, njet; Float_t jets[4][10]; @@ -1281,7 +1273,7 @@ void AliGenPythia::MakeHeader() AliFastGlauber::Instance()->GetSavedI0I1(i0i1); xp = xy[0]; yp = xy[1]; - ((AliGenPythiaEventHeader*) fHeader)->SetInMediumLength(2. * i0i1[1] / i0i1[0]); + ((AliGenPythiaEventHeader*) fHeader)->SetImpactParameter(fImpact); } ((AliGenPythiaEventHeader*) fHeader)->SetXYJet(xp, yp); @@ -1312,10 +1304,7 @@ Bool_t AliGenPythia::CheckTrigger(TParticle* jet1, TParticle* jet2) pdg[1] = jet2->GetPdgCode(); Bool_t triggered = kFALSE; - // - //TO BE CHECKED: If we call this method for kPyBeautyJets, we need it here - // - if (fProcess == kPyJets || fProcess == kPyBeautyJets) { + if (fProcess == kPyJets || fProcess == kPyBeautyJets || fProcess == kPyBeautyppMNRwmi) { Int_t njets = 0; Int_t ntrig = 0; Float_t jets[4][10];