//----------------------------------------------------------------------------- GenTPHIC(Int_t process) { AliGenTPHIC *gener = new AliGenTPHIC(); gener->SetMomentumRange(0, 999); gener->SetPhiRange(0, 360); Float_t thmin = EtaToTheta(8); // theta min. <---> eta max Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min gener->SetThetaRange(thmin,thmax); gener->SetOrigin(0, 0, 0); //vertex position gener->SetSigma(0, 0, 0); //Sigma in (X,Y,Z) (cm) on IP position // Set TPHIC-specific parameters gener->SetProcess(process); if (process == 1) { // gamma gamma -> X } else if (process == 2) { // gamma gamma -> eta_c gener->SetKfOnium(441); gener->SetGGwidthOnium(7.4e-06); } else if (process == 3) { // gamma gamma -> mu+ mu- gener->SetKfFermion = 13; } else if (process == 4) { // gamma gamma -> W+ W- gener->SetMggRange(70.,200.); gener->SetYggRange(-5.,5.); gener->SetLumFunName("lum_ca_70_200.dat"); gener->SetLumFunFlag(-1); } else if (process == 5) { // gamma gamma -> chi_1+ chi_1- (not implemented) } else if (process == 5) { // gamma gamma -> rho0 rho0 gener->SetKfVmesons(113,113); } gener->SetDebug(1); gener->SetEventListRange(1,10); gener->Init(); }
IlcGenerator* genGunConfig() { cout << "Running genGunConfig.C ... " << endl; //======================================================================= // Event generator //======================================================================= // The cocktail itself IlcGenCocktail *gener = new IlcGenCocktail(); gener->SetPhiRange(0, 360); // Set pseudorapidity range from -8 to 8. Float_t thmin = EtaToTheta(8); // theta min. <---> eta max Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min gener->SetThetaRange(thmin,thmax); gener->SetOrigin(0, 0, 0); //vertex position gener->SetSigma(0, 0, 0); //Sigma in (X,Y,Z) (cm) on IP position // Particle guns for the barrel part (taken from RichConfig) IlcGenFixed *pG1=new IlcGenFixed(1); pG1->SetPart(kProton); pG1->SetMomentum(2.5); pG1->SetTheta(109.5-3); pG1->SetPhi(10); gener->AddGenerator(pG1,"g1",1); IlcGenFixed *pG2=new IlcGenFixed(1); pG2->SetPart(kPiPlus); pG2->SetMomentum(1.0); pG2->SetTheta( 90.0-3); pG2->SetPhi(10); gener->AddGenerator(pG2,"g2",1); IlcGenFixed *pG3=new IlcGenFixed(1); pG3->SetPart(kPiMinus); pG3->SetMomentum(1.5); pG3->SetTheta(109.5-3); pG3->SetPhi(30); gener->AddGenerator(pG3,"g3",1); IlcGenFixed *pG4=new IlcGenFixed(1); pG4->SetPart(kKPlus); pG4->SetMomentum(0.7); pG4->SetTheta( 90.0-3); pG4->SetPhi(30); gener->AddGenerator(pG4,"g4",1); IlcGenFixed *pG5=new IlcGenFixed(1); pG5->SetPart(kKMinus); pG5->SetMomentum(1.0); pG5->SetTheta( 70.0-3); pG5->SetPhi(30); gener->AddGenerator(pG5,"g5",1); IlcGenFixed *pG6=new IlcGenFixed(1); pG6->SetPart(kProtonBar); pG6->SetMomentum(2.5); pG6->SetTheta( 90.0-3); pG6->SetPhi(50); gener->AddGenerator(pG6,"g6",1); IlcGenFixed *pG7=new IlcGenFixed(1); pG7->SetPart(kPiMinus); pG7->SetMomentum(0.7); pG7->SetTheta( 70.0-3); pG7->SetPhi(50); gener->AddGenerator(pG7,"g7",1); // Electrons for TRD IlcGenFixed *pG8=new IlcGenFixed(1); pG8->SetPart(kElectron); pG8->SetMomentum(1.2); pG8->SetTheta( 95.0); pG8->SetPhi(190); gener->AddGenerator(pG8,"g8",1); IlcGenFixed *pG9=new IlcGenFixed(1); pG9->SetPart(kPositron); pG9->SetMomentum(1.2); pG9->SetTheta( 85.0); pG9->SetPhi(190); gener->AddGenerator(pG9,"g9",1); // PHOS IlcGenBox *gphos = new IlcGenBox(1); gphos->SetMomentumRange(10,11.); gphos->SetPhiRange(270.5,270.7); gphos->SetThetaRange(90.5,90.7); gphos->SetPart(kGamma); gener->AddGenerator(gphos,"GENBOX GAMMA for PHOS",1); // EMCAL IlcGenBox *gemcal = new IlcGenBox(1); gemcal->SetMomentumRange(10,11.); gemcal->SetPhiRange(90.5,199.5); gemcal->SetThetaRange(90.5,90.7); gemcal->SetPart(kGamma); gener->AddGenerator(gemcal,"GENBOX GAMMA for EMCAL",1); // MUON IlcGenBox * gmuon1 = new IlcGenBox(1); gmuon1->SetMomentumRange(20.,20.1); gmuon1->SetPhiRange(0., 360.); gmuon1->SetThetaRange(171.000,178.001); gmuon1->SetPart(kMuonMinus); // Muons gener->AddGenerator(gmuon1,"GENBOX MUON1",1); IlcGenBox * gmuon2 = new IlcGenBox(1); gmuon2->SetMomentumRange(20.,20.1); gmuon2->SetPhiRange(0., 360.); gmuon2->SetThetaRange(171.000,178.001); gmuon2->SetPart(kMuonPlus); // Muons gener->AddGenerator(gmuon2,"GENBOX MUON1",1); //TOF IlcGenFixed *gtof=new IlcGenFixed(1); gtof->SetPart(kProton); gtof->SetMomentum(2.5); gtof->SetTheta(95); gtof->SetPhi(340); gener->AddGenerator(gtof,"Proton for TOF",1); //FMD1 IlcGenFixed *gfmd1=new IlcGenFixed(1); gfmd1->SetPart(kGamma); gfmd1->SetMomentum(25); gfmd1->SetTheta(1.8); gfmd1->SetPhi(10); gener->AddGenerator(gfmd1,"Gamma for FMD1",1); //FMD2i IlcGenFixed *gfmd2i=new IlcGenFixed(1); gfmd2i->SetPart(kPiPlus); gfmd2i->SetMomentum(1.5); gfmd2i->SetTheta(7.3); gfmd2i->SetPhi(20); gener->AddGenerator(gfmd2i,"Pi+ for FMD2i",1); //FMD2o IlcGenFixed *gfmd2o=new IlcGenFixed(1); gfmd2o->SetPart(kPiMinus); gfmd2o->SetMomentum(1.5); gfmd2o->SetTheta(16.1); gfmd2o->SetPhi(30); gener->AddGenerator(gfmd2o,"Pi- for FMD2o",1); //FMD3o IlcGenFixed *gfmd3o=new IlcGenFixed(1); gfmd3o->SetPart(kPiPlus); gfmd3o->SetMomentum(1.5); gfmd3o->SetTheta(163.9); gfmd3o->SetPhi(40); gener->AddGenerator(gfmd3o,"Pi+ for FMD3o",1); //FMD3i IlcGenFixed *gfmd3i=new IlcGenFixed(1); gfmd3i->SetPart(kPiMinus); gfmd3i->SetMomentum(1.5); gfmd3i->SetTheta(170.5); gfmd3i->SetPhi(50); gener->AddGenerator(gfmd3i,"Pi- for FMD3i",1); //VZERO C IlcGenFixed *gv0c=new IlcGenFixed(1); gv0c->SetPart(kPiPlus); gv0c->SetMomentum(1.5); gv0c->SetTheta(170); gv0c->SetPhi(50); gener->AddGenerator(gv0c,"Pi+ for V0C",1); //VZERO A IlcGenFixed *gv0a=new IlcGenFixed(1); gv0a->SetPart(kPiMinus); gv0a->SetMomentum(1.5); gv0a->SetTheta(1.5); gv0a->SetPhi(70); gener->AddGenerator(gv0a,"Pi- for V0A",1); //PMD IlcGenFixed *gpmd=new IlcGenFixed(1); gpmd->SetPart(kGamma); gpmd->SetMomentum(2); gpmd->SetTheta(12.6); gpmd->SetPhi(60); gener->AddGenerator(gpmd,"Gamma for PMD",1); //ZDC IlcGenFixed *gzdc1=new IlcGenFixed(1); gzdc1->SetPart(kProton); gzdc1->SetMomentum(700); gzdc1->SetTheta(0.6); gzdc1->SetPhi(60); gener->AddGenerator(gzdc1,"Proton for ZDC",1); IlcGenFixed *gzdc2=new IlcGenFixed(1); gzdc2->SetPart(kNeutron); gzdc2->SetMomentum(500); gzdc2->SetTheta(0.6); gzdc2->SetPhi(60); gener->AddGenerator(gzdc2,"Neutron for ZDC",1); //T0 IlcGenFixed *gt0=new IlcGenFixed(1); gt0->SetPart(kPiPlus); gt0->SetMomentum(2); gt0->SetTheta(5.1); gt0->SetPhi(60); gener->AddGenerator(gt0,"Pi+ for T0",1); IlcGenFixed *gt01=new IlcGenFixed(1); gt01->SetPart(kPiMinus); gt01->SetMomentum(2); gt01->SetTheta(5.1); gt01->SetPhi(60); gener->AddGenerator(gt01,"Pi- for T0",1); //ACORDE IlcGenFixed *gacorde=new IlcGenFixed(1); gacorde->SetPart(kMuonPlus); gacorde->SetMomentum(20); gacorde->SetTheta(90.); gacorde->SetPhi(90); gener->AddGenerator(gacorde,"Muon+ for ACORDE",1); IlcGenFixed *gacorde1=new IlcGenFixed(1); gacorde1->SetPart(kMuonMinus); gacorde1->SetMomentum(20); gacorde1->SetTheta(90.); gacorde1->SetPhi(90); gener->AddGenerator(gacorde1,"Muon- for ACORDE",1); gener->Init(); return gener; cout << "Running genGunConfig.C finished ... " << endl; }
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("libEGPythia6"); // TGenerator interface gSystem->Load("libpythia6"); // Pythia gSystem->Load("libIlcPythia6"); // ILC specific implementations gSystem->Load("libgeant321"); gSystem->Load("libTTherminator"); #endif new TGeant3TGeo("C++ Interface to Geant3"); //======================================================================= // Create the output file IlcRunLoader* rl=0x0; cout<<"Config.C: Creating Run Loader ..."<<endl; rl = IlcRunLoader::Open("gilc.root", IlcConfig::GetDefaultEventFolderName(), "recreate"); if (rl == 0x0) { gIlc->Fatal("Config.C","Can not instatiate the Run Loader"); return; } rl->SetCompressionLevel(2); rl->SetNumberOfEventsPerFile(3); gIlc->SetRunLoader(rl); // Set the trigger configuration if ((embedrun == kBackground) || (embedrun == kMerged)) { IlcSimulation::Instance()->SetTriggerConfig("Pb-Pb"); cout<<"Trigger configuration is set to Pb-Pb"<<endl; } else { // Set the trigger configuration: proton-proton IlcSimulation::Instance()->SetTriggerConfig("p-p"); } // // Set External decayer TVirtualMCDecayer *decayer = new IlcDecayerPythia(); decayer->SetForceDecay(kAll); decayer->Init(); gMC->SetExternalDecayer(decayer); //======================================================================= // ************* STEERING parameters FOR ILC SIMULATION ************** // --- Specify event type to be tracked through the ILC 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 IlcDecayerPythia(); decayer->SetForceDecay(kAll); decayer->Init(); gMC->SetExternalDecayer(decayer); if ((embedrun == kMerged) || (embedrun == kSignal)) { //=========================// // Generator Configuration // //=========================// IlcGenerator* gener = 0x0; if (proc == kPythia6) { gener = MbPythia(); } else if (proc == kPhojet) { gener = MbPhojet(); } } else { IlcGenCocktail *gener = new IlcGenCocktail(); 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); IlcGenTherminator *genther = new IlcGenTherminator(); 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); gener->Init(); // FIELD // // Field // IlcMagF* field = 0x0; if (mag == kNoField) { comment = comment.Append(" | L3 field 0.0 T"); TGeoGlobalMagField::Instance()->SetField(new IlcMagF("Maps","Maps", 0., 0., IlcMagF::k5kGUniform)); } else if (mag == k5kG) { comment = comment.Append(" | L3 field 0.5 T"); TGeoGlobalMagField::Instance()->SetField(new IlcMagF("Maps","Maps", -1., -1., IlcMagF::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 = 1; 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 = 1; Int_t iPIPE = 1; Int_t iPMD = 1; Int_t iHMPID = 1; Int_t iSHIL = 1; Int_t iT0 = 1; Int_t iTOF = 1; Int_t iTPC = 1; Int_t iTRD = 1; Int_t iVZERO = 1; Int_t iZDC = 1; //=================== Ilc BODY parameters ============================= IlcBODY *BODY = new IlcBODY("BODY", "Ilc envelop"); if (iMAG) { //=================== MAG parameters ============================ // --- Start with Magnet since detector layouts may be depending --- // --- on the selected Magnet dimensions --- IlcMAG *MAG = new IlcMAG("MAG", "Magnet"); } if (iABSO) { //=================== ABSO parameters ============================ IlcABSO *ABSO = new IlcABSOv3("ABSO", "Muon Absorber"); } if (iDIPO) { //=================== DIPO parameters ============================ IlcDIPO *DIPO = new IlcDIPOv3("DIPO", "Dipole version 3"); } if (iHALL) { //=================== HALL parameters ============================ IlcHALL *HALL = new IlcHALLv3("HALL", "Ilc Hall"); } if (iFRAME) { //=================== FRAME parameters ============================ IlcFRAMEv2 *FRAME = new IlcFRAMEv2("FRAME", "Space Frame"); FRAME->SetHoles(1); } if (iSHIL) { //=================== SHIL parameters ============================ IlcSHIL *SHIL = new IlcSHILv3("SHIL", "Shielding Version 3"); } if (iPIPE) { //=================== PIPE parameters ============================ IlcPIPE *PIPE = new IlcPIPEv3("PIPE", "Beam Pipe"); } if (iITS) { //=================== ITS parameters ============================ IlcITS *ITS = new IlcITSv11("ITS","ITS v11"); } if (iTPC) { //============================ TPC parameters ===================== IlcTPC *TPC = new IlcTPCv2("TPC", "Default"); } if (iTOF) { //=================== TOF parameters ============================ IlcTOF *TOF = new IlcTOFv6T0("TOF", "normal TOF"); } if (iHMPID) { //=================== HMPID parameters =========================== IlcHMPID *HMPID = new IlcHMPIDv3("HMPID", "normal HMPID"); } if (iZDC) { //=================== ZDC parameters ============================ IlcZDC *ZDC = new IlcZDCv4("ZDC", "normal ZDC"); } if (iTRD) { //=================== TRD parameters ============================ IlcTRD *TRD = new IlcTRDv1("TRD", "TRD slow simulator"); } if (iFMD) { //=================== FMD parameters ============================ IlcFMD *FMD = new IlcFMDv1("FMD", "normal FMD"); } if (iMUON) { //=================== MUON parameters =========================== // New MUONv1 version (geometry defined via builders) IlcMUON *MUON = new IlcMUONv1("MUON", "default"); } if (iPHOS) { //=================== PHOS parameters =========================== IlcPHOS *PHOS = new IlcPHOSv1("PHOS", "IHEP"); } if (iPMD) { //=================== PMD parameters ============================ IlcPMD *PMD = new IlcPMDv1("PMD", "normal PMD"); } if (iT0) { //=================== T0 parameters ============================ IlcT0 *T0 = new IlcT0v1("T0", "T0 Detector"); } if (iEMCAL) { //=================== EMCAL parameters ============================ IlcEMCAL *EMCAL = new IlcEMCALv2("EMCAL", "EMCAL_COMPLETEV1"); } if (iACORDE) { //=================== ACORDE parameters ============================ IlcACORDE *ACORDE = new IlcACORDEv1("ACORDE", "normal ACORDE"); } if (iVZERO) { //=================== ACORDE parameters ============================ IlcVZERO *VZERO = new IlcVZEROv7("VZERO", "normal VZERO"); } }
void Config() { // ThetaRange is (0., 180.). It was (0.28,179.72) 7/12/00 09:00 // Theta range given through pseudorapidity limits 22/6/2001 // Set Random Number seed //gRandom->SetSeed(123456); // Set 0 to use the current time AliLog::Message(AliLog::kInfo, Form("Seed for random number generation = %d",gRandom->GetSeed()), "Config.C", "Config.C", "Config()","Config.C", __LINE__); // Get settings from environment variables ProcessEnvironmentVars(); // Load Pythia libraries LoadPythia(); // Libraries required by geant321 #if defined(__CINT__) gSystem->Load("libgeant321"); #endif new TGeant3TGeo("C++ Interface to Geant3"); // Output every 100 tracks ((TGeant3*)gMC)->SetSWIT(4,100); AliRunLoader* rl=0x0; AliLog::Message(AliLog::kInfo, "Creating Run Loader", "Config.C", "Config.C", "Config()"," Config.C", __LINE__); 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(2); gAlice->SetRunLoader(rl); // gAlice->SetGeometryFromFile("geometry.root"); // Uncomment if you want to load geometry from OCDB! >>>> /* if(!AliCDBManager::Instance()->IsDefaultStorageSet()){ cout << "#####################################################" << endl; cout << "# #" << endl; cout << "# WARNING: CDB DEFAULT STORAGE NOT SET !!! #" << endl; cout << "# SETTING IT TO local://$ALICE_ROOT !!! #" << endl; cout << "# #" << endl; cout << "#####################################################" << endl; AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT"); } if(AliCDBManager::Instance()->GetRun() < 0){ cout << "#####################################################" << endl; cout << "# #" << endl; cout << "# WARNING: RUN NUMBER NOT SET !!! #" << endl; cout << "# SETTING IT TO 0 !!! #" << endl; cout << "# #" << endl; cout << "#####################################################" << endl; AliCDBManager::Instance()->SetRun(0); } gAlice->SetGeometryFromCDB(); */ // Uncomment if you want to load geometry from OCDB! <<<< // Set the trigger configuration gAlice->SetTriggerDescriptor(TrigConfName[trig]); cout<<"Trigger configuration is set to "<<TrigConfName[trig]<<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); AliGenHijing *gener = new AliGenHijing(-1); // centre of mass energy gener->SetEnergyCMS(5500); // reference frame gener->SetReferenceFrame("CMS "); // projectile gener->SetProjectile("A ", 208, 82); gener->SetTarget ("A ", 208, 82); // impact parameter range gener->SetImpactParameterRange(bMin, bMax); // bMin = 0 - bMax = 3 // evaluate cross section before run gener->SetEvaluate(0); // tell hijing to keep the full parent child chain gener->KeepFullEvent(); // enable jet quenching gener->SetJetQuenching(quench); // 1 // enable shadowing gener->SetShadowing(shad); // 1 // neutral pion and heavy particle decays switched off gener->SetDecaysOff(1); // Don't track spectators gener->SetSpectators(0); // trigger // gener->SetTrigger(0); // kinematic selection gener->SetSelectAll(0); // momentum range gener->SetMomentumRange(0,999); // No restriction on phi, theta Float_t thmin = EtaToTheta(etaMax); // Theta min <---> eta max 2. Float_t thmax = EtaToTheta(etaMin); // Theta max <---> eta min -2. gener->SetPhiRange(phiMin, phiMax); // 0 - 360 //PH gener->SetThetaRange(thmin,thmax); // PRIMARY VERTEX gener->SetOrigin(0, 0, 0); //vertex position // gener->SetSigma(0, 0, 5.3); //Sigma in (X,Y,Z) (cm) on IP position // gener->SetCutVertexZ(3.); // Truncate at 3 sigma // gener->SetVertexSmear(kPerEvent); // Size of the interaction diamond // Longitudinal Float_t sigmaz = 7.55 / TMath::Sqrt(2.); // [cm] // Transverse Float_t betast = 10; // beta* [m] Float_t eps = 3.75e-6; // emittance [m] // Float_t gamma = 7000. / 0.938272; // relativistic gamma [1] Float_t gamma = 2750. / 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); // // Activate this line if you want the vertex smearing to happen // track by track // //gener->SetVertexSmear(perTrack); gener->Init(); // Field (L3 0.5 T) AliMagWrapCheb* field = 0x0; if (mag == kNoField) { comment = comment.Append(" | L3 field 0.0 T"); field = new AliMagWrapCheb("Maps","Maps", 2, 0., 10., AliMagWrapCheb::k2kG); } else if (mag == k5kG) { comment = comment.Append(" | L3 field 0.5 T"); //field = new AliMagWrapCheb("Maps","Maps", 2, 1., 10., AliMagWrapCheb::k5kG); AliMagWrapCheb * field = new AliMagWrapCheb("Maps","Maps", 2, 1., 10., AliMagWrapCheb::k5kG,kTRUE,"$(ALICE_ROOT)/data/maps/mfchebKGI_sym.root"); } rl->CdGAFile(); gAlice->SetField(field); Int_t iABSO = 1; Int_t iDIPO = 1; 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 = 1; Int_t iPIPE = 1; Int_t iPMD = 1; Int_t iHMPID = 1; Int_t iSHIL = 1; Int_t iT0 = 1; Int_t iTOF = 1; Int_t iTPC = 1; Int_t iTRD = 1; Int_t iZDC = 1; Int_t iEMCAL = 1; Int_t iACORDE = 1; Int_t iVZERO = 1; rl->CdGAFile(); //=================== 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"); } 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) AliMUON *MUON = new AliMUONv1("MUON", "default"); } //=================== PHOS parameters =========================== if (iPHOS) { 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) { //=================== VZERO parameters ============================ AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO"); } AliLog::Message(AliLog::kInfo, "End of Config", "Config.C", "Config.C", "Config()"," Config.C", __LINE__); }
void Config() { // ThetaRange is (0., 180.). It was (0.28,179.72) 7/12/00 09:00 // Theta range given through pseudorapidity limits 22/6/2001 // Set Random Number seed //gRandom->SetSeed(123456); // Set 0 to use the current time AliLog::Message(AliLog::kInfo, Form("Seed for random number generation = %d",gRandom->GetSeed()), "Config.C", "Config.C", "Config()","Config.C", __LINE__); new TGeant3TGeo("C++ Interface to Geant3"); AliRunLoader* rl=0x0; AliLog::Message(AliLog::kInfo, "Creating Run Loader", "Config.C", "Config.C", "Config()"," Config.C", __LINE__); 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(3); gAlice->SetRunLoader(rl); // gAlice->SetGeometryFromFile("geometry.root"); // Uncomment if you want to load geometry from OCDB! >>>> /* if(!AliCDBManager::Instance()->IsDefaultStorageSet()){ cout << "#####################################################" << endl; cout << "# #" << endl; cout << "# WARNING: CDB DEFAULT STORAGE NOT SET !!! #" << endl; cout << "# SETTING IT TO local://$ALICE_ROOT/OCDB !!! #" << endl; cout << "# #" << endl; cout << "#####################################################" << endl; AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); } if(AliCDBManager::Instance()->GetRun() < 0){ cout << "#####################################################" << endl; cout << "# #" << endl; cout << "# WARNING: RUN NUMBER NOT SET !!! #" << endl; cout << "# SETTING IT TO 0 !!! #" << endl; cout << "# #" << endl; cout << "#####################################################" << endl; AliCDBManager::Instance()->SetRun(0); } gAlice->SetGeometryFromCDB(); */ // Set the trigger configuration AliSimulation::Instance()->SetTriggerConfig(pprTrigConfName[strig]); cout<<"Trigger configuration is set to "<<pprTrigConfName[strig]<<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); int nParticles = 100; if (gSystem->Getenv("CONFIG_NPARTICLES")) { nParticles = atoi(gSystem->Getenv("CONFIG_NPARTICLES")); } AliGenCocktail *gener = new AliGenCocktail(); gener->SetPhiRange(0, 360); // Set pseudorapidity range from -8 to 8. Float_t thmin = EtaToTheta(8); // theta min. <---> eta max Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min gener->SetThetaRange(thmin,thmax); gener->SetOrigin(0, 0, 0); //vertex position gener->SetSigma(0, 0, 0); //Sigma in (X,Y,Z) (cm) on IP position AliGenUHKM *tuhkMgen = new AliGenUHKM(nParticles); tuhkMgen->SetAllParametersLHC(); gener->AddGenerator(tuhkMgen,"TUHKM",1); gener->Init(); // // Activate this line if you want the vertex smearing to happen // track by track // //gener->SetVertexSmear(perTrack); // Field (L3 0.4 T) TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kG)); Int_t iABSO = 1; Int_t iDIPO = 1; 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 = 1; Int_t iPIPE = 1; Int_t iPMD = 1; Int_t iHMPID = 1; Int_t iSHIL = 1; Int_t iT0 = 1; Int_t iTOF = 1; Int_t iTPC = 1; Int_t iTRD = 1; Int_t iZDC = 1; Int_t iEMCAL = 1; Int_t iACORDE = 1; Int_t iVZERO = 1; rl->CdGAFile(); //=================== 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 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 AliZDCv4("ZDC", "normal ZDC"); } if (iTRD) { //=================== TRD parameters ============================ AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator"); AliTRDgeometry *geoTRD = TRD->GetGeometry(); // Partial geometry: modules at 0,1,7,8,9,10,17 // starting at 3h in positive direction geoTRD->SetSMstatus(2,0); geoTRD->SetSMstatus(3,0); geoTRD->SetSMstatus(4,0); geoTRD->SetSMstatus(5,0); geoTRD->SetSMstatus(6,0); geoTRD->SetSMstatus(11,0); geoTRD->SetSMstatus(12,0); geoTRD->SetSMstatus(13,0); geoTRD->SetSMstatus(14,0); geoTRD->SetSMstatus(15,0); geoTRD->SetSMstatus(16,0); } if (iFMD) { //=================== FMD parameters ============================ AliFMD *FMD = new AliFMDv1("FMD", "normal FMD"); } if (iMUON) { //=================== MUON parameters =========================== // New MUONv1 version (geometry defined via builders) AliMUON *MUON = new AliMUONv1("MUON","default"); } //=================== PHOS parameters =========================== if (iPHOS) { AliPHOS *PHOS = new AliPHOSv1("PHOS", "Run1"); } 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_COMPLETEV1"); } if (iACORDE) { //=================== ACORDE parameters ============================ AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE"); } if (iVZERO) { //=================== VZERO parameters ============================ AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO"); } AliLog::Message(AliLog::kInfo, "End of Config", "Config.C", "Config.C", "Config()"," Config.C", __LINE__); }