]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PYTHIA6/AliGenPythiaPlus.cxx
Fix for the problem during PbPb run of Nov 2010 (Indra)
[u/mrichter/AliRoot.git] / PYTHIA6 / AliGenPythiaPlus.cxx
index 5579ebd84f138816b35bc03238936a36beacb28e..0bf7a359a43b4c16333095b831e4746e159454f4 100644 (file)
@@ -398,7 +398,12 @@ void AliGenPythiaPlus::Init()
        fParentSelect[0] =   431;
        fFlavorSelect    =   4; 
        break;
+    case kPyLambdacppMNR:
+       fParentSelect[0] =  4122;
+       fFlavorSelect    =   4; 
+       break;      
     case kPyBeauty:
+    case kPyBeautyJets:
     case kPyBeautyPbPbMNR:
     case kPyBeautypPbMNR:
     case kPyBeautyppMNR:
@@ -426,6 +431,7 @@ void AliGenPythiaPlus::Init()
     case kPyJpsi:
        fParentSelect[0] = 443;
        break;
+    case kPyMbAtlasTuneMC09:
     case kPyMbDefault:
     case kPyMb:
     case kPyMbWithDirectPhoton:
@@ -491,9 +497,9 @@ void AliGenPythiaPlus::Generate()
     
     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;
 //
@@ -529,8 +535,8 @@ void AliGenPythiaPlus::Generate()
            }
            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);
@@ -850,8 +856,10 @@ Int_t  AliGenPythiaPlus::GenerateMB()
            }
        }
       }
-      if(!ok)
-       return 0;
+      if(!ok){
+         delete [] pParent;
+         return 0;
+      }
     }
     
     
@@ -885,8 +893,10 @@ Int_t  AliGenPythiaPlus::GenerateMB()
       if(!okd && iphcand != -1) // execute rotation in phi 
           RotatePhi(iphcand,okd);
       
-      if(!okd)
-       return 0;
+      if(!okd) {
+         delete[] pParent;
+         return 0;
+      }
     }
     
     if (fTriggerParticle) {
@@ -931,7 +941,7 @@ Int_t  AliGenPythiaPlus::GenerateMB()
          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)) {
@@ -1007,17 +1017,18 @@ Int_t  AliGenPythiaPlus::GenerateMB()
            //
            // Special Treatment to store color-flow
            //
+           /*
            if (ks == 3 || ks == 13 || ks == 14) {
                TParticle* particle = 0;
                if (fStack) {
                    particle = fStack->Particle(nt);
                } else {
-                   particle = gAlice->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);
@@ -1131,8 +1142,9 @@ void AliGenPythiaPlus::MakeHeader()
 // 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);
@@ -1160,7 +1172,7 @@ void AliGenPythiaPlus::MakeHeader()
     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
 //
@@ -1329,7 +1341,7 @@ void AliGenPythiaPlus::GetSubEventTime()
 
 
 
-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
@@ -1340,7 +1352,7 @@ Bool_t AliGenPythiaPlus::IsInEMCAL(Float_t phi, Float_t eta)
     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.