From: morsch Date: Wed, 11 Feb 2004 16:29:11 +0000 (+0000) Subject: Configuration in synch with ConfigPPR.C (E. Futo). X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=69b7ed2521d0bb9c710cf05e4f3cfd95f0b70fd4;p=u%2Fmrichter%2FAliRoot.git Configuration in synch with ConfigPPR.C (E. Futo). --- diff --git a/TFluka/macro/FlukaConfig.C b/TFluka/macro/FlukaConfig.C index 9f420bbc3ec..c0dcacd509e 100644 --- a/TFluka/macro/FlukaConfig.C +++ b/TFluka/macro/FlukaConfig.C @@ -1,10 +1,55 @@ static Int_t eventsPerRun = 100; +enum PprRun_t +{ + test50, + kParam_8000, kParam_4000, kParam_2000, + kHijing_cent1, kHijing_cent2, + kHijing_per1, kHijing_per2, kHijing_per3, kHijing_per4, kHijing_per5, + kHijing_jj25, kHijing_jj50, kHijing_jj75, kHijing_jj100, kHijing_jj200, + kHijing_gj25, kHijing_gj50, kHijing_gj75, kHijing_gj100, kHijing_gj200, + kHijing_pA, kPythia6, kPythia6Jets, kD0PbPb5500, kD_TRD, kB_TRD, kJpsi_TRD, + kU_TRD, kPyJJ, kPyGJ +}; + +enum PprGeo_t +{ + kHoles, kNoHoles +}; + +enum PprRad_t +{ + kGluonRadiation, kNoGluonRadiation +}; + +enum PprMag_t +{ + k2kG, k4kG, k5kG +}; + + +// This part for configuration +//static PprRun_t srun = test50; +static PprRun_t srun = kPythia6; +static PprGeo_t sgeo = kHoles; +static PprRad_t srad = kGluonRadiation; +static PprMag_t smag = k5kG; + +// Comment line +static TString comment; + +// Functions +Float_t EtaToTheta(Float_t arg); +//AliGenerator* GeneratorFactory(PprRun_t srun); +//AliGenHijing* HijingStandard(); + void Config() { cout << "==> Config.C..." << endl; // Set Random Number seed - // gRandom->SetSeed(12345); + gRandom->SetSeed(12345); + cout<<"Seed for random number generation= "<GetSeed()<Load("libGeom"); } + cout << "\t* Loading TFluka..." << endl; gSystem->Load("libTFluka"); cout << "\t* Instantiating TFluka..." << endl; new TFluka("C++ Interface to Fluka", 3/*verbositylevel*/); - cout << "\t* Recreating galice.root if needed..." << endl; - - if (!gSystem->Getenv("CONFIG_FILE")) - { - cout<<"Config.C: Creating Run Loader ..."<Fatal("Config.C","Can not instatiate the Run Loader"); - return; - } - rl->SetCompressionLevel(2); - rl->SetNumberOfEventsPerFile(3); - gAlice->SetRunLoader(rl); - } - - - TFluka *fluka = (TFluka *) gMC; - fluka->SetCoreInputFileName("corealice.inp"); - fluka->SetInputFileName("alice.inp"); + AliRunLoader* rl=0x0; + + cout<<"Config.C: Creating Run Loader ..."<Fatal("Config.C","Can not instatiate the Run Loader"); + return; + } + rl->SetCompressionLevel(2); + rl->SetNumberOfEventsPerFile(3); + gAlice->SetRunLoader(rl); + // // Set External decayer - TVirtualMCDecayer *decayer = new AliDecayerPythia(); + AliDecayer *decayer = new AliDecayerPythia(); + decayer->SetForceDecay(kAll); decayer->Init(); gMC->SetExternalDecayer(decayer); + + TFluka *fluka = (TFluka *) gMC; + fluka->SetCoreInputFileName("corealice.inp"); + fluka->SetInputFileName("alice.inp"); + // // // // Physics process control - gMC ->SetProcess("DCAY",1); - gMC ->SetProcess("PAIR",0); - gMC ->SetProcess("COMP",0); - gMC ->SetProcess("PHOT",0); - gMC ->SetProcess("PFIS",0); - gMC ->SetProcess("DRAY",0); - gMC ->SetProcess("ANNI",0); - gMC ->SetProcess("BREM",0); - gMC ->SetProcess("MUNU",1); - gMC ->SetProcess("HADR",1); //Select pure GEANH (HADR 1) or GEANH/NUCRIN (HADR 3) - gMC ->SetProcess("LOSS",2); - gMC ->SetProcess("MULS",1); - //xx gMC ->SetProcess("RAYL",1); - // Energy cuts - // (in development) - Float_t cut = 1.e-1; // 100 MeV 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); + 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); // //======================================================================= @@ -117,9 +163,42 @@ void Config() // track by track // - gAlice->SetField(-999, 2); //Specify maximum magnetic field in Tesla (neg. ==> default field) + gAlice->SetDebug(10); - + if (smag == k2kG) { + comment = comment.Append(" | L3 field 0.2 T"); + } else if (smag == k4kG) { + comment = comment.Append(" | L3 field 0.4 T"); + } else if (smag == k5kG) { + comment = comment.Append(" | L3 field 0.5 T"); + } + + + if (srad == kGluonRadiation) + { + comment = comment.Append(" | Gluon Radiation On"); + + } else { + comment = comment.Append(" | Gluon Radiation Off"); + } + + if (sgeo == kHoles) + { + comment = comment.Append(" | Holes for PHOS/RICH"); + + } else { + comment = comment.Append(" | No holes for PHOS/RICH"); + } + + printf("\n \n Comment: %s \n \n", comment.Data()); + + +// Field (L3 0.4 T) + AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., smag); + field->SetL3ConstField(0); //Using const. field in the barrel + rl->CdGAFile(); + gAlice->SetField(field); + Int_t iABSO = 0; //1 Int_t iCRT = 0; //Not good ? Int_t iDIPO = 0; //1 @@ -144,71 +223,69 @@ void Config() cout << "\t* Creating the detectors ..." << endl; //=================== Alice BODY parameters ============================= - AliBODY *BODY = new AliBODY("BODY", "Alice envelop"); - cout << "\t\t+ BODY..." << endl; - - - if (iMAG) + //=================== 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 --- - cout << "\t\t+ Magnet..." << endl; - AliMAG *MAG = new AliMAG("MAG", "Magnet"); + //=================== MAG parameters ============================ + // --- Start with Magnet since detector layouts may be depending --- + // --- on the selected Magnet dimensions --- + AliMAG *MAG = new AliMAG("MAG", "Magnet"); } - - - if (iABSO) + + + if (iABSO) { - //=================== ABSO parameters ============================ - cout << "\t\t+ ABSO..." << endl; - AliABSO *ABSO = new AliABSOv0("ABSO", "Muon Absorber"); + //=================== ABSO parameters ============================ + AliABSO *ABSO = new AliABSOv0("ABSO", "Muon Absorber"); } - - if (iDIPO) + + if (iDIPO) { - //=================== DIPO parameters ============================ - cout << "\t\t+ DIPO..." << endl; - AliDIPO *DIPO = new AliDIPOv2("DIPO", "Dipole version 2"); + //=================== DIPO parameters ============================ + + AliDIPO *DIPO = new AliDIPOv2("DIPO", "Dipole version 2"); } - - if (iHALL) + + if (iHALL) { - //=================== HALL parameters ============================ - cout << "\t\t+ HALL..." << endl; - AliHALL *HALL = new AliHALL("HALL", "Alice Hall"); + //=================== HALL parameters ============================ + + AliHALL *HALL = new AliHALL("HALL", "Alice Hall"); } - - - if (iFRAME) + + + if (iFRAME) { - //=================== FRAME parameters ============================ - - cout << "\t\t+ FRAME..." << endl; - AliFRAME *FRAME = new AliFRAMEv2("FRAME", "Space Frame"); - + //=================== FRAME parameters ============================ + + AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame"); + if (sgeo == kHoles) { + FRAME->SetHoles(1); + } else { + FRAME->SetHoles(0); + } } - - if (iSHIL) + + if (iSHIL) { - //=================== SHIL parameters ============================ - - cout << "\t\t+ SHIL..." << endl; - AliSHIL *SHIL = new AliSHILv2("SHIL", "Shielding"); + //=================== SHIL parameters ============================ + + AliSHIL *SHIL = new AliSHILv2("SHIL", "Shielding Version 2"); } - - - if (iPIPE) + + + if (iPIPE) { - //=================== PIPE parameters ============================ - - cout << "\t\t+ PIPE..." << endl; - AliPIPE *PIPE = new AliPIPEv0("PIPE", "Beam Pipe"); + //=================== PIPE parameters ============================ + + AliPIPE *PIPE = new AliPIPEv0("PIPE", "Beam Pipe"); } - - if(iITS) { - cout << "\t\t+ ITS..." << endl; - + + if(iITS) { + //=================== ITS parameters ============================ // // As the innermost detector in ALICE, the Inner Tracking System "impacts" on @@ -220,48 +297,36 @@ void Config() // 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: + // 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 + AliITSvPPRasymmFMD *ITS = new AliITSvPPRasymmFMD("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(kTRUE); // 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(1); // 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(1); // 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 + 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(1); // 1 --> rails in ; 0 --> rails out + //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(1); // 1 --> rails in ; 0 --> rails out + //ITS->SetRails(0); // 1 --> rails in ; 0 --> rails out //ITS->SetSupportMaterial(0); // 0 --> Copper ; 1 --> Aluminum ; 2 --> Carbon - // + // // // // Geant3 <-> EUCLID conversion @@ -272,150 +337,135 @@ void Config() // 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) - { - cout << "\t\t+ TPC..." << endl; - //============================ 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 AliTPCv1("TPC", "Default"); - // All sectors included - TPC->SetSecAL(-1); - TPC->SetSecAU(-1); + ITS->SetEUCLID(0); } - - if (iTOF) + + if (iTPC) { - cout << "\t\t+ TOF..." << endl; - //=================== TOF parameters ============================ - AliTOF *TOF = new AliTOFv2("TOF", "normal TOF"); + //============================ 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 (iRICH) + + + if (iTOF) { + //=================== TOF parameters ============================ + AliTOF *TOF = new AliTOFv4T0("TOF", "normal TOF"); + } + + + if (iRICH) { - cout << "\t\t+ RICH..." << endl; - //=================== RICH parameters =========================== + //=================== RICH parameters =========================== AliRICH *RICH = new AliRICHv1("RICH", "normal RICH"); - + } - - - if (iZDC) + + + if (iZDC) { - cout << "\t\t+ ZDC..." << endl; - //=================== ZDC parameters ============================ - - AliZDC *ZDC = new AliZDCv2("ZDC", "normal ZDC"); + //=================== ZDC parameters ============================ + + AliZDC *ZDC = new AliZDCv2("ZDC", "normal ZDC"); } - - if (iCRT) + + if (iTRD) { - cout << "\t\t+ CRT..." << endl; - //=================== CRT parameters ============================ - - AliCRT *CRT = new AliCRTv0("CRT", "normal CRT"); + //=================== 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 (sgeo == kHoles) { + // With hole in front of PHOS + TRD->SetPHOShole(); + // With hole in front of RICH + TRD->SetRICHhole(); + } + // Switch on TR + AliTRDsim *TRDsim = TRD->CreateTR(); } - - if (iTRD) + + if (iFMD) { - cout << "\t\t+ TRD..." << endl; - //=================== 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); - - // With hole in front of PHOS - TRD->SetPHOShole(); - // With hole in front of RICH - TRD->SetRICHhole(); - // Switch on TR - AliTRDsim *TRDsim = TRD->CreateTR(); - } - - if (iFMD) + //=================== FMD parameters ============================ + AliFMD *FMD = new AliFMDv1("FMD", "normal FMD"); + } + + if (iMUON) { - cout << "\t\t+ FMD..." << endl; - //=================== FMD parameters ============================ - - AliFMD *FMD = new AliFMDv1("FMD", "normal FMD"); - FMD->SetRingsSi1(256); - FMD->SetRingsSi2(64); - FMD->SetSectorsSi1(20); - FMD->SetSectorsSi2(24); + //=================== 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)); } - - if (iMUON) + //=================== PHOS parameters =========================== + + if (iPHOS) { - cout << "\t\t+ MUON..." << endl; - //=================== MUON parameters =========================== - - AliMUON *MUON = new AliMUONv1("MUON", "default"); + AliPHOS *PHOS = new AliPHOSv1("PHOS", "IHEP"); } - //=================== PHOS parameters =========================== - - if (iPHOS) + + + if (iPMD) { - cout << "\t\t+ PHOS..." << endl; - AliPHOS *PHOS = new AliPHOSv1("PHOS", "GPS2"); + //=================== PMD parameters ============================ + AliPMD *PMD = new AliPMDv1("PMD", "normal PMD"); } - - - if (iPMD) + + if (iSTART) { - cout << "\t\t+ PMD..." << endl; - //=================== PMD parameters ============================ - - AliPMD *PMD = new AliPMDv1("PMD", "normal PMD"); - - PMD->SetPAR(1., 1., 0.8, 0.02); - PMD->SetIN(6., 18., -580., 27., 27.); - PMD->SetGEO(0.0, 0.2, 4.); - PMD->SetPadSize(0.8, 1.0, 1.0, 1.5); - + //=================== START parameters ============================ + AliSTART *START = new AliSTARTv1("START", "START Detector"); } - - if (iEMCAL && !iRICH) + + if (iEMCAL) { - cout << "\t\t+ EMCAL (no RICH)..." << endl; - //=================== EMCAL parameters ============================ - AliEMCAL *EMCAL = new AliEMCALv1("EMCAL", "EMCALArch1a"); + //=================== EMCAL parameters ============================ + AliEMCAL *EMCAL = new AliEMCALv1("EMCAL", "EMCAL_55_25"); } - - if (iSTART) + + if (iCRT) { - cout << "\t\t+ START..." << endl; - //=================== START parameters ============================ - AliSTART *START = new AliSTARTv1("START", "START Detector"); + //=================== CRT parameters ============================ + AliCRT *CRT = new AliCRTv0("CRT", "normal ACORDE"); } - if (iVZERO) + + if (iVZERO) { - cout << "\t\t+ VZERO..." << endl; - //=================== CRT parameters ============================ - AliVZERO *VZERO = new AliVZEROv2("VZERO", "normal VZERO"); + //=================== CRT parameters ============================ + AliVZERO *VZERO = new AliVZEROv3("VZERO", "normal VZERO"); } + + } - + Float_t EtaToTheta(Float_t arg){ return (180./TMath::Pi())*2.*atan(exp(-arg)); } +