// -I$ALICE_ROOT -I$ALICE/geant3/TGeant3");
// root [0] .x grun.C(1,"ConfigPPR.C++")
//
+/** @file Config.C
+ @author Christian Holm Christensen <cholm@nbi.dk>
+ @date Mon Mar 27 12:50:29 2006
+ @brief Simulation configuration script
+*/
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <Riostream.h>
-#include <TRandom.h>
+#include <TPDGCode.h>
#include <TSystem.h>
#include <TVirtualMC.h>
#include <TGeant3.h>
#include "ITS/AliITSvPPRasymmFMD.h"
#include "TPC/AliTPCv2.h"
#include "TOF/AliTOFv4T0.h"
-#include "RICH/AliRICHv1.h"
+#include "HMPID/AliHMPIDv1.h"
#include "ZDC/AliZDCv2.h"
#include "TRD/AliTRDv1.h"
#include "FMD/AliFMDv1.h"
#include "MUON/AliMUONTriggerGeometryBuilder.h"
#include "PHOS/AliPHOSv1.h"
#include "PMD/AliPMDv1.h"
-#include "START/AliSTARTv1.h"
+#include "T0/AliT0v1.h"
#include "EMCAL/AliEMCALv1.h"
-#include "CRT/AliCRTv0.h"
+#include "ACORDE/AliACORDEv0.h"
#include "VZERO/AliVZEROv2.h"
#endif
kMuonCocktailCent1Single, //
kMuonCocktailPer1Single, //
kMuonCocktailPer4Single,
+ kFMD1Flat,
+ kFMD2Flat,
+ kFMD3Flat,
+ kFMDFlat,
kEgMax
};
"kMuonCocktailPer4HighPt", //
"kMuonCocktailCent1Single", //
"kMuonCocktailPer1Single", //
- "kMuonCocktailPer4Single"
+ "kMuonCocktailPer4Single",
+ "kFMD1Flat",
+ "kFMD2Flat",
+ "kFMD3Flat",
+ "kFMDFlat"
};
//____________________________________________________________________
{
//____________________________________________________________________
// This part for configuration
- //static EG_t eg = test50;
- //EG_t eg = kParam_fmd;
+ // EG_t eg = test50;
+ // EG_t eg = kParam_fmd;
EG_t eg = kParam_2000; // kPythia;
+ // EG_t eg = kFMDFlat;
Geo_t geo = kNoHoles;
Rad_t rad = kGluonRadiation;
Mag_t mag = k5kG;
gSystem->Load("libGeom");
cout << "\t* Loading TFluka..." << endl;
gSystem->Load("libTFluka");
-
+ gSystem->MakeDirectory("peg");
//
// FLUKA MC
//
//
// Libraries needed by GEANT 3.21
//
+ gSystem->Load("EGPythia6.so");
gSystem->Load("libgeant321");
//
((TFluka*)gMC)->SetGeneratePemf(kFALSE);
else
((TFluka*)gMC)->SetGeneratePemf(kTRUE);
+ TString flupro(gSystem->Getenv("FLUPRO"));
+ if (flupro.IsNull())
+ Fatal("Config.C", "Environment variable FLUPRO not set");
+#if 0
+ char* files[] = { "brems_fin.bin", "cohff.bin", "elasct.bin",
+ "gxsect.bin", "nuclear.bin", "sigmapi.bin",
+ 0 };
+ char* file = files[0];
+ while (file) {
+ TString which(gSystem->Which(".", file));
+ if (which.IsNull()) {
+ if (gSystem->Symlink(Form("%s/%s", flupro.Data(), file), file)!=0)
+ Fatal("Config.C", "Couldn't link $(FLUPRO)/%s -> .", file);
+ }
+ file++;
+ }
+#endif
+ TString neuxsc(gSystem->Which(".", "neuxsc.bin"));
+ if (neuxsc.IsNull())
+ gSystem->Symlink(Form("%s/neuxsc_72.bin", flupro.Data()),
+ "neuxsc.bin");
+ gSystem->CopyFile("$(FLUPRO)/random.dat", "old.seed", kTRUE);
}
break;
}
#endif
//__________________________________________________________________
- // ************* 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
+ // *********** 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("MUNU",1);
gMC->SetProcess("CKOV",1);
gMC->SetProcess("HADR",1);
- gMC->SetProcess("LOSS",2);
+ gMC->SetProcess("LOSS",2); // 0:none 1,3:dray 2:nodray 4:nofluct (def:2)
gMC->SetProcess("MULS",1);
gMC->SetProcess("RAYL",1);
}
switch(geo) {
- case kHoles: comment = comment.Append(" | Holes for PHOS/RICH"); break;
- default: comment = comment.Append(" | No holes for PHOS/RICH"); break;
+ case kHoles: comment = comment.Append(" | Holes for PHOS/HMPID"); break;
+ default: comment = comment.Append(" | No holes for PHOS/HMPID"); break;
}
std::cout << "\n\n Comment: " << comment << "\n" << std::endl;
// Used detectors
//
Bool_t useABSO = kFALSE;
- Bool_t useCRT = kFALSE;
+ Bool_t useACORDE = kFALSE;
Bool_t useDIPO = kFALSE;
Bool_t useFMD = kTRUE;
Bool_t useFRAME = kFALSE;
Bool_t usePHOS = kFALSE;
Bool_t usePIPE = kFALSE;
Bool_t usePMD = kFALSE;
- Bool_t useRICH = kFALSE;
+ Bool_t useHMPID = kFALSE;
Bool_t useSHIL = kFALSE;
- Bool_t useSTART = kFALSE;
+ Bool_t useT0 = kFALSE;
Bool_t useTOF = kFALSE;
Bool_t useTPC = kFALSE;
Bool_t useTRD = kFALSE;
Bool_t useVZERO = kFALSE;
cout << "\t* Creating the detectors ..." << endl;
- //=================== Alice BODY parameters =============================
+ // ================= Alice BODY parameters =========================
AliBODY *BODY = new AliBODY("BODY", "Alice envelop");
if (useMAG) {
- //=================== MAG parameters ============================
+ // =================== MAG parameters ============================
// Start with Magnet since detector layouts may be depending on
// the selected Magnet dimensions
AliMAG *MAG = new AliMAG("MAG", "Magnet");
}
if (useABSO) {
- //=================== ABSO parameters ============================
+ // =================== ABSO parameters ===========================
AliABSO *ABSO = new AliABSOv0("ABSO", "Muon Absorber");
}
if (useDIPO) {
- //=================== DIPO parameters ============================
+ // =================== DIPO parameters ===========================
AliDIPO *DIPO = new AliDIPOv2("DIPO", "Dipole version 2");
}
if (useHALL) {
- //=================== HALL parameters ============================
+ // =================== HALL parameters ===========================
AliHALL *HALL = new AliHALL("HALL", "Alice Hall");
}
if (useFRAME) {
- //=================== FRAME parameters ============================
+ // ================== FRAME parameters ===========================
AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame");
switch (geo) {
case kHoles: FRAME->SetHoles(1); break;
}
if (useSHIL) {
- //=================== SHIL parameters ============================
+ // ================== SHIL parameters ============================
AliSHIL *SHIL = new AliSHILv2("SHIL", "Shielding Version 2");
}
if (usePIPE) {
- //=================== PIPE parameters ============================
+ // ================== PIPE parameters ============================
AliPIPE *PIPE = new AliPIPEv0("PIPE", "Beam Pipe");
}
if (useITS) {
- //=================== ITS parameters ============================
+ // =================== ITS parameters ============================
//
// As the innermost detector in ALICE, the Inner Tracking System
// "impacts" on almost all other detectors. This involves the fact
}
if (useTPC) {
- //============================ TPC parameters ====================
+ // =================== TPC parameters ============================
//
// This allows the user to specify sectors for the SLOW (TPC
// geometry 2) Simulator. SecAL (SecAU) <0 means that ALL lower
// gROOT->LoadMacro("SetTPCParam.C");
// AliTPCParam *param = SetTPCParam();
AliTPC *TPC = new AliTPCv2("TPC", "Default");
-
- // All sectors included
- TPC->SetSecAL(-1);
- TPC->SetSecAU(-1);
}
if (useTOF) {
- //=================== TOF parameters ============================
+ // ================== TOF parameters =============================
AliTOF *TOF = new AliTOFv4T0("TOF", "normal TOF");
}
- if (useRICH) {
- //=================== RICH parameters ===========================
- AliRICH *RICH = new AliRICHv1("RICH", "normal RICH");
+ if (useHMPID) {
+ // ================== HMPID parameters ============================
+ AliHMPID *HMPID = new AliHMPIDv1("HMPID", "normal HMPID");
}
if (useZDC) {
- //=================== ZDC parameters ============================
+ // ================== ZDC parameters =============================
AliZDC *ZDC = new AliZDCv2("ZDC", "normal ZDC");
}
if (useTRD) {
- //=================== TRD parameters ============================
+ // ================== TRD parameters =============================
AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator");
// Select the gas mixture (0: 97% Xe + 3% isobutane, 1: 90% Xe + 10% CO2)
if (geo == kHoles) {
// With hole in front of PHOS
TRD->SetPHOShole();
- // With hole in front of RICH
- TRD->SetRICHhole();
+ // With hole in front of HMPID
+ TRD->SetHMPIDhole();
}
// Switch on TR
AliTRDsim *TRDsim = TRD->CreateTR();
}
if (useFMD) {
- //=================== FMD parameters ============================
+ // =================== FMD parameters ============================
AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");
- AliLog::SetModuleDebugLevel("FMD", 1);
// FMD->UseDetailed(kFALSE);
// FMD->UseAssembly();
// FMD->UseOld();
}
if (useMUON) {
- //=================== MUON parameters ===========================
+ // =================== MUON parameters ===========================
AliMUON *MUON = new AliMUONv1("MUON", "default");
- MUON->AddGeometryBuilder(new AliMUONSt1GeometryBuilder(MUON));
- MUON->AddGeometryBuilder(new AliMUONSt2GeometryBuilder(MUON));
- MUON->AddGeometryBuilder(new AliMUONSlatGeometryBuilder(MUON));
- MUON->AddGeometryBuilder(new AliMUONTriggerGeometryBuilder(MUON));
+ // MUON->AddGeometryBuilder(new AliMUONSt1GeometryBuilder(MUON));
+ // MUON->AddGeometryBuilder(new AliMUONSt2GeometryBuilder(MUON));
+ // MUON->AddGeometryBuilder(new AliMUONSlatGeometryBuilder(MUON));
+ // MUON->AddGeometryBuilder(new AliMUONTriggerGeometryBuilder(MUON));
}
if (usePHOS) {
- //=================== PHOS parameters ===========================
+ // =================== PHOS parameters ===========================
AliPHOS *PHOS = new AliPHOSv1("PHOS", "IHEP");
}
if (usePMD) {
- //=================== PMD parameters ============================
+ // =================== PMD parameters ============================
AliPMD *PMD = new AliPMDv1("PMD", "normal PMD");
}
- if (useSTART) {
- //=================== START parameters ============================
- AliSTART *START = new AliSTARTv1("START", "START Detector");
+ if (useT0) {
+ // =================== T0 parameters ==========================
+ AliT0 *T0 = new AliT0v1("T0", "T0 Detector");
}
if (useEMCAL) {
- //=================== EMCAL parameters ============================
+ // =================== EMCAL parameters ==========================
AliEMCAL *EMCAL = new AliEMCALv1("EMCAL", "EMCAL_55_25");
}
- if (useCRT) {
- //=================== CRT parameters ============================
- AliCRT *CRT = new AliCRTv0("CRT", "normal ACORDE");
+ if (useACORDE) {
+ // =================== ACORDE parameters ============================
+ AliACORDE *ACORDE = new AliACORDEv0("ACORDE", "normal ACORDE");
}
if (useVZERO) {
- //=================== CRT parameters ============================
+ // =================== V0 parameters =============================
AliVZERO *VZERO = new AliVZEROv3("VZERO", "normal VZERO");
}
}
gGener=gener;
}
break;
+ case kFMD1Flat:
+ {
+ comment = comment.Append(" Flat in FMD1 range");
+ AliGenBox* gener = new AliGenBox(2000);
+ gener->SetPart(kPiPlus);
+ gener->SetMomentumRange(3,4);
+ gener->SetPhiRange(0, 360);
+ gener->SetThetaRange(0.77, 3.08);
+ gGener = gener;
+ }
+ break;
+ case kFMD2Flat:
+ {
+ comment = comment.Append(" Flat in FMD2 range");
+ AliGenBox* gener = new AliGenBox(2000);
+ gener->SetPart(kPiPlus);
+ gener->SetMomentumRange(3,4);
+ gener->SetPhiRange(0, 360);
+ gener->SetThetaRange(2.95, 20.42);
+ gGener = gener;
+ }
+ break;
+ case kFMD3Flat:
+ {
+ comment = comment.Append(" Flat in FMD3 range");
+ AliGenBox* gener = new AliGenBox(2000);
+ gener->SetPart(kPiPlus);
+ gener->SetMomentumRange(3,4);
+ gener->SetPhiRange(0, 360);
+ gener->SetThetaRange(155.97, 176.73);
+ gGener = gener;
+ }
+ break;
+ case kFMDFlat:
+ {
+ comment = comment.Append(" Flat in FMD range");
+ AliGenCocktail* gener = new AliGenCocktail();
+ gener->SetMomentumRange(3,4);
+ gener->SetPhiRange(0, 360);
+ AliGenBox* gener3 = new AliGenBox(2000);
+ gener3->SetThetaRange(155.97, 176.73);
+ gener3->SetPart(kPiPlus);
+ gener->AddGenerator(gener3, "FMD3", .33);
+ AliGenBox* gener2 = new AliGenBox(2000);
+ gener2->SetThetaRange(2.95, 20.42);
+ gener2->SetPart(kPiPlus);
+ gener->AddGenerator(gener2, "FMD2", .33);
+ AliGenBox* gener1 = new AliGenBox(2000);
+ gener1->SetThetaRange(0.77, 3.08);
+ gener1->SetPart(kPiPlus);
+ gener->AddGenerator(gener1, "FMD1", .34);
+ gGener = gener;
+ }
+ break;
+
default: break;
}
return gGener;