I have added Chic_1 and Chic_2 production in the muon cocktail.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 5 Nov 2009 15:03:23 +0000 (15:03 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 5 Nov 2009 15:03:23 +0000 (15:03 +0000)
Philippe Crochet <crochet@clermont.in2p3.fr>

EVGEN/AliGenMUONCocktailpp.cxx
EVGEN/AliGenMUONCocktailpp.h
EVGEN/AliGenMUONlib.cxx

index 531fe2c..4e48e3d 100644 (file)
 // 2009: added possibility to hide x-sections (B. Vulpescu)
 // 2009: added possibility to have the cocktail (fast generator and param.) 
 // for pp @ 10 TeV or pp @ 14 TeV (N. Bastid)
+//-----------------
 // 2009:  added polarization (L. Bianchi)
+//------------------
+// 11/2009: added chi_c1 & chi_c2 (P.Crochet & N.Bastid). 
+// Cross-sections for charmonia are now directly taken from the Yellow Report 
+// (hep-ph/0311048) Tab.9, page 19. See below for details w.r.t. beam energy. 
+// usage: see example of Config in $ALICE_ROOT/prod/LHC09a10/Config.C
 
 #include <TObjArray.h>
 #include <TParticle.h>
@@ -67,34 +73,59 @@ AliGenMUONCocktailpp::AliGenMUONCocktailpp()
      fNGenerated(0),
 
      fJpsiPol(0), 
+     fChic1Pol(0), 
+     fChic2Pol(0), 
      fPsiPPol(0), 
      fUpsPol(0), 
      fUpsPPol(0), 
      fUpsPPPol(0),
      fPolFrame(0),
 
-//x-sections for pp @ 10 TeV
+// x-sections for pp @ 7 TeV: charmonia from hep-ph/0311048 Tab.9, page 19,
+// bottomnium as for 10 TeV
+/*     fCMSEnergy(7),
+     fSigmaReaction(0.0695),
+     fSigmaJPsi(21.8e-6),
+     fSigmaChic1(21.1e-6),
+     fSigmaChic2(34.9e-6),
+     fSigmaPsiP(4.93e-6),
+     fSigmaUpsilon(0.463e-6),
+     fSigmaUpsilonP(0.154e-6),
+     fSigmaUpsilonPP(0.0886e-6),
+     fSigmaCCbar(6.91e-3),
+     fSigmaBBbar(0.232e-3),
+*/
+
+//x-sections for pp @ 10 TeV: charmonia and bottomonia from 14 TeV numbers
+// scaled down according to ccbar and bbar cross-sections
      fCMSEnergy(10),
      fSigmaReaction(0.0695),
-     fSigmaJPsi(39.14e-6),
-     fSigmaPsiP(6.039e-6),
+     fSigmaJPsi(26.06e-6),
+     fSigmaChic1(25.18e-6),
+     fSigmaChic2(41.58e-6),
+     fSigmaPsiP(5.88e-6),
      fSigmaUpsilon(0.658e-6),
      fSigmaUpsilonP(0.218e-6),
      fSigmaUpsilonPP(0.122e-6),
      fSigmaCCbar(8.9e-3),
      fSigmaBBbar(0.33e-3),
 
-//x-sections for pp @ 14 TeV
-     /*fCMSEnergy(14),
+
+//x-sections for pp @ 14 TeV: charmonia from hep-ph/0311048 Tab.9, page 19,
+// bottomonium from hep-ph/0311048 Tab.9, page 19 taken inton account that 
+// feed-down from chib is included
+/*     fCMSEnergy(14),
      fSigmaReaction(0.070),
-     fSigmaJPsi(49.44e-6),
-     fSigmaPsiP(7.67e-6),
+     fSigmaJPsi(32.9e-6),
+     fSigmaChic1(31.8e-6),
+     fSigmaChic2(52.5e-6),
+     fSigmaPsiP(7.43e-6),
      fSigmaUpsilon(0.989e-6),
      fSigmaUpsilonP(0.502e-6),
      fSigmaUpsilonPP(0.228e-6),
      fSigmaCCbar(11.2e-3),
-     fSigmaBBbar(0.51e-3),*/
-
+     fSigmaBBbar(0.51e-3),
+*/
      fSigmaSilent(kFALSE)
 {
 // Constructor
@@ -154,6 +185,8 @@ void AliGenMUONCocktailpp::CreateCocktail()
 // Ratios with respect to the reaction cross-section in the 
 // kinematics limit of the MUONCocktail
     Double_t ratiojpsi;
+    Double_t ratiochic1;
+    Double_t ratiochic2;
     Double_t ratiopsiP;
     Double_t ratioupsilon;
     Double_t ratioupsilonP;
@@ -168,6 +201,8 @@ void AliGenMUONCocktailpp::CreateCocktail()
 // corrected from feed down of higher resonances 
 
     Double_t sigmajpsi      = fSigmaJPsi;  
+    Double_t sigmachic1     = fSigmaChic1;  
+    Double_t sigmachic2     = fSigmaChic2;  
     Double_t sigmapsiP      = fSigmaPsiP;  
     Double_t sigmaupsilon   = fSigmaUpsilon;  
     Double_t sigmaupsilonP  = fSigmaUpsilonP;  
@@ -179,6 +214,8 @@ void AliGenMUONCocktailpp::CreateCocktail()
 // (only in case of use of AliDecayerPolarized)
 
     if(fJpsiPol  != 0) {sigmajpsi      = fSigmaJPsi*0.0593;}
+    if(fChic1Pol != 0) {sigmachic1     = fSigmaChic1*0.;} // tb consistent
+    if(fChic2Pol != 0) {sigmachic2     = fSigmaChic2*0.;} // tb consistent 
     if(fPsiPPol  != 0) {sigmapsiP      = fSigmaPsiP*0.0075;}
     if(fUpsPol   != 0) {sigmaupsilon   = fSigmaUpsilon*0.0248;}
     if(fUpsPPol  != 0) {sigmaupsilonP  = fSigmaUpsilonP*0.0193;}
@@ -236,6 +273,98 @@ void AliGenMUONCocktailpp::CreateCocktail()
     }
 
     AddGenerator(genjpsi, "Jpsi", ratiojpsi); // Adding Generator
+
+
+//----------------------------------------------------------------------
+// Chic1 generator
+    AliGenParam * genchic1;
+    if(cmsEnergy == eincStart){
+       genchic1 = new AliGenParam(1, AliGenMUONlib::kChic1, "CDF pp 10", "Chic1");
+    } else {
+       genchic1 = new AliGenParam(1, AliGenMUONlib::kChic1, "CDF pp ", "Chic1");
+    }
+// first step: generation in 4pi
+    genchic1->SetPtRange(0.,100.);
+    genchic1->SetYRange(-8.,8.);
+    genchic1->SetPhiRange(0.,360.);
+    genchic1->SetForceDecay(fDecayModeResonance);
+    //if (!gMC) genchic1->SetDecayer(fDecayer);
+
+    genchic1->Init();  // generation in 4pi
+    ratiochic1 = sigmachic1 / sigmaReaction * genchic1->GetRelativeArea(ptMin,ptMax,yMin,yMax,phiMin,phiMax); // get weight
+    if (!fSigmaSilent) {
+      AliInfo(Form("chic1 prod. cross-section in pp %5.3g b",sigmachic1));
+      AliInfo(Form("chic1 prod. probability per collision in acceptance %5.3g",ratiochic1));
+    }
+// second step: generation in selected kinematical range
+    genchic1->SetPtRange(ptMin, ptMax);  
+    genchic1->SetYRange(yMin, yMax);
+    genchic1->SetPhiRange(phiMin, phiMax);
+    genchic1->Init(); // generation in selected kinematic range
+
+    TVirtualMCDecayer *Chic1dec = 0;
+    if(fChic1Pol != 0){
+    AliInfo(Form("******Setting polarized decayer for Chic1"));
+    if(fPolFrame==0) {
+         Chic1dec = new AliDecayerPolarized(fChic1Pol,AliDecayerPolarized::kColSop,AliDecayerPolarized::kMuon);
+        AliInfo(Form("******Reference frame: %s, alpha: %f","Collins-Soper",fChic1Pol));
+          }
+    if(fPolFrame==1) {
+         Chic1dec = new AliDecayerPolarized(fChic1Pol,AliDecayerPolarized::kHelicity,AliDecayerPolarized::kMuon);
+         AliInfo(Form("******Reference frame: %s, alpha: %f","Helicity",fChic1Pol));
+          }
+    Chic1dec->SetForceDecay(kAll);
+    Chic1dec->Init();
+    genchic1->SetDecayer(Chic1dec);
+    }
+
+    AddGenerator(genchic1, "Chic1", ratiochic1); // Adding Generator
+
+//----------------------------------------------------------------------
+// Chic2 generator
+    AliGenParam * genchic2;
+    if(cmsEnergy == eincStart){
+       genchic2 = new AliGenParam(1, AliGenMUONlib::kChic2, "CDF pp 10", "Chic2");
+    } else {
+       genchic2 = new AliGenParam(1, AliGenMUONlib::kChic2, "CDF pp ", "Chic2");
+    }
+// first step: generation in 4pi
+    genchic2->SetPtRange(0.,100.);
+    genchic2->SetYRange(-8.,8.);
+    genchic2->SetPhiRange(0.,360.);
+    genchic2->SetForceDecay(fDecayModeResonance);
+    //if (!gMC) genchic1->SetDecayer(fDecayer);
+
+    genchic2->Init();  // generation in 4pi
+    ratiochic2 = sigmachic2 / sigmaReaction * genchic2->GetRelativeArea(ptMin,ptMax,yMin,yMax,phiMin,phiMax); // get weight
+    if (!fSigmaSilent) {
+      AliInfo(Form("chic2 prod. cross-section in pp %5.3g b",sigmachic2));
+      AliInfo(Form("chic2 prod. probability per collision in acceptance %5.3g",ratiochic2));
+    }
+// second step: generation in selected kinematical range
+    genchic2->SetPtRange(ptMin, ptMax);  
+    genchic2->SetYRange(yMin, yMax);
+    genchic2->SetPhiRange(phiMin, phiMax);
+    genchic2->Init(); // generation in selected kinematic range
+
+    TVirtualMCDecayer *Chic2dec = 0;
+    if(fChic2Pol != 0){
+    AliInfo(Form("******Setting polarized decayer for Chic2"));
+    if(fPolFrame==0) {
+         Chic2dec = new AliDecayerPolarized(fChic2Pol,AliDecayerPolarized::kColSop,AliDecayerPolarized::kMuon);
+        AliInfo(Form("******Reference frame: %s, alpha: %f","Collins-Soper",fChic2Pol));
+          }
+    if(fPolFrame==1) {
+         Chic2dec = new AliDecayerPolarized(fChic2Pol,AliDecayerPolarized::kHelicity,AliDecayerPolarized::kMuon);
+         AliInfo(Form("******Reference frame: %s, alpha: %f","Helicity",fChic2Pol));
+          }
+    Chic2dec->SetForceDecay(kAll);
+    Chic2dec->Init();
+    genchic2->SetDecayer(Chic2dec);
+    }
+
+    AddGenerator(genchic2, "Chic2", ratiochic2); // Adding Generator
+
 //------------------------------------------------------------------
 // Psi prime generator
     AliGenParam * genpsiP;
@@ -280,6 +409,7 @@ void AliGenMUONCocktailpp::CreateCocktail()
      }
 
     AddGenerator(genpsiP, "PsiP", ratiopsiP); // Adding Generator
+
 //------------------------------------------------------------------
 // Upsilon 1S generator
     AliGenParam * genupsilon;
@@ -463,6 +593,7 @@ void AliGenMUONCocktailpp::CreateCocktail()
 //    pythia->SwitchHFOff();
 //    pythia->Init(); 
 //    AddGenerator(pythia,"Pythia",1);
+
 }
 
 void AliGenMUONCocktailpp::Init()
index ddc155e..db4bb10 100644 (file)
@@ -45,6 +45,8 @@ class AliGenMUONCocktailpp : public AliGenCocktail
     void    SetCMSEnergy(Int_t einc)      { fCMSEnergy = einc; }
     void    SetSigmaReaction(Double_t sig)      { fSigmaReaction = sig; }    
     void    SetSigmaJPsi(Double_t sig)      { fSigmaJPsi = sig; }
+    void    SetSigmaChic1(Double_t sig)      { fSigmaChic1 = sig; }
+    void    SetSigmaChic2(Double_t sig)      { fSigmaChic2 = sig; }
     void    SetSigmaPsiP(Double_t sig)      { fSigmaPsiP = sig; }
     void    SetSigmaUpsilon(Double_t sig)   { fSigmaUpsilon = sig; }
     void    SetSigmaUpsilonP(Double_t sig)  { fSigmaUpsilonP = sig; }
@@ -70,11 +72,13 @@ class AliGenMUONCocktailpp : public AliGenCocktail
     Float_t fMuonOriginCut; //use only muons whose "part->Vz()" value is larger than fMuonOrigin
     Int_t   fNSucceded;// Number of Succes in the (di)-muon generation in the acceptance
     Int_t   fNGenerated;// Number of generated cocktails
-    Double_t fJpsiPol, fPsiPPol, fUpsPol, fUpsPPol, fUpsPPPol;//Resonances polarization parameters
+    Double_t fJpsiPol, fChic1Pol, fChic2Pol, fPsiPPol, fUpsPol, fUpsPPol, fUpsPPPol;//Resonances polarization parameters
     Int_t    fPolFrame;//Resonances polarization frame (Collins-Soper / Helicity)
     Int_t fCMSEnergy; // CMS beam energy
     Double_t fSigmaReaction; //  cross-section pp
     Double_t fSigmaJPsi;      // cross-section JPsi resonance
+    Double_t fSigmaChic1;      // cross-section Chic1 resonance
+    Double_t fSigmaChic2;      // cross-section Chic2 resonance    
     Double_t fSigmaPsiP;      // cross-section Psi-prime resonance
     Double_t fSigmaUpsilon;   // cross-section Upsilon resonance
     Double_t fSigmaUpsilonP;  // cross-section Upsilon-prime resonance
@@ -83,7 +87,7 @@ class AliGenMUONCocktailpp : public AliGenCocktail
     Double_t fSigmaBBbar;     // cross-section correlated beauty
     Bool_t   fSigmaSilent;    // hide values of cross-sections in output
 
-    ClassDef(AliGenMUONCocktailpp,3)  //  cocktail for physics in the Alice
+    ClassDef(AliGenMUONCocktailpp,4)  //  cocktail for physics in the Alice
 };
 
 #endif
index 082d1e3..c3ab542 100644 (file)
@@ -2136,6 +2136,8 @@ GenFunc AliGenMUONlib::GetPt(Int_t param,  const char* tname) const
        break;
     case kJpsiFamily:
     case kPsiP:
+    case kChic1:
+    case kChic2:
     case kJpsi:
        if (sname == "Vogt" || sname == "Vogt PbPb") {
            func=PtJpsiPbPb;
@@ -2267,12 +2269,6 @@ GenFunc AliGenMUONlib::GetPt(Int_t param,  const char* tname) const
     case kChic0:
        func=PtChic0;
        break;
-    case kChic1:
-       func=PtChic1;
-       break;
-    case kChic2:
-       func=PtChic2;
-       break;
     case kChic:
        func=PtChic;
        break;
@@ -2303,6 +2299,8 @@ GenFunc AliGenMUONlib::GetY(Int_t param, const char* tname) const
        break;
     case kJpsiFamily:
     case kPsiP:
+    case kChic1:
+    case kChic2:
     case kJpsi:
        if (sname == "Vogt" || sname == "Vogt PbPb") {
            func=YJpsiPbPb;
@@ -2430,12 +2428,6 @@ GenFunc AliGenMUONlib::GetY(Int_t param, const char* tname) const
     case kChic0:
        func=YChic0;
        break;
-    case kChic1:
-       func=YChic1;
-       break;
-    case kChic2:
-       func=YChic2;
-       break;
     case kChic:
        func=YChic;
        break;