void Config() { // 7-DEC-2000 09:00 // Switch on Transition Radiation simulation. 6/12/00 18:00 // iZDC=1 7/12/00 09:00 // 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(12345); // libraries required by geant321 gSystem->Load("libgeant321"); new TGeant3("C++ Interface to Geant3"); if (!gSystem->Getenv("CONFIG_FILE")) { TFile *rootfile = new TFile("galice.root", "recreate"); rootfile->SetCompressionLevel(2); } TGeant3 *geant3 = (TGeant3 *) gMC; // // Set External decayer TVirtualMCDecayer *decayer = new AliDecayerPythia(); decayer->SetForceDecay(kAll); decayer->Init(); gMC->SetExternalDecayer(decayer); // // //======================================================================= // ******* GEANT STEERING parameters FOR ALICE SIMULATION ******* geant3->SetTRIG(1); //Number of events to be processed geant3->SetSWIT(4, 1); geant3->SetDEBU(0, 0, 1); //geant3->SetSWIT(2,2); geant3->SetDCAY(1); geant3->SetPAIR(1); geant3->SetCOMP(1); geant3->SetPHOT(1); geant3->SetPFIS(0); geant3->SetDRAY(0); geant3->SetANNI(1); geant3->SetBREM(1); geant3->SetMUNU(1); geant3->SetCKOV(1); geant3->SetHADR(1); //Select pure GEANH (HADR 1) or GEANH/NUCRIN (HADR 3) geant3->SetLOSS(2); geant3->SetMULS(1); geant3->SetRAYL(1); geant3->SetAUTO(1); //Select automatic STMIN etc... calc. (AUTO 1) or manual (AUTO 0) geant3->SetABAN(0); //Restore 3.16 behaviour for abandoned tracks geant3->SetOPTI(2); //Select optimisation level for GEANT geometry searches (0,1,2) geant3->SetERAN(5.e-7); Float_t cut = 1.e-3; // 1MeV cut by default Float_t tofmax = 1.e10; // GAM ELEC NHAD CHAD MUON EBREM MUHAB EDEL MUDEL MUPA TOFMAX geant3->SetCUTS(cut, cut, cut, cut, cut, cut, cut, cut, cut, cut, tofmax); // //======================================================================= // ************* 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 Int_t process=1; GenTPHIC(process); // // 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)); rootfile->cd(); Int_t iABSO = 0; Int_t iDIPO = 0; Int_t iFMD = 0; Int_t iFRAME = 0; Int_t iHALL = 0; Int_t iITS = 0; Int_t iMAG = 0; Int_t iMUON = 0; Int_t iPHOS = 0; Int_t iPIPE = 0; Int_t iPMD = 0; Int_t iHMPID = 0; Int_t iSHIL = 0; Int_t iT0 = 0; Int_t iTOF = 0; Int_t iTPC = 0; Int_t iTRD = 0; Int_t iZDC = 0; Int_t iEMCAL = 0; Int_t iACORDE = 0; Int_t iVZERO = 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 AliABSOv0("ABSO", "Muon Absorber"); } if (iDIPO) { //=================== DIPO parameters ============================ AliDIPO *DIPO = new AliDIPOv2("DIPO", "Dipole version 2"); } if (iHALL) { //=================== HALL parameters ============================ AliHALL *HALL = new AliHALL("HALL", "Alice Hall"); } if (iFRAME) { //=================== FRAME parameters ============================ AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame"); if (geo == kHoles) { FRAME->SetHoles(1); } else { FRAME->SetHoles(0); } } if (iSHIL) { //=================== SHIL parameters ============================ AliSHIL *SHIL = new AliSHILv2("SHIL", "Shielding Version 2"); } if (iPIPE) { //=================== PIPE parameters ============================ AliPIPE *PIPE = new AliPIPEv0("PIPE", "Beam Pipe"); } if(iITS) { //=================== ITS parameters ============================ // // As the innermost detector in ALICE, the Inner Tracking System "impacts" on // almost all other detectors. This involves the fact that the ITS geometry // still has several options to be followed in parallel in order to determine // the best set-up which minimizes the induced background. All the geometries // available to date are described in the following. Read carefully the comments // and use the default version (the only one uncommented) unless you are making // comparisons and you know what you are doing. In this case just uncomment the // ITS geometry you want to use and run Aliroot. // // Detailed geometries: // // //AliITS *ITS = new AliITSv5symm("ITS","Updated ITS TDR detailed version with symmetric services"); // //AliITS *ITS = new AliITSv5asymm("ITS","Updates ITS TDR detailed version with asymmetric services"); // AliITSvPPRasymm *ITS = new AliITSvPPRasymm("ITS","New ITS PPR detailed version with asymmetric services"); ITS->SetMinorVersion(2); // don't touch this parameter if you're not an ITS developer ITS->SetReadDet(kFALSE); // don't touch this parameter if you're not an ITS developer // ITS->SetWriteDet("$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det"); // don't touch this parameter if you're not an ITS developer ITS->SetThicknessDet1(200.); // detector thickness on layer 1 must be in the range [100,300] ITS->SetThicknessDet2(200.); // detector thickness on layer 2 must be in the range [100,300] ITS->SetThicknessChip1(200.); // chip thickness on layer 1 must be in the range [150,300] ITS->SetThicknessChip2(200.); // chip thickness on layer 2 must be in the range [150,300] ITS->SetRails(0); // 1 --> rails in ; 0 --> rails out ITS->SetCoolingFluid(1); // 1 --> water ; 0 --> freon // //AliITSvPPRsymm *ITS = new AliITSvPPRsymm("ITS","New ITS PPR detailed version with symmetric services"); //ITS->SetMinorVersion(2); // don't touch this parameter if you're not an ITS developer //ITS->SetReadDet(kFALSE); // don't touch this parameter if you're not an ITS developer //ITS->SetWriteDet("$ALICE_ROOT/ITS/ITSgeometry_vPPRsymm2.det"); // don't touch this parameter if you're not an ITS developer //ITS->SetThicknessDet1(200.); // detector thickness on layer 1 must be in the range [100,300] //ITS->SetThicknessDet2(200.); // detector thickness on layer 2 must be in the range [100,300] //ITS->SetThicknessChip1(200.); // chip thickness on layer 1 must be in the range [150,300] //ITS->SetThicknessChip2(200.); // chip thickness on layer 2 must be in the range [150,300] //ITS->SetRails(0); // 1 --> rails in ; 0 --> rails out //ITS->SetCoolingFluid(1); // 1 --> water ; 0 --> freon // // // Coarse geometries (warning: no hits are produced with these coarse geometries and they unuseful // for reconstruction !): // // //AliITSvPPRcoarseasymm *ITS = new AliITSvPPRcoarseasymm("ITS","New ITS PPR coarse version with asymmetric services"); //ITS->SetRails(0); // 1 --> rails in ; 0 --> rails out //ITS->SetSupportMaterial(0); // 0 --> Copper ; 1 --> Aluminum ; 2 --> Carbon // //AliITS *ITS = new AliITSvPPRcoarsesymm("ITS","New ITS PPR coarse version with symmetric services"); //ITS->SetRails(0); // 1 --> rails in ; 0 --> rails out //ITS->SetSupportMaterial(0); // 0 --> Copper ; 1 --> Aluminum ; 2 --> Carbon // // // // Geant3 <-> EUCLID conversion // ============================ // // SetEUCLID is a flag to output (=1) or not to output (=0) both geometry and // media to two ASCII files (called by default ITSgeometry.euc and // ITSgeometry.tme) in a format understandable to the CAD system EUCLID. // The default (=0) means that you dont want to use this facility. // ITS->SetEUCLID(0); } if (iTPC) { //============================ TPC parameters ================================ // --- This allows the user to specify sectors for the SLOW (TPC geometry 2) // --- Simulator. SecAL (SecAU) <0 means that ALL lower (upper) // --- sectors are specified, any value other than that requires at least one // --- sector (lower or upper)to be specified! // --- Reminder: sectors 1-24 are lower sectors (1-12 -> z>0, 13-24 -> z<0) // --- sectors 25-72 are the upper ones (25-48 -> z>0, 49-72 -> z<0) // --- SecLows - number of lower sectors specified (up to 6) // --- SecUps - number of upper sectors specified (up to 12) // --- Sens - sensitive strips for the Slow Simulator !!! // --- This does NOT work if all S or L-sectors are specified, i.e. // --- if SecAL or SecAU < 0 // // //----------------------------------------------------------------------------- // gROOT->LoadMacro("SetTPCParam.C"); // AliTPCParam *param = SetTPCParam(); AliTPC *TPC = new AliTPCv2("TPC", "Default"); // All sectors included TPC->SetSecAL(-1); TPC->SetSecAU(-1); } if (iTOF) { if (geo == kHoles) { //=================== TOF parameters ============================ AliTOF *TOF = new AliTOFv2FHoles("TOF", "TOF with Holes"); } else { AliTOF *TOF = new AliTOFv4T0("TOF", "normal TOF"); } } if (iHMPID) { //=================== HMPID parameters =========================== AliHMPID *HMPID = new AliHMPIDv3("HMPID", "normal HMPID"); } if (iZDC) { //=================== ZDC parameters ============================ AliZDC *ZDC = new AliZDCv2("ZDC", "normal ZDC"); } if (iTRD) { //=================== TRD parameters ============================ AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator"); // Select the gas mixture (0: 97% Xe + 3% isobutane, 1: 90% Xe + 10% CO2) TRD->SetGasMix(1); if (geo == kHoles) { // With hole in front of PHOS TRD->SetPHOShole(); // With hole in front of HMPID TRD->SetHMPIDhole(); } // Switch on TR AliTRDsim *TRDsim = TRD->CreateTR(); } if (iFMD) { //=================== FMD parameters ============================ AliFMD *FMD = new AliFMDv1("FMD", "normal FMD"); FMD->SetRingsSi1(256); FMD->SetRingsSi2(128); FMD->SetSectorsSi1(20); FMD->SetSectorsSi2(40); } if (iMUON) { //=================== MUON parameters =========================== 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) { //=================== ACORDE parameters ============================ AliVZERO *VZERO = new AliVZEROv2("VZERO", "normal VZERO"); } }
void commonConfig(ConfigVersion_t configVersion = kConfigV0) { cout << "Running commonConfig.C ... " << endl; // Set Random Number seed gRandom->SetSeed(123456); // Set 0 to use the currecnt time AliLog::Message(AliLog::kInfo, Form("Seed for random number generation = %d",gRandom->GetSeed()), "Config.C", "Config.C", "Config()","Config.C", __LINE__); //======================================================================= // Load Pythia libraries //======================================================================= LoadPythia(); //======================================================================= // ALICE steering object (AliRunLoader) //======================================================================= AliRunLoader* rl = AliRunLoader::Open("galice.root", AliConfig::GetDefaultEventFolderName(), "recreate"); if ( ! rl ) { gAlice->Fatal("Config.C","Can not instatiate the Run Loader"); return; } rl->SetCompressionLevel(2); rl->SetNumberOfEventsPerFile(3); gAlice->SetRunLoader(rl); //====================================================================== // Trigger configuration //======================================================================= AliSimulation::Instance()->SetTriggerConfig(pprTrigConfName[strig]); cout << "Trigger configuration is set to " << pprTrigConfName[strig] << endl; // ============================= // Magnetic field // ============================= // Field (L3 0.5 T) AliMagF* field = new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kG); TGeoGlobalMagField::Instance()->SetField(field); printf("\n \n Comment: %s \n \n", comment.Data()); // ============================= // Modules // ============================= rl->CdGAFile(); 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 AliZDCv3("ZDC", "normal ZDC"); } if (iTRD) { //=================== TRD parameters ============================ AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator"); if ( configVersion == kConfigV1 ) { AliTRDgeometry *geoTRD = TRD->GetGeometry(); // Partial geometry: modules at 0,1,7,8,9,16,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) { if ( configVersion == kConfigV0 ) AliPHOS *PHOS = new AliPHOSv1("PHOS", "Run1"); else if ( configVersion == kConfigV1 ) AliPHOS *PHOS = new AliPHOSv1("PHOS", "noCPV_Modules123"); } 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 ============================ if ( configVersion == kConfigV0 ) AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETEV1"); else if ( configVersion == kConfigV1 ) AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_FIRSTYEARV1"); } 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__); cout << "Running commonConfig.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 if (proc == kPythia6 || proc == kPhojet) { gSystem->Load("libpythia6"); // Pythia 6.2 } else { gSystem->Load("libpythia6.4.21"); // Pythia 6.4 } gSystem->Load("libAliPythia6"); // ALICE specific implementations gSystem->Load("libgeant321"); #endif new TGeant3TGeo("C++ Interface to Geant3"); //======================================================================= // Create the output file AliRunLoader* rl=0x0; cout<<"Config.C: Creating Run Loader ..."<<endl; 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(1000); gAlice->SetRunLoader(rl); // gAlice->SetGeometryFromFile("geometry.root"); // gAlice->SetGeometryFromCDB(); // Set the trigger configuration: proton-proton gAlice->SetTriggerDescriptor("p-p"); // //======================================================================= // ************* 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=0x0; if (TMath::Abs(JpsiPol) > 0) { if(HelicityFrame) decayer = new AliDecayerPolarized(JpsiPol,AliDecayerPolarized::kHelicity,AliDecayerPolarized::kElectron); else decayer = new AliDecayerPolarized(JpsiPol,AliDecayerPolarized::kColSop,AliDecayerPolarized::kElectron); } else decayer = new AliDecayerPythia(); // decayer->SetForceDecay(kHadronicD); decayer->SetForceDecay(kAll); decayer->Init(); gMC->SetExternalDecayer(decayer); //=========================// // Generator Configuration // //=========================// AliGenerator* gener = 0x0; if (proc == kPythia6) { gener = MbPythia(); } else if (proc == kPythia6D6T) { gener = MbPythiaTuneD6T(); } else if (proc == kPythia6ATLAS) { gener = MbPythiaTuneATLAS(); } else if (proc == kPythiaPerugia0) { gener = MbPythiaTunePerugia0(); } else if (proc == kPythia6ATLAS_Flat) { gener = MbPythiaTuneATLAS_Flat(); } else if (proc == kPhojet) { gener = MbPhojet(); } else if (proc == kPythiaPerugia0chadr) { gener = MbPythiaTunePerugia0chadr(); } else if (proc == kPythiaPerugia0bchadr) { gener = MbPythiaTunePerugia0bchadr(); } else if (proc == kPythiaPerugia0cele) { gener = MbPythiaTunePerugia0cele(); } else if (proc == kPythiaPerugia0bele) { gener = MbPythiaTunePerugia0bele(); } else if (proc == kPythiaPerugia0Jpsi) { gener = MbPythiaTunePerugia0Jpsi(); } // // // Size of the interaction diamond // Longitudinal Float_t sigmaz = 5.4 / TMath::Sqrt(2.); // [cm] if (energy == 900) //sigmaz = 10.5 / TMath::Sqrt(2.); // [cm] //sigmaz = 3.7; if (energy == 7000) sigmaz = 6.3 / 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->SetVertexSmear(kPerEvent); gener->Init(); printf("\n \n Comment: %s \n \n", comment.Data()); 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; //=================== 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"); AliTRDgeometry *geoTRD = TRD->GetGeometry(); // Partial geometry: modules at 0,1,7,8,9,16,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"); } if (iPHOS) { //=================== PHOS parameters =========================== AliPHOS *PHOS = new AliPHOSv1("PHOS", "noCPV_Modules123"); } 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_FIRSTYEAR"); } if (iACORDE) { //=================== ACORDE parameters ============================ AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE"); } if (iVZERO) { //=================== ACORDE parameters ============================ AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO"); } }
void Config() { // Get settings from environment variables ProcessEnvironmentVars(); // Random Number seed if (gSystem->Getenv("CONFIG_SEED")) { seed = atoi(gSystem->Getenv("CONFIG_SEED")); } else if(gSystem->Getenv("DC_EVENT") && gSystem->Getenv("DC_RUN")){ seed = runNumber * 100000 + eventNumber; } gRandom->SetSeed(seed); cout<<"Seed for random number generation= "<<gRandom->GetSeed()<<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("libAliPythia6"); // ALICE specific implementations gSystem->Load("libgeant321"); #endif new TGeant3TGeo("C++ Interface to Geant3"); // Output every 100 tracks ((TGeant3*)gMC)->SetSWIT(4,100); //======================================================================= // Run loader AliRunLoader* rl=0x0; AliLog::Message(AliLog::kInfo, "Creating Run Loader", "", "", "Config()"," ConfigPPR.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(100); gAlice->SetRunLoader(rl); // Set the trigger configuration AliSimulation::Instance()->SetTriggerConfig(TrigConfName[trig]); cout<<"Trigger configuration is set to "<<TrigConfName[trig]<<endl; //======================// // Set External decayer // //======================// TVirtualMCDecayer* decayer = new AliDecayerPythia(); // DECAYS // switch(decHvFl) { case kNature: decayer->SetForceDecay(kAll); break; case kHadr: decayer->SetForceDecay(kHadronicD); break; case kSemiEl: decayer->SetForceDecay(kSemiElectronic); break; case kSemiMu: decayer->SetForceDecay(kSemiMuonic); break; } decayer->Init(); gMC->SetExternalDecayer(decayer); if(proc == kPyJetJetPHOSv2) // in this case we decay the pi0 decayer->SetForceDecay(kNeutralPion); // //======================================================================= // ************* 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); //=========================// // Generator Configuration // //=========================// AliGenPythia* gener = 0x0; if (proc <= kBeautypp14000wmi) { AliGenPythia *pythia = PythiaHVQ(proc); // FeedDown option pythia->SetFeedDownHigherFamily(kFALSE); // Stack filling option if(!stars) pythia->SetStackFillOpt(AliGenPythia::kParentSelection); // Set Count mode if(nEvts>0) pythia->SetCountMode(AliGenPythia::kCountParents); // // DECAYS // switch(decHvFl) { case kNature: pythia->SetForceDecay(kAll); break; case kHadr: pythia->SetForceDecay(kHadronicD); break; case kSemiEl: pythia->SetForceDecay(kSemiElectronic); break; case kSemiMu: pythia->SetForceDecay(kSemiMuonic); break; } // // GEOM & KINE CUTS // pythia->SetMomentumRange(0,99999999); pythia->SetPhiRange(0., 360.); pythia->SetThetaRange(0,180); switch(ycut) { case kFull: pythia->SetYRange(-999,999); break; case kBarrel: pythia->SetYRange(-2,2); break; case kMuonArm: pythia->SetYRange(1,6); break; } gener = pythia; } else if (proc == kPyMbNoHvq) { gener = MbCocktail(); } else if (proc == kPyOmegaMinus) { gener = PyMbTriggered(3334); } else if (proc == kPyOmegaPlus) { gener = PyMbTriggered(-3334); } else if (proc <= kPyGammaBremsEMCAL) { AliGenPythia *pythia = PythiaHard(proc); // FeedDown option pythia->SetFeedDownHigherFamily(kFALSE); // Set Count mode if(nEvts>0) pythia->SetCountMode(AliGenPythia::kCountParents); // // GEOM & KINE CUTS // pythia->SetMomentumRange(0,99999999); // pythia->SetJetEtaRange(-1.5, 1.5);// Final state kinematic cuts // pythia->SetJetPhiRange(0., 360.); // pythia->SetThetaRange(45,135); if(proc == kPyJetJetPHOSv2) pythia->SetForceDecay(kNeutralPion); else pythia->SetForceDecay(kAll); pythia->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0); pythia->SetPtKick(5); // set the intrinsic kt to 5 GeV/c gener = pythia; } // PRIMARY VERTEX gener->SetOrigin(0., 0., 0.); // vertex position // 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 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(); //Quenching gener->SetQuench(iquenching); if(iquenching == 1){ Float_t k = 6e5*(qhat/1.7) ; //qhat=1.7, k = 6e5, default value AliPythia::Instance()->InitQuenching(0.,0.1,k,0,0.95,6); } // FIELD if (mag == AliMagF::k2kG) { comment = comment.Append(" | L3 field 0.2 T"); } else if (mag == AliMagF::k5kG) { comment = comment.Append(" | L3 field 0.5 T"); } printf("\n \n Comment: %s \n \n", comment.Data()); // to use constant field in the barrel use: // AliMagF* field = new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kGUniform); AliMagF* field = new AliMagF("Maps","Maps", -1., -1., mag); TGeoGlobalMagField::Instance()->SetField(field); rl->CdGAFile(); Int_t iABSO = 1; Int_t iACORDE= 1; 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; //=================== 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"); if (geo == kHoles) FRAME->SetHoles(1); else FRAME->SetHoles(0); } 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(); } 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 scTh=0.176 pbTh=0.144"); } if (iACORDE) { //=================== CRT parameters ============================ AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE"); } if (iVZERO) { //=================== CRT parameters ============================ AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO"); } }
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"); } }
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("libAliPythia6"); // ALICE specific implementations gSystem->Load("libgeant321"); #endif new TGeant3TGeo("C++ Interface to Geant3"); //======================================================================= // Create the output file AliRunLoader* rl=0x0; cout<<"Config.C: Creating Run Loader ..."<<endl; 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(1000); gAlice->SetRunLoader(rl); // gAlice->SetGeometryFromFile("geometry.root"); // gAlice->SetGeometryFromCDB(); // Set the trigger configuration: proton-proton gAlice->SetTriggerDescriptor("p-p"); // //======================================================================= // ************* 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); //=========================// // Generator Configuration // //=========================// AliGenerator* gener = 0x0; if (proc == kPythia6) { gener = MbPythia(); } else if (proc == kPhojet) { gener = MbPhojet(); } // PRIMARY VERTEX // gener->SetOrigin(0., 0., 0.); // vertex position // // // Size of the interaction diamond // Longitudinal 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 // 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); } printf("\n \n Comment: %s \n \n", comment.Data()); rl->CdGAFile(); gAlice->SetField(field); 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 = 1; Int_t iPIPE = 1; Int_t iPMD = 0; 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; //=================== 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"); AliTRDgeometry *geoTRD = TRD->GetGeometry(); // Partial geometry: modules at 0,8,9,17 // starting at 3h in positive direction geoTRD->SetSMstatus(1,0); geoTRD->SetSMstatus(2,0); geoTRD->SetSMstatus(3,0); geoTRD->SetSMstatus(4,0); geoTRD->SetSMstatus(5,0); geoTRD->SetSMstatus(6,0); geoTRD->SetSMstatus(7,0); geoTRD->SetSMstatus(10,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"); } if (iPHOS) { //=================== PHOS parameters =========================== AliPHOS *PHOS = new AliPHOSv1("PHOS", "IHEP"); //Set simulation parameters different from the default ones. AliPHOSSimParam* simEmc = AliPHOSSimParam::GetInstance() ; // APD noise of warm (+20C) PHOS: // a2 = a1*(Y1/Y2)*(M1/M2), where a1 = 0.012 is APD noise at -25C, // Y1 = 4.3 photo-electrons/MeV, Y2 = 1.7 p.e/MeV - light yields at -25C and +20C, // M1 = 50, M2 = 50 - APD gain factors chosen for t1 = -25C and t2 = +20C, // Y = MeanLightYield*APDEfficiency. Float_t apdNoise = 0.012*2.5; simEmc->SetAPDNoise(apdNoise); //Raw Light Yield at +20C simEmc->SetMeanLightYield(18800); //ADC channel width at +18C. simEmc->SetADCchannelW(0.0125); } 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", "SHISH_77_TRD1_2X2_FINAL_110DEG"); } if (iACORDE) { //=================== ACORDE parameters ============================ AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE"); } if (iVZERO) { //=================== ACORDE parameters ============================ AliVZERO *VZERO = new AliVZEROv7("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 DetectorInit(Int_t tag) { /* * DetectorInit * initialise the detectors to the default * configuration automatically according to year/period * */ Int_t year = atoi(gSystem->Getenv("CONFIG_YEAR")); //=================== 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 ============================ if (year < 2015) { AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame"); FRAME->SetHoles(1); } else { AliFRAMEv3 *FRAME = new AliFRAMEv3("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( tag == kDetectorPhosOnly) ITS->DisableStepManager(); } if (iTPC) { //============================ TPC parameters ===================== AliTPC *TPC = new AliTPCv2("TPC", "Default"); if (isGeant4) TPC->SetPrimaryIonisation(1); if( tag == kDetectorPhosOnly) TPC->DisableStepManager(); } if (iTOF) { //=================== TOF parameters ============================ AliTOF *TOF = new AliTOFv6T0("TOF", "normal TOF"); if( tag == kDetectorPhosOnly) TOF->DisableStepManager(); } if (iHMPID) { //=================== HMPID parameters =========================== AliHMPID *HMPID = new AliHMPIDv3("HMPID", "normal HMPID"); if( tag == kDetectorPhosOnly) HMPID->DisableStepManager(); } if (iZDC) { //=================== ZDC parameters ============================ if (year == 2010) { AliZDC *ZDC = new AliZDCv3("ZDC", "normal ZDC"); ZDC->SetSpectatorsTrack(); ZDC->SetLumiLength(0.); } else if (year < 2015) { AliZDC *ZDC = new AliZDCv3("ZDC", "normal ZDC"); //Collimators aperture ZDC->SetVCollSideCAperture(0.85); ZDC->SetVCollSideCCentre(0.); ZDC->SetVCollSideAAperture(0.75); ZDC->SetVCollSideACentre(0.); //Detector position ZDC->SetYZNC(1.6); ZDC->SetYZNA(1.6); ZDC->SetYZPC(1.6); ZDC->SetYZPA(1.6); } else { AliZDC *ZDC = new AliZDCv4("ZDC", "normal ZDC"); ZDC->SetLumiLength(0.); ZDC->SetVCollSideCAperture(2.8); ZDC->SetVCollSideCApertureNeg(2.8); } if( tag == kDetectorPhosOnly) ZDC->DisableStepManager(); } if (iTRD) { //=================== TRD parameters ============================ if (isGeant4) { AliTRDtestG4 *TRD = new AliTRDtestG4("TRD", "TRD slow simulator"); TRD->SetScaleG4(1.11); } else AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator"); AliTRDgeometry *geoTRD = TRD->GetGeometry(); // Partial geometry: modules at 0,1,7,8,9,16,17 // starting at 3h in positive direction if ((year == 2010) || (year == 2009)) { 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); } else if (year == 2011) { geoTRD->SetSMstatus(2,0); geoTRD->SetSMstatus(3,0); geoTRD->SetSMstatus(4,0); geoTRD->SetSMstatus(5,0); geoTRD->SetSMstatus(6,0); geoTRD->SetSMstatus(12,0); geoTRD->SetSMstatus(13,0); geoTRD->SetSMstatus(14,0); } else if ((year == 2012) || (year ==2013)) { geoTRD->SetSMstatus(4,0); geoTRD->SetSMstatus(5,0); geoTRD->SetSMstatus(12,0); geoTRD->SetSMstatus(13,0); geoTRD->SetSMstatus(14,0); } if( tag == kDetectorPhosOnly) TRD->DisableStepManager(); } if (iFMD) { //=================== FMD parameters ============================ AliFMD *FMD = new AliFMDv1("FMD", "normal FMD"); if( tag == kDetectorPhosOnly) FMD->DisableStepManager(); } if (iMUON) { //=================== MUON parameters =========================== // New MUONv1 version (geometry defined via builders) AliMUON *MUON = new AliMUONv1("MUON", "default"); // activate trigger efficiency by cells MUON->SetTriggerEffCells(1); // backward compatibility MUON->SetTriggerResponseV1(2); // backward compatibility if( tag == kDetectorPhosOnly) MUON->DisableStepManager(); } if (iPHOS) { //=================== PHOS parameters =========================== if (year < 2015) { AliPHOS *PHOS = new AliPHOSv1("PHOS", "noCPV_Modules123"); } else { AliPHOS *PHOS = new AliPHOSv1("PHOS", "Run2"); } } if (iPMD) { //=================== PMD parameters ============================ AliPMD *PMD = new AliPMDv1("PMD", "normal PMD"); if( tag == kDetectorPhosOnly) PMD->DisableStepManager(); } if (iT0) { //=================== T0 parameters ============================ AliT0 *T0 = new AliT0v1("T0", "T0 Detector"); if( tag == kDetectorPhosOnly) T0->DisableStepManager(); } if (iEMCAL) { //=================== EMCAL parameters ============================ AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETE12SMV1_DCAL_8SM"); // by default Run2 configuration name but the proper geometry name is taken // automatically depending on the anchor run // 2010 - 4 SM, 2011 - 10 SM, 2012 - 12 SM, >2014 - 20 SM if( tag == kDetectorPhosOnly) EMCAL->DisableStepManager(); } if (iACORDE) { //=================== ACORDE parameters ============================ AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE"); if( tag == kDetectorPhosOnly) ACORDE->DisableStepManager(); } if (iVZERO) { //=================== ACORDE parameters ============================ AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO"); if( tag == kDetectorPhosOnly) VZERO->DisableStepManager(); } if (iAD){ //=================== AD parameters ============================ AliAD *AD = new AliADv1("AD", "normal AD"); if( tag == kDetectorPhosOnly) AD->DisableStepManager(); } }
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 if (proc == kPythia6 || proc == kPhojet) { gSystem->Load("libpythia6"); // Pythia 6.2 } else { gSystem->Load("libpythia6.4.21"); // Pythia 6.4 } gSystem->Load("libAliPythia6"); // ALICE specific implementations // gSystem->Load("libgeant321"); #endif // new TGeant3TGeo("C++ Interface to Geant3"); //======================================================================= // Create the output file AliRunLoader* rl=0x0; cout<<"Config.C: Creating Run Loader ..."<<endl; 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(1000); gAlice->SetRunLoader(rl); // gAlice->SetGeometryFromFile("geometry.root"); // gAlice->SetGeometryFromCDB(); // Set the trigger configuration: proton-proton AliSimulation::Instance()->SetTriggerConfig(pprTrigConfName[strig]); cout <<"Trigger configuration is set to "<<pprTrigConfName[strig]<<endl; 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; //=================== 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"); TPC->SetPrimaryIonisation();// not used with Geant3 } 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"); //Collimators aperture ZDC->SetVCollSideCAperture(0.85); ZDC->SetVCollSideCCentre(0.); ZDC->SetVCollSideAAperture(0.75); ZDC->SetVCollSideACentre(0.); //Detector position ZDC->SetYZNC(1.6); ZDC->SetYZNA(1.6); ZDC->SetYZPC(1.6); ZDC->SetYZPA(1.6); } 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,16,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"); // activate trigger efficiency by cells MUON->SetTriggerEffCells(1); } if (iPHOS) { //=================== PHOS parameters =========================== AliPHOS *PHOS = new AliPHOSv1("PHOS", "noCPV_Modules123"); } 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_FIRSTYEARV1"); } if (iACORDE) { //=================== ACORDE parameters ============================ AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE"); } if (iVZERO) { //=================== ACORDE parameters ============================ AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO"); } // Load Geant4 + Geant4 VMC libraries // std::string g4libmacro("$G4VMCINSTALL/share/examples/macro/g4libs.C"); if (gClassTable->GetID("TGeant4") == -1) { // Load Geant4 libraries if (!gInterpreter->IsLoaded(g4libmacro.c_str())) { gROOT->LoadMacro(g4libmacro.c_str()); gInterpreter->ProcessLine("g4libs()"); } } // Create Geant4 VMC // TGeant4 *geant4 = 0; if ( ! gMC ) { TG4RunConfiguration* runConfiguration=0x0; for (Int_t iList = 0; iList < kListMax; iList++) { if(iList<kListMax/2){ if(physicslist == iList){ runConfiguration = new TG4RunConfiguration("geomRoot", physicsListName[iList], "specialCuts+stackPopper+stepLimiter", true); } } else if(iList>=kListMax/2){//add "optical" PL to HadronPhysicsList if(physicslist == iList){ runConfiguration = new TG4RunConfiguration("geomRoot", Form("%s+optical",physicsListName[iList-kListMax/2]), "specialCuts+stackPopper+stepLimiter", true); } } } geant4 = new TGeant4("TGeant4", "The Geant4 Monte Carlo", runConfiguration); cout << "Geant4 has been created." << endl; } else { cout << "Monte Carlo has been already created." << endl; } // Customization of Geant4 VMC // geant4->ProcessGeantCommand("/mcVerbose/all 1"); geant4->ProcessGeantCommand("/mcVerbose/geometryManager 1"); geant4->ProcessGeantCommand("/mcVerbose/opGeometryManager 1"); geant4->ProcessGeantCommand("/mcTracking/loopVerbose 1"); geant4->ProcessGeantCommand("/mcPhysics/rangeCuts 0.01 mm"); // for Geant4 <= 9.4.p03 //geant4->ProcessGeantCommand("/mcPhysics/selectOpProcess Scintillation"); //geant4->ProcessGeantCommand("/mcPhysics/setOpProcessActivation false"); // for Geant4 >= 9.5 geant4->ProcessGeantCommand("/optics_engine/selectOpProcess Scintillation"); geant4->ProcessGeantCommand("/optics_engine/setOpProcessUse false"); geant4->ProcessGeantCommand("/optics_engine/selectOpProcess OpWLS"); geant4->ProcessGeantCommand("/optics_engine/setOpProcessUse false"); geant4->ProcessGeantCommand("/optics_engine/selectOpProcess OpMieHG"); geant4->ProcessGeantCommand("/optics_engine/setOpProcessUse false"); geant4->ProcessGeantCommand("/mcVerbose/composedPhysicsList 2"); geant4->ProcessGeantCommand("/mcTracking/skipNeutrino true"); // geant4->ProcessGeantCommand("/mcDet/setMaxStepInLowDensityMaterials 1 cm"); // //======================================================================= // ************* 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); //=========================// // Generator Configuration // //=========================// AliGenerator* gener = 0x0; if (proc == kPythia6) { gener = MbPythia(); } else if (proc == kPythia6D6T) { gener = MbPythiaTuneD6T(); } else if (proc == kPythia6ATLAS) { gener = MbPythiaTuneATLAS(); } else if (proc == kPythiaPerugia0) { gener = MbPythiaTunePerugia0(); } else if (proc == kPythia6ATLAS_Flat) { gener = MbPythiaTuneATLAS_Flat(); } else if (proc == kPhojet) { gener = MbPhojet(); } // // // Size of the interaction diamond // Longitudinal Float_t sigmaz = 5.4 / TMath::Sqrt(2.); // [cm] if (energy == 900) //sigmaz = 10.5 / TMath::Sqrt(2.); // [cm] //sigmaz = 3.7; if (energy == 7000) sigmaz = 6.3 / TMath::Sqrt(2.); // [cm] // // Transverse // beta* Float_t betast = 10.0; // beta* [m] if (runNumber >= 117048) betast = 2.0; if (runNumber > 122375) betast = 3.5; // starting with fill 1179 // // Float_t eps = 5.0e-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->SetVertexSmear(kPerEvent); gener->Init(); printf("\n \n Comment: %s \n \n", comment.Data()); }
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__); }
void Config() { // AliLog::SetClassDebugLevel("AliMFT", 1); LoadLibs(); new TGeant3TGeo("C++ Interface to Geant3"); // Create the output file AliRunLoader* rl=0x0; 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"); return; } rl->SetCompressionLevel(2); rl->SetNumberOfEventsPerFile(1000); gAlice->SetRunLoader(rl); // ************* 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); TVirtualMCDecayer *decayer = new AliDecayerPythia(); decayer->SetForceDecay(kAll); decayer->Init(); gMC->SetExternalDecayer(decayer); // 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(); 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] Float_t betast = 3.5; // 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->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()); // TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kG, AliMagF::kBeamTypeAA, 2750.)); TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kG, AliMagF::kBeamTypepp, 7000.)); rl->CdGAFile(); // Detector Setup Int_t iABSO = 1; Int_t iDIPO = 1; Int_t iHALL = 1; Int_t iMUON = 1; Int_t iPIPE = 1; Int_t iSHIL = 1; Int_t iT0 = 0; Int_t iVZERO = 1; Int_t iMFT = 1; Int_t iACORDE= 0; Int_t iEMCAL = 0; Int_t iFMD = 0; Int_t iFRAME = 0; Int_t iITS = 0; Int_t iMAG = 1; Int_t iPHOS = 0; Int_t iPMD = 0; Int_t iHMPID = 0; Int_t iTOF = 0; Int_t iTPC = 0; Int_t iTRD = 0; Int_t iZDC = 0; AliBODY *BODY = new AliBODY("BODY", "Alice envelop"); if (iMAG) AliMAG *MAG = new AliMAG("MAG", "Magnet"); if (iABSO) AliABSO *ABSO = new AliABSOv3("ABSO", "Muon Absorber"); 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) 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"); if (iFMD) AliFMD *FMD = new AliFMDv1("FMD", "normal FMD"); if (iPHOS) AliPHOS *PHOS = new AliPHOSv1("PHOS", "noCPV_Modules123"); if (iPMD) AliPMD *PMD = new AliPMDv1("PMD", "normal PMD"); if (iT0) AliT0 *T0 = new AliT0v1("T0", "T0 Detector"); if (iEMCAL) AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_FIRSTYEARV1"); if (iACORDE) AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE"); if (iVZERO) AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO"); if (iFRAME) { AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame"); FRAME->SetHoles(1); } if (iPIPE) { // AliPIPE *PIPE = new AliPIPEv3("PIPE", "Beam Pipe"); AliPIPE *PIPE = new AliPIPEv4("PIPE", "Beam Pipe"); } if (iZDC) { AliZDC *ZDC = new AliZDCv3("ZDC", "normal ZDC"); ZDC->SetSpectatorsTrack(); ZDC->SetLumiLength(0.); } if (iTRD) { AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator"); } if (iMUON) { AliMUON *MUON = new AliMUONv1("MUON", "default"); MUON->SetTriggerEffCells(1); // not needed if raw masks Char_t* digitstore="AliMUONDigitStoreV2S"; MUON->SetDigitStoreClassName(digitstore); } if (iMFT) { AliMFT *MFT = new AliMFT("MFT", "normal MFT"); } TIter next(gAlice->Modules()); AliModule *detector; printf("gAlice->Modules:\n"); while((detector = (AliModule*)next())) printf("%s\n",detector->GetName()); }