void Config() { // Libraries required by geant321 #if defined(__CINT__) gSystem->AddIncludePath("-I$ALICE_ROOT/include -I$ALICE_PHYSICS/include"); gSystem->Load("libgeant321"); LoadPhotos(); #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(5000); gAlice->SetRunLoader(rl); if ( TString("VAR_TRIGGER_CONFIGURATION").Length() > 0 ) { AliSimulation::Instance()->SetTriggerConfig("VAR_TRIGGER_CONFIGURATION"); cout<<"Trigger configuration is set to VAR_TRIGGER_CONFIGURATION" << std::endl; } // //======================================================================= // ************* 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; /* FIXME: put back polarization switch ? if (polar == kNO_pol){ decayer = new AliDecayerPythia(); } else if (polar == kTH_pol){ decayer = new AliDecayerPolarized(1.,AliDecayerPolarized::kHelicity,AliDecayerPolarized::kMuon); } else if (polar == kT_pol){ decayer = new AliDecayerPolarized(1.,AliDecayerPolarized::kColSop,AliDecayerPolarized::kMuon); } else if (polar == kLH_pol){ decayer = new AliDecayerPolarized(-1.,AliDecayerPolarized::kHelicity,AliDecayerPolarized::kMuon); } else if (polar == kL_pol){ decayer = new AliDecayerPolarized(-1.,AliDecayerPolarized::kColSop,AliDecayerPolarized::kMuon); } */ decayer->SetForceDecay(kAll); decayer->Init(); gMC->SetExternalDecayer(decayer); //=========================// // Generator Configuration // //=========================// //AliGenerator* gener = CreateGenerator(); std::cout << "VAR_GENERATOR settings " << std::endl; gROOT->LoadMacro("VAR_GENERATOR.C+"); AliGenerator* gener = VAR_GENERATOR(); TString slibs = gSystem->GetLibraries(); TObjArray* olibs = slibs.Tokenize(" "); TObjString* s; TIter next(olibs); std::cout << "List of libraries=" << std::endl; while ( ( s = static_cast<TObjString*>(next())) ) { std::cout << s->String().Data() << std::endl; } gener->SetOrigin(0., 0., 0.); // Taken from OCDB gener->SetSigma(VAR_VERTEX_SIGMA_X, VAR_VERTEX_SIGMA_Y, 0.); // Sigma in (X,Y,Z) (cm) on IP position, sigmaz taken from OCDB gener->SetVertexSmear(kPerEvent); gener->Init(); gener->Print(); 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 iPIPE = 1; Int_t iSHIL = 1; Int_t iT0 = 1; Int_t iVZERO = 1; Int_t iZDC = 0; Int_t iAD = 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 ============================ 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 (iZDC) { //=================== ZDC parameters ============================ AliZDC *ZDC = new AliZDCv4("ZDC", "normal ZDC"); ZDC->SetLumiLength(0.); ZDC->SetVCollSideCAperture(2.8); ZDC->SetVCollSideCApertureNeg(2.8); } 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"); MUON->SetTriggerEffCells(1); MUON->SetTriggerResponseV1(2); } if (iT0) { //=================== T0 parameters ============================ AliT0 *T0 = new AliT0v1("T0", "T0 Detector"); } if (iVZERO) { //=================== ACORDE parameters ============================ AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO"); } if (iAD) { //=================== AD parameters ============================ AliAD *AD = new AliADv1("AD", "normal AD"); } }
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(); } }