From de78d77f32907bfd9cdcd7f594b636bc55168f5a Mon Sep 17 00:00:00 2001 From: hristov Date: Thu, 31 Jul 2003 13:45:09 +0000 Subject: [PATCH] Possibility to compile the configuration macros --- macros/Config.C | 116 +++-- macros/ConfigBeautyPPR.C | 59 ++- macros/ConfigCharmPPR.C | 127 ++++-- macros/ConfigPPR.C | 206 +++++++-- macros/Config_PythiaHeavyFlavours.C | 81 +++- macros/Config_gener.C | 548 ++++++++++++---------- macros/Config_pp.C | 677 ---------------------------- 7 files changed, 784 insertions(+), 1030 deletions(-) delete mode 100644 macros/Config_pp.C diff --git a/macros/Config.C b/macros/Config.C index 10a8e62e4e1..3269eeaaf35 100644 --- a/macros/Config.C +++ b/macros/Config.C @@ -1,3 +1,48 @@ +// One can use the configuration macro in compiled mode by +// root [0] gSystem->Load("libgeant321"); +// root [0] gSystem->SetIncludePath("-I$ROOTSYS/include -I$ALICE_ROOT/include\ +// -I$ALICE_ROOT -I$ALICE/geant3/TGeant3"); +// root [0] .x grun.C(1,"Config.C++") + +#if !defined(__CINT__) || defined(__MAKECINT__) +#include +#include +#include +#include +#include +#include "STEER/AliRunLoader.h" +#include "STEER/AliRun.h" +#include "STEER/AliConfig.h" +#include "PYTHIA6/AliDecayerPythia.h" +#include "EVGEN/AliGenCocktail.h" +#include "EVGEN/AliGenHIJINGpara.h" +#include "STEER/AliMagFMaps.h" +#include "STRUCT/AliBODY.h" +#include "STRUCT/AliMAG.h" +#include "STRUCT/AliABSOv0.h" +#include "STRUCT/AliDIPOv2.h" +#include "STRUCT/AliHALL.h" +#include "STRUCT/AliFRAMEv2.h" +#include "STRUCT/AliSHILv2.h" +#include "STRUCT/AliPIPEv0.h" +#include "ITS/AliITSvPPRasymm.h" +#include "TPC/AliTPCv2.h" +#include "TOF/AliTOFv2FHoles.h" +#include "TOF/AliTOFv4T0.h" +#include "RICH/AliRICHv3.h" +#include "ZDC/AliZDCv2.h" +#include "TRD/AliTRDv1.h" +#include "FMD/AliFMDv1.h" +#include "MUON/AliMUONv1.h" +#include "PHOS/AliPHOSv1.h" +#include "PMD/AliPMDv1.h" +#include "START/AliSTARTv1.h" +#include "EMCAL/AliEMCALv1.h" +#include "CRT/AliCRTv0.h" +#include "VZERO/AliVZEROv2.h" +#endif + +Float_t EtaToTheta(Float_t arg); static Int_t eventsPerRun = 100; enum PprGeo_t { @@ -7,36 +52,35 @@ static PprGeo_t geo = kHoles; 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); + gRandom->SetSeed(123456); // Set 0 to use the currecnt time + cout<<"Seed for random number generation= "<GetSeed()<Load("libgeant321"); +#endif new TGeant3("C++ Interface to Geant3"); - 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); - } - + 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 @@ -82,14 +126,12 @@ void Config() gMC->SetCut("TOFMAX", tofmax); - + int nParticles = 30; if (gSystem->Getenv("CONFIG_NPARTICLES")) { - int nParticles = atoi(gSystem->Getenv("CONFIG_NPARTICLES")); - } else - { - int nParticles = 30; + nParticles = atoi(gSystem->Getenv("CONFIG_NPARTICLES")); } + AliGenCocktail *gener = new AliGenCocktail(); gener->SetPhiRange(220, 320); // Set pseudorapidity range from -8 to 8. @@ -120,27 +162,27 @@ void Config() gAlice->SetField(field); - Int_t iABSO = 0; + Int_t iABSO = 1; Int_t iDIPO = 1; - Int_t iFMD = 0; + Int_t iFMD = 1; Int_t iFRAME = 1; Int_t iHALL = 1; Int_t iITS = 1; Int_t iMAG = 1; - Int_t iMUON = 0; + Int_t iMUON = 1; Int_t iPHOS = 1; Int_t iPIPE = 1; - Int_t iPMD = 0; - Int_t iRICH = 0; + Int_t iPMD = 1; + Int_t iRICH = 1; Int_t iSHIL = 1; - Int_t iSTART = 0; - Int_t iTOF = 0; + Int_t iSTART = 1; + Int_t iTOF = 1; Int_t iTPC = 1; - Int_t iTRD = 0; - Int_t iZDC = 0; - Int_t iEMCAL = 0; + Int_t iTRD = 1; + Int_t iZDC = 1; + Int_t iEMCAL = 1; Int_t iCRT = 0; - Int_t iVZERO = 0; + Int_t iVZERO = 1; rl->CdGAFile(); //=================== Alice BODY parameters ============================= AliBODY *BODY = new AliBODY("BODY", "Alice envelop"); @@ -380,7 +422,7 @@ void Config() if (iEMCAL) { //=================== EMCAL parameters ============================ - AliEMCAL *EMCAL = new AliEMCALv1("EMCAL", "EMCALArch1a"); + AliEMCAL *EMCAL = new AliEMCALv1("EMCAL", "G56_2_55_19_104_14"); } if (iCRT) @@ -395,6 +437,8 @@ void Config() AliVZERO *VZERO = new AliVZEROv2("VZERO", "normal VZERO"); } + cout << "End of Config.C" << endl; + } Float_t EtaToTheta(Float_t arg){ diff --git a/macros/ConfigBeautyPPR.C b/macros/ConfigBeautyPPR.C index 5f136d73b2a..16b2a24649d 100644 --- a/macros/ConfigBeautyPPR.C +++ b/macros/ConfigBeautyPPR.C @@ -1,3 +1,38 @@ +#if !defined(__CINT__) || defined(__MAKECINT__) +#include +#include +#include +#include +#include +#include +#include "STEER/AliRunLoader.h" +#include "STEER/AliRun.h" +#include "STEER/AliConfig.h" +#include "PYTHIA6/AliDecayerPythia.h" +#include "PYTHIA6/AliGenPythia.h" +#include "STEER/AliMagFCM.h" +#include "STRUCT/AliBODY.h" +#include "STRUCT/AliMAG.h" +#include "STRUCT/AliABSOv0.h" +#include "STRUCT/AliDIPOv2.h" +#include "STRUCT/AliHALL.h" +#include "STRUCT/AliFRAMEv2.h" +#include "STRUCT/AliSHILv2.h" +#include "STRUCT/AliPIPEv0.h" +#include "ITS/AliITSvPPRasymm.h" +#include "TPC/AliTPCv2.h" +#include "TOF/AliTOFv2.h" +#include "RICH/AliRICHv1.h" +#include "ZDC/AliZDCv1.h" +#include "TRD/AliTRDv1.h" +#include "FMD/AliFMDv0.h" +#include "MUON/AliMUONv1.h" +#include "PHOS/AliPHOSv1.h" +#include "PMD/AliPMDv1.h" +#include "START/AliSTARTv1.h" +#include "CRT/AliCRTv1.h" +#endif + void Config() { @@ -8,19 +43,35 @@ void Config() UInt_t procid=gSystem->GetPid(); UInt_t seed=curtime-procid; - gRandom->SetSeed(seed); + // gRandom->SetSeed(seed); + gRandom->SetSeed(12345); cerr<<"Seed for random number generation= "<Load("libgeant321"); +#endif new TGeant3("C++ Interface to Geant3"); //======================================================================= // Create the output file - TFile *rootfile = new TFile("galice.root","recreate"); - rootfile->SetCompressionLevel(2); + 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 AliDecayer* decayer = new AliDecayerPythia(); @@ -84,7 +135,7 @@ void Config() // The following settings select the Pythia parameters tuned to agree // with beauty NLO calculation for Pb-Pb @ 5.5 TeV with MNR code. // - gener->SetProcess(kPyBeautyPbMNR); + gener->SetProcess(kPyBeautyPbPbMNR); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(2.75,-1.0); gener->SetEnergyCMS(5500.); diff --git a/macros/ConfigCharmPPR.C b/macros/ConfigCharmPPR.C index c5f306b5f97..1f943558322 100644 --- a/macros/ConfigCharmPPR.C +++ b/macros/ConfigCharmPPR.C @@ -1,3 +1,38 @@ +#if !defined(__CINT__) || defined(__MAKECINT__) +#include +#include +#include +#include +#include +#include +#include "STEER/AliRunLoader.h" +#include "STEER/AliRun.h" +#include "STEER/AliConfig.h" +#include "PYTHIA6/AliDecayerPythia.h" +#include "PYTHIA6/AliGenPythia.h" +#include "STEER/AliMagFCM.h" +#include "STRUCT/AliBODY.h" +#include "STRUCT/AliMAG.h" +#include "STRUCT/AliABSOv0.h" +#include "STRUCT/AliDIPOv2.h" +#include "STRUCT/AliHALL.h" +#include "STRUCT/AliFRAMEv2.h" +#include "STRUCT/AliSHILv2.h" +#include "STRUCT/AliPIPEv0.h" +#include "ITS/AliITSvPPRasymm.h" +#include "TPC/AliTPCv2.h" +#include "TOF/AliTOFv2.h" +#include "RICH/AliRICHv1.h" +#include "ZDC/AliZDCv1.h" +#include "TRD/AliTRDv1.h" +#include "FMD/AliFMDv0.h" +#include "MUON/AliMUONv1.h" +#include "PHOS/AliPHOSv1.h" +#include "PMD/AliPMDv1.h" +#include "START/AliSTARTv1.h" +#include "CRT/AliCRTv1.h" +#endif + void Config() { @@ -8,18 +43,36 @@ void Config() UInt_t procid=gSystem->GetPid(); UInt_t seed=curtime-procid; - gRandom->SetSeed(seed); + // gRandom->SetSeed(seed); + gRandom->SetSeed(12345); cerr<<"Seed for random number generation= "<Load("libgeant321"); +#endif + new TGeant3("C++ Interface to Geant3"); //======================================================================= // Create the output file - TFile *rootfile = new TFile("galice.root","recreate"); - rootfile->SetCompressionLevel(2); - - // + 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 AliDecayer* decayer = new AliDecayerPythia(); decayer->SetForceDecay(kAll); @@ -34,36 +87,36 @@ void Config() // --- 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); - + 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); + // AliGenPythia *gener = new AliGenPythia(ntracks); AliGenPythia *gener = new AliGenPythia(-1); @@ -83,7 +136,7 @@ void Config() // The following settings select the Pythia parameters tuned to agree // with charm NLO calculation for Pb-Pb @ 5.5 TeV with MNR code. // - gener->SetProcess(kPyCharmPbMNR); + gener->SetProcess(kPyCharmPbPbMNR); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(2.1,-1.0); gener->SetEnergyCMS(5500.); @@ -98,7 +151,7 @@ void Config() // Field (L3 0.4 T) AliMagFCM* field = new AliMagFCM( - "Map2","$(ALICE_ROOT)/data/field01.dat", 2, 1., 10.); + "Map2","$(ALICE_ROOT)/data/field01.dat", 2, 1., 10.); field->SetSolenoidField(4.); gAlice->SetField(field); diff --git a/macros/ConfigPPR.C b/macros/ConfigPPR.C index 32e4293bf68..94c736586de 100644 --- a/macros/ConfigPPR.C +++ b/macros/ConfigPPR.C @@ -1,3 +1,46 @@ +#if !defined(__CINT__) || defined(__MAKECINT__) +#include +#include +#include +#include +#include +#include "STEER/AliRunLoader.h" +#include "STEER/AliRun.h" +#include "STEER/AliConfig.h" +#include "STEER/AliGenerator.h" +#include "PYTHIA6/AliDecayerPythia.h" +#include "EVGEN/AliGenHIJINGpara.h" +#include "THijing/AliGenHijing.h" +#include "EVGEN/AliGenCocktail.h" +#include "EVGEN/AliGenSlowNucleons.h" +#include "EVGEN/AliSlowNucleonModelExp.h" +#include "PYTHIA6/AliGenPythia.h" +#include "STEER/AliMagFMaps.h" +#include "STRUCT/AliBODY.h" +#include "STRUCT/AliMAG.h" +#include "STRUCT/AliABSOv0.h" +#include "STRUCT/AliDIPOv2.h" +#include "STRUCT/AliHALL.h" +#include "STRUCT/AliFRAMEv2.h" +#include "STRUCT/AliSHILv2.h" +#include "STRUCT/AliPIPEv0.h" +#include "ITS/AliITSvPPRasymm.h" +#include "TPC/AliTPCv2.h" +#include "TOF/AliTOFv2FHoles.h" +#include "TOF/AliTOFv4T0.h" +#include "RICH/AliRICHv3.h" +#include "ZDC/AliZDCv2.h" +#include "TRD/AliTRDv1.h" +#include "FMD/AliFMDv1.h" +#include "MUON/AliMUONv1.h" +#include "PHOS/AliPHOSv1.h" +#include "PMD/AliPMDv1.h" +#include "START/AliSTARTv1.h" +#include "EMCAL/AliEMCALv1.h" +#include "CRT/AliCRTv0.h" +#include "VZERO/AliVZEROv2.h" +#endif + enum PprRun_t { test50, @@ -6,7 +49,7 @@ enum PprRun_t 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 + kHijing_pA, kPythia }; enum PprGeo_t @@ -26,39 +69,51 @@ enum PprMag_t // This part for configuration -static PprRun_t run = test50; -static PprGeo_t geo = kHoles; -static PprRad_t rad = kGluonRadiation; -static PprMag_t mag = k4kG; +//static PprRun_t srun = test50; +static PprRun_t srun = kPythia; +static PprGeo_t sgeo = kHoles; +static PprRad_t srad = kGluonRadiation; +static PprMag_t smag = k4kG; // Comment line static TString comment; - +// Functions +Float_t EtaToTheta(Float_t arg); +AliGenerator* GeneratorFactory(PprRun_t srun); +AliGenHijing* HijingStandard(); void Config() { - - // 7-DEC-2000 09:00 - // Switch on Transition adiation 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); + gRandom->SetSeed(12345); //Set 0 to use the current time + cout<<"Seed for random number generation= "<GetSeed()<Load("libgeant321"); +#endif - new TGeant3("C++ Interface to Geant3"); + new TGeant3("C++ Interface to Geant3"); - if (!gSystem->Getenv("CONFIG_FILE")) - { - TFile *rootfile = new TFile("galice.root", "recreate"); + AliRunLoader* rl=0x0; - rootfile->SetCompressionLevel(2); - } + 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 @@ -109,7 +164,7 @@ void Config() // Generator Configuration gAlice->SetDebug(1); - AliGenerator* gener = GeneratorFactory(run); + AliGenerator* gener = GeneratorFactory(srun); gener->SetOrigin(0, 0, 0); // vertex position gener->SetSigma(0, 0, 5.3); // Sigma in (X,Y,Z) (cm) on IP position gener->SetCutVertexZ(1.); // Truncate at 1 sigma @@ -117,16 +172,16 @@ void Config() gener->SetTrackingFlag(1); gener->Init(); - if (mag == k2kG) { + if (smag == k2kG) { comment = comment.Append(" | L3 field 0.2 T"); - } else if (mag == k4kG) { + } else if (smag == k4kG) { comment = comment.Append(" | L3 field 0.4 T"); - } else if (mag == k5kG) { + } else if (smag == k5kG) { comment = comment.Append(" | L3 field 0.5 T"); } - if (rad == kGluonRadiation) + if (srad == kGluonRadiation) { comment = comment.Append(" | Gluon Radiation On"); @@ -134,7 +189,7 @@ void Config() comment = comment.Append(" | Gluon Radiation Off"); } - if (geo == kHoles) + if (sgeo == kHoles) { comment = comment.Append(" | Holes for PHOS/RICH"); @@ -142,13 +197,12 @@ void Config() comment = comment.Append(" | No holes for PHOS/RICH"); } - printf("\n \n Comment: %s \n \n", (char*) comment); + printf("\n \n Comment: %s \n \n", comment.Data()); // Field (L3 0.4 T) - AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., mag); - rootfile->cd(); - gAlice->SetField(field); + AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., smag); + rl->CdGAFile(); // Int_t iABSO = 1; @@ -212,7 +266,7 @@ void Config() //=================== FRAME parameters ============================ AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame"); - if (geo == kHoles) { + if (sgeo == kHoles) { FRAME->SetHoles(1); } else { FRAME->SetHoles(0); @@ -332,7 +386,7 @@ void Config() if (iTOF) { - if (geo == kHoles) { + if (sgeo == kHoles) { //=================== TOF parameters ============================ AliTOF *TOF = new AliTOFv2FHoles("TOF", "TOF with Holes"); } else { @@ -364,7 +418,7 @@ void Config() // Select the gas mixture (0: 97% Xe + 3% isobutane, 1: 90% Xe + 10% CO2) TRD->SetGasMix(1); - if (geo == kHoles) { + if (sgeo == kHoles) { // With hole in front of PHOS TRD->SetPHOShole(); // With hole in front of RICH @@ -437,13 +491,15 @@ Float_t EtaToTheta(Float_t arg){ -AliGenerator* GeneratorFactory(PprRun_t run) { +AliGenerator* GeneratorFactory(PprRun_t srun) { Int_t isw = 3; - if (rad == kNoGluonRadiation) isw = 0; + if (srad == kNoGluonRadiation) isw = 0; - switch (run) { + AliGenerator * gGener = 0x0; + switch (srun) { case test50: + { comment = comment.Append(":HIJINGparam test 50 particles"); AliGenHIJINGpara *gener = new AliGenHIJINGpara(50); gener->SetMomentumRange(0, 999999.); @@ -452,8 +508,11 @@ AliGenerator* GeneratorFactory(PprRun_t run) { Float_t thmin = EtaToTheta(8); // theta min. <---> eta max Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min gener->SetThetaRange(thmin,thmax); + gGener=gener; + } break; case kParam_8000: + { comment = comment.Append(":HIJINGparam N=8000"); AliGenHIJINGpara *gener = new AliGenHIJINGpara(86030); gener->SetMomentumRange(0, 999999.); @@ -462,8 +521,11 @@ AliGenerator* GeneratorFactory(PprRun_t run) { Float_t thmin = EtaToTheta(8); // theta min. <---> eta max Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min gener->SetThetaRange(thmin,thmax); + gGener=gener; + } break; case kParam_4000: + { comment = comment.Append("HIJINGparam N=4000"); AliGenHIJINGpara *gener = new AliGenHIJINGpara(43015); gener->SetMomentumRange(0, 999999.); @@ -472,8 +534,11 @@ AliGenerator* GeneratorFactory(PprRun_t run) { Float_t thmin = EtaToTheta(8); // theta min. <---> eta max Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min gener->SetThetaRange(thmin,thmax); + gGener=gener; + } break; case kParam_2000: + { comment = comment.Append("HIJINGparam N=2000"); AliGenHIJINGpara *gener = new AliGenHIJINGpara(21507); gener->SetMomentumRange(0, 999999.); @@ -482,59 +547,83 @@ AliGenerator* GeneratorFactory(PprRun_t run) { Float_t thmin = EtaToTheta(8); // theta min. <---> eta max Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min gener->SetThetaRange(thmin,thmax); + gGener=gener; + } break; // // Hijing Central // case kHijing_cent1: + { comment = comment.Append("HIJING cent1"); AliGenHijing *gener = HijingStandard(); // impact parameter range gener->SetImpactParameterRange(0., 5.); + gGener=gener; + } break; case kHijing_cent2: + { comment = comment.Append("HIJING cent2"); AliGenHijing *gener = HijingStandard(); // impact parameter range gener->SetImpactParameterRange(0., 2.); + gGener=gener; break; + } // // Hijing Peripheral // case kHijing_per1: + { comment = comment.Append("HIJING per1"); AliGenHijing *gener = HijingStandard(); // impact parameter range gener->SetImpactParameterRange(5., 8.6); + gGener=gener; + } break; case kHijing_per2: + { comment = comment.Append("HIJING per2"); AliGenHijing *gener = HijingStandard(); // impact parameter range gener->SetImpactParameterRange(8.6, 11.2); + gGener=gener; + } break; case kHijing_per3: + { comment = comment.Append("HIJING per3"); AliGenHijing *gener = HijingStandard(); // impact parameter range gener->SetImpactParameterRange(11.2, 13.2); + gGener=gener; + } break; case kHijing_per4: + { comment = comment.Append("HIJING per4"); AliGenHijing *gener = HijingStandard(); // impact parameter range gener->SetImpactParameterRange(13.2, 15.); + gGener=gener; + } break; case kHijing_per5: + { comment = comment.Append("HIJING per5"); AliGenHijing *gener = HijingStandard(); // impact parameter range gener->SetImpactParameterRange(15., 100.); + gGener=gener; + } break; // // Jet-Jet // case kHijing_jj25: + { comment = comment.Append("HIJING Jet 25 GeV"); AliGenHijing *gener = HijingStandard(); // impact parameter range @@ -546,9 +635,12 @@ AliGenerator* GeneratorFactory(PprRun_t run) { gener->SetSimpleJets(!isw); gener->SetJetEtaRange(-0.3,0.3); gener->SetJetPhiRange(75., 165.); + gGener=gener; + } break; case kHijing_jj50: + { comment = comment.Append("HIJING Jet 50 GeV"); AliGenHijing *gener = HijingStandard(); // impact parameter range @@ -560,9 +652,12 @@ AliGenerator* GeneratorFactory(PprRun_t run) { gener->SetSimpleJets(!isw); gener->SetJetEtaRange(-0.3,0.3); gener->SetJetPhiRange(75., 165.); + gGener=gener; + } break; case kHijing_jj75: + { comment = comment.Append("HIJING Jet 75 GeV"); AliGenHijing *gener = HijingStandard(); // impact parameter range @@ -574,9 +669,12 @@ AliGenerator* GeneratorFactory(PprRun_t run) { gener->SetSimpleJets(!isw); gener->SetJetEtaRange(-0.3,0.3); gener->SetJetPhiRange(75., 165.); + gGener=gener; + } break; case kHijing_jj100: + { comment = comment.Append("HIJING Jet 100 GeV"); AliGenHijing *gener = HijingStandard(); // impact parameter range @@ -588,9 +686,12 @@ AliGenerator* GeneratorFactory(PprRun_t run) { gener->SetSimpleJets(!isw); gener->SetJetEtaRange(-0.3,0.3); gener->SetJetPhiRange(75., 165.); + gGener=gener; + } break; case kHijing_jj200: + { comment = comment.Append("HIJING Jet 200 GeV"); AliGenHijing *gener = HijingStandard(); // impact parameter range @@ -602,11 +703,14 @@ AliGenerator* GeneratorFactory(PprRun_t run) { gener->SetSimpleJets(!isw); gener->SetJetEtaRange(-0.3,0.3); gener->SetJetPhiRange(75., 165.); + gGener=gener; + } break; // // Gamma-Jet // case kHijing_gj25: + { comment = comment.Append("HIJING Gamma 25 GeV"); AliGenHijing *gener = HijingStandard(); // impact parameter range @@ -618,9 +722,12 @@ AliGenerator* GeneratorFactory(PprRun_t run) { gener->SetSimpleJets(!isw); gener->SetJetEtaRange(-0.12, 0.12); gener->SetJetPhiRange(220., 320.); + gGener=gener; + } break; case kHijing_gj50: + { comment = comment.Append("HIJING Gamma 50 GeV"); AliGenHijing *gener = HijingStandard(); // impact parameter range @@ -632,9 +739,12 @@ AliGenerator* GeneratorFactory(PprRun_t run) { gener->SetSimpleJets(!isw); gener->SetJetEtaRange(-0.12, 0.12); gener->SetJetPhiRange(220., 320.); + gGener=gener; + } break; case kHijing_gj75: + { comment = comment.Append("HIJING Gamma 75 GeV"); AliGenHijing *gener = HijingStandard(); // impact parameter range @@ -646,9 +756,12 @@ AliGenerator* GeneratorFactory(PprRun_t run) { gener->SetSimpleJets(!isw); gener->SetJetEtaRange(-0.12, 0.12); gener->SetJetPhiRange(220., 320.); + gGener=gener; + } break; case kHijing_gj100: + { comment = comment.Append("HIJING Gamma 100 GeV"); AliGenHijing *gener = HijingStandard(); // impact parameter range @@ -660,9 +773,12 @@ AliGenerator* GeneratorFactory(PprRun_t run) { gener->SetSimpleJets(!isw); gener->SetJetEtaRange(-0.12, 0.12); gener->SetJetPhiRange(220., 320.); + gGener=gener; + } break; case kHijing_gj200: + { comment = comment.Append("HIJING Gamma 200 GeV"); AliGenHijing *gener = HijingStandard(); // impact parameter range @@ -674,8 +790,11 @@ AliGenerator* GeneratorFactory(PprRun_t run) { gener->SetSimpleJets(!isw); gener->SetJetEtaRange(-0.12, 0.12); gener->SetJetPhiRange(220., 320.); + gGener=gener; + } break; case kHijing_pA: + { comment = comment.Append("HIJING pA"); AliGenCocktail *gener = new AliGenCocktail(); @@ -712,9 +831,26 @@ AliGenerator* GeneratorFactory(PprRun_t run) { gray->SetDebug(1); gener->AddGenerator(hijing,"Hijing pPb", 1); gener->AddGenerator(gray, "Gray Particles",1); + gGener=gener; + } break; + case kPythia: + { + comment = comment.Append(":Pythia p-p @ 14 TeV"); + AliGenPythia *gener = new AliGenPythia(-1); + gener->SetMomentumRange(0,999999); + gener->SetPhiRange(-180,180); + gener->SetThetaRange(0., 180.); + gener->SetYRange(-12,12); + gener->SetPtRange(0,1000); + gener->SetStrucFunc(kCTEQ4L); + gener->SetProcess(kPyMb); + gener->SetEnergyCMS(14000.); + gGener=gener; + } + break; } - return gener; + return gGener; } AliGenHijing* HijingStandard() diff --git a/macros/Config_PythiaHeavyFlavours.C b/macros/Config_PythiaHeavyFlavours.C index 44dca589172..8e1d4dc5155 100644 --- a/macros/Config_PythiaHeavyFlavours.C +++ b/macros/Config_PythiaHeavyFlavours.C @@ -11,6 +11,40 @@ // - Current version of the ALICE PPR (Chapter 6.5) // // at: http://alice.web.cern.ch/Alice/ppr/web/CurrentVersion.html // //*******************************************************************// +#if !defined(__CINT__) || defined(__MAKECINT__) +#include +#include +#include +#include +#include +#include +#include "STEER/AliRunLoader.h" +#include "STEER/AliRun.h" +#include "STEER/AliConfig.h" +#include "PYTHIA6/AliDecayerPythia.h" +#include "PYTHIA6/AliGenPythia.h" +#include "STEER/AliMagFMaps.h" +#include "STRUCT/AliBODY.h" +#include "STRUCT/AliMAG.h" +#include "STRUCT/AliABSOv0.h" +#include "STRUCT/AliDIPOv2.h" +#include "STRUCT/AliHALL.h" +#include "STRUCT/AliFRAMEv2.h" +#include "STRUCT/AliSHILv2.h" +#include "STRUCT/AliPIPEv0.h" +#include "ITS/AliITSvPPRasymm.h" +#include "TPC/AliTPCv2.h" +#include "TOF/AliTOFv2.h" +#include "RICH/AliRICHv1.h" +#include "ZDC/AliZDCv1.h" +#include "TRD/AliTRDv1.h" +#include "FMD/AliFMDv0.h" +#include "MUON/AliMUONv1.h" +#include "PHOS/AliPHOSv1.h" +#include "PMD/AliPMDv1.h" +#include "START/AliSTARTv1.h" +#include "CRT/AliCRTv1.h" +#endif //--- Heavy Flavour Production --- enum ProcessHvFl_t @@ -34,6 +68,9 @@ enum Mag_t { k2kG, k4kG, k5kG }; +//--- Functions --- +AliGenPythia *PythiaHVQ(ProcessHvFl_t proc); + // This part for configuration static ProcessHvFl_t procHvFl = kCharmPbPb5500; @@ -63,18 +100,36 @@ void Config() UInt_t procid=gSystem->GetPid(); UInt_t seed=curtime-procid; + // gRandom->SetSeed(seed); gRandom->SetSeed(12345); cerr<<"Seed for random number generation= "<Load("libgeant321"); +#endif new TGeant3("C++ Interface to Geant3"); //======================================================================= // Create the output file - TFile *rootfile = new TFile("galice.root","recreate"); - rootfile->SetCompressionLevel(2); + + + 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); + // //======================================================================= // ************* STEERING parameters FOR ALICE SIMULATION ************** @@ -205,10 +260,10 @@ void Config() } else if (mag == k5kG) { comment = comment.Append(" | L3 field 0.5 T"); } - printf("\n \n Comment: %s \n \n", (char*) comment); + printf("\n \n Comment: %s \n \n", comment.Data()); AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., mag); - rootfile->cd(); + rl->CdGAFile(); gAlice->SetField(field); @@ -467,10 +522,12 @@ void Config() // AliGenPythia *PythiaHVQ(ProcessHvFl_t proc) { + AliGenPythia * gener = 0x0; + switch(proc) { case kCharmPbPb5500: comment = comment.Append(" Charm in Pb-Pb at 5.5 TeV"); - AliGenPythia *gener = new AliGenPythia(nEvts); + gener = new AliGenPythia(nEvts); gener->SetProcess(kPyCharmPbPbMNR); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(2.1,-1.0); @@ -479,7 +536,7 @@ AliGenPythia *PythiaHVQ(ProcessHvFl_t proc) { break; case kCharmpPb8800: comment = comment.Append(" Charm in p-Pb at 8.8 TeV"); - AliGenPythia *gener = new AliGenPythia(nEvts); + gener = new AliGenPythia(nEvts); gener->SetProcess(kPyCharmpPbMNR); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(2.1,-1.0); @@ -489,7 +546,7 @@ AliGenPythia *PythiaHVQ(ProcessHvFl_t proc) { break; case kCharmpp14000: comment = comment.Append(" Charm in pp at 14 TeV"); - AliGenPythia *gener = new AliGenPythia(nEvts); + gener = new AliGenPythia(nEvts); gener->SetProcess(kPyCharmppMNR); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(2.1,-1.0); @@ -497,7 +554,7 @@ AliGenPythia *PythiaHVQ(ProcessHvFl_t proc) { break; case kD0PbPb5500: comment = comment.Append(" D0 in Pb-Pb at 5.5 TeV"); - AliGenPythia *gener = new AliGenPythia(nEvts); + gener = new AliGenPythia(nEvts); gener->SetProcess(kPyD0PbPbMNR); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(2.1,-1.0); @@ -506,7 +563,7 @@ AliGenPythia *PythiaHVQ(ProcessHvFl_t proc) { break; case kD0pPb8800: comment = comment.Append(" D0 in p-Pb at 8.8 TeV"); - AliGenPythia *gener = new AliGenPythia(nEvts); + gener = new AliGenPythia(nEvts); gener->SetProcess(kPyD0pPbMNR); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(2.1,-1.0); @@ -516,7 +573,7 @@ AliGenPythia *PythiaHVQ(ProcessHvFl_t proc) { break; case kD0pp14000: comment = comment.Append(" D0 in pp at 14 TeV"); - AliGenPythia *gener = new AliGenPythia(nEvts); + gener = new AliGenPythia(nEvts); gener->SetProcess(kPyD0ppMNR); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(2.1,-1.0); @@ -533,7 +590,7 @@ AliGenPythia *PythiaHVQ(ProcessHvFl_t proc) { break; case kBeautypPb8800: comment = comment.Append(" Beauty in p-Pb at 8.8 TeV"); - AliGenPythia *gener = new AliGenPythia(nEvts); + gener = new AliGenPythia(nEvts); gener->SetProcess(kPyBeautypPbMNR); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(2.75,-1.0); @@ -543,7 +600,7 @@ AliGenPythia *PythiaHVQ(ProcessHvFl_t proc) { break; case kBeautypp14000: comment = comment.Append(" Beauty in pp at 14 TeV"); - AliGenPythia *gener = new AliGenPythia(nEvts); + gener = new AliGenPythia(nEvts); gener->SetProcess(kPyBeautyppMNR); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(2.75,-1.0); diff --git a/macros/Config_gener.C b/macros/Config_gener.C index ab399a06b14..352f788678d 100644 --- a/macros/Config_gener.C +++ b/macros/Config_gener.C @@ -1,27 +1,79 @@ +#if !defined(__CINT__) || defined(__MAKECINT__) +#include +#include +#include +#include +#include +#include "STEER/AliRunLoader.h" +#include "STEER/AliRun.h" +#include "STEER/AliConfig.h" +#include "PYTHIA6/AliDecayerPythia.h" +#include "EVGEN/AliGenCocktail.h" +#include "EVGEN/AliGenFixed.h" +#include "EVGEN/AliGenBox.h" +#include "EVGEN/AliGenScan.h" +#include "EVGEN/AliGenHIJINGpara.h" +#include "THijing/AliGenHijing.h" +#include "PYTHIA6/AliGenPythia.h" +#include "EVGEN/AliGenParam.h" +#include "EVGEN/AliGenMUONlib.h" +#include "EVGEN/AliGenPHOSlib.h" +#include "EVGEN/AliGenGSIlib.h" +#include "EVGEN/AliGenFLUKAsource.h" +#include "EVGEN/AliGenExtFile.h" +#include "EVGEN/AliGenHalo.h" +#include "EVGEN/AliGenReaderTreeK.h" +#include "STRUCT/AliBODY.h" +#include "STRUCT/AliMAG.h" +#endif + enum gentype_t {hijing, hijingParam, gun, box, pythia, param1, param2, param3, param4, cocktail, fluka, halo, ntuple, scan, doublescan}; gentype_t gentype=param4; -ntracks=1; +Int_t ntracks=1; void Config() { -new TGeant3("C++ Interface to Geant3"); + // Set Random Number seed + gRandom->SetSeed(12345); //Set 0 to use the current time + cout<<"Seed for random number generation= "<GetSeed()<Load("libgeant321"); +#endif + + new TGeant3("C++ Interface to Geant3"); //======================================================================= // Create the output file -TFile *rootfile = new TFile("galice.root","recreate"); -rootfile->SetCompressionLevel(2); + 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 - AliDecayer* decayer = new AliDecayerPythia(); - decayer->SetForceDecay(kAll); - decayer->Init(); - gMC->SetExternalDecayer(decayer); + AliDecayer* decayer = new AliDecayerPythia(); + decayer->SetForceDecay(kAll); + decayer->Init(); + gMC->SetExternalDecayer(decayer); // @@ -31,332 +83,370 @@ rootfile->SetCompressionLevel(2); // --- 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); + 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); + - - switch(gentype) - { - case gun: + AliGenerator * gGener = 0x0; + switch(gentype) + { + case gun: //********************************************* // Example for Fixed Particle Gun //********************************************* - AliGenFixed *gener = new AliGenFixed(ntracks); - gener->SetMomentum(50); - gener->SetPhi(180.); - gener->SetTheta(5.); - gener->SetOrigin(0,0,0); //vertex position - gener->SetPart(13); //GEANT particle type - break; - case box: + { + AliGenFixed *gener = new AliGenFixed(ntracks); + gener->SetMomentum(50); + gener->SetPhi(180.); + gener->SetTheta(5.); + gener->SetOrigin(0,0,0); //vertex position + gener->SetPart(13); //GEANT particle type + gGener = gener; + } + break; + case box: //********************************************* // Example for Moving Particle Gun * //********************************************* - AliGenBox *gener = new AliGenBox(ntracks); - gener->SetMomentumRange(3,4); - gener->SetPhiRange(0,360); - gener->SetThetaRange(90, 180. ); - gener->SetOrigin(0,0,0); - //vertex position - gener->SetSigma(0,0,0); //Sigma in (X,Y,Z) (cm) on IP position - gener->SetPart(5); //GEANT particle type - break; - case scan: + { + AliGenBox *gener = new AliGenBox(ntracks); + gener->SetMomentumRange(3,4); + gener->SetPhiRange(0,360); + gener->SetThetaRange(90, 180. ); + gener->SetOrigin(0,0,0); + //vertex position + gener->SetSigma(0,0,0); //Sigma in (X,Y,Z) (cm) on IP position + gener->SetPart(5); //GEANT particle type + gGener = gener; + } + break; + case scan: //********************************************* // Scanning on a grid * //********************************************* - AliGenScan *gener = new AliGenScan(-1); - gener->SetMomentumRange(4,4); - gener->SetPhiRange(0,360); - gener->SetThetaRange(9,9); - //vertex position - gener->SetSigma(6,6,0); //Sigma in (X,Y,Z) (cm) on IP position - gener->SetPart(5); - gener->SetRange(20, -100, 100, 20, -100, 100, 1, 500, 500); - break; + { + AliGenScan *gener = new AliGenScan(-1); + gener->SetMomentumRange(4,4); + gener->SetPhiRange(0,360); + gener->SetThetaRange(9,9); + //vertex position + gener->SetSigma(6,6,0); //Sigma in (X,Y,Z) (cm) on IP position + gener->SetPart(5); + gener->SetRange(20, -100, 100, 20, -100, 100, 1, 500, 500); + gGener = gener; + } + break; - case hijingParam: - AliGenHIJINGpara *gener = new AliGenHIJINGpara(ntracks); - gener->SetMomentumRange(0,999); - gener->SetPhiRange(0,360); - gener->SetThetaRange(2,10); - gener->SetOrigin(0,0,0); //vertex position - gener->SetSigma(0,0,0); //Sigma in (X,Y,Z) (cm) on IP position - break; - case hijing: - AliGenHijing *gener = new AliGenHijing(-1); + case hijingParam: + { + AliGenHIJINGpara *gener = new AliGenHIJINGpara(ntracks); + gener->SetMomentumRange(0,999); + gener->SetPhiRange(0,360); + gener->SetThetaRange(2,10); + gener->SetOrigin(0,0,0); //vertex position + gener->SetSigma(0,0,0); //Sigma in (X,Y,Z) (cm) on IP position + gGener = gener; + } + break; + case hijing: + { + AliGenHijing *gener = new AliGenHijing(-1); // centre of mass energy - gener->SetEnergyCMS(5500); + gener->SetEnergyCMS(5500); // reference frame - gener->SetReferenceFrame("CMS "); + gener->SetReferenceFrame("CMS "); // projectile - gener->SetProjectile("A ", 208, 82); - gener->SetTarget ("A ", 208, 82); + gener->SetProjectile("A ", 208, 82); + gener->SetTarget ("A ", 208, 82); // impact parameter range - gener->SetImpactParameterRange(0, 3.); + gener->SetImpactParameterRange(0, 3.); // evaluate cross section before run - gener->SetEvaluate(1); + gener->SetEvaluate(1); // tell hijing to keep the full parent child chain - gener->KeepFullEvent(); + gener->KeepFullEvent(); // enable jet quenching - gener->SetJetQuenching(1); + gener->SetJetQuenching(1); // enable shadowing - gener->SetShadowing(1); + gener->SetShadowing(1); // neutral pion and heavy particle decays switched off - gener->SetDecaysOff(1); + gener->SetDecaysOff(1); // trigger - gener->SetTrigger(0); + gener->SetTrigger(0); // kinematic selection - gener->SetSelectAll(0); + gener->SetSelectAll(0); // momentum range - gener->SetMomentumRange(0,999); + gener->SetMomentumRange(0,999); // phi range - gener->SetPhiRange(-180,180); + gener->SetPhiRange(-180,180); // theta range - gener->SetThetaRange(0,180.); + gener->SetThetaRange(0,180.); // select flavor (0: no, 4: charm+beauty, 5:beauty) - gener->SetFlavor(4); + gener->SetFlavor(4); // - gener->SetOrigin(0., 0.0 ,0); - gener->SetSigma(0,0,5.3); - gener->SetVertexSmear(kPerEvent); + gener->SetOrigin(0., 0.0 ,0); + gener->SetSigma(0,0,5.3); + gener->SetVertexSmear(kPerEvent); // no tracking - gener->SetTrackingFlag(0); - break; + gener->SetTrackingFlag(0); + gGener = gener; + } + break; - case pythia: + case pythia: //******************************************** // Example for Charm Production with Pythia * //******************************************** - AliGenPythia *gener = new AliGenPythia(-1); + { + AliGenPythia *gener = new AliGenPythia(-1); // final state kinematic cuts - gener->SetMomentumRange(0,999); - gener->SetPhiRange(-180,180); - gener->SetThetaRange(0., 180.); - gener->SetYRange(-10,10); - gener->SetPtRange(0,100); + gener->SetMomentumRange(0,999); + gener->SetPhiRange(-180,180); + gener->SetThetaRange(0., 180.); + gener->SetYRange(-10,10); + gener->SetPtRange(0,100); // vertex position and smearing - gener->SetOrigin(0,0,0); // vertex position - gener->SetVertexSmear(kPerEvent); - gener->SetSigma(0,0,5.6); // Sigma in (X,Y,Z) (cm) on IP position -// Structure function -// DO_Set_1 -// GRV_LO -// GRV_HO -// MRS_D_minus -// MRS_D0 -// MRS_G -// CTEQ_2pM -// CTEQ_4M - gener->SetStrucFunc(kGRV_HO); + gener->SetOrigin(0,0,0); // vertex position + gener->SetVertexSmear(kPerEvent); + gener->SetSigma(0,0,5.6); // Sigma in (X,Y,Z) (cm) on IP position +// Structure function. See the list in EVGEN/AliStructFuncType.h + gener->SetStrucFunc(kGRVHO); // Select corection for nuclear structure functions // gener->SetNuclei(208,208); // -// Process type -// charm, beauty, charm_unforced, beauty_unforced, jpsi, jpsi_chi, mb - gener->SetProcess(kPyBeauty); +// Process type. See the list in PYTHIA6/AliPythia.h + gener->SetProcess(kPyBeauty); // // Pt transfer of the hard scattering - gener->SetPtHard(0.,5.); + gener->SetPtHard(0.,5.); // Decay type (semielectronic, semimuonic, nodecay) - gener->SetForceDecay(kSemiElectronic); + gener->SetForceDecay(kSemiElectronic); // Centre of mass energy - gener->SetEnergyCMS(5500.); + gener->SetEnergyCMS(5500.); // No Tracking - gener->SetTrackingFlag(0); - break; + gener->SetTrackingFlag(0); + gGener = gener; + } + break; - case param1: + case param1: //******************************************************* // Example for J/psi Production from Parameterisation // using default library (AliMUONlib) //******************************************************* - AliGenParam *gener = - new AliGenParam(ntracks, AliGenMUONlib::kUpsilon); - gener->SetMomentumRange(0,999); - gener->SetPtRange(0,999); - gener->SetPhiRange(-180, 180); - gener->SetYRange(2.5,4); - gener->SetCutOnChild(1); - gener->SetChildThetaRange(2,9); - gener->SetOrigin(0,0,0); //vertex position - gener->SetSigma(0,0,5.3); //Sigma in (X,Y,Z) (cm) on IP position - gener->SetForceDecay(kDiMuon); - gener->SetTrackingFlag(0); - break; + { + AliGenParam *gener = + new AliGenParam(ntracks, AliGenMUONlib::kUpsilon); + gener->SetMomentumRange(0,999); + gener->SetPtRange(0,999); + gener->SetPhiRange(-180, 180); + gener->SetYRange(2.5,4); + gener->SetCutOnChild(1); + gener->SetChildThetaRange(2,9); + gener->SetOrigin(0,0,0); //vertex position + gener->SetSigma(0,0,5.3); //Sigma in (X,Y,Z) (cm) on IP position + gener->SetForceDecay(kDiMuon); + gener->SetTrackingFlag(0); + gGener = gener; + } + break; - case param2: + case param2: //******************************************************* // Example for Omega Production from Parameterisation // specifying library. //******************************************************* - AliGenParam *gener = new AliGenParam(1000,new AliGenPHOSlib(), - AliGenPHOSlib::kOmega); - gener->SetWeighting(kNonAnalog); - gener->SetForceDecay(kNoDecay); - gener->SetPtRange(0,100); - gener->SetThetaRange(45,135); - gener->SetTrackingFlag(0); - break; + { + AliGenParam *gener = new AliGenParam(1000,new AliGenPHOSlib(), + AliGenPHOSlib::kOmega); + gener->SetWeighting(kNonAnalog); + gener->SetForceDecay(kNoDecay); + gener->SetPtRange(0,100); + gener->SetThetaRange(45,135); + gener->SetTrackingFlag(0); + gGener = gener; + } + break; - case param3: + case param3: //******************************************************* // Example for Upsilon Production from Parameterisation // specifying library. // GSI style //******************************************************* - AliGenParam *gener = new AliGenParam(1000,new AliGenGSIlib(), - AliGenGSIlib::kUpsilon, "MUON"); - gener->SetMomentumRange(0,999); - gener->SetPtRange(0,999); - gener->SetPhiRange(-180, 180); - gener->SetYRange(2.5,4); - gener->SetCutOnChild(1); - gener->SetChildThetaRange(2,9); - gener->SetOrigin(0,0,0); //vertex position - gener->SetSigma(0,0,5.3); //Sigma in (X,Y,Z) (cm) on IP position - gener->SetForceDecay(kDiMuon); - gener->SetTrackingFlag(0); - break; + { + AliGenParam *gener = new AliGenParam(1000,new AliGenGSIlib(), + AliGenGSIlib::kUpsilon, "MUON"); + gener->SetMomentumRange(0,999); + gener->SetPtRange(0,999); + gener->SetPhiRange(-180, 180); + gener->SetYRange(2.5,4); + gener->SetCutOnChild(1); + gener->SetChildThetaRange(2,9); + gener->SetOrigin(0,0,0); //vertex position + gener->SetSigma(0,0,5.3); //Sigma in (X,Y,Z) (cm) on IP position + gener->SetForceDecay(kDiMuon); + gener->SetTrackingFlag(0); + gGener = gener; + } + break; - case param4: + case param4: //******************************************************* // Example for Omega Production from Parameterisation // specifying library. // The alternative way. //******************************************************* - AliGenLib* Lib=new AliGenPHOSlib(); - Int_t iOmega = AliGenPHOSlib::kOmega; - AliGenParam *gener = new AliGenParam(50, iOmega, - Lib->GetPt(iOmega, ""), - Lib->GetY (iOmega, ""), - Lib->GetIp(iOmega, "")); - gener->SetWeighting(kNonAnalog); - gener->SetForceDecay(kNoDecay); - gener->SetTrackingFlag(0); - break; - - case fluka: + { + AliGenLib* Lib=new AliGenPHOSlib(); + Int_t iOmega = AliGenPHOSlib::kOmega; + AliGenParam *gener = new AliGenParam(50, iOmega, + Lib->GetPt(iOmega, ""), + Lib->GetY (iOmega, ""), + Lib->GetIp(iOmega, "")); + gener->SetPtRange(0,999); + gener->SetWeighting(kNonAnalog); + gener->SetForceDecay(kNoDecay); + gener->SetTrackingFlag(0); + gGener = gener; + } + break; + + case fluka: //******************************************************* // Example for a FLUKA Boundary Source * //******************************************************* - AliGenFLUKAsource *gener = new AliGenFLUKAsource(-1); - gener->SetFileName("$(ALICE_ROOT)/data/all32.root"); - gener->SetPartFlag(9); - gener->SetAgeMax(1.e-5); + { + AliGenFLUKAsource *gener = new AliGenFLUKAsource(-1); + gener->SetFileName("$(ALICE_ROOT)/data/all32.root"); + gener->SetPartFlag(9); + gener->SetAgeMax(1.e-5); // 31.7 events - gener->SetFraction(0.0315); + gener->SetFraction(0.0315); // gener->SetFraction(0.75*0.0315); - rootfile->cd(); + rl->CdGAFile(); // gener->SetPartFlag(10); - gener->SetMomentumRange(0,999); - gener->SetPhiRange(0,360); - gener->SetThetaRange(0., 180.); - gener->SetAgeMax(1.e-5); + gener->SetMomentumRange(0,999); + gener->SetPhiRange(0,360); + gener->SetThetaRange(0., 180.); + gener->SetAgeMax(1.e-5); // 31.7 events // gener->SetFraction(0.0315); - break; + gGener = gener; + } + break; - case ntuple: + case ntuple: //******************************************************* // Example for reading from a external file * //******************************************************* - AliGenExtFile *gener = new AliGenExtFile(-1); - gener->SetFileName("$(ALICE_ROOT)/data/dtujet93.root"); - gener->SetVertexSmear(kPerEvent); - gener->SetTrackingFlag(1); - break; + { + AliGenExtFile *gener = new AliGenExtFile(-1); + gener->SetVertexSmear(kPerEvent); + gener->SetTrackingFlag(1); + + AliGenReaderTreeK * reader = new AliGenReaderTreeK(); + reader->SetFileName("$(ALICE_ROOT)/data/dtujet93.root"); + gener->SetReader(reader); + gGener = gener; + } + break; - case halo: + case halo: //******************************************************* // Example for Tunnel Halo Source * //******************************************************* - AliGenHalo *gener = new AliGenHalo(ntracks); - gener->SetFileName("/h1/morsch/marsip/marsip5.mu"); - break; - - case cocktail: + { + AliGenHalo *gener = new AliGenHalo(ntracks); + gener->SetFileName("/h1/morsch/marsip/marsip5.mu"); + gGener = gener; + } + break; + + case cocktail: //******************************************************* // Example for a Cocktail * //******************************************************* - - AliGenCocktail *gener = new AliGenCocktail(); + { + AliGenCocktail *gener = new AliGenCocktail(); - gener->SetPhiRange(0,360); - gener->SetYRange(2.5,4); - gener->SetThetaRange(2,9); - gener->SetPtRange(0,10); - gener->SetOrigin(0,0,0); //vertex position - gener->SetSigma(0,0,0); //Sigma in (X,Y,Z) (cm) on IP position - gener->SetMomentumRange(0,999); + gener->SetPhiRange(0,360); + gener->SetYRange(2.5,4); + gener->SetThetaRange(2,9); + gener->SetPtRange(0,10); + gener->SetOrigin(0,0,0); //vertex position + gener->SetSigma(0,0,0); //Sigma in (X,Y,Z) (cm) on IP position + gener->SetMomentumRange(0,999); - AliGenParam *jpsi = new AliGenParam(1,jpsi_p); - jpsi->SetForceDecay(dimuon); - jpsi->SetCutOnChild(1); + AliGenParam *jpsi = new AliGenParam(1,AliGenMUONlib::kJpsi); + jpsi->SetForceDecay(kDiMuon); + jpsi->SetCutOnChild(1); - AliGenFLUKAsource *bg = new AliGenFLUKAsource(-1); - bg->AddFile("$(ALICE_ROOT)/data/all32.root"); - rootfile->cd(); - bg->SetPartFlag(9); - bg->SetAgeMax(1.e-5); + AliGenFLUKAsource *bg = new AliGenFLUKAsource(-1); + bg->AddFile("$(ALICE_ROOT)/data/all32.root"); + rl->CdGAFile(); + bg->SetPartFlag(9); + bg->SetAgeMax(1.e-5); // 31.7 events // gener->SetFraction(0.0315); - bg->SetFraction(0.01*0.0315); + bg->SetFraction(0.01*0.0315); - gener->AddGenerator(jpsi,"J/Psi", 1); - gener->AddGenerator(bg,"Background",1); + gener->AddGenerator(jpsi,"J/Psi", 1); + gener->AddGenerator(bg,"Background",1); - break; - } + gGener = gener; + } + break; + } // Activate this line if you want the vertex smearing to happen // track by track // // gener->SetVertexSmear(kPerTrack); -gener->Init(); + gGener->Init(); -gAlice->SetField(-999,2); //Specify maximum magnetic field in Tesla (neg. ==> default field) + gAlice->SetField(-999,2); //Specify maximum magnetic field in Tesla (neg. ==> default field) -Int_t iMAG=1; + Int_t iMAG=1; + rl->CdGAFile(); //=================== Alice BODY parameters ============================= -AliBODY *BODY = new AliBODY("BODY","Alice envelop"); + AliBODY *BODY = new AliBODY("BODY","Alice envelop"); -if(iMAG) { + if(iMAG) { //=================== MAG parameters ============================ // --- Start with Magnet since detector layouts may be depending --- // --- on the selected Magnet dimensions --- -AliMAG *MAG = new AliMAG("MAG","Magnet"); -} + AliMAG *MAG = new AliMAG("MAG","Magnet"); + } } diff --git a/macros/Config_pp.C b/macros/Config_pp.C deleted file mode 100644 index a01615c3b6c..00000000000 --- a/macros/Config_pp.C +++ /dev/null @@ -1,677 +0,0 @@ -enum PprRun_t -{ - test50, kPythia, - 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_jj125, - kHijing_gj25, kHijing_gj50, kHijing_gj75, kHijing_gj100, kHijing_gj125 -}; - -enum PprGeo_t -{ - kHoles, kNoHoles -}; - -enum PprRad_t -{ - kGluonRadiation, kNoGluonRadiation -}; - - -// This part for configuration -static PprRun_t run = kPythia; -static PprGeo_t geo = kNoHoles; -static PprRad_t rad = kGluonRadiation; -// Comment line -static TString comment; - - - - -void Config() -{ - - // 7-DEC-2000 09:00 - // Switch on Transition adiation 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); - - - -/* - // TEMPORARY TO BE ELIMINATED WHEN RUNNING WITH ALIEN - TDatime dt; - UInt_t curtime=dt.Get(); - UInt_t procid=gSystem->GetPid(); - UInt_t seed=curtime-procid; - - gRandom->SetSeed(seed); - cerr<<"Seed for random number generation= "<Getenv("CONFIG_FILE")) - { - TFile *rootfile = new TFile("galice.root", "recreate"); - - rootfile->SetCompressionLevel(2); - } - - - // - // Set External decayer - AliDecayer *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); - - - - // Generator Configuration - gAlice->SetDebug(1); - AliGenerator* gener = GeneratorFactory(run); - gener->SetOrigin(0, 0, 0); // vertex position - gener->SetSigma(0, 0, 5.3); // Sigma in (X,Y,Z) (cm) on IP position - gener->SetCutVertexZ(1.); // Truncate at 1 sigma - gener->SetVertexSmear(kPerEvent); - gener->SetTrackingFlag(1); - gener->Init(); - - if (rad == kGluonRadiation) - { - comment = comment.Append(" | Gluon Radiation On"); - - } else { - comment = comment.Append(" | Gluon Radiation Off"); - } - - if (geo == kHoles) - { - comment = comment.Append(" | Holes for PHOS/RICH"); - - } else { - comment = comment.Append(" | No holes for PHOS/RICH"); - } - - printf("\n \n Comment: %s \n \n", (char*) comment); - - - // Field (L3 0.4 T) - - AliMagFCM* field = new AliMagFCM( - "Map2","$(ALICE_ROOT)/data/field01.dat", 2, 1., 10.); - field->SetSolenoidField(4.); - gAlice->SetField(field); - - - // - Int_t iABSO = 1; - Int_t iCRT = 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 iRICH = 1; - Int_t iSHIL = 1; - Int_t iSTART = 1; - Int_t iTOF = 1; - Int_t iTPC = 1; - Int_t iTRD = 1; - Int_t iZDC = 1; - Int_t iEMCAL = 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"); - } - - - 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(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 - // 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->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->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 AliTOFv4("TOF", "normal TOF"); - } - } - - if (iRICH) - { - //=================== RICH parameters =========================== - AliRICH *RICH = new AliRICHv1("RICH", "normal RICH"); - - } - - - if (iZDC) - { - //=================== ZDC parameters ============================ - - AliZDC *ZDC = new AliZDCv2("ZDC", "normal ZDC"); - } - - if (iCRT) - { - //=================== CRT parameters ============================ - - AliCRT *CRT = new AliCRTv1("CRT", "normal CRT"); - } - - 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 RICH - TRD->SetRICHhole(); - } - // Switch on TR - AliTRDsim *TRDsim = TRD->CreateTR(); - } - - if (iFMD) - { - //=================== FMD parameters ============================ - - AliFMD *FMD = new AliFMDv1("FMD", "normal FMD"); - FMD->SetRingsSi1(256); - FMD->SetRingsSi2(64); - FMD->SetSectorsSi1(20); - FMD->SetSectorsSi2(24); - } - - 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"); - 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); - } - - if (iEMCAL!=0 && iRICH==0) - { - //=================== START parameters ============================ - AliEMCAL *EMCAL = new AliEMCALv1("EMCAL", "EMCALArch1a"); - } - - if (iSTART) - { - //=================== START parameters ============================ - AliSTART *START = new AliSTARTv1("START", "START Detector"); - } - - -} - -Float_t EtaToTheta(Float_t arg){ - return (180./TMath::Pi())*2.*atan(exp(-arg)); -} - - - -AliGenerator* GeneratorFactory(PprRun_t run) { - Int_t isw = 3; - if (rad == kNoGluonRadiation) isw = 0; - - - switch (run) { - case test50: - comment = comment.Append(":HIJINGparam test 50 particles"); - AliGenHIJINGpara *gener = new AliGenHIJINGpara(50); - gener->SetMomentumRange(0, 999999.); - gener->SetPhiRange(-180., 180.); - // 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); - break; - case kPythia: - comment = comment.Append(":Pythia p-p @ 14 TeV"); - AliGenPythia *gener = new AliGenPythia(-1); - gener->SetMomentumRange(0,999999); - gener->SetPhiRange(-180,180); - gener->SetThetaRange(0., 180.); - gener->SetYRange(-12,12); - gener->SetPtRange(0,1000); - gener->SetStrucFunc(kCTEQ_4L); - gener->SetProcess(kPyMb); - gener->SetEnergyCMS(14000.); - break; - case kParam_8000: - comment = comment.Append(":HIJINGparam N=8000"); - AliGenHIJINGpara *gener = new AliGenHIJINGpara(86030); - gener->SetMomentumRange(0, 999999.); - gener->SetPhiRange(-180., 180.); - // 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); - break; - case kParam_4000: - comment = comment.Append("HIJINGparam N=4000"); - AliGenHIJINGpara *gener = new AliGenHIJINGpara(43015); - gener->SetMomentumRange(0, 999999.); - gener->SetPhiRange(-180., 180.); - // 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); - break; - case kParam_2000: - comment = comment.Append("HIJINGparam N=2000"); - AliGenHIJINGpara *gener = new AliGenHIJINGpara(21507); - gener->SetMomentumRange(0, 999999.); - gener->SetPhiRange(-180., 180.); - // 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); - break; - // - // Hijing Central - // - case kHijing_cent1: - comment = comment.Append("HIJING cent1"); - AliGenHijing *gener = HijingStandard(); - // impact parameter range - gener->SetImpactParameterRange(0., 5.); - break; - case kHijing_cent2: - comment = comment.Append("HIJING cent2"); - AliGenHijing *gener = HijingStandard(); - // impact parameter range - gener->SetImpactParameterRange(0., 2.); - break; - // - // Hijing Peripheral - // - case kHijing_per1: - comment = comment.Append("HIJING per1"); - AliGenHijing *gener = HijingStandard(); - // impact parameter range - gener->SetImpactParameterRange(5., 8.6); - break; - case kHijing_per2: - comment = comment.Append("HIJING per2"); - AliGenHijing *gener = HijingStandard(); - // impact parameter range - gener->SetImpactParameterRange(8.6, 11.2); - break; - case kHijing_per3: - comment = comment.Append("HIJING per3"); - AliGenHijing *gener = HijingStandard(); - // impact parameter range - gener->SetImpactParameterRange(11.2, 13.2); - break; - case kHijing_per4: - comment = comment.Append("HIJING per4"); - AliGenHijing *gener = HijingStandard(); - // impact parameter range - gener->SetImpactParameterRange(13.2, 15.); - break; - case kHijing_per5: - comment = comment.Append("HIJING per5"); - AliGenHijing *gener = HijingStandard(); - // impact parameter range - gener->SetImpactParameterRange(15., 100.); - break; - // - // Jet-Jet - // - case kHijing_jj25: - comment = comment.Append("HIJING Jet 25 GeV"); - AliGenHijing *gener = HijingStandard(); - // impact parameter range - gener->SetImpactParameterRange(0., 5.); - // trigger - gener->SetTrigger(1); - gener->SetPtMinJet(25.); - gener->SetRadiation(isw); - break; - case kHijing_jj50: - comment = comment.Append("HIJING Jet 50 GeV"); - AliGenHijing *gener = HijingStandard(); - // impact parameter range - gener->SetImpactParameterRange(0., 5.); - // trigger - gener->SetTrigger(1); - gener->SetPtMinJet(50.); - gener->SetRadiation(isw); - break; - case kHijing_jj75: - comment = comment.Append("HIJING Jet 75 GeV"); - AliGenHijing *gener = HijingStandard(); - // impact parameter range - gener->SetImpactParameterRange(0., 5.); - // trigger - gener->SetTrigger(1); - gener->SetPtMinJet(75.); - gener->SetRadiation(isw); - break; - case kHijing_jj100: - comment = comment.Append("HIJING Jet 100 GeV"); - AliGenHijing *gener = HijingStandard(); - // impact parameter range - gener->SetImpactParameterRange(0., 5.); - // trigger - gener->SetTrigger(1); - gener->SetPtMinJet(100.); - gener->SetRadiation(isw); - break; - case kHijing_jj125: - comment = comment.Append("HIJING Jet 125 GeV"); - AliGenHijing *gener = HijingStandard(); - // impact parameter range - gener->SetImpactParameterRange(0., 5.); - // trigger - gener->SetTrigger(1); - gener->SetPtMinJet(125.); - gener->SetRadiation(isw); - break; - // - // Gamma-Jet - // - case kHijing_gj25: - comment = comment.Append("HIJING Gamma 25 GeV"); - AliGenHijing *gener = HijingStandard(); - // impact parameter range - gener->SetImpactParameterRange(0., 5.); - // trigger - gener->SetTrigger(2); - gener->SetPtMinJet(25.); - gener->SetRadiation(isw); - break; - case kHijing_gj50: - comment = comment.Append("HIJING Gamma 50 GeV"); - AliGenHijing *gener = HijingStandard(); - // impact parameter range - gener->SetImpactParameterRange(0., 5.); - // trigger - gener->SetTrigger(2); - gener->SetPtMinJet(50.); - gener->SetRadiation(isw); - break; - case kHijing_gj75: - comment = comment.Append("HIJING Gamma 75 GeV"); - AliGenHijing *gener = HijingStandard(); - // impact parameter range - gener->SetImpactParameterRange(0., 5.); - // trigger - gener->SetTrigger(2); - gener->SetPtMinJet(75.); - gener->SetRadiation(isw); - break; - case kHijing_gj100: - comment = comment.Append("HIJING Gamma 100 GeV"); - AliGenHijing *gener = HijingStandard(); - // impact parameter range - gener->SetImpactParameterRange(0., 5.); - // trigger - gener->SetTrigger(2); - gener->SetPtMinJet(100.); - gener->SetRadiation(isw); - break; - case kHijing_gj125: - comment = comment.Append("HIJING Gamma 125 GeV"); - AliGenHijing *gener = HijingStandard(); - // impact parameter range - gener->SetImpactParameterRange(0., 5.); - // trigger - gener->SetTrigger(2); - gener->SetPtMinJet(125.); - gener->SetRadiation(isw); - break; - } - return gener; -} - -AliGenHijing* HijingStandard() -{ - 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); - // tell hijing to keep the full parent child chain - gener->KeepFullEvent(); - // enable jet quenching - gener->SetJetQuenching(1); - // enable shadowing - gener->SetShadowing(1); - // neutral pion and heavy particle decays switched off - gener->SetDecaysOff(1); - // Don't track spectators - gener->SetSpectators(0); - // kinematic selection - gener->SetSelectAll(0); - return gener; -} - -- 2.39.3