+// 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 <Riostream.h>
+#include <TRandom.h>
+#include <TSystem.h>
+#include <TVirtualMC.h>
+#include <TGeant3.h>
+#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
{
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= "<<gRandom->GetSeed()<<endl;
// libraries required by geant321
+#if defined(__CINT__)
gSystem->Load("libgeant321");
+#endif
new TGeant3("C++ Interface to Geant3");
- if (!gSystem->Getenv("CONFIG_FILE"))
- {
- cout<<"Config.C: Creating Run Loader ..."<<endl;
- AliRunLoader* rl = AliRunLoader::Open("galice.root",AliConfig::fgkDefaultEventFolderName,
- "recreate");
- if (rl == 0x0)
- {
- gAlice->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 ..."<<endl;
+ rl = AliRunLoader::Open("galice.root",
+ AliConfig::fgkDefaultEventFolderName,
+ "recreate");
+ if (rl == 0x0)
+ {
+ gAlice->Fatal("Config.C","Can not instatiate the Run Loader");
+ return;
+ }
+ rl->SetCompressionLevel(2);
+ rl->SetNumberOfEventsPerFile(3);
+ gAlice->SetRunLoader(rl);
//
// Set External decayer
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.
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");
if (iEMCAL)
{
//=================== EMCAL parameters ============================
- AliEMCAL *EMCAL = new AliEMCALv1("EMCAL", "EMCALArch1a");
+ AliEMCAL *EMCAL = new AliEMCALv1("EMCAL", "G56_2_55_19_104_14");
}
if (iCRT)
AliVZERO *VZERO = new AliVZEROv2("VZERO", "normal VZERO");
}
+ cout << "End of Config.C" << endl;
+
}
Float_t EtaToTheta(Float_t arg){
+#if !defined(__CINT__) || defined(__MAKECINT__)
+#include <Riostream.h>
+#include <TRandom.h>
+#include <TDatime.h>
+#include <TSystem.h>
+#include <TVirtualMC.h>
+#include <TGeant3.h>
+#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()
{
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= "<<seed<<endl;
// libraries required by geant321
+#if defined(__CINT__)
gSystem->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 ..."<<endl;
+ rl = AliRunLoader::Open("galice.root",
+ AliConfig::fgkDefaultEventFolderName,
+ "recreate");
+ if (rl == 0x0)
+ {
+ gAlice->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();
// 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.);
+#if !defined(__CINT__) || defined(__MAKECINT__)
+#include <Riostream.h>
+#include <TRandom.h>
+#include <TDatime.h>
+#include <TSystem.h>
+#include <TVirtualMC.h>
+#include <TGeant3.h>
+#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()
{
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= "<<seed<<endl;
+ // libraries required by geant321
+#if defined(__CINT__)
+ gSystem->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 ..."<<endl;
+ rl = AliRunLoader::Open("galice.root",
+ AliConfig::fgkDefaultEventFolderName,
+ "recreate");
+ if (rl == 0x0)
+ {
+ gAlice->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);
// --- 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);
// 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.);
// 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);
+#if !defined(__CINT__) || defined(__MAKECINT__)
+#include <Riostream.h>
+#include <TRandom.h>
+#include <TSystem.h>
+#include <TVirtualMC.h>
+#include <TGeant3.h>
+#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,
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
// 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= "<<gRandom->GetSeed()<<endl;
- // libraries required by geant321
+
+ // libraries required by geant321
+#if defined(__CINT__)
gSystem->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 ..."<<endl;
+ rl = AliRunLoader::Open("galice.root",
+ AliConfig::fgkDefaultEventFolderName,
+ "recreate");
+ if (rl == 0x0)
+ {
+ gAlice->Fatal("Config.C","Can not instatiate the Run Loader");
+ return;
+ }
+ rl->SetCompressionLevel(2);
+ rl->SetNumberOfEventsPerFile(3);
+ gAlice->SetRunLoader(rl);
//
// Set External decayer
// 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
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");
comment = comment.Append(" | Gluon Radiation Off");
}
- if (geo == kHoles)
+ if (sgeo == kHoles)
{
comment = comment.Append(" | Holes for PHOS/RICH");
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;
//=================== FRAME parameters ============================
AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame");
- if (geo == kHoles) {
+ if (sgeo == kHoles) {
FRAME->SetHoles(1);
} else {
FRAME->SetHoles(0);
if (iTOF) {
- if (geo == kHoles) {
+ if (sgeo == kHoles) {
//=================== TOF parameters ============================
AliTOF *TOF = new AliTOFv2FHoles("TOF", "TOF with Holes");
} else {
// 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
-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.);
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.);
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.);
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.);
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
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
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
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
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
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
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
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
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
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
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();
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()
// - 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 <Riostream.h>
+#include <TRandom.h>
+#include <TDatime.h>
+#include <TSystem.h>
+#include <TVirtualMC.h>
+#include <TGeant3.h>
+#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
{
k2kG, k4kG, k5kG
};
+//--- Functions ---
+AliGenPythia *PythiaHVQ(ProcessHvFl_t proc);
+
// This part for configuration
static ProcessHvFl_t procHvFl = kCharmPbPb5500;
UInt_t procid=gSystem->GetPid();
UInt_t seed=curtime-procid;
+ // gRandom->SetSeed(seed);
gRandom->SetSeed(12345);
cerr<<"Seed for random number generation= "<<seed<<endl;
// libraries required by geant321
+#if defined(__CINT__)
gSystem->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 ..."<<endl;
+ rl = AliRunLoader::Open("galice.root",
+ AliConfig::fgkDefaultEventFolderName,
+ "recreate");
+ if (rl == 0x0)
+ {
+ gAlice->Fatal("Config.C","Can not instatiate the Run Loader");
+ return;
+ }
+ rl->SetCompressionLevel(2);
+ rl->SetNumberOfEventsPerFile(3);
+ gAlice->SetRunLoader(rl);
+
//
//=======================================================================
// ************* STEERING parameters FOR ALICE SIMULATION **************
} 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);
//
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);
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);
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);
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);
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);
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);
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);
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);
+#if !defined(__CINT__) || defined(__MAKECINT__)
+#include <Riostream.h>
+#include <TRandom.h>
+#include <TSystem.h>
+#include <TVirtualMC.h>
+#include <TGeant3.h>
+#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= "<<gRandom->GetSeed()<<endl;
+
+
+ // libraries required by geant321
+#if defined(__CINT__)
+ gSystem->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 ..."<<endl;
+ rl = AliRunLoader::Open("galice.root",
+ AliConfig::fgkDefaultEventFolderName,
+ "recreate");
+ if (rl == 0x0)
+ {
+ gAlice->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);
//
// --- 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");
+ }
}
+++ /dev/null
-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= "<<seed<<endl;
- // END OF TEMPORARY
-*/
-
- new TGeant3("C++ Interface to Geant3");
-
- if (!gSystem->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;
-}
-