// -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>
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 = kParam_2000; // kPythia;
+ // 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;
Int_t seed = 12345; //Set 0 to use the current time
- MC_t mc = kGEANT3;
+ MC_t mc = kGEANT3TGEO;
//____________________________________________________________________
// Comment line
gSystem->Load("libGeom");
cout << "\t* Loading TFluka..." << endl;
gSystem->Load("libTFluka");
-
+ gSystem->MakeDirectory("peg");
//
// FLUKA MC
//
((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);
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 ===========================
+ // ================== RICH parameters ============================
AliRICH *RICH = new AliRICHv1("RICH", "normal RICH");
}
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 (useFMD) {
- //=================== FMD parameters ============================
+ // =================== FMD parameters ============================
AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");
- AliLog::SetModuleDebugLevel("FMD", 1);
- // FMD->UseDivided();
- FMD->UseOld();
- // FMD->UseGeo(kFALSE);
+ // 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 ============================
+ // =================== START parameters ==========================
AliSTART *START = new AliSTARTv1("START", "START Detector");
}
if (useEMCAL) {
- //=================== EMCAL parameters ============================
+ // =================== EMCAL parameters ==========================
AliEMCAL *EMCAL = new AliEMCALv1("EMCAL", "EMCAL_55_25");
}
if (useCRT) {
- //=================== CRT parameters ============================
+ // =================== CRT parameters ============================
AliCRT *CRT = new AliCRTv0("CRT", "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(211);
+ 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(211);
+ 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(211);
+ 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(211);
+ gener->AddGenerator(gener3, "FMD3", .33);
+ AliGenBox* gener2 = new AliGenBox(2000);
+ gener2->SetThetaRange(2.95, 20.42);
+ gener2->SetPart(211);
+ gener->AddGenerator(gener2, "FMD2", .33);
+ AliGenBox* gener1 = new AliGenBox(2000);
+ gener1->SetThetaRange(0.77, 3.08);
+ gener1->SetPart(211);
+ gener->AddGenerator(gener1, "FMD1", .34);
+ gGener = gener;
+ }
+ break;
+
default: break;
}
return gGener;