Treat Pythia diffractive state of particles
authorfca <fca@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 27 Sep 1999 09:49:13 +0000 (09:49 +0000)
committerfca <fca@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 27 Sep 1999 09:49:13 +0000 (09:49 +0000)
EVGEN/AliGenPythia.cxx
EVGEN/AliGenPythia.h
EVGEN/EVGENLinkDef.h

index 875b27b7ac372f194568f8d59b5c4f5b26bd0994..fa0991b258794d3fc1a5c70c58b83f8e9597c22f 100644 (file)
@@ -157,7 +157,7 @@ void AliGenPythia::Generate()
        if (fProcess != mb) {
            for (Int_t i = 0; i<np; i++) {
                TParticle *  iparticle = (TParticle *) particles->At(i);
-               kf = iparticle->GetPdgCode();
+               kf = CheckPDGCode(iparticle->GetPdgCode());
                fChildWeight=(fPythia->GetBraPart(kf))*fParentWeight;     
 //
 // Parent
@@ -206,7 +206,7 @@ void AliGenPythia::Generate()
                            {
                                TParticle *  ichild = 
                                    (TParticle *) particles->At(j-1);
-                               kf = ichild->GetPdgCode();
+                               kf = CheckPDGCode(ichild->GetPdgCode());
 //
 // 
                                if (ChildSelected(TMath::Abs(kf))) {
@@ -230,7 +230,7 @@ void AliGenPythia::Generate()
        } else {
            for (Int_t i = 0; i<np; i++) {
                TParticle *  iparticle = (TParticle *) particles->At(i);
-               kf = iparticle->GetPdgCode();
+               kf = CheckPDGCode(iparticle->GetPdgCode());
                Int_t ks = iparticle->GetStatusCode();
                if (ks==1 && kf!=0 && KinematicSelection(iparticle)) {
                        nc++;
@@ -347,6 +347,37 @@ void AliGenPythia::AdjustWeights()
     }
 }
 
+Int_t AliGenPythia::CheckPDGCode(Int_t pdgcode)
+{
+//
+//  If the particle is in a diffractive state, then take action accordigly
+  switch (pdgcode) {
+  case 110:
+    //rho_diff0 -- difficult to translate, return rho0
+    return 113;
+  case 210:
+    //pi_diffr+ -- change to pi+
+    return 211;
+  case 220:
+    //omega_di0 -- change to omega0
+    return 223;
+  case 330:
+    //phi_diff0 -- return phi0
+    return 333;
+  case 440:
+    //J/psi_di0 -- return J/psi
+    return 443;
+  case 2110:
+    //n_diffr -- return neutron
+    return 2112;
+  case 2210:
+    //p_diffr+ -- return proton
+    return 2212;
+  }
+  //non diffractive state -- return code unchanged
+  return pdgcode;
+}
+                 
 
 
 
index f42a7c8f9bb1d057e1bb91b814922efe92725ef2..bc72ded58a693626efd36c1745da141a12d9d73e 100644 (file)
@@ -56,6 +56,9 @@ class AliGenPythia : public AliGenerator
     virtual void    ForceDecay(Decay_t decay=semimuonic) {fForceDecay=decay;}
     // get cross section of process
     virtual Float_t GetXsection() {return fXsection;}
+    // Check PDG code
+    virtual Int_t CheckPDGCode(Int_t pdgcode);
+
     ClassDef(AliGenPythia,1)
 };
 #endif
index b560fa0872ac2a6287c414ca82624c8c2d18681e..d6f63796dd496b91185a79420d81df7a6ae865ca 100644 (file)
@@ -9,7 +9,6 @@
 #pragma link C++ enum   Param_t;
 
 #pragma link C++ class  AliGenHIJINGpara;
-#pragma link C++ class  AliGenSingle;
 #pragma link C++ class  AliGenFixed;
 #pragma link C++ class  AliGenBox;
 #pragma link C++ class  AliGenParam;