X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MFT%2FConfig.C;h=1e4c94e3142ad5ec9ac1ce3cdf57eafd6963b5f9;hb=e0ecddf0a88fa2dbb5060e525ab308d5f5814e24;hp=4549300c4f0e30b952ec76a7b3750e5c08878ee5;hpb=f43b7000180e5e932d54be5ad8b404b1e6fd3dc0;p=u%2Fmrichter%2FAliRoot.git diff --git a/MFT/Config.C b/MFT/Config.C index 4549300c4f0..1e4c94e3142 100644 --- a/MFT/Config.C +++ b/MFT/Config.C @@ -42,25 +42,31 @@ enum PDCProc_t {kGenBox, kGenMuonLMR, + kGenParamJpsi, + kGenPionKaon, kGenCorrHF, kPythia6, kPythiaPerugia0, - kPythiaPerugia0Jpsi2e, - kPythiaPerugia0BtoJpsi2e, + kPythiaPerugia0Jpsi2mu, + kPythiaPerugia0BtoJpsi2mu, kHijing, kHijing2500, - kHijing2500Cocktail}; + kHijing2500Cocktail, + kCocktailSignals}; const Char_t* pprRunName[] = {"kGenBox", "kGenMuonLMR", + "kGenParamJpsi", + "kGenPionKaon", "kGenCorrHF", "kPythia6", "kPythiaPerugia0", - "kPythiaPerugia0Jpsi2e", - "kPythiaPerugia0BtoJpsi2e", + "kPythiaPerugia0Jpsi2mu", + "kPythiaPerugia0BtoJpsi2mu", "kHijing", "kHijing2500", - "kHijing2500Cocktail"}; + "kHijing2500Cocktail", + "kCocktailSignals"}; enum Mag_t { kNoField, k5kG, kFieldMax }; @@ -69,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 @@ -95,7 +101,7 @@ void Config() { AliRunLoader* rl=0x0; - cout<<"Config.C: Creating Run Loader ..."<Fatal("Config.C","Can not instatiate the Run Loader"); @@ -146,14 +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 == kGenCorrHF) gener = GenCorrHF(); + 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] @@ -164,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()); @@ -191,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; @@ -208,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"); @@ -225,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); // cylindre with new adaptator pipe + AliPIPE *PIPE = new AliPIPEv4("PIPE", "Beam Pipe"); } if (iZDC) { AliZDC *ZDC = new AliZDCv3("ZDC", "normal ZDC"); @@ -243,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()); @@ -259,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; @@ -277,15 +286,11 @@ AliGenerator* GenMuonLMR() { AliGenMUONLMR *gener = new AliGenMUONLMR(); gener->SetMomentumRange(0,999); gener->SetPtRange(0,100.); - gener->SetPhiRange(0., 360.); - gener->SetThetaRange(0., 180.); - gener->SetChildThetaRange(170.0,179.0); gener->SetYRange(-4.5, -2.0); - gener->SetOrigin(0.0, 0.0, 0.0); // vertex position - gener->SetSigma(0.0, 0.0, 0.0); // vertex position smearing - gener->SetVertexSmear(kPerEvent); + gener->SetChildThetaRange(171.0,178.0); + gener->SetChildMomentumRange(4.0, 999.); enum {kEta2Body, kEtaDalitz, kRho2Body, kOmega2Body, kOmegaDalitz, kPhi2Body, kEtaPrimeDalitz, kPionLMR, kKaonLMR}; - gener->GenerateSingleProcess(kPhi2Body, 500); + gener->GenerateSingleProcess(kOmega2Body, 10); gener->SetCutOnChild(1); return gener; @@ -294,15 +299,48 @@ AliGenerator* GenMuonLMR() { //==================================================================================================================================================== +AliGenerator* GenParamJpsi() { + + AliGenParam *gener = new AliGenParam(5, AliGenMUONlib::kJpsi); + gener->SetMomentumRange(0,999); + gener->SetPtRange(0,100.); + gener->SetYRange(-4.0, -2.5); + gener->SetPhiRange(0., 360.); + gener->SetChildThetaRange(171.0,177.0); + gener->SetChildMomentumRange(4.0, 999.); + gener->SetForceDecay(kDiMuon); + gener->SetTrackingFlag(1); + gener->SetCutOnChild(1); + + return gener; + +} + +//==================================================================================================================================================== + +AliGenerator* GenParamPionKaon() { + + AliGenParamPionsKaons *gener = new AliGenParamPionsKaons(100,"$ALICE_ROOT/MFT/PionKaonKinematics.root"); + gener->SetPtRange(0, 5.); + gener->SetPhiRange(0., 360.); + gener->SetYRange(-10., 0.); + // gener->SetCutOnChild(1); + + return gener; + +} + +//==================================================================================================================================================== + 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(); @@ -355,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); @@ -391,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; + } //==================================================================================================================================================== @@ -408,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; @@ -494,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__) @@ -515,7 +607,10 @@ void LoadLibs() { } gSystem->Load("libgeant321"); - + + gSystem->Load("libITSUpgradeBase.so"); + gSystem->Load("libITSUpgradeSim.so"); + #endif }