AliGenerator* Hijing2000HF(Int_t typeHF) { comment = comment.Append(" PbPb: Hjing2000 + pythia events for HF signals"); AliGenCocktail *cocktail = new AliGenCocktail(); cocktail->SetProjectile("A", 208, 82); cocktail->SetTarget ("A", 208, 82); AliGenerator* pythiaHF = 0x0; // 20 Pythia events Int_t nPythia=20; for(Int_t i=0;i<nPythia; i++) { switch(typeHF) { case 0: pythiaHF = MbPythiaTunePerugia0chadr(); break; case 1: pythiaHF = MbPythiaTunePerugia0bchadr(); break; case 2: pythiaHF = MbPythiaTunePerugia0cele(); break; case 3: pythiaHF = MbPythiaTunePerugia0bele(); break; case 4: pythiaHF = MbPythiaTunePerugia0Jpsi2e(); break; case 5: pythiaHF = MbPythiaTunePerugia0BtoJpsi2e(); break; default: pythiaHF = MbPythiaTunePerugia0chadr(); break; } cocktail->AddGenerator(pythiaHF,"pythiaHF",1); } // 1 Hijing event AliGenHijing *hijing = Hijing2000(); cocktail->AddGenerator(hijing,"hijing",1); return cocktail; }
AliGenerator* Hijing2500Cocktail() { comment = comment.Append(" PbPb: Hjing2500 at 5.5 + muon signals"); AliGenCocktail *cocktail = new AliGenCocktail(); cocktail->SetProjectile("A", 208, 82); cocktail->SetTarget ("A", 208, 82); cocktail->SetEnergyCMS(energy); // 1 Hijing event: provides underlying event and collision geometry AliGenHijing *hijing = Hijing2500(); cocktail->AddGenerator(hijing,"hijing",1); // generator for the custom signal AliGenerator* signalGen = 0x0; switch (signal) { case 0: signalGen = GenBox(); break; case 1: signalGen = GenMuonLMR(); break; case 2: signalGen = GenCorrHF(); break; default: signalGen = GenBox(); break; } cocktail->AddGenerator(signalGen, "signal", 1); cocktail->SetTrackingFlag(1); return cocktail; }
void Config() { // Get settings from environment variables ProcessEnvironmentVars(); gRandom->SetSeed(seed); cerr<<"Seed for random number generation= "<<seed<<endl; // Libraries required by geant321 #if defined(__CINT__) gSystem->Load("liblhapdf"); // Parton density functions gSystem->Load("libEG"); gSystem->Load("libEGPythia6"); // TGenerator interface gSystem->Load("libpythia6"); // Pythia gSystem->Load("libAliPythia6"); // ALICE specific implementations gSystem->Load("libgeant321"); gSystem->Load("libTTherminator"); #endif new TGeant3TGeo("C++ Interface to Geant3"); //======================================================================= // Create the output file AliRunLoader* rl=0;; cout<<"Config.C: Creating Run Loader ..."<<endl; // rl = AliRunLoader::Open("galice.root"); rl = AliRunLoader::Open("galice.root", AliConfig::GetDefaultEventFolderName(), "recreate"); if (rl == 0x0) { gAlice->Fatal("Config.C","Can not instatiate the Run Loader"); return; } rl->SetCompressionLevel(2); rl->SetNumberOfEventsPerFile(10000); gAlice->SetRunLoader(rl); // Set the trigger configuration if ((embedrun == kBackground) || (embedrun == kMerged)) { // AliSimulation::Instance()->SetTriggerConfig("Pb-Pb"); AliSimulation::Instance()->SetTriggerConfig(""); cout<<"Trigger configuration is set to Pb-Pb"<<endl; } else { // Set the trigger configuration: proton-proton // AliSimulation::Instance()->SetTriggerConfig("p-p"); AliSimulation::Instance()->SetTriggerConfig("Pb-Pb"); cout<<"Trigger configuration is set to Pb-Pb"<<endl; } // // Set External decayer TVirtualMCDecayer *decayer = new AliDecayerPythia(); decayer->SetForceDecay(kAll); decayer->Init(); gMC->SetExternalDecayer(decayer); //======================================================================= // ************* STEERING parameters FOR ALICE SIMULATION ************** // --- Specify event type to be tracked through the ALICE setup // --- All positions are in cm, angles in degrees, and P and E in GeV gMC->SetProcess("DCAY",1); gMC->SetProcess("PAIR",1); gMC->SetProcess("COMP",1); gMC->SetProcess("PHOT",1); gMC->SetProcess("PFIS",0); gMC->SetProcess("DRAY",0); gMC->SetProcess("ANNI",1); gMC->SetProcess("BREM",1); gMC->SetProcess("MUNU",1); gMC->SetProcess("CKOV",1); gMC->SetProcess("HADR",1); gMC->SetProcess("LOSS",2); gMC->SetProcess("MULS",1); gMC->SetProcess("RAYL",1); Float_t cut = 1.e-3; // 1MeV cut by default Float_t tofmax = 1.e10; gMC->SetCut("CUTGAM", cut); gMC->SetCut("CUTELE", cut); gMC->SetCut("CUTNEU", cut); gMC->SetCut("CUTHAD", cut); gMC->SetCut("CUTMUO", cut); gMC->SetCut("BCUTE", cut); gMC->SetCut("BCUTM", cut); gMC->SetCut("DCUTE", cut); gMC->SetCut("DCUTM", cut); gMC->SetCut("PPCUTM", cut); gMC->SetCut("TOFMAX", tofmax); //======================// // Set External decayer // //======================// TVirtualMCDecayer* decayer = new AliDecayerPythia(); decayer->SetForceDecay(kAll); decayer->Init(); gMC->SetExternalDecayer(decayer); if ((embedrun == kMerged) || (embedrun == kSignal) || (embedrun == kBackground)) { //=========================// // Generator Configuration // //=========================// AliGenerator* gener = 0x0; if (proc == kPythia6) { gener = MbPythia(); } else if (proc == kPhojet) { gener = MbPhojet(); } else if (proc == kJPsiPbPb) { gener = JPsiPbPb(); } else if (proc == kJPsiPbPb2760) { gener = JPsiPbPb2760(); } else if (proc == kJPsiHptPbPb2760) { gener = JPsiHptPbPb2760(); } else if (proc == kBSignalPbPb2760) { gener = BSignalPbPb2760(); } } else { AliGenCocktail *gener = new AliGenCocktail(); gener->SetPhiRange(0, 360); // Set pseudorapidity range from -8 to 8. Float_t thmin = EtaToTheta(1); // theta min. <---> eta max Float_t thmax = EtaToTheta(-1); // theta max. <---> eta min gener->SetThetaRange(thmin,thmax); gener->SetProjectile("A",208,82); gener->SetTarget("A",208,82); AliGenTherminator *genther = new AliGenTherminator(); genther->SetFileName("event.out"); genther->SetEventNumberInFile(1); genther->SetTemperature(0.145); genther->SetMiuI(-0.0009); genther->SetMiuS(0.000); genther->SetMiuB(0.0008); genther->SetAlfaRange(8.0); genther->SetRapRange(4.0); genther->SetRhoMax(7.74); genther->SetTau(9.74); genther->SetModel("Lhyquid3D"); genther->SetLhyquidSet("LHC500C2030"); gener->AddGenerator(genther, "THERMINATOR LHYQUID3D", 1); } /* // PRIMARY VERTEX // gener->SetOrigin(0., 0., 0.); // vertex position // // // Size of the interaction diamond // Longitudinal Float_t sigmaz; if (embedrun == kBackground) { sigmaz = 7.55 / TMath::Sqrt(2.); // [cm] } else { Float_t sigmaz = 5.4 / TMath::Sqrt(2.); // [cm] if (energy == 900) sigmaz = 10.5 / TMath::Sqrt(2.); // [cm] } // // Transverse Float_t betast = 10; // beta* [m] Float_t eps = 3.75e-6; // emittance [m] Float_t gamma = energy / 2.0 / 0.938272; // relativistic gamma [1] Float_t sigmaxy = TMath::Sqrt(eps * betast / gamma) / TMath::Sqrt(2.) * 100.; // [cm] 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->SetCutVertexZ(3.); // Truncate at 3 sigma gener->SetVertexSmear(kPerEvent); */ // PRIMARY VERTEX (will be overwritten by ip from real event) // gener->SetOrigin(0., 0., 0.); // vertex position gener->SetSigma(0., 0., 0.); //Sigma in (X,Y,Z) (cm) on IP position gener->Init(); /* // Taken from GRP instead // FIELD // // Field // AliMagF* field = 0x0; if (mag == kNoField) { comment = comment.Append(" | L3 field 0.0 T"); TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", 0., 0., AliMagF::k5kGUniform)); } else if (mag == k5kG) { comment = comment.Append(" | L3 field 0.5 T"); TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kG)); } printf("\n \n Comment: %s \n \n", comment.Data()); // TGeoGlobalMagField::Instance()->SetField(field); */ rl->CdGAFile(); Int_t iABSO = 1; Int_t iACORDE= 0; Int_t iDIPO = 1; Int_t iEMCAL = 0; Int_t iFMD = 1; Int_t iFRAME = 1; Int_t iHALL = 1; Int_t iITS = 1; Int_t iMAG = 1; Int_t iMUON = 1; Int_t iPHOS = 0; Int_t iPIPE = 1; Int_t iPMD = 0; Int_t iHMPID = 0; Int_t iSHIL = 1; Int_t iT0 = 0; Int_t iTOF = 0; Int_t iTPC = 0; Int_t iTRD = 0; Int_t iVZERO = 1; Int_t iZDC = 0; //=================== Alice BODY parameters ============================= AliBODY *BODY = new AliBODY("BODY", "Alice envelop"); if (iMAG) { //=================== MAG parameters ============================ // --- Start with Magnet since detector layouts may be depending --- // --- on the selected Magnet dimensions --- AliMAG *MAG = new AliMAG("MAG", "Magnet"); } if (iABSO) { //=================== ABSO parameters ============================ AliABSO *ABSO = new AliABSOv3("ABSO", "Muon Absorber"); } if (iDIPO) { //=================== DIPO parameters ============================ AliDIPO *DIPO = new AliDIPOv3("DIPO", "Dipole version 3"); } if (iHALL) { //=================== HALL parameters ============================ AliHALL *HALL = new AliHALLv3("HALL", "Alice Hall"); } if (iFRAME) { //=================== FRAME parameters ============================ AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame"); FRAME->SetHoles(1); } if (iSHIL) { //=================== SHIL parameters ============================ AliSHIL *SHIL = new AliSHILv3("SHIL", "Shielding Version 3"); } if (iPIPE) { //=================== PIPE parameters ============================ AliPIPE *PIPE = new AliPIPEv3("PIPE", "Beam Pipe"); } if (iITS) { //=================== ITS parameters ============================ // AliITS *ITS = new AliITSv11Hybrid("ITS","ITS v11Hybrid"); AliITS *ITS = new AliITSv11("ITS","ITS v11"); } if (iTPC) { //============================ TPC parameters ===================== AliTPC *TPC = new AliTPCv2("TPC", "Default"); } if (iTOF) { //=================== TOF parameters ============================ AliTOF *TOF = new AliTOFv6T0("TOF", "normal TOF"); } if (iHMPID) { //=================== HMPID parameters =========================== AliHMPID *HMPID = new AliHMPIDv3("HMPID", "normal HMPID"); } if (iZDC) { //=================== ZDC parameters ============================ AliZDC *ZDC = new AliZDCv3("ZDC", "normal ZDC"); } if (iTRD) { //=================== TRD parameters ============================ AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator"); } if (iFMD) { //=================== FMD parameters ============================ AliFMD *FMD = new AliFMDv1("FMD", "normal FMD"); } if (iMUON) { //=================== MUON parameters =========================== // New MUONv1 version (geometry defined via builders) const char* digitstore="AliMUONDigitStoreV2S"; AliMUON *MUON = new AliMUONv1("MUON", "default"); // activate trigger efficiency by cells MUON->SetTriggerEffCells(1); if (embedrun == kBackground) { digitstore="AliMUONDigitStoreV2R"; MUON->SetConvertTrigger(true); } MUON->SetDigitStoreClassName(digitstore); cout << "MUON DigitStore is " << MUON->DigitStoreClassName().Data() << endl; // Noise-only digits in tracker/trigger (0=no noise, 1=default (noise in tracker), 2=noise in tracker and trigger): cout << "****** DISABLING NOISE GENERATION AS WE DO EMBEDDING ******" << endl; MUON->SetDigitizerWithNoise(0); } if (iPHOS) { //=================== PHOS parameters =========================== AliPHOS *PHOS = new AliPHOSv1("PHOS", "IHEP"); } if (iPMD) { //=================== PMD parameters ============================ AliPMD *PMD = new AliPMDv1("PMD", "normal PMD"); } if (iT0) { //=================== T0 parameters ============================ AliT0 *T0 = new AliT0v1("T0", "T0 Detector"); } if (iEMCAL) { //=================== EMCAL parameters ============================ AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETE"); } if (iACORDE) { //=================== ACORDE parameters ============================ AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE"); } if (iVZERO) { //=================== ACORDE parameters ============================ AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO"); } }