Options for D+ and Ds decays in channels with K0s
authormorsch <andreas.morsch@cern.ch>
Mon, 15 Dec 2014 14:28:22 +0000 (15:28 +0100)
committermorsch <andreas.morsch@cern.ch>
Mon, 15 Dec 2014 14:46:20 +0000 (15:46 +0100)
Francesco Prino

EVGEN/AliDecayer.h
EVGEN/AliGenMC.cxx
PYTHIA6/AliPythia6/AliDecayerPythia.cxx
PYTHIA6/AliPythia6/AliDecayerPythia.h
PYTHIA8/AliPythia8/AliDecayerPythia8.cxx
PYTHIA8/AliPythia8/AliDecayerPythia8.h

index b9eaefb..321480b 100644 (file)
@@ -20,7 +20,7 @@ typedef enum
     kAll, kNoDecayHeavy, kHardMuons, kBJpsi,  kBJpsiUndecayed,
     kWToMuon,kWToCharm, kWToCharmToMuon, kZDiMuon, kZDiElectron, kNeutralPion, kAllMuonic,
     kChiToJpsiGammaToMuonMuon, kChiToJpsiGammaToElectronElectron, kNoDecayBeauty, kPsiPrimeJpsiDiElectron,
-    kElectronEM, kGammaEM, kDiElectronEM, kBeautyUpgrade
+  kElectronEM, kGammaEM, kDiElectronEM, kBeautyUpgrade,kHadronicDWithV0,kHadronicDWithout4BodiesWithV0
 } Decay_t;
 #endif
 
index 1579099..accdcb5 100644 (file)
@@ -147,6 +147,8 @@ void AliGenMC::Init()
        break;
     case kHadronicD:
     case kHadronicDWithout4Bodies:
+    case kHadronicDWithV0:
+    case kHadronicDWithout4BodiesWithV0:
        fChildSelect[0]=kPiPlus;
        fChildSelect[1]=kKPlus;
        break;
index 06ff91c..945996f 100644 (file)
@@ -455,10 +455,16 @@ void AliDecayerPythia::ForceDecay()
         ForceParticleDecay(  23, 11,2); // Z -> e+ e-
        break;
     case kHadronicD:
-       ForceHadronicD(1);
-       break;
+        ForceHadronicD(1,0);
+        break;
+    case kHadronicDWithV0:
+        ForceHadronicD(1,1);
+        break;
     case kHadronicDWithout4Bodies:
-       ForceHadronicD(0);
+        ForceHadronicD(0,0);
+        break;
+    case kHadronicDWithout4BodiesWithV0:
+      ForceHadronicD(0,1);
        break;
     case kPhiKK:
        ForceParticleDecay(333,321,2); // Phi->K+K-
@@ -560,7 +566,7 @@ void  AliDecayerPythia::ForceBeautyUpgrade()
    const Int_t prod2[2]={413,211};
    ForceParticleDecay(511,prod2,mult,2,1);
    // force charm hadronic decays (D mesons and Lc)
-   ForceHadronicD(0);
+   ForceHadronicD(0,0);
 }
 
 void  AliDecayerPythia::Lu1Ent(Int_t flag, Int_t idpart, 
@@ -585,8 +591,13 @@ Int_t AliDecayerPythia::CountProducts(Int_t channel, Int_t particle)
 }
 
 
-void AliDecayerPythia::ForceHadronicD(Int_t optUse4Bodies)
+void AliDecayerPythia::ForceHadronicD(Int_t optUse4Bodies, Int_t optUseDtoV0)
 {
+
+  // Xic->Xipipi
+  Int_t Xic = 4232;
+  Int_t productsX[3] = {3312, 211,211}, multX[3] = {1, 1, 1};
+  ForceParticleDecay(Xic, productsX, multX, 3);
 //
 // Force golden D decay modes
 //
@@ -638,8 +649,8 @@ void AliDecayerPythia::ForceHadronicD(Int_t optUse4Bodies)
   Int_t decayP3[kNHadrons][4] = 
     { 
       {kPiPlus   , iPhi   , 0       , 0},
-      {kKMinus   , kPiPlus, iRho0   , 0 },
-      {-1        , -1     , -1      , -1},
+      {kKMinus   , kPiPlus, iRho0   , 0},
+      {kKPlus    , iK0bar , 0       , 0},
       {-1        , -1     , -1      , -1},
       {kProton   , kKMinus, kPiPlus , 0}
     };
@@ -655,7 +666,7 @@ void AliDecayerPythia::ForceHadronicD(Int_t optUse4Bodies)
   // for Lambda_c -> Lambda pi+ 
     Int_t decayP5[kNHadrons][4] =
     {
-      {-1        , -1     , -1      , -1},
+      {iK0bar    , kPiPlus,  0      ,  0},
       {-1        , -1     , -1      , -1},
       {-1        , -1     , -1      , -1},
       {-1        , -1     , -1      , -1},
@@ -679,7 +690,13 @@ void AliDecayerPythia::ForceHadronicD(Int_t optUse4Bodies)
       decayP4[1][iDau]=-1; 
     }
   }  
-  
+  if(optUseDtoV0==0){
+    for(Int_t iDau=0;iDau<4;iDau++){
+      decayP3[2][iDau]=-1; // swicth off Ds->K0K+
+      decayP5[0][iDau]=-1; // swicth off D+->K0pi+
+    }
+  }
+
   for (Int_t ihadron = 0; ihadron < kNHadrons; ihadron++)
     {
       Int_t kc = fPythia->Pycomp(hadron[ihadron]);     
index 024d450..f1706a0 100644 (file)
@@ -47,7 +47,7 @@ public AliDecayer
     Int_t    CountProducts(Int_t channel, Int_t particle);
     void     ForceParticleDecay(Int_t particle, Int_t product, Int_t mult);
     void     ForceParticleDecay(Int_t particle, const Int_t* products, Int_t* mult, Int_t npart, Bool_t flag = 0);
-    void     ForceHadronicD(Int_t optUser4Bodies=1);
+    void     ForceHadronicD(Int_t optUse4Bodies=1, Int_t optUseDtoV0=0);
     void     ForceOmega();
     void     ForceLambda();
     void     SwitchOffHeavyFlavour();
index 097c7d3..e6be587 100644 (file)
@@ -578,11 +578,17 @@ void AliDecayerPythia8::ForceDecay()
        fPythia8->ReadString("23:onIfAll = 11 11");
        break;
     case kHadronicD:
-       ForceHadronicD(1);
+      ForceHadronicD(1,0);
        break;
+    case kHadronicDWithV0:
+        ForceHadronicD(1,1);
+        break;
     case kHadronicDWithout4Bodies:
-       ForceHadronicD(0);
-       break;
+        ForceHadronicD(0,0);
+        break;
+    case kHadronicDWithout4BodiesWithV0:
+        ForceHadronicD(0,1);
+        break;
     case kPhiKK:
        // Phi-> K+ K-
        fPythia8->ReadString("333:onMode = off");
@@ -664,7 +670,7 @@ void  AliDecayerPythia8::SwitchOffHeavyFlavour()
 }
 
 
-void AliDecayerPythia8::ForceHadronicD(Int_t optUse4Bodies)
+void AliDecayerPythia8::ForceHadronicD(Int_t optUse4Bodies, Int_t optUseDtoV0)
 {
 //
 // Force golden D decay modes
@@ -700,14 +706,21 @@ void AliDecayerPythia8::ForceHadronicD(Int_t optUse4Bodies)
     fPythia8->ReadString("421:onIfMatch = 321 211");
 
     if (optUse4Bodies) {
-       // D0 -> K pi pi pi
-       fPythia8->ReadString("421:onIfMatch = 321 211 211 211");
-       // D0 -> K pi rho
-       fPythia8->ReadString("421:onIfMatch = 321 211 113");
-       // D0 -> K*0 pi pi
-       fPythia8->ReadString("421:onIfMatch = 313 211 211");
+      // D0 -> K pi pi pi
+      fPythia8->ReadString("421:onIfMatch = 321 211 211 211");
+      // D0 -> K pi rho
+      fPythia8->ReadString("421:onIfMatch = 321 211 113");
+      // D0 -> K*0 pi pi
+      fPythia8->ReadString("421:onIfMatch = 313 211 211");
     }
-    
+    if(optUseDtoV0==1){
+      // Ds -> K0K
+      fPythia8->ReadString("431:onIfMatch = 311 321");
+      // Ds -> K0pi
+      fPythia8->ReadString("411:onIfMatch = 311 211");
+    }
+
+
     // D_s -> K K*
     fPythia8->ReadString("431:onIfMatch = 321 313");
     // D_s -> Phi pi
index e5e5731..96f8a44 100644 (file)
@@ -36,7 +36,7 @@ class AliDecayerPythia8 : public TVirtualMCDecayer {
   AliDecayerPythia8(const AliDecayerPythia8&);
   AliDecayerPythia8 operator=(const AliDecayerPythia8&);
   void     SwitchOffHeavyFlavour();
-  void     ForceHadronicD(Int_t optUser4Bodies = 1);
+  void     ForceHadronicD(Int_t optUser4Bodies = 1,Int_t optUseDtoV0 =1);
 
   AliTPythia8*  fPythia8;          // Pointer to pythia8
   Int_t         fDebug;            // Debug level