/* $Id$ */
+//
// Classe to create the MUON coktail for physics in the Alice muon spectrometer
-// Gines Martinez, jan 2004, Nantes martinez@in2p3.fr
+// The followoing muons sources are included in this cocktail:
+// jpsi, upsilon, non-correlated open and beauty, and muons from pion and kaons.
+// The free parameeters are :
+// pp reaction cross-section
+// production cross-sections in pp collisions and
+// branching ratios in the muon channel
+// Hard probes are supposed to scale with Ncoll and hadronic production with (0.8Ncoll+0.2*Npart)
+// There is a primordial trigger wiche requires :
+// a minimum muon multiplicity above a pT cut in a theta acceptance cone
+//
+// Gines Martinez, jan 2004, Nantes martinez@in2p3.fr
//
-#include <TList.h>
+//#include <TList.h>
#include <TObjArray.h>
#include <TF1.h>
#include <TParticle.h>
Float_t phiMax = fPhiMax*180./TMath::Pi();
printf(">>> Kinematical range pT:%f:%f y:%f:%f Phi:%f:%f\n",ptMin,ptMax,yMin,yMax,phiMin,phiMax);
- Float_t sigma_reaction = 0.072; // MINB pp at LHC energies 72 mb
+ Float_t sigmaReaction = 0.072; // MINB pp at LHC energies 72 mb
// Generating J/Psi Physics
- AliGenParam * gen_jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "Vogt", "Jpsi");
+ AliGenParam * genjpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "Vogt", "Jpsi");
// 4pi Generation
- gen_jpsi->SetPtRange(0,100.);
- gen_jpsi->SetYRange(-8.,8);
- gen_jpsi->SetPhiRange(0.,360.);
- gen_jpsi->SetForceDecay(kDiMuon);
- gen_jpsi->SetTrackingFlag(1);
+ genjpsi->SetPtRange(0,100.);
+ genjpsi->SetYRange(-8.,8);
+ genjpsi->SetPhiRange(0.,360.);
+ genjpsi->SetForceDecay(kDiMuon);
+ genjpsi->SetTrackingFlag(1);
// Calculation of the paritcle multiplicity per event in the muonic channel
- Float_t ratio_jpsi; // Ratio with respect to the reaction cross-section for the muonic channel in the kinematics limit of the MUONCocktail
- Float_t sigma_jpsi = 31.0e-6 * 0.437; // section "6.7 Quarkonia Production" table 6.5 for pp times shadowing
- Float_t br_jpsi = 0.0588; // Branching Ratio for JPsi
- gen_jpsi->Init(); // Generating pT and Y parametrsation for the 4pi
- ratio_jpsi = sigma_jpsi * br_jpsi * fNumberOfCollisions / sigma_reaction * gen_jpsi->GetRelativeArea(ptMin,ptMax,yMin,yMax,phiMin,phiMax);
- printf(">>> ratio jpsi %g et %g Ncol %g sigma %g\n",ratio_jpsi,gen_jpsi->GetRelativeArea(ptMin,ptMax,yMin,yMax,phiMin,phiMax),fNumberOfCollisions, sigma_jpsi );
+ Float_t ratiojpsi; // Ratio with respect to the reaction cross-section for the muonic channel in the kinematics limit of the MUONCocktail
+ Float_t sigmajpsi = 31.0e-6 * 0.437; // section "6.7 Quarkonia Production" table 6.5 for pp times shadowing
+ Float_t brjpsi = 0.0588; // Branching Ratio for JPsi
+ genjpsi->Init(); // Generating pT and Y parametrsation for the 4pi
+ ratiojpsi = sigmajpsi * brjpsi * fNumberOfCollisions / sigmaReaction * genjpsi->GetRelativeArea(ptMin,ptMax,yMin,yMax,phiMin,phiMax);
+ printf(">>> ratio jpsi %g et %g Ncol %g sigma %g\n",ratiojpsi,genjpsi->GetRelativeArea(ptMin,ptMax,yMin,yMax,phiMin,phiMax),fNumberOfCollisions, sigmajpsi );
// Generation in the kinematical limits of AliGenMUONCocktail
- gen_jpsi->SetPtRange(ptMin, ptMax);
- gen_jpsi->SetYRange(yMin, yMax);
- gen_jpsi->SetPhiRange(phiMin, phiMax);
- gen_jpsi->Init(); // Generating pT and Y parametrsation in the desired kinematic range
+ genjpsi->SetPtRange(ptMin, ptMax);
+ genjpsi->SetYRange(yMin, yMax);
+ genjpsi->SetPhiRange(phiMin, phiMax);
+ genjpsi->Init(); // Generating pT and Y parametrsation in the desired kinematic range
// Adding Generator
- AddGenerator(gen_jpsi, "Jpsi", ratio_jpsi);
- fTotalRate+=ratio_jpsi;
+ AddGenerator(genjpsi, "Jpsi", ratiojpsi);
+ fTotalRate+=ratiojpsi;
// Generating Upsilon Physics
- AliGenParam * gen_upsilon = new AliGenParam(1, AliGenMUONlib::kUpsilon, "Vogt", "Upsilon");
- gen_upsilon->SetPtRange(0,100.);
- gen_upsilon->SetYRange(-8.,8);
- gen_upsilon->SetPhiRange(0.,360.);
- gen_upsilon->SetForceDecay(kDiMuon);
- gen_upsilon->SetTrackingFlag(1);
- Float_t ratio_upsilon; // Ratio with respect to the reaction cross-section for the muonic channel in the kinematics limit of the MUONCocktail
- Float_t sigma_upsilon = 0.501e-6 * 0.674; // section "6.7 Quarkonia Production" table 6.5 for pp times shadowing
- Float_t br_upsilon = 0.0248; // Branching Ratio for Upsilon
- gen_upsilon->Init(); // Generating pT and Y parametrsation for the 4pi
- ratio_upsilon = sigma_upsilon * br_upsilon * fNumberOfCollisions / sigma_reaction * gen_upsilon->GetRelativeArea(ptMin,ptMax,yMin,yMax,phiMin,phiMax);
- printf(">>> ratio upsilon %g et %g\n",ratio_upsilon, gen_upsilon->GetRelativeArea(ptMin,ptMax,yMin,yMax,phiMin,phiMax));
- gen_upsilon->SetPtRange(ptMin, ptMax);
- gen_upsilon->SetYRange(yMin, yMax);
- gen_upsilon->SetPhiRange(phiMin, phiMax);
- gen_upsilon->Init(); // Generating pT and Y parametrsation in the desired kinematic range
- AddGenerator(gen_upsilon,"Upsilon", ratio_upsilon);
- fTotalRate+=ratio_upsilon;
+ AliGenParam * genupsilon = new AliGenParam(1, AliGenMUONlib::kUpsilon, "Vogt", "Upsilon");
+ genupsilon->SetPtRange(0,100.);
+ genupsilon->SetYRange(-8.,8);
+ genupsilon->SetPhiRange(0.,360.);
+ genupsilon->SetForceDecay(kDiMuon);
+ genupsilon->SetTrackingFlag(1);
+ Float_t ratioupsilon; // Ratio with respect to the reaction cross-section for the muonic channel in the kinematics limit of the MUONCocktail
+ Float_t sigmaupsilon = 0.501e-6 * 0.674; // section "6.7 Quarkonia Production" table 6.5 for pp times shadowing
+ Float_t brupsilon = 0.0248; // Branching Ratio for Upsilon
+ genupsilon->Init(); // Generating pT and Y parametrsation for the 4pi
+ ratioupsilon = sigmaupsilon * brupsilon * fNumberOfCollisions / sigmaReaction * genupsilon->GetRelativeArea(ptMin,ptMax,yMin,yMax,phiMin,phiMax);
+ printf(">>> ratio upsilon %g et %g\n",ratioupsilon, genupsilon->GetRelativeArea(ptMin,ptMax,yMin,yMax,phiMin,phiMax));
+ genupsilon->SetPtRange(ptMin, ptMax);
+ genupsilon->SetYRange(yMin, yMax);
+ genupsilon->SetPhiRange(phiMin, phiMax);
+ genupsilon->Init(); // Generating pT and Y parametrsation in the desired kinematic range
+ AddGenerator(genupsilon,"Upsilon", ratioupsilon);
+ fTotalRate+=ratioupsilon;
// Generating Charm Physics
- AliGenParam * gen_charm = new AliGenParam(1, AliGenMUONlib::kCharm, "Vogt", "Charm");
- gen_charm->SetPtRange(0,100.);
- gen_charm->SetYRange(-8.,8);
- gen_charm->SetPhiRange(0.,360.);
- gen_charm->SetForceDecay(kSemiMuonic);
- gen_charm->SetTrackingFlag(1);
- Float_t ratio_charm; // Ratio with respect to the reaction cross-section for the muonic channel in the kinematics limit of the MUONCocktail
- Float_t sigma_charm = 2. * 6.64e-3 * 0.65 ; //
- Float_t br_charm = 0.12; // Branching Ratio for Charm
- gen_charm->Init(); // Generating pT and Y parametrsation for the 4pi
- ratio_charm = sigma_charm * br_charm * fNumberOfCollisions / sigma_reaction *
- gen_charm->GetRelativeArea(ptMin,ptMax,yMin,yMax,phiMin,phiMax);
- gen_charm->SetPtRange(ptMin, ptMax);
- gen_charm->SetYRange(yMin, yMax);
- gen_charm->SetPhiRange(phiMin, phiMax);
- gen_charm->Init(); // Generating pT and Y parametrsation in the desired kinematic range
+ AliGenParam * gencharm = new AliGenParam(1, AliGenMUONlib::kCharm, "Vogt", "Charm");
+ gencharm->SetPtRange(0,100.);
+ gencharm->SetYRange(-8.,8);
+ gencharm->SetPhiRange(0.,360.);
+ gencharm->SetForceDecay(kSemiMuonic);
+ gencharm->SetTrackingFlag(1);
+ Float_t ratiocharm; // Ratio with respect to the reaction cross-section for the muonic channel in the kinematics limit of the MUONCocktail
+ Float_t sigmacharm = 2. * 6.64e-3 * 0.65 ; //
+ Float_t brcharm = 0.12; // Branching Ratio for Charm
+ gencharm->Init(); // Generating pT and Y parametrsation for the 4pi
+ ratiocharm = sigmacharm * brcharm * fNumberOfCollisions / sigmaReaction *
+ gencharm->GetRelativeArea(ptMin,ptMax,yMin,yMax,phiMin,phiMax);
+ gencharm->SetPtRange(ptMin, ptMax);
+ gencharm->SetYRange(yMin, yMax);
+ gencharm->SetPhiRange(phiMin, phiMax);
+ gencharm->Init(); // Generating pT and Y parametrsation in the desired kinematic range
- printf(">>> ratio charm %f\n",ratio_charm);
- AddGenerator(gen_charm,"Charm", ratio_charm);
- fTotalRate+=ratio_charm;
+ printf(">>> ratio charm %f\n",ratiocharm);
+ AddGenerator(gencharm,"Charm", ratiocharm);
+ fTotalRate+=ratiocharm;
// Generating Beauty Physics "Correlated Pairs"
- AliGenParam * gen_beauty = new AliGenParam(2, AliGenMUONlib::kBeauty, "Vogt", "Beauty");
- gen_beauty->SetPtRange(0,100.);
- gen_beauty->SetYRange(-8.,8);
- gen_beauty->SetPhiRange(0.,360.);
- gen_beauty->SetForceDecay(kSemiMuonic);
- gen_beauty->SetTrackingFlag(1);
- Float_t ratio_beauty; // Ratio with respect to the reaction cross-section for the muonic channel in the kinematics limit of the MUONCocktail
- Float_t sigma_beauty = 2. * 0.210e-3 * 0.84; //
- Float_t br_beauty = 0.15; // Branching Ratio for Beauty
- gen_beauty->Init(); // Generating pT and Y parametrsation for the 4pi
- ratio_beauty = sigma_beauty * br_beauty * fNumberOfCollisions / sigma_reaction *
- gen_beauty->GetRelativeArea(ptMin,ptMax,yMin,yMax,phiMin,phiMax);
- gen_beauty->SetPtRange(ptMin, ptMax);
- gen_beauty->SetYRange(yMin, yMax);
- gen_beauty->SetPhiRange(phiMin, phiMax);
- gen_beauty->Init(); // Generating pT and Y parametrisation in the desired kinematic range
+ AliGenParam * genbeauty = new AliGenParam(2, AliGenMUONlib::kBeauty, "Vogt", "Beauty");
+ genbeauty->SetPtRange(0,100.);
+ genbeauty->SetYRange(-8.,8);
+ genbeauty->SetPhiRange(0.,360.);
+ genbeauty->SetForceDecay(kSemiMuonic);
+ genbeauty->SetTrackingFlag(1);
+ Float_t ratiobeauty; // Ratio with respect to the reaction cross-section for the muonic channel in the kinematics limit of the MUONCocktail
+ Float_t sigmabeauty = 2. * 0.210e-3 * 0.84; //
+ Float_t brbeauty = 0.15; // Branching Ratio for Beauty
+ genbeauty->Init(); // Generating pT and Y parametrsation for the 4pi
+ ratiobeauty = sigmabeauty * brbeauty * fNumberOfCollisions / sigmaReaction *
+ genbeauty->GetRelativeArea(ptMin,ptMax,yMin,yMax,phiMin,phiMax);
+ genbeauty->SetPtRange(ptMin, ptMax);
+ genbeauty->SetYRange(yMin, yMax);
+ genbeauty->SetPhiRange(phiMin, phiMax);
+ genbeauty->Init(); // Generating pT and Y parametrisation in the desired kinematic range
- printf(">>> ratio beauty %f\n",ratio_beauty);
- AddGenerator(gen_beauty,"Beauty", ratio_beauty);
- fTotalRate+=ratio_beauty;
+ printf(">>> ratio beauty %f\n",ratiobeauty);
+ AddGenerator(genbeauty,"Beauty", ratiobeauty);
+ fTotalRate+=ratiobeauty;
// Generating Pion Physics
- AliGenParam * gen_pion = new AliGenParam(1, AliGenMUONlib::kPion, "Vogt", "Pion");
- gen_pion->SetPtRange(0,100.);
- gen_pion->SetYRange(-8.,8);
- gen_pion->SetPhiRange(0.,360.);
- gen_pion->SetForceDecay(kPiToMu);
- gen_pion->SetTrackingFlag(1);
- Float_t ratio_pion; // Ratio with respect to the reaction cross-section for the muonic channel in the kinematics limit of the MUONCocktail
- Float_t sigma_pion = 1.6e-2; // A ojo TO be studied in detail.
- Float_t br_pion = 0.9999; // Branching Ratio for Pion
- gen_pion->Init(); // Generating pT and Y parametrsation for the 4pi
- ratio_pion = sigma_pion * br_pion * fNumberOfParticipants / sigma_reaction * gen_pion->GetRelativeArea(ptMin,ptMax,yMin,yMax,phiMin,phiMax);
- gen_pion->SetPtRange(ptMin, ptMax);
- gen_pion->SetYRange(yMin, yMax);
- gen_pion->SetPhiRange(phiMin, phiMax);
- gen_pion->Init(); // Generating pT and Y parametrsation in the desired kinematic range
- printf(">>> ratio pion %f\n",ratio_pion);
- AddGenerator(gen_pion,"Pion", ratio_pion);
- fTotalRate+=ratio_pion;
+ AliGenParam * genpion = new AliGenParam(1, AliGenMUONlib::kPion, "Vogt", "Pion");
+ genpion->SetPtRange(0,100.);
+ genpion->SetYRange(-8.,8);
+ genpion->SetPhiRange(0.,360.);
+ genpion->SetForceDecay(kPiToMu);
+ genpion->SetTrackingFlag(1);
+ Float_t ratiopion; // Ratio with respect to the reaction cross-section for the muonic channel in the kinematics limit of the MUONCocktail
+ Float_t sigmapion = 0.93e-2; // Valerie presentation Clermont-16-jan-2004 and Alice-int-2002-06
+ Float_t brpion = 0.9999; // Branching Ratio for Pion
+ genpion->Init(); // Generating pT and Y parametrsation for the 4pi
+ ratiopion = sigmapion * brpion * (0.80*fNumberOfParticipants+0.2*fNumberOfCollisions) / sigmaReaction * genpion->GetRelativeArea(ptMin,ptMax,yMin,yMax,phiMin,phiMax);
+ genpion->SetPtRange(ptMin, ptMax);
+ genpion->SetYRange(yMin, yMax);
+ genpion->SetPhiRange(phiMin, phiMax);
+ genpion->Init(); // Generating pT and Y parametrsation in the desired kinematic range
+ printf(">>> ratio pion %f\n",ratiopion);
+ AddGenerator(genpion,"Pion", ratiopion);
+ fTotalRate+=ratiopion;
// Generating Kaon Physics
- AliGenParam * gen_kaon = new AliGenParam(1, AliGenMUONlib::kKaon, "Vogt", "Kaon");
- gen_kaon->SetPtRange(0,100.);
- gen_kaon->SetYRange(-8.,8);
- gen_kaon->SetPhiRange(0.,360.);
- gen_kaon->SetForceDecay(kKaToMu);
- gen_kaon->SetTrackingFlag(1);
- Float_t ratio_kaon; // Ratio with respect to the reaction cross-section for the muonic channel in the kinematics limit of the MUONCocktail
- Float_t sigma_kaon = 1.8e-4; // OJO
- Float_t br_kaon = 0.6351 ; // Branching Ratio for Kaon
- gen_kaon->Init(); // Generating pT and Y parametrsation for the 4pi
- ratio_kaon = sigma_kaon * br_kaon * fNumberOfParticipants/ sigma_reaction * gen_kaon->GetRelativeArea(ptMin,ptMax,yMin,yMax,phiMin,phiMax);
- gen_kaon->SetPtRange(ptMin, ptMax);
- gen_kaon->SetYRange(yMin, yMax);
- gen_kaon->SetPhiRange(phiMin, phiMax);
- gen_kaon->Init(); // Generating pT and Y parametrsation in the desired kinematic range
- printf(">>> ratio kaon %f\n",ratio_kaon);
- AddGenerator(gen_kaon,"Kaon", ratio_kaon);
- fTotalRate+=ratio_kaon;
+ AliGenParam * genkaon = new AliGenParam(1, AliGenMUONlib::kKaon, "Vogt", "Kaon");
+ genkaon->SetPtRange(0,100.);
+ genkaon->SetYRange(-8.,8);
+ genkaon->SetPhiRange(0.,360.);
+ genkaon->SetForceDecay(kKaToMu);
+ genkaon->SetTrackingFlag(1);
+ Float_t ratiokaon; // Ratio with respect to the reaction cross-section for the muonic channel in the kinematics limit of the MUONCocktail
+ Float_t sigmakaon = 1.23e-4; // Valerie presentation Clermont-16-jan-2004 and Alice-int-2002-06
+ Float_t brkaon = 0.6351 ; // Branching Ratio for Kaon
+ genkaon->Init(); // Generating pT and Y parametrsation for the 4pi
+ ratiokaon = sigmakaon * brkaon * (0.80*fNumberOfParticipants+0.2*fNumberOfCollisions)/ sigmaReaction * genkaon->GetRelativeArea(ptMin,ptMax,yMin,yMax,phiMin,phiMax);
+ genkaon->SetPtRange(ptMin, ptMax);
+ genkaon->SetYRange(yMin, yMax);
+ genkaon->SetPhiRange(phiMin, phiMax);
+ genkaon->Init(); // Generating pT and Y parametrsation in the desired kinematic range
+ printf(">>> ratio kaon %f\n",ratiokaon);
+ AddGenerator(genkaon,"Kaon", ratiokaon);
+ fTotalRate+=ratiokaon;
}
//_________________________________________________________________________
// Generate the vertex position used by all generators
//
if(fVertexSmear == kPerEvent) Vertex();
- Bool_t PrimordialTrigger = kFALSE;
+ Bool_t primordialTrigger = kFALSE;
- while(!PrimordialTrigger) {
+ while(!primordialTrigger) {
//Reseting stack
AliRunLoader * runloader = gAlice->GetRunLoader();
}
}
// printf(">>> Number of Muons is %d \n", numberOfMuons);
- if (numberOfMuons >= fMuonMultiplicity ) PrimordialTrigger = kTRUE;
+ if (numberOfMuons >= fMuonMultiplicity ) primordialTrigger = kTRUE;
}
//printf(">>> Trigger Accepted!!! \n");
fNSucceded++;