]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MFT/Config.C
Double check if SM is running added. Some redundant output removed from SM
[u/mrichter/AliRoot.git] / MFT / Config.C
index 17367624879846e5807ada3221552dd6ba2f8bd4..ca5bf8ef3a1cc43b409a035ddac1c3a43ba5e91c 100644 (file)
@@ -47,11 +47,12 @@ enum PDCProc_t {kGenBox,
                kGenCorrHF,
                 kPythia6,
                kPythiaPerugia0, 
-               kPythiaPerugia0Jpsi2e
-               kPythiaPerugia0BtoJpsi2e
+               kPythiaPerugia0Jpsi2mu
+               kPythiaPerugia0BtoJpsi2mu
                kHijing, 
                kHijing2500,
-               kHijing2500Cocktail};
+               kHijing2500Cocktail,
+               kCocktailSignals};
 
 const Char_t* pprRunName[] = {"kGenBox",
                              "kGenMuonLMR",
@@ -60,11 +61,12 @@ const Char_t* pprRunName[] = {"kGenBox",
                              "kGenCorrHF",
                              "kPythia6",
                              "kPythiaPerugia0", 
-                             "kPythiaPerugia0Jpsi2e", 
-                             "kPythiaPerugia0BtoJpsi2e", 
+                             "kPythiaPerugia0Jpsi2mu", 
+                             "kPythiaPerugia0BtoJpsi2mu", 
                              "kHijing", 
                              "kHijing2500", 
-                             "kHijing2500Cocktail"};
+                             "kHijing2500Cocktail",
+                             "kCocktailSignals"};
 
 enum Mag_t { kNoField, k5kG, kFieldMax };
 
@@ -73,10 +75,10 @@ const Char_t* pprField[] = { "kNoField", "k5kG", "kFieldMax" };
 void LoadLibs();
 
 // ----------------------- Generator, field, beam energy,... ------------------------------------------------------------
-static PDCProc_t     proc     = kGenBox;
-static PDCProc_t     signal   = kGenBox;    // only in case kHijing2500Cocktail is the proc
+static PDCProc_t     proc     = kGenParamJpsi;
+static PDCProc_t     signal   = kGenParamJpsi;    // only in case kHijing2500Cocktail is the proc
 static Mag_t         mag      = k5kG;
-static Float_t       energy   = 14000.; // energy in CMS
+static Float_t       energy   = 5500.; // energy in CMS
 static Float_t       bMin     = 0.;
 static Float_t       bMax =   = 5.; // 0-5 fm corresponds to around 0-10% (see https://twiki.cern.ch/twiki/bin/viewauth/ALICE/CentStudies#Tables_with_centrality_bins_for)
 static Double_t      JpsiPol  = 0; // Jpsi polarisation
@@ -99,7 +101,7 @@ void Config() {
 
   AliRunLoader* rl=0x0;
 
-  cout<<"Config.C: Creating Run Loader ..."<<endl;
+  printf("Config.C: Creating Run Loader ...");
   rl = AliRunLoader::Open("galice.root", AliConfig::GetDefaultEventFolderName(), "recreate");
   if (rl == 0x0) {
     gAlice->Fatal("Config.C","Can not instatiate the Run Loader");
@@ -150,16 +152,18 @@ void Config() {
   
   // Generator
   AliGenerator* gener = 0x0;
-  if (proc == kPythia6)                   gener = MbPythia(); 
-  else if (proc == kPythiaPerugia0)       gener = MbPythiaTunePerugia0();
-  else if (proc == kHijing)               gener = Hijing();    
-  else if (proc == kHijing2500)           gener = Hijing2500();        
-  else if (proc == kHijing2500Cocktail)   gener = Hijing2500Cocktail();
-  else if (proc == kGenBox)               gener = GenBox();
-  else if (proc == kGenMuonLMR)           gener = GenMuonLMR();
-  else if (proc == kGenParamJpsi)         gener = GenParamJpsi();
-  else if (proc == kGenCorrHF)            gener = GenCorrHF();
-  else if (proc == kGenPionKaon)          gener = GenParamPionKaon();
+  if (proc == kPythia6)                        gener = MbPythia(); 
+  else if (proc == kPythiaPerugia0)            gener = MbPythiaTunePerugia0();
+  else if (proc == kHijing)                    gener = Hijing();       
+  else if (proc == kHijing2500)                gener = Hijing2500();   
+  else if (proc == kHijing2500Cocktail)        gener = Hijing2500Cocktail();
+  else if (proc == kGenBox)                    gener = GenBox();
+  else if (proc == kGenMuonLMR)                gener = GenMuonLMR();
+  else if (proc == kGenParamJpsi)              gener = GenParamJpsi();
+  else if (proc == kGenCorrHF)                 gener = GenCorrHF();
+  else if (proc == kGenPionKaon)               gener = GenParamPionKaon();
+  else if (proc == kPythiaPerugia0BtoJpsi2mu)  gener = MbPythiaTunePerugia0BtoJpsi2mu();
+  else if (proc == kCocktailSignals)           gener = CocktailSignals();
 
   // Size of the interaction diamond
   Float_t sigmaz  = 5.4 / TMath::Sqrt(2.);     // [cm]
@@ -170,8 +174,9 @@ void Config() {
 
   printf("\n \n Diamond size x-y: %10.3e z: %10.3e\n \n", sigmaxy, sigmaz);
     
-//   gener->SetSigma(sigmaxy, sigmaxy, sigmaz);      // Sigma in (X,Y,Z) (cm) on IP position
-//   gener->SetVertexSmear(kPerEvent);
+  gener->SetOrigin(0,0,0);
+  gener->SetSigma(sigmaxy, sigmaxy, sigmaz);      // Sigma in (X,Y,Z) (cm) on IP position
+  gener->SetVertexSmear(kPerEvent);
   gener->Init();
 
   printf("\n \n Comment: %s \n \n", comment.Data());
@@ -197,7 +202,7 @@ void Config() {
   Int_t iFMD   = 0;
   Int_t iFRAME = 0;
   Int_t iITS   = 0;
-  Int_t iMAG   = 0;
+  Int_t iMAG   = 1;
   Int_t iPHOS  = 0;
   Int_t iPMD   = 0;
   Int_t iHMPID = 0;
@@ -214,7 +219,7 @@ void Config() {
   if (iDIPO)      AliDIPO   *DIPO   = new AliDIPOv3("DIPO", "Dipole version 3");
   if (iHALL)      AliHALL   *HALL   = new AliHALLv3("HALL", "Alice Hall");
   if (iSHIL)      AliSHIL   *SHIL   = new AliSHILv3("SHIL", "Shielding Version 3");
-  if (iITS)       AliITS    *ITS    = new AliITSv11("ITS","ITS v11");
+  if (iITS)       gROOT->ProcessLine(".x $ALICE_ROOT/ITS/UPGRADE/testITSU/CreateITSU.C");
   if (iTPC)       AliTPC    *TPC    = new AliTPCv2("TPC", "Default");
   if (iTOF)       AliTOF    *TOF    = new AliTOFv6T0("TOF", "normal TOF");
   if (iHMPID)     AliHMPID  *HMPID  = new AliHMPIDv3("HMPID", "normal HMPID");
@@ -231,7 +236,7 @@ void Config() {
   }
   if (iPIPE) {
     //    AliPIPE *PIPE = new AliPIPEv3("PIPE", "Beam Pipe");
-    AliPIPE *PIPE = new AliPIPEv4("PIPE", "Beam Pipe", 1.98, 0.08);
+    AliPIPE *PIPE = new AliPIPEv4("PIPE", "Beam Pipe");
   }
   if (iZDC) {
     AliZDC *ZDC = new AliZDCv3("ZDC", "normal ZDC");
@@ -249,9 +254,6 @@ void Config() {
   }
   if (iMFT) {
     AliMFT *MFT = new AliMFT("MFT", "normal MFT");
-    MFT->SetNSlices(1);
-    MFT->SetChargeDispersion(20.e-4);
-    MFT->SetNStepForChargeDispersion(4);
   }
 
   TIter next(gAlice->Modules());
@@ -265,12 +267,13 @@ void Config() {
 
 AliGenerator* GenBox() {
 
-  AliGenBox *gener = new AliGenBox(2);
-  gener->SetMomentumRange(10.0, 10.1);
+  AliGenBox *gener = new AliGenBox(10);
+  gener->SetMomentumRange(4, 50);
   gener->SetPhiRange(0., 360.);         
-  gener->SetThetaRange(171.0,178.0);
-  gener->SetPart(kMuonMinus);           // Muons
-  gener->SetOrigin(0., 0., 0.);         // vertex position
+  gener->SetThetaRange(170.0,178.0);
+  Bool_t isMuPlus = gRandom->Integer(2);
+  if (isMuPlus) gener->SetPart(kMuonPlus);           // Muons
+  else          gener->SetPart(kMuonMinus);          // Muons
   
   return gener;
   
@@ -283,13 +286,11 @@ AliGenerator* GenMuonLMR() {
   AliGenMUONLMR *gener = new AliGenMUONLMR();
   gener->SetMomentumRange(0,999);
   gener->SetPtRange(0,100.);
-  gener->SetYRange(-4.0, -2.5);
-  gener->SetChildThetaRange(171.0,177.0);
-  gener->SetChildMomentumRange(5.0, 999.);
-  gener->SetOrigin(0.0, 0.0, 0.0);             // vertex position
-  gener->SetSigma(0.0, 0.0, 0.0);              // vertex position smearing
+  gener->SetYRange(-4.5, -2.0);
+  gener->SetChildThetaRange(171.0,178.0);
+  gener->SetChildMomentumRange(4.0, 999.);
   enum {kEta2Body, kEtaDalitz, kRho2Body, kOmega2Body, kOmegaDalitz, kPhi2Body, kEtaPrimeDalitz, kPionLMR, kKaonLMR}; 
-  gener->GenerateSingleProcess(kPhi2Body, 10);
+  gener->GenerateSingleProcess(kOmega2Body, 10);
   gener->SetCutOnChild(1);
 
   return gener;
@@ -306,9 +307,7 @@ AliGenerator* GenParamJpsi() {
   gener->SetYRange(-4.0, -2.5);
   gener->SetPhiRange(0., 360.);
   gener->SetChildThetaRange(171.0,177.0);
-  gener->SetChildMomentumRange(5.0, 999.);
-  gener->SetOrigin(0.0, 0.0, 0.0);          // vertex position
-  gener->SetSigma(0.0, 0.0, 0.0);           // Sigma in (X,Y,Z) (cm) on IP position
+  gener->SetChildMomentumRange(4.0, 999.);
   gener->SetForceDecay(kDiMuon);
   gener->SetTrackingFlag(1);
   gener->SetCutOnChild(1);
@@ -325,8 +324,6 @@ AliGenerator* GenParamPionKaon() {
   gener->SetPtRange(0, 5.);
   gener->SetPhiRange(0., 360.);
   gener->SetYRange(-10., 0.);
-  gener->SetOrigin(0.0, 0.0, 0.0);  // vertex position
-  gener->SetSigma(0.0, 0.0, 0.0);   // vertex position smearing
   //  gener->SetCutOnChild(1);
 
   return gener;
@@ -337,13 +334,13 @@ AliGenerator* GenParamPionKaon() {
 
 AliGenerator* GenCorrHF() {
   
-  AliGenCorrHF *gener = new AliGenCorrHF(1, 4, 14);  // for charm, 1 pair per event
-  // AliGenCorrHF *gener = new AliGenCorrHF(1, 5, 14);  // for beauty, 1 pair per event
+  AliGenCorrHF *gener = new AliGenCorrHF(1, 4, 6);  // for charm, 1 pair per event
+  // AliGenCorrHF *gener = new AliGenCorrHF(1, 5, 6);  // for beauty, 1 pair per event
   
   gener->SetMomentumRange(0,9999);
   gener->SetCutOnChild(1);          // 1/0 means cuts on children enable/disable
-  gener->SetChildThetaRange(170.0,179.0);
-  gener->SetOrigin(0,0,0);          //vertex position    
+  gener->SetChildThetaRange(171.0,178.0);
+  gener->SetChildMomentumRange(4.0, 999.);
   gener->SetForceDecay(kSemiMuonic);
   gener->SetTrackingFlag(1);
   gener->Init();
@@ -396,31 +393,30 @@ AliGenerator* MbPythiaTunePerugia0() {
 
 //====================================================================================================================================================
 
-AliGenerator* MbPythiaTunePerugia0Jpsi2e() {
+AliGenerator* MbPythiaTunePerugia0Jpsi2mu() {
   
-  comment = comment.Append("Jpsi forced to dielectrons");
+  comment = comment.Append("Jpsi forced to dimuons");
   AliGenParam *jpsi=0x0;
-  if(JpsiHarderPt) jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "CDF pp 8.8", "Jpsi");  // 8.8 TeV
+  if (JpsiHarderPt) jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "CDF pp 8.8", "Jpsi");  // 8.8 TeV
   else jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "CDF pp 7", "Jpsi");  // 7 TeV
   jpsi->SetPtRange(0.,999.);
   jpsi->SetYRange(-1.0, 1.0);
   jpsi->SetPhiRange(0.,360.);
-  jpsi->SetForceDecay(kDiElectron);
+  jpsi->SetForceDecay(kDiMuon);
   return jpsi;
 
 }
 
 //====================================================================================================================================================
 
-AliGenerator* MbPythiaTunePerugia0BtoJpsi2e() {
+AliGenerator* MbPythiaTunePerugia0BtoJpsi2mu() {
 
-  comment = comment.Append(" pp: Pythia (Perugia0) BtoJpsi (1 bbbar per event, 1 b-hadron in |y|<2, 1 J/psi in |y|<2");
+  comment = comment.Append(" pp: Pythia (Perugia0) BtoJpsi (1 bbbar per event, 1 b-hadron, 1 J/psi");
   
   //    Pythia
   AliGenPythia* pythia = new AliGenPythia(-1);
   pythia->SetMomentumRange(0, 999999.);
-  pythia->SetThetaRange(0., 180.);
-  pythia->SetYRange(-2.,2.);
+  pythia->SetYRange(-4.5, -2.0);
   pythia->SetPtRange(0,1000.);
   pythia->SetProcess(kPyBeautyppMNRwmi);
   pythia->SetEnergyCMS(energy);
@@ -432,13 +428,14 @@ AliGenerator* MbPythiaTunePerugia0BtoJpsi2e() {
   //    decays
   pythia->SetCutOnChild(1);
   pythia->SetPdgCodeParticleforAcceptanceCut(443);
-  pythia->SetChildYRange(-2,2);
+  pythia->SetChildYRange(-4.5, -2.0);
   pythia->SetChildPtRange(0,10000.);
   //
   //    decays
-  pythia->SetForceDecay(kBJpsiDiElectron);
+  pythia->SetForceDecay(kBJpsiDiMuon);
   
   return pythia;
+
 }
 
 //====================================================================================================================================================
@@ -449,8 +446,6 @@ AliGenerator* HijingParam() {
   gener->SetMomentumRange(0,999);
   gener->SetPhiRange(0,360);
   gener->SetThetaRange(171, 179);
-  gener->SetOrigin(0,0,0);        // vertex position
-  gener->SetSigma(0,0,0);         // Sigma in (X,Y,Z) (cm) on IP position
   gGener = gener;
   
   return gener;
@@ -535,6 +530,62 @@ AliGenerator* Hijing2500Cocktail() {
 
 //====================================================================================================================================================
 
+AliGenerator* CocktailSignals() {
+  
+  comment = comment.Append("Cocktail of various signals");
+
+  AliGenCocktail *cocktail = new AliGenCocktail();
+
+  // 1) Dummy generation of positive pions, to keep memory of the production vertex
+  AliGenBox *dummyPionPos = new AliGenBox(20);
+  dummyPionPos->SetYRange(-0.5, 0.5);
+  dummyPionPos->SetPtRange(1., 10.);
+  dummyPionPos->SetPart(211);
+  cocktail->AddGenerator(dummyPionPos,"dummyPionPos",1);
+
+  // 2) Dummy generation of negative pions, to keep memory of the production vertex
+  AliGenBox *dummyPionNeg = new AliGenBox(20);
+  dummyPionNeg->SetYRange(-0.5, 0.5);
+  dummyPionNeg->SetPtRange(1., 10.);
+  dummyPionNeg->SetPart(-211);
+  cocktail->AddGenerator(dummyPionNeg,"dummyPionNeg",1);
+
+  // 3) Generator for the custom signal
+  AliGenerator* signalGen = 0x0;      
+  if      (signal == kPythia6)                   signalGen = MbPythia(); 
+  else if (signal == kPythiaPerugia0)            signalGen = MbPythiaTunePerugia0();
+  else if (signal == kHijing)                    signalGen = Hijing(); 
+  else if (signal == kHijing2500)                signalGen = Hijing2500();     
+  else if (signal == kGenBox)                    signalGen = GenBox();
+  else if (signal == kGenMuonLMR)                signalGen = GenMuonLMR();
+  else if (signal == kGenParamJpsi)              signalGen = GenParamJpsi();
+  else if (signal == kGenCorrHF)                 signalGen = GenCorrHF();
+  else if (signal == kGenPionKaon)               signalGen = GenParamPionKaon();
+  else if (signal == kPythiaPerugia0BtoJpsi2mu)  signalGen = MbPythiaTunePerugia0BtoJpsi2mu();
+  cocktail->AddGenerator(signalGen, "signal", 1);
+
+  cocktail->SetTrackingFlag(1);
+
+  return cocktail;
+
+}
+
+//====================================================================================================================================================
+
+AliGenerator* QEDGeneratorPbPb() {
+  
+  AliGenEpEmv1 *generQED = new AliGenEpEmv1();
+  generQED->SetEnergyCMS(energy);
+  generQED->SetProjectile("A", 208, 82);
+  generQED->SetTarget ("A", 208, 82);
+  generQED->SetYRange(-8.5, 0.);
+  generQED->SetPtRange(0.4e-3, 1.0); // Set pt limits (GeV) for e+-
+  generQED->SetDebug(0);             // Set debug level (0 = silent)
+
+}
+
+//====================================================================================================================================================
+
 void LoadLibs() {
 
 #if defined(__CINT__)
@@ -556,7 +607,10 @@ void LoadLibs() {
   } 
   
   gSystem->Load("libgeant321");
-  
+
+  gSystem->Load("libITSUpgradeBase");
+  gSystem->Load("libITSUpgradeSim");
+   
 #endif
 
 }